Как да хванете MouseWheel в DBGrid

DBGrid няма събитие OnMouseWheel. Как да хванем?

Точно като всеки друг компонент.

Alex_C ( 2008-12-10 15:07 ) [2]

Не работи като другия. procedure CMMouseWheel(var Message: TCMMouseWheel); съобщение 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; ако Msg.wParam > 0 след това Msg.wParam := VK_UP иначе Msg.wParam := VK_DOWN; Обработено := False; край; край;

Ами може да въведеш и проверка дали решетката е на фокус и т.н. Работи. Но защо не винаги. Понякога спира. Тоест мрежата се превърта, но преместването през записите вече не се случва.

> И защо ще има "движение по записите"?Бих разбрал, ако изобщо не се случи, но се случва, но не винаги. Това е странно. Между другото, откакто започна разговорът, отново не бях твърде мързелив, погледнах и измислих привидно надежден начин: