![]() |
Auf die Befehle eines Buttons zugreifen
Hi!
Ich wollte mal fragen, ob es möglich ist, die Befehle, die ich in einem ButtonClick Ereignis ausführe, weiter irgendwo zu verwenden, indem ich dann, wie bei einer Prozedur, auf den Button irgendwie zugreife? Sonst muss ich daraus wohl oder übel ganz doll viele Prozeduren machen. Ob das eine oder andere weniger/mehr OOP ist, ist mir relativ egal- hauptsache es funktioneirt :D Unser Lehrer mag eh kein OOP sagt er ständig- auch wenn er es uns trotzdem beibringen muss. Aber erstmal will ich dass es funktioniert. Achja: Wann brauch ich Klammern um If / If Not abfragen? |
Re: Auf die Befehle eines Buttons zugreifen
Du kannst mehrere Bedienelemente(Button) mit der selben Eventmethode verbinden. Im Parameter Sender befindet sich dann eine Referenz auf das auslösenden Element
|
Re: Auf die Befehle eines Buttons zugreifen
...? Bahnhof :D
Wenn ich das auch nur etwas verstanden hab, hab ich mich unklar oben ausgedrückt: Die verschiedenen Buttons haben verschiedenen Befehler, aber ich möchte gerne in einer neuen "Prozedur" alle davon neu benutzen. |
Re: Auf die Befehle eines Buttons zugreifen
Du kannst bei mehreren Button die selbe Methode im OI auswählen. im Code verweist dann Sender auf den Button der angeklickt wurde
|
Re: Auf die Befehle eines Buttons zugreifen
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
procedure T<Form>.Button1Click(Sender: TObject);
begin //Methode für mehrere Buttons if (Sender as TButton).Name = 'Button1' then begin //Button1 end else begin //Button2 end; end; |
Re: Auf die Befehle eines Buttons zugreifen
Ich denke, Du meinst so etwas:
Delphi-Quellcode:
Damit werden die Events der Buttons nacheinander ausgeführt.
procedure TFormBla.ButtonWuppdiClick(Sender: TObject);
begin Button1Click(Button1); Button2Click(Button2); Button3Click(Button3); end; |
Re: Auf die Befehle eines Buttons zugreifen
Tut mir Leid, aber ich glaub ich werd echt einfach eigene Prozeduren schreiben. Auch wenn ich zumindest zu Recht nicht schlecht in Informatik stehe versteh ich echt nicht, was mir das bringen soll, wennich im OI(WO im OI?) irgendeine Methode irgendwie reinschreibe und dass dann im Sender der Buttons steht. Ich will auf die verscheienden Aktionen(es geht darum, ähnlich den Türmen von Hanoi Sachen von einem Stack ins andere zu verschieben, und die Buttons haben wir da schon im Programm, mit den verschiedenen Sachen, von A nach B, von B nach C etc. pp, und ich möcht diese Sachen gerne weiterverwenden ohne jedes Mal die ganzen Befehle neu zu schreiben)
ED: Deddy, danke! So funktioniert es! Aus welchem Grund muss man den Button als Sender in die Klammern schreiben, warum reicht nicht Button1Click? |
Re: Auf die Befehle eines Buttons zugreifen
Das sind TNotifyEvents, die verlangen nunmal einen Sender-Parameter.
|
Re: Auf die Befehle eines Buttons zugreifen
Zitat:
Code:
usw.
and
or not in deine If abfrage brauchst, dann setz da klammern drum Bsp
Delphi-Quellcode:
if (not zahl1 = 1) and ( (zahl2 <> 3) or (zahl3 = 10) ) then...
|
Re: Auf die Befehle eines Buttons zugreifen
Weil du mit dem Befehl die Funktion aufrufst und diese nunmal einen Parameter erwartet.
Alternativen sind: Button1.Click; oder Button1Click(nil); Sauberer ist aber folgende Variante:
Delphi-Quellcode:
Damit hast du den eigentlichen Zug (etwas von A nach C zu bewegen) in eine seperate Prozedur ausgelagert, und rufst diese dann auf ;)
procedure TForm1.MoveAtoC
begin // Methode des Formulars. Oben muss unter private ein "procedure MoveAtoC;" (ohne die ") // Code end; procedure TForm1.Button1Click(Sender: TObject) begin // Button Event ruft nur die Prozedur auf MoveAtoC; end; procedure Blablabla begin MoveAtoC; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 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