Hallo zusammen,
ich möchte beim drücken einer vorher festgelegten Tastenkombination ein bestimmtes Zeichen innerhalb meiner ganzen Anwendung senden. Dies soll für alle Controls gelten. D.h. ich drücke z.B. [STRG] + [A] und möchte, dass dann z.B. im gerade aktiven TEdit ein 'ä' ausgegeben wird.
Soweit habe ich es bis jetzt realisiert:
Delphi-Quellcode:
procedure OnAppMsg(var Msg: TMsg; var Handled: Boolean);
procedure TMyForm.FormCreate(Sender: TObject);
begin
Application.OnMessage := OnAppMsg;
end;
procedure TMyForm.OnAppMsg(var Msg: TMsg; var Handled: Boolean);
begin
Handled := False;
if (Msg.message = WM_KEYDOWN) then
begin
if (GetKeyState(VK_CONTROL) < 0) and (Msg.wParam = Ord('A')) then
begin
Handled := True;
PostMessage(WindowHandle, WM_KEYDOWN, ord('Ä'), 0);
PostMessage(WindowHandle, WM_KEYUP, ord('Ä'), 0);
end;
if (GetKeyState(VK_CONTROL) < 0) and (Msg.wParam = Ord('O')) then
begin
Handled := True;
end;
end;
end;
Die Tastenkombination wird zwar erkannt, aber PostMessage greift anscheinend nicht. Evtl. wäre noch wichtig zu wissen, dass es sich bei der Form um eine eigene abgeleitete Klasse von TForm handelt, die ich als Grundlage meiner weiteren Forms nutze. Ich möchte also an dieser Stelle die Behandlung der oben beschrieben Kombinationen umsetzen, um ein zentrales Handling zu haben. (Die Hauptform meiner Anwendung basiert auf TForm und nicht auf meiner eigenen Klasse.)
Was mache ich falsch? Kann mir jemand einen Tipp geben?!
Danke.
Gruß NetSonic