Die Messages vom Mausrad müssen wohl einer Spezialbehandlung unterzogen werden.
Delphi-Quellcode:
procedure THauptForm.HandleOnMessage(var Msg: TMsg; var Handled: Boolean);
var
phnd : HWND;
begin
{Mouse wheel behaves strangely with dgbgrids - this proc sorts this out}
case Msg.message of
WM_MOUSEWHEEL:
begin
if (Screen.ActiveForm.ActiveControl <> nil) and
(Screen.ActiveForm.ActiveControl.ClassName = 'TDBGrid') 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;
end;
end;
Im OnCreate Event muss dieser Message-Handler dann noch "eingeklinkt" werden:
Application.OnMessage := self.HandleOnMessage