Как скроллом прокручивать MSFlexGrid?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Как скроллом прокручивать MSFlexGrid?

Сообщение Divinich » 15.04.2005 (Пт) 19:00

Ну в названии и есть суть вопроса, я сам попытался искать, но у меня ничего не получается, это вообще реально?

Inferno
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 179
Зарегистрирован: 26.01.2005 (Ср) 1:06

Сообщение Inferno » 15.04.2005 (Пт) 19:06

ЭЭэ. А чем тебя не устраивает родной?

Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Сообщение Divinich » 16.04.2005 (Сб) 11:06

Какой родной? Он вообще скроллом не прокручивается

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.04.2005 (Сб) 11:37

А дрова мышиные поставить? Logitech Mouseware там...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Сообщение Divinich » 16.04.2005 (Сб) 20:20

У меня такое чувство что мы на разных языках разговариваем, не какие нах дрова, скрол сам по себе работает, а вот FlexGrid он не прокручивает хоть ты тресни.

viny
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 12.04.2005 (Вт) 14:57

Сообщение viny » 16.04.2005 (Сб) 21:10


Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Сообщение Divinich » 17.04.2005 (Вс) 13:25

Вообще-то, мне нужно в проге, а не в ВБ таблицу прокручивать. Вы меня опять не так поняли.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.04.2005 (Вс) 13:33

Знаешь, понять и правда сложно.
.toprow=i
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Сообщение Divinich » 18.04.2005 (Пн) 18:40

Нет, опять не поняли, мне нужно колесиком мышиным прокручивать, понимаете? чтоб там удобно было и все такое, а там по умолчанию такого нет.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 18.04.2005 (Пн) 21:40

Divinich писал(а):... мне нужно колесиком мышиным прокручивать...

Мышиные драйверы. Все определяется только ими. Ну или ты сам будешь ловить WM_WHEEL_DOWN/UP (или как оно там называется, не помню уже), но это лишний геморрой, могущий вдобавок вступить в конфликт с правильными дровами мыши, но уже не на твоей машине, а на машине пользователя, которую ты в общем случае вообще не контролируешь.

Чудик
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 639
Зарегистрирован: 06.07.2004 (Вт) 12:18
Откуда: г. Егорьевск

Сообщение Чудик » 19.04.2005 (Вт) 7:12

Код: Выделить всё
Private Declare Function CallWindowProcA Lib "user32" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal MSG As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Const GWL_WNDPROC = -4
Private Const WM_MOUSEWHEEL = &H20A
Private lpPrevWndProc As Long, Wheel As Integer

Public MyObject As Object
Private Const WM_VSCROLL As Long = &H115
Private Const SB_LINEUP As Long = 0
Private Const SB_LINEDOWN As Long = 1
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, _
ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long


Sub Hook(hwnd As Long)
    lpPrevWndProc = SetWindowLongA(hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub

Sub UnHook(hwnd As Long)
    Call SetWindowLongA(hwnd, GWL_WNDPROC, lpPrevWndProc)
End Sub

Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
On Error GoTo xErr
If uMsg = WM_MOUSEWHEEL Then
If wParam = -7864320 Or wParam = -23592960 Or wParam = -15728640 Then _
    hhh = SendMessage(MyObject.hwnd, WM_VSCROLL, SB_LINEDOWN, 0)
If wParam = 7864320 Or wParam = 23592960 Or wParam = 15728640 Then _
    hhh = SendMessage(MyObject.hwnd, WM_VSCROLL, SB_LINEUP, 0)
Else
    WindowProc = CallWindowProcA(lpPrevWndProc, hwnd, uMsg, wParam, lParam)
End If
xErr:
End Function

Hook кидаешь в Load или Activate, Unhook - в Unload или Deactivate.
Век живи - век учись!
www.detal-plast.narod.ru

Divinich
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 19.02.2005 (Сб) 11:23

Сообщение Divinich » 21.04.2005 (Чт) 20:04

Спасибо


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 133

    TopList