| Autor |
Beitrag |
Mäthew Glide
      
Beiträge: 31
|
Verfasst: Fr 22.10.10 19:43
Hallo!
ICh habe ein Problem, ich habe versucht Snake zu programmieren gesteuert wird mit den PFeiltasten und gestartet über einen Start/pausebutton bei dem danach Enabled auf false gesetzt wird aber dann kann ich den Start/pausebutton nicht mehr benutzen. Nun ergibt sich aber folgendes Problem: Wenn ich nun Enabled auf true lasse, dann kann ich meine Schlange nicht steuern, da wenn ich die PFeiltasten bewege automatisch auf den Start/pausebutton geht.
ICh hoffe es ist in der richtigen Sektion gelandet
Schonmal danke für die Hilfe im Vorraus
mfg
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.10.10 20:08
Stelle die Eigenschaft KeyPress des Formulares auf true.
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 22.10.10 20:25
Du meinst KeyPreview, oder?
_________________ We are, we were and will not be.
|
|
Mäthew Glide 
      
Beiträge: 31
|
Verfasst: Fr 22.10.10 20:29
also KeyPress habe ich nicht gefunden nur KeyPreview und habe es auf true gesetzt doch leider hat dies auch nicht mein Problem gelöst. Es bleibt immer noch so dass sobald ich einen Richtungspfeil betätige der PauseButton angewählt wird.
|
|
Gausi
      
Beiträge: 8553
Erhaltene Danke: 479
Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
|
Verfasst: Fr 22.10.10 20:49
Ein Workaround wäre, den Pausebutton wegzulassen, und dafür z.B. die Taste P oder die Leertaste zu benutzen. Es scheint so, als hätten die Pfeiltasten bei sowas Priorität zur Steuerung in der GUI. 
_________________ We are, we were and will not be.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 22.10.10 21:53
Mäthew Glide hat folgendes geschrieben : | | also KeyPress habe ich nicht gefunden nur KeyPreview und habe es auf true gesetzt doch leider hat dies auch nicht mein Problem gelöst. Es bleibt immer noch so dass sobald ich einen Richtungspfeil betätige der PauseButton angewählt wird. |
Ja. KeyPreview meinte ich. Und was passiert, wenn du den Fokus nach dem Anklicken auf das Formular setzt?
|
|
Mäthew Glide 
      
Beiträge: 31
|
Verfasst: Fr 22.10.10 22:09
Nein funktioniert springt trotzdem wieder auf den Start/PAusebutton.
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Fr 22.10.10 22:28
Tabstop vom Pausebutton auf False setzen?!
|
|
Mäthew Glide 
      
Beiträge: 31
|
Verfasst: Fr 22.10.10 22:52
Nein passiert leider auch das gleiche werde wohl dann auf eine andere Steuerung ausweichen müssen
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Fr 22.10.10 23:07
Nehme ein TImage statt dem Button und lade dort ein Bild von einem Button rein (zur Not Screenshot machen, in Paint rein, ausschneiden, speichern...)
Das ist zwar nicht so dolle, aber es funktioniert 
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Mäthew Glide 
      
Beiträge: 31
|
Verfasst: Fr 22.10.10 23:19
Geil Auf diese MEthode muss man erstmal kommen gefällt mir aber  Danke für die Hilfe
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 22.10.10 23:26
Dann sehen deine Buttons aber nie aus wie die des Systems und verhalten sich auch nicht so...
Dann schreibe ich doch einmal was intern passiert (dass das niemand von euch wusste...  ):
Zuerst wird die Message WM_GETDLGCODE geschickt. Wenn du in dieser DLGC_WANTARROWS zurückgibst, sagst du damit, dass du selbst diese Tastendrücke behandeln willst.
Andernfalls (eben standardmäßig) werden diese Tasten für den Wechsel des Fokus der Buttons usw. benutzt.
Um diese Botschaft abzufangen kannst du z.B. die WndProc überschreiben.
|
|