Einzelnen Beitrag anzeigen

Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Pfeiltasten in eigener Komponente abfangen

  Alt 5. Sep 2008, 14:51
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."
  Mit Zitat antworten Zitat