Вот чуток доработанный файл, позволяющий прокручивать ListView (если кому интересно). Только надо объявить Private oCtl As Object
И да! Не моё. Автор EvA
| Код |
|---|
Private Function MouseRotate_VBA7(ByVal nCode As Long, ByVal wParam As LongPtr, ByRef lParam As MOUSEHOOKSTRUCT) As LongPtr Dim n& On Error GoTo ErrHandler If wParam = &H20A Then If lParam.hWnd > 0 Then n = -1 Else n = 1 If TypeOf oCtl Is MSForms.ListBox Then n = n + oCtl.TopIndex If n >= 0 Then oCtl.TopIndex = n: Exit Function ElseIf TypeOf oCtl Is MSComctlLib.ListView Then Dim currentIndex As Long Dim i As Long currentIndex = oCtl.selectedItem.index ' Вычисляем новый индекс n = currentIndex + n If n < 1 Then n = 1 ' Ограничиваем до первого элемента ElseIf n > oCtl.ListItems.count Then n = oCtl.ListItems.count ' Ограничиваем до последнего элемента End If ' Снимаем выделение со всех элементов и выделяем новый For i = 1 To oCtl.ListItems.count oCtl.ListItems(i).Selected = False Next i oCtl.ListItems(n).Selected = True oCtl.ListItems(n).EnsureVisible Exit Function End If End If MouseRotate_VBA7 = CallNextHookEx(nMouseHook, nCode, wParam, ByVal lParam) Exit Function ErrHandler: MsgBox "Произошла ошибка в MouseRotate_VBA7 " & Err.Description, vbCritical, "Ошибка" Err.Clear UnHookScroll End Function |
И да! Не моё. Автор EvA
Изменено: - 15.01.2025 07:43:08