Hi,
Ich meine Komponente müsste auf das Drücken einer Pfeiltaste reagieren können. Zumindest VK_LEFT und VK_RIGHT. Das erste Problem ist (bzw war), dass meine Komponente den Focus verliert, bei einem Tastendruck auf eine Pfeiltaste. Gelöst habe ich es jetzt so:
Delphi-Quellcode:
procedure TConsole.WMKillFocus(var Msg: TWMKillFocus);
var key: TWMKey;
begin
SetFocus;
if GetAsyncKeyState(VK_LEFT) < 0 then
begin
key.CharCode := VK_LEFT;
WMChar(key);
end
else
if GetAsyncKeyState(VK_RIGHT) < 0 then
begin
key.CharCode := VK_RIGHT;
WMChar(key);
end;
end;
Das funktioniert, ist aber imo nicht wirklich schön. Zudem habe ich ein Problem, wenn meine Komponente die einzige auf der Form sein sollte... Dann kann sie nämlich den Focus gar nicht verlieren. Allerdings erhält sie trotzdem keine Benachrichtigung über den Tastendruck einer Pfeiltaste. Weder per WM_KEYDOWN noch per WM_CHAR.
Kann man da was tricksen?
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."