Зависит от того, для чего вы хотите (что определяет, насколько конкретно вам это нужно).Вы можете сказать, когда сетка была успешно прокручена с помощью события Scroll:
Private Sub MSFlexGrid1_Scroll()
Debug.Print "Scrolled"
End Sub
Если вам нужно отличить вниз от вверх (и один ход от более крупного движения клика по планке), у вас будетчтобы отслеживать верхний ряд:
Option Explicit
Public GridTop As Long
Private Sub Form_Load()
Dim lA As Long
MSFlexGrid1.Cols = 4
MSFlexGrid1.Clear
For lA = 1 To 20
MSFlexGrid1.AddItem lA & vbTab & "bob-" & lA & vbTab & lA & "-fred" & vbTab & lA & "-joe-" & lA
Next lA
MSFlexGrid1.RemoveItem 1
GridTop = MSFlexGrid1.TopRow
End Sub
Private Sub MSFlexGrid1_Scroll()
Debug.Print "Scrolled"
Debug.Print MSFlexGrid1.TopRow
If MSFlexGrid1.TopRow = GridTop + 1 Then
Debug.Print "Down arrow (effective)"
End If
GridTop = MSFlexGrid1.TopRow
End Sub
Если вам действительно нужно знать, когда вы конкретно нажимали стрелку вниз, прокручивает ли она сетку или нет, то теперь вы находитесь в подклассе.Попробуйте это:
http://www.planetsourcecode.com/vb/scripts/ShowCode.asp?txtCodeId=59656&lngWId=1
Просто замените flexgrid для rtfExample в примере проекта - я пробовал, кажется, работает нормально.