![]() |
KeyPress und Pfeiltasten
Hi,
wie kann man in FormKeyPress prüfen, ob eine Pfeiltaste gedrückt wird ? Dieser Code liefert keine Nachricht, wenn ich eine Pfeiltaste drücke, bei anderen Tasten hingegen schon:
Delphi-Quellcode:
Beide hier gezeigten Möglichkeiten liefern auch keine Nachricht:
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin ShowMessage(Key); end;
Delphi-Quellcode:
Dann kam ich also auf die Idee, einfach mal bei KeyDown Key (Word) ausgeben zu lassen. Das Ergebnis ist 37. Aber auch das hat nichts gebracht.
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin if Ord(Key) = VK_LEFT then ShowMessage('asd'); if VkKeyScan(Key) = VK_LEFT then ShowMessage('asd'); end;
Delphi-Quellcode:
Wenn ich 37 zu einem Char machen würde (Char(37)), kommt % raus. Wie komme ich nun an den richtigen Word-Wert ? Gibt es noch bessere Lösungsmöglichkeiten als diese, noch nicht ganz funktionierende ?
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin if Word(Key) = 37 then ShowMessage('asd'); end; |
Re: KeyPress und Pfeiltasten
Hallo, hast du das KeyPreview der Form auf True gesetzt?
|
Re: KeyPress und Pfeiltasten
Willst du darauf hinaus, dass die Registration wegen fehlendem Fokus nicht gesetzt werden würde ? Dies ist nicht der Fall. In meinem Programm ist es sogar egal ob KeyPreview an oder aus ist um genau zu sein.
|
Re: KeyPress und Pfeiltasten
Liste der Anhänge anzeigen (Anzahl: 1)
Die Pfeiltasten generieren kein OnKeyPress Event.
Im Anhang ist mein KeyCodeTester; damit kannst du es nachprüfen. |
Re: KeyPress und Pfeiltasten
Habe gerade noch etwas (merkwürdiges) festgestellt.
Falls sich keine Control auf der Form befinden, wird Beep beim Drücken von VK_LEFT aufgerufen. Wenn dann z.B ein TButton auf die Form gesetzt wird, wird Beep nicht mehr aufgerufen.
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if key = VK_LEFT then Beep; end; |
Re: KeyPress und Pfeiltasten
toms: Merkwürdig. Behindert mich wenigstens diesmal nicht bei der Arbeit :) Wäre aber recht interessant zu wissen, woran das liegt bzw. wie sich das umgehen ließe.
shmia: Nettes Programm. Ich habe nun einfach KeyDown genommen und es funktioniert einwandfrei. Danke für eure Hilfe! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz