Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Objektnamen feststellen
qwertzuiopü - Mo 26.02.07 23:19
Titel: Objektnamen feststellen
Hallo zusammen,
ich habe ein Programm mit so um die 500 Einzel Elementen, die alle fast das gleiche tun sollen. Ich möchte nicht jedem Objekt einzeln sagen lassen, was es tun soll. Ich dachte, das ich alle Objekte, die gleiche Prozedur aufrufen lasse. doch in dieser Prozedur wird dann der Objektname gebraucht. Wie kann ich feststellen, von welchem Objekt diese Prozedur aufgerufen wurde?
Robinator - Mo 26.02.07 23:25
In der Regeln wird in den entsprechenden Events der Sender als TObject übernehmen. Wenn du nun weist, um was für einen Typ es sich dabei handelt, kannst du einfach einen TypeCast bemühen, um dann ganz normal mit dem Objekt zu arbeiten.
Gruss, rob
qwertzuiopü - Mo 26.02.07 23:38
ich habe mit so etwas noch nicht gearbeitet, weiss zwar was du meinst, doch ich kann es nicht an wennden, sagen wir mal ich hätte drei Button und möchte alle Button die selbe Prozedur aufrufen lassen bei OnClick. Innerhalb der Prozedur soll dann von dem entsprächendem Button Caption geändert werden. könnte mir das irgendwie jemand erklären? ich schau da noch nicht so ganz durch, vielleicht benutze ich den Sender auch nicht richtig, oder so
Robinator - Mo 26.02.07 23:43
joar,
Delphi-Quelltext
1: 2: 3: 4:
| with TButton(Sender) do begin Caption := 'MeineCaption'; end; |
gruss, rob
Klabautermann - Di 27.02.07 10:49
Bevor du so etwas machst, solltest du aber prüfen ob der Sender auch tButton in seinem Stambaum hat bzw. tButton ist.
Es sollte also so aussehen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.AnyButtonClick(Sender: TObject); begin if (sender is tButton) then begin tButton(sender).Caption := 'MeineCaption'; end; end; |
oder wie bei
Robinator mit with:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.AnyButtonClick(Sender: TObject); begin if (sender is tButton) then begin with TButton(Sender) do begin Caption := 'MeineCaption'; end; end; end; |
Was auch hilfreich ist wenn du in längeren Methoden mehrfach drauf zugreifen muss und wenn du nicht ständig Typecasten willst, ist dir einfach eine Hilfsvariable zu definieren:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| procedure TForm1.AnyButtonClick(Sender: TObject); var ThisButton : tButton; begin if (sender is tButton) then begin ThisButton := tButton(sender) ThisButton.Caption := 'MeineCaption'; end; end; |
Hier kannst du dann im Laufe der procedure immer wieder über die Variable
ThisButton auf deinen Knopf zugreifen.
Gruß
Klabautermann
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!