Скролл по DBGrid'у с помощью колесика мышки - VB

Формулировка задачи:

Извините если надоел этой крысой... Подскажите пожалуйста, как сделать скрол по DBGrid'у колесиком крысы? Toxa33rus и Abu. Ну Вы же точно знаете, ни где не смог найти...

Код к задаче: «Скролл по DBGrid'у с помощью колесика мышки - VB»

textual
' в модуле:
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 SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
 
Public Const GWL_WNDPROC = -4
Const WM_MOUSEWHEEL = &H20A
 
Public FlGrOldProc As Long
 
Public Function ScrollFlGrid(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_MOUSEWHEEL Then
    If wParam < 0 Then
        If Form1.MSFlexGrid1.Rows > Form1.MSFlexGrid1.TopRow + 1 Then _
        Form1.MSFlexGrid1.TopRow = Form1.MSFlexGrid1.TopRow + 1
    ElseIf wParam > 0 Then
        If Form1.MSFlexGrid1.TopRow > 1 Then _
        Form1.MSFlexGrid1.TopRow = Form1.MSFlexGrid1.TopRow - 1
    End If
End If
ScrollFlGrid = CallWindowProc(FlGrOldProc, hwnd, Msg, wParam, lParam)
End Function
 
' в форме:
Private Sub Form_Load()
FlGrOldProc = SetWindowLong(MSFlexGrid1.hwnd, GWL_WNDPROC, AddressOf ScrollFlGrid)
End Sub
 
Private Sub Form_Terminate()
Call SetWindowLong(MSFlexGrid1.hwnd, GWL_WNDPROC, FlGrOldProc)
End Sub

9   голосов, оценка 4.111 из 5


СОХРАНИТЬ ССЫЛКУ