![]() |
Problem bei VK_LEFT,...
Hallo Leute
Danke erstmal, dass ihr euch überhaupt mit meinem Problem beschäftigt. Ich habe ein Spiel programmiert in dem ein Panel ein anderes Panel jagt. Das Panel, das gejagt wird, wird durch Zufallsvariabeln gelenkt. Das Panel, das vom Spieler gelenkt wird, wird bisher durch Buttons gelenkt oder mit w;a;s;d gelenkt. Nun wollte ich auch die Pfeiltasten einbeziehen. Hierfür mein Quelltext:
Delphi-Quellcode:
Bitte keine Kommentare zu den vielen Timern ich hätte es zwar auch mit If und Then und Else machen können, aber so schien es mir zunächst übersichtlicher. Was sich jedoch wie man sieht als falsch herausstellte.
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin If (key = VK_UP) Then Begin Timer1.Enabled:=true; Timer19.Enabled:=true; If Radiobutton1.Checked=true Then Begin Timer2.Enabled:=true; Timer3.Enabled:=false; Timer4.Enabled:=false; Timer5.Enabled:=false; End; If Radiobutton2.Checked=true Then Begin Timer7.Enabled:=true; Timer8.Enabled:=false; Timer9.Enabled:=false; Timer10.Enabled:=false; End; If Radiobutton3.Checked=true Then Begin Timer11.Enabled:=true; Timer12.Enabled:=false; Timer13.Enabled:=false; Timer14.Enabled:=false; End; If Radiobutton4.Checked=true Then Begin Timer15.Enabled:=true; Timer16.Enabled:=false; Timer17.Enabled:=false; Timer18.Enabled:=false; End; End; If (key = VK_DOWN) Then Begin Timer1.Enabled:=true; Timer19.Enabled:=true; If Radiobutton1.Checked=true Then Begin Timer3.Enabled:=true; Timer2.Enabled:=false; Timer4.Enabled:=false; Timer5.Enabled:=false; End; If Radiobutton2.Checked=true Then Begin Timer8.Enabled:=true; Timer7.Enabled:=false; Timer9.Enabled:=false; Timer10.Enabled:=false; End; If Radiobutton3.Checked=true Then Begin Timer12.Enabled:=true; Timer11.Enabled:=false; Timer13.Enabled:=false; Timer14.Enabled:=false; End; If Radiobutton4.Checked=true Then Begin Timer16.Enabled:=true; Timer15.Enabled:=false; Timer17.Enabled:=false; Timer18.Enabled:=false; End; End; If (key = VK_LEFT) Then Begin Timer1.Enabled:=true; Timer19.Enabled:=true; If Radiobutton1.Checked=true Then Begin Timer4.Enabled:=true; Timer2.Enabled:=false; Timer3.Enabled:=false; Timer5.Enabled:=false; End; If Radiobutton2.Checked=true Then Begin Timer9.Enabled:=true; Timer7.Enabled:=false; Timer8.Enabled:=false; Timer10.Enabled:=false; End; If Radiobutton3.Checked=true Then Begin Timer13.Enabled:=true; Timer11.Enabled:=false; Timer12.Enabled:=false; Timer14.Enabled:=false; End; If Radiobutton4.Checked=true Then Begin Timer17.Enabled:=true; Timer16.Enabled:=false; Timer15.Enabled:=false; Timer18.Enabled:=false; End; End; If (key = VK_RIGHT) Then Begin Timer1.Enabled:=true; Timer19.Enabled:=true; If Radiobutton1.Checked=true Then Begin Timer5.Enabled:=true; Timer2.Enabled:=false; Timer3.Enabled:=false; Timer4.Enabled:=false; End; If Radiobutton2.Checked=true Then Begin Timer10.Enabled:=true; Timer7.Enabled:=false; Timer8.Enabled:=false; Timer9.Enabled:=false; End; If Radiobutton3.Checked=true Then Begin Timer14.Enabled:=true; Timer11.Enabled:=false; Timer12.Enabled:=false; Timer13.Enabled:=false; End; If Radiobutton4.Checked=true Then Begin Timer18.Enabled:=true; Timer16.Enabled:=false; Timer15.Enabled:=false; Timer17.Enabled:=false; End; End; If (key = VK_SPACE) Then Begin Timer1.Enabled:=false; Timer2.Enabled:=false; Timer3.Enabled:=false; Timer4.Enabled:=false; Timer5.Enabled:=false; Timer7.Enabled:=false; Timer8.Enabled:=false; Timer9.Enabled:=false; Timer10.Enabled:=false; Timer11.Enabled:=false; Timer12.Enabled:=false; Timer13.Enabled:=false; Timer14.Enabled:=false; Timer18.Enabled:=false; Timer16.Enabled:=false; Timer17.Enabled:=false; Timer15.Enabled:=false; Timer19.Enabled:=false; End; end; Nun zu meinem eigentlichen Problem: Wenn ich mein Spiel starte und im Hauptmenü einen Schwierigkeitsgrad auswähle, dann den Start-Button drücke reagiert das Panel nicht sofort auf die Pfeiltasten, sondern erst wenn ich durch das beständige einschlagen auf die Pfeiltasten die Auswahl; die nach dem Startklick natürlich auf dem Start-Button ist; auf das Edit-Feld meiner Stoppuhr ändere. Selbst wenn ich Strg oder Shift gedückt halte muss Die auswahl zunächst auf das Edit-Feld springen. Weiß irgendjemand wie ich dieses Problem beheben kann? Mfg Hagen P.S.: Kann man verhindern, dass etwas in ein Edit-Feld eingegeben kann oder muss ich dafür eine Listbox beispielsweis benutzen? |
Re: Problem bei VK_LEFT,...
Warum zwei Themen zu gleichen Problem? Hier gehts weiter:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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