AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KeyPress und Pfeiltasten

Ein Thema von Nils_13 · begonnen am 20. Mär 2008 · letzter Beitrag vom 20. Mär 2008
Antwort Antwort
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:27
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:30
Hallo, hast du das KeyPreview der Form auf True gesetzt?
Thomas
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#3

Re: KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:33
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:33
Die Pfeiltasten generieren kein OnKeyPress Event.
Im Anhang ist mein KeyCodeTester; damit kannst du es nachprüfen.
Angehängte Dateien
Dateityp: zip keycodetester_129.zip (197,8 KB, 93x aufgerufen)
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:42
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;
Thomas
  Mit Zitat antworten Zitat
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#6

Re: KeyPress und Pfeiltasten

  Alt 20. Mär 2008, 17:47
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz