Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Delphi 5 TButton-Events abfragen (https://www.delphipraxis.net/101159-delphi-5-tbutton-events-abfragen.html)

LokutusvB 9. Okt 2007 10:02


Delphi 5 TButton-Events abfragen
 
Hallo Leute,

ich arbeite zur Zeit an einem Programm, welches über verschiedene Buttons (Button1 bis Button 10) verschiedene andere Ereignisse auslöst und Eigenschaften anderer Komponenten (1 bis 10) verändert.

Zur Zeit ist es noch so, dass ich für jeden Button eine separate Click-Procedure (TForm_Main.Button1Click(Sender: TObject) bis Button10) erstellt habe.

Nun soll das Programm aber erweitert werden, die Erweiterungen an sich sind nicht das Problem, nur werden es irgendwann 50 und mehr Buttons sein. Auch alles kein Problem. Nur wird mir irgendwann der Quelltext zu lang und unübersichtlich. Für jeden der Buttons wird beim Click Ereignisse mit anderen Objekten ausgelöst, dieses Vorgehen kann ich wunderbar durch Schleifen und FindComponent-Aufrufe abhandeln. Leider weiss ich momentan noch keine Möglichkeit, wie ich das in einer oder 2 Prozeduren für alle Buttons abhandeln kann, sondern müßte trotzdem für jeden Button eine ButtonXClick-Procedure nutzen, in der ich dann die Abhandlungsprocedure mit Übergabe aufrufe.

Nun zu meiner Frage:
Gibt es eine Möglichkeit, in einer Procedure alle Buttons abzuhandeln?
Also so in etwa
TForm_Main.ButtonCLick(Sender: TObject):
begin

// for ii := 1 to MAX_BTN do
// if TButton(Form_main.FindComponent(Button + IntToStr(ii))). ->ClickEvent = True) then Cklickereignis(ButtonX);

end;

Ich hoffe, ihr versteht, wie ich das meine und könnt mir bei dem Problem weiterhelfen.

mkinzler 9. Okt 2007 10:08

Re: Delphi 5 TButton-Events abfragen
 
Nin aber du kannst ja für alle Buttons die Selbe Methode verwenden und dann mit dem Parameter sender arbeiten, in welchem du eine Referenz auf den geklickten Button bekommst

LokutusvB 9. Okt 2007 10:13

Re: Delphi 5 TButton-Events abfragen
 
Auf die Idee bin ich noch gar nicht gekommen, das wäre mal einen Versuch wert. Habe zwar mit dem Sender-Parameter noch nie gearbeitet, das sollte aber auch nicht all zu schwehr sein. Danke dir!

Und das war es auch schon :)

procedure TForm_Main.ButtonClick(Sender: TObject);
var
ii: Integer;

begin
for ii := 1 to 10 do
if (Sender = TButton(Form_Main.FindComponent('Button' + IntToStr(ii))))
then ShowMessage('Button' + IntToStr(ii));
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz