![]() |
4 Buttons abfragen
Hallo liebe Community,
Folgendes Problem: Gegeben ist ein Programm mit 4 Buttons. Ein Button ist der Startbutton, ein Button ist der Endbutton. Welcher der Buttons der Start und Endbutton ist, lege ich vorher beliebig fest (Startbutton kann aber nicht gleich Endbutton sein). Mit einem Klick auf einen beliebigen Button möchte ich dann erkennen, ob es der von mir festgelegte Startbutton ist. Wenn true, folgt nun die Suche nach dem richtigen Endbutton. Wenn ich den richtigen Endbutton erwische, Aufgabe erledigt. Wenn ich jedoch den falschen Button drücke, soll das Programm auch den bereits gefunden Startbutton zurücksetzen. Die Aufgabenstellung klingt so verdammt einfach aber mir explodiert gleich der Kopf :pale: ... Anregungen/Lösungsansätze? |
AW: 4 Buttons abfragen
Ich habe das nicht ganz verstanden. Klingt irgendwie wie ein Spiel?
Ich würde allen 4 Buttons ein einzigartiges Tag geben (0,1,2,3) und allen Buttons denselben OnClick verpassen und dann im OnClick prüfen:
Delphi-Quellcode:
Irgendwo dann noch in Variablen festlegen, welcher Button der Start- und Endbutton ist:
if TButton(Sender).Tag = iButtonStart then
begin // tue etwas, wenn der gedrückte Button der Startbutton ist end else if TButton(Sender).Tag = iButtonEnd then begin // tue etwas, wenn der gedrückte Button der Endbutton ist end;
Delphi-Quellcode:
iButtonStart := 2;
iButtonEnd := 1; |
AW: 4 Buttons abfragen
Erstmal vielen Dank für die schnelle Antwort!
Du hast recht, es soll ein Spiel werden. Ist als Minimalbespiel gedacht, für ein Schachspiel mit 1-Zug-Matt Aufgaben. Vielen Dank erstmal, ich werde mal versuchen das so zu implementieren! |
AW: 4 Buttons abfragen
Oder direkt
Delphi-Quellcode:
.
cButtonStart := DerStartbutton;
cButtonEnd := DerEndbutton; if Sender = cButtonStart then Aber wenn man die 1-4 per Random erzeigen will, dann kann das mit dem .Tag auch ganz praktisch sein. |
AW: 4 Buttons abfragen
Vielen Dank auch an dich!
Die Methode mit Sender gefällt mir sehr gut! Auch einfach umzusetzen ohne alle Buttons taggen zu müssen. Habe den Code jetzt so eingebaut, funktioniert aber leider nicht :(
Code:
Bekomme keine Ausgabe. Anscheinend erkennt er nicht ob der Button geklickt wurde oder nicht.
procedure TForm1.ButtonClick(Sender: TObject);
begin if Sender = Button1 then begin Memo1.Text:='Hallo'; end; end; |
AW: 4 Buttons abfragen
Hast du ALLEN 4 Buttons das Event "ButtonClick" zugewiesen? Hast du das Event selber geschrieben oder kommt das über den Objektinspektor?
|
AW: 4 Buttons abfragen
Setz doch mal einen Haltepunkt und guck, ob er da überhaupt rein springt. Dann weißt du es doch.
|
AW: 4 Buttons abfragen
Hallo,
muss das nicht
Delphi-Quellcode:
oder
if (Sender as TButton).name=Button1 then
Delphi-Quellcode:
heißen?
if TButton(Sender).name=Button1 then
|
AW: 4 Buttons abfragen
Bei mir funktioniert es ohne as TButton.
Delphi-Quellcode:
.name kann gar nicht funktionieren, da name ein String ist.
procedure TForm1.Button2Click(Sender: TObject);
begin if Sender = Button2 then begin end; end; |
AW: 4 Buttons abfragen
Nur, wenn du es so vergleichst, erzeugst du ein Schwarzes Loch auf deinem Schreibtisch, wenn der Sender mal nicht vom Typ TButton ist. :mrgreen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 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