Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi KeyPress und Pfeiltasten (https://www.delphipraxis.net/110601-keypress-und-pfeiltasten.html)

Nils_13 20. Mär 2008 16:27


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:
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin
  ShowMessage(Key);
end;
Beide hier gezeigten Möglichkeiten liefern auch keine Nachricht:
Delphi-Quellcode:
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;
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.
Delphi-Quellcode:
procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if Word(Key) = 37 then
    ShowMessage('asd');
end;
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 ?

toms 20. Mär 2008 16:30

Re: KeyPress und Pfeiltasten
 
Hallo, hast du das KeyPreview der Form auf True gesetzt?

Nils_13 20. Mär 2008 16:33

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.

shmia 20. Mär 2008 16:33

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.

toms 20. Mär 2008 16:42

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;

Nils_13 20. Mär 2008 16:47

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