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

Узнай цену своей работы

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

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

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

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
Похожие ответы