Як у DBGrid відловити MouseWheel
Події OnMouseWheel у DBGrid немає. Як відловити?
Як і будь-якому іншому компоненті.
←→Alex_C (2008-12-10 15:07) [2]
Як в іншому не виходить. procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL; ось при використанні коліщатка мишки в Memo - потрапляємо в цю ф-цію, а ось в DBGrid - ні.
події від руху миші та натискання кнопок прямують у те вікно, над яким розташований курсор, але події від колеса миші посилаються в активне вікно (як і події від клавіатури).
> Alex_CВідловити щось можна, але працювати воно все одно буде не дуже.
procedure TfrmMain.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); begin if Msg.message = WM_MOUSEWHEEL then begin Msg.message := WM_KEYDOWN; Msg.lParam := 0; if Msg.wParam > 0 then Msg.wParam := VK_UP else Msg.wParam := VK_DOWN; Handled := False; end; end;
Ну можна ще перевірку запровадити, що грид у фокусі тощо. Воно працює. Але чомусь не завжди. Іноді перестає. Тобто грід прокручується, а ось переміщення за записами вже не відбувається.
> А з чого виникло б "переміщення по записах"?я б зрозумів, якби воно взагалі не виникало, адже виникає але не завжди. Оце дивно. До речі, коли вже зайшла розмова, я ще раз не полінувався, подивився і придумав начебто надійний спосіб: