Man kann dieses Verhalten auch für die gesamte Anwendung programmieren.
Delphi-Quellcode:
procedure THauptForm.HandleOnMessage(var Msg: TMsg; var Handled: Boolean);
begin
case Msg.message of
WM_MOUSEWHEEL:
begin
if (Screen.ActiveForm.ActiveControl <> nil) and
(Screen.ActiveForm.ActiveControl.ClassName = 'TDBGrid') then
begin
// die Mousewheel Message wird in einen Tastendruck umgewandelt
Msg.message := WM_KEYDOWN;
Msg.lParam := 0;
if Msg.wParam > 0 then
Msg.wParam := VK_UP
else
Msg.wParam := VK_DOWN;
// wir sind noch nicht fertig, schliesslich soll der Tastendruck ausgewertet werden
Handled := False;
end;
end;
end;
end;
Beim Programmstart muss der Message-Handler "eingeklickt" werden:
Delphi-Quellcode:
procedure THauptForm.CreateForm(Sender:tObject);
begin
Application.OnMessage := self.HandleOnMessage;
end;