使DataGrid支持鼠标滚轮滚动记录

首先在DataGrid 的 【拆分】 属性中的【选取框样式】设置为 3,即整行高亮选择,然后加入如下代码就支持了,只要让鼠标的焦点在grid控件上,滚动鼠标滑轮,grid滚动条会自动滚动的。

示例操作方法:
将以下代码写到公共模块中  
   
  '支持滚轮鼠标API---------------------------------  
          Public   Const   GWL_WNDPROC   =   (-4)  
          Public   Const   WM_COMMAND   =   &H111  
          Public   Const   WM_MBUTTONDOWN   =   &H207  
          Public   Const   WM_MBUTTONUP   =   &H208  
          Public   Const   WM_MOUSEWHEEL   =   &H20A  
           
          Public   Oldwinproc   As   Long  
          Public   Declare   Function   SetWindowLong   Lib   "user32"   Alias   "SetWindowLongA"   (ByVal   hWnd   As   Long,   _  
                                                          ByVal   nIndex   As   Long,   ByVal   dwNewLong   As   Long)   As   Long  
           
          Public   Declare   Function   CallWindowProc   Lib   "user32"   Alias   "CallWindowProcA"   (ByVal   lpPrevWndFunc   As   Long,   _  
                                                          ByVal   hWnd   As   Long,   ByVal   Msg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long  
           
          Public   Declare   Function   GetWindowLong   Lib   "user32"   Alias   "GetWindowLongA"   (ByVal   hWnd   As   Long,   _  
                                                          ByVal   nIndex   As   Long)   As   Long  
  Public   Function   FlexScroll(ByVal   hWnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   ByVal   lParam   As   Long)   As   Long   
            Select   Case   wMsg  
          Case   WM_MOUSEWHEEL  
                  Select   Case   wParam  
                  Case   -7864320     '向下滚  
                          SendKeys   "{PGDN}"  
                  Case   7864320       '向上滚  
                          SendKeys   "{PGUP}"  
                  End   Select  
                                     
          End   Select  
          FlexScroll   =   CallWindowProc(Oldwinproc,   hWnd,   wMsg,   wParam,   lParam)  
  End   Function  
  '支持滚轮鼠标API---------------------------------  
   
   
  '将下列代码写到表格控件的GotFocus事件中  
  Private   Sub   控件名称_GotFocus()  
          Oldwinproc   =   GetWindowLong(Me.hWnd,   GWL_WNDPROC)  
          SetWindowLong   Me.hWnd,   GWL_WNDPROC,   AddressOf   FlexScroll  
  End   Sub  
   
  '将下列代码写到表格控件的LostFocus事件中  
  Private   Sub   控件名称_LostFocus()  
          SetWindowLong   Me.hWnd,   GWL_WNDPROC,   Oldwinproc  
  End   Sub    

  • 0
    点赞
  • 1
    评论
  • 1
    收藏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值