Як у 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;

Ну можна ще перевірку запровадити, що грид у фокусі тощо. Воно працює. Але чомусь не завжди. Іноді перестає. Тобто грід прокручується, а ось переміщення за записами вже не відбувається.

> А з чого виникло б "переміщення по записах"?я б зрозумів, якби воно взагалі не виникало, адже виникає але не завжди. Оце дивно. До речі, коли вже зайшла розмова, я ще раз не полінувався, подивився і придумав начебто надійний спосіб: