Einzelnen Beitrag anzeigen

Astobix

Registriert seit: 26. Dez 2012
26 Beiträge
 
Delphi 6 Personal
 
#1

Radiobutton per Taste auslösen?

  Alt 26. Dez 2012, 17:23
Hallo,

Erstmal möchte ich mich entschuldigen für diese "Noob - Frage" Ich bin ziemlich neu im Programmierbereich ( habe vor 3-4 Tagen damit angefangen.) Aktuell benutze ich Lazarus, da ich erstmal in das Programmieren reinschnuppern wollte ohne direkt (viel) Geld dafür auszugeben. Soviel zu meinem "Hintergrund", kommen wir jetzt zu dem Grund für diesen Thread.

Ich wollte ein Spiel programmieren, wo ich etwas per WASD / Pfeiltasten steuern kann. Als ganz simplen Anfang hatte ich mir gedacht, das ich per Canvas einen Kreis zeichne den ich dann eben mit den Tasten steuern kann. Man müsste dann irgendwelchen Dingen ausweichen oder irgendwas in die Richtung. Doch da hab ich schon das Problem: Ich weiß nicht wie ich einen Befehl machen kann, durch den eine Sache passiert wenn eine gewisse Taste gedrückt ist.

Meine Idee war, 5 Radiobuttons zu machen (Caption: &w, &a, &s, &d, Nichts). Ich hab irgendwo gelesen oder gehört, dass man mit dem & - Zeichen den Radiobuttons Tasten zuweisen kann.
Danach habe ich bei folgende Prozedur geschrieben:
Delphi-Quellcode:
procedure TForm1.RadioButton1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  RadioButton1.Checked:=true;
end;
Radiobutton1 ist in dem Fall "&w". Das habe ich ebenso bei "&a","&s","&d" gemacht. Anschließend habe ich eine OnKeyUp Prozedur für alle geschrieben:
Delphi-Quellcode:
procedure TForm1.RadioButton1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  RadioButton5.Checked:=true;
end;
RadioButton5 ist der Radiobutton ohne Funktion (Caption: Nichts).
Was ich mir jetzt gedacht habe, war folgendes:
Immer wenn ich eine Taste jetzt drücke, Wird der Radiobutton der zu der Taste gehört aktiviert. Lasse ich sie wieder los, wird der "neutrale" Radiobutton aktiviert.

Tatsächlich aber beginnt das Programm verrückt zu spielen. Erst 1-2 Sekunden nachdem ich W gedrückt habe, wird der Radiobutton1 aktiviert. Wenn ich die Taste loslasse aktiviert er sofort zu Radiobutton5 (gut!) und danach hat es den Anschein dass es funktioniert (drückt man nochmal W aktiviert er sofort Radiobutton1). Doch wenn ich jetzt z.b. A drücke, aktiviert er zuerst Radiobutton1 erneut und etwas später erst Radiobutton2. Das ganze bewirkt, dass mein "Spiel" nicht möglich wäre, weil die Steuerung nicht ordentlich funktioniert.

Jetzt die Fragen an euch:
1. Warum passiert das? (Würde meinem Verständniss weiterhelfen )
2. Wie kann ich es ändern?
3. Gibt es andere Möglichkeiten ohne Radiobuttons die sinnvoller sind?

Ich bitte euch, bei euren Antworten darauf zuachten, dass ich noch ganz am Anfang bin. Ich würde mich wirklich sehr über einige Hilfe freuen, weil ich selber nichts gefunden habe, dass mein Problem löst

Gruß,
Astobix

Geändert von Astobix (26. Dez 2012 um 17:27 Uhr)
  Mit Zitat antworten Zitat