Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pfeiltasten erkennen! (https://www.delphipraxis.net/31121-pfeiltasten-erkennen.html)

Nicolai1234 4. Okt 2004 17:11


Pfeiltasten erkennen!
 
Ich will im meinem Spiel die Pfeiltasten zu Steuerung benutzen!
Ich habe folgenden Code von Daniel/Sakura genommen:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
    VK_LEFT: begin
      Image1.Left := Image1.Left - 5;
      Key := 0;
    end;
    VK_RIGHT: begin
      Image1.Left := Image1.Left + 5;
      Key := 0;
    end;
    VK_UP: begin
      Image1.Top := Image1.Top - 5;
      Key := 0;
    end;
    VK_DOWN: begin
      Image1.Top := Image1.Top + 5;
      Key := 0;
    end;
  end;
end;
KeyPreview steht wie gefordert auf true!
Aber es passiert garnichts!
Wie muss ich es dann machen?
Ich habe Delphi 6 Professional!
Danke im voraus

djmasi 4. Okt 2004 17:21

Re: Pfeiltasten erkennen!
 
Zitat:

Zitat von Delphi Hilfe
Die Einstellung bezieht sich nicht auf Navigationstasten (TAB, Pfeiltasten usw.), da diese keine Tastaturereignisse auslösen. Ähnliches gilt, wenn eine Schaltfläche den Fokus hat oder wenn dessen Eigenschaft Default den Wert true hat. Die Eingabetaste wird von KeyPreview nicht berücksichtigt, da diese kein Tastaturereignis auslöst.

Und sobald ein anderes Control den Fokus hat funktioniert es nicht mehr. Also entweder bei jedem Control den Code rein oder aber über System-Hooks das ganze abfangen (Luckie hat das mal schön beschrieben)

Matze 4. Okt 2004 17:26

Re: Pfeiltasten erkennen!
 
Bei mir geht obiger Code einwandfrei, auch wenn ein Edit den Fokus hat.

Hooks wären wohl etwas übertrieben dafür. ;)

djmasi 4. Okt 2004 17:28

Re: Pfeiltasten erkennen!
 
Also ich hab nen Image und nen Button auf der Form. Sobald der Button den Fokus hat geht der Code net mehr.

Nicolai1234 4. Okt 2004 17:40

Re: Pfeiltasten erkennen!
 
Zitat:

Zitat von Matze
Bei mir geht obiger Code einwandfrei, auch wenn ein Edit den Fokus hat.

Hooks wären wohl etwas übertrieben dafür. ;)

Bei mir eben nicht! Voran kann das liegen?

toms 4. Okt 2004 17:45

Re: Pfeiltasten erkennen!
 
Nicolai1605,

Das Control mit dem Fokus (in deinem Fall TButton) verarbeitet keine Peiltasten Ereignisse.

"The key preview feature is a direct "echo" of the key events the active control sees
and controls will get only the key events they ask for."

Die Pfeiltasten kannst du über einen CM_DIALOGKEY handler abfangen.

// private Section
Delphi-Quellcode:
Procedure CMDialogKey(Var Msg: TWMKey); message CM_DIALOGKEY;


Procedure TForm1.CMDialogKey(Var Msg: TWMKEY);
Var
  handled: Boolean;
Begin
  handled := true;
  Case msg.charcode of
    VK_UP: Image1.Top := Image1.Top - 5;
    VK_DOWN: Image1.Top := Image1.Top + 5;
    VK_LEFT: Image1.Left := Image1.Left - 5;
    VK_RIGHT: Image1.Left := Image1.Left + 5;
  Else
    handled := False
  End;
  If handled Then
    msg.result := 1
  Else
    inherited;
End;


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:30 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