![]() |
Pfeiltasten erkennen!
Ich will im meinem Spiel die Pfeiltasten zu Steuerung benutzen!
Ich habe folgenden Code von Daniel/Sakura genommen:
Delphi-Quellcode:
KeyPreview steht wie gefordert auf true!
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; Aber es passiert garnichts! Wie muss ich es dann machen? Ich habe Delphi 6 Professional! Danke im voraus |
Re: Pfeiltasten erkennen!
Zitat:
|
Re: Pfeiltasten erkennen!
Bei mir geht obiger Code einwandfrei, auch wenn ein Edit den Fokus hat.
Hooks wären wohl etwas übertrieben dafür. ;) |
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.
|
Re: Pfeiltasten erkennen!
Zitat:
|
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 03:44 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