Как да хванете 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; край; край;
Ами може да въведеш и проверка дали решетката е на фокус и т.н. Работи. Но защо не винаги. Понякога спира. Тоест мрежата се превърта, но преместването през записите вече не се случва.
> И защо ще има "движение по записите"?Бих разбрал, ако изобщо не се случи, но се случва, но не винаги. Това е странно. Между другото, откакто започна разговорът, отново не бях твърде мързелив, погледнах и измислих привидно надежден начин: