![]() |
Buttons in Hintergrund schieben
Hey Leute,
ich programmiere gerade ein kleines Spiel und möchte meinen Spielcharakter mit den Pfeiltasten steuern können. Ich habe in die OnKeyDown-Prozedur von Form1 geschrieben, was passiert wenn key = vk_up / key = vk_left / .... ist, allerdings funktioniert die Steuerung nicht. Denn auf dem Formular sind außerdem noch 2 Buttons, und wenn ich eine Pfeiltaste drücke, wird ein Button umrandet und der andere verliert seine Umrandung. Ich habe die bereits geschriebene OnKeyDown-Prozedur von Form1 zu Button1/Button2 hinzugefügt, allerdings funktioniert es immernoch nicht. Wie bekomme ich diese Buttons in den Hintergrund, ohne dass ich ButtonX.Enabled := false benutze, denn die Buttons sollen im Spiel noch benutzt werden können? Vielen Dank schon einmal im Vorraus, Tristan |
AW: Buttons in Hintergrund schieben
Poste doch mal einen Auszug deines Codes :)
|
AW: Buttons in Hintergrund schieben
Mit den Pfeiltasten wechselst du den Fokus der Buttons.
Eine einfache Lösung wäre z.B. statt der Pfeiltasten, andere Tasten zu verwenden (Numblock, WASD, ...) Im FormKeyDown musst du dann die Tasten abfragen, aber ich glaube das hast du ja schon getan. Edit: Du kannst auch in den Properties deiner Buttons mal die Eigenschaft "TabStop" auf false setzen. Eventuell hilft das, wenn du die Pfeiltasten verwenden möchtest. |
AW: Buttons in Hintergrund schieben
Zitat:
Und Form.KeyPreview nicht zu vergessen. |
AW: Buttons in Hintergrund schieben
Ach würde es nicht sogar schon reichen, statt TButtons TSpeedButtons zu verwenden? Die können doch nicht fokussiert werden oder steh ich grad aufm Schlauch?
|
AW: Buttons in Hintergrund schieben
Zitat:
|
AW: Buttons in Hintergrund schieben
Wie kann ich denn den Key auf 0 bzw. #0 setzen, und was bringt mir das?
|
AW: Buttons in Hintergrund schieben
> OnKeyDown, OnKeyup und OnKeyPress
Ratet mal, warum der Parameter Key als VAR definiert wurde, damit man nachfoldende Behandlungen steuern kann, wie z.B. Zeichen/Taste ändern, bzw. komplett zurücksetzen. :zwinker: (Verhalten entsprechend anderen Methoden, wo man z.B. mit einen Boolean-VarParameter oder -Result gibt, mit dem Abbruch bzw. Fortsetzen mitteilen kann) Wenn du die Taste verarbeitet hast und nicht willst, dass noch jemand anderes die Taste ebefalls behandelt, dann Key auf 0 setzen und schon ist das Standardverhalten des Buttons weg. * nicht auf 0 setzen und was Eigenes machen = Zusätzliches verhalten * auf 0 setzen und was Eigenes machen = alternatives Verhalten * auf 0 setzen und nichts machen = nur Standardverhalten abschalten Und KeyPreview auf True, damit das Event der Form vor den Events der Komponenten kommt. |
AW: Buttons in Hintergrund schieben
Vielen Dank für die schnelle Hilfe!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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