Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Controlname ausgeben


Nano-Ware - Mo 03.05.10 16:43
Titel: Controlname ausgeben
Hey ;D,

wenn ich ein Control habe ( in dem Fall 2 Buttons ) und verweise beide auf die selbe Procedure und will nun in einem Label anzeigen, ob von Button1 oder von Button2 gesendet worden ist. Ich möchte aber nicht "If Sender = ..." denn das werden recht viele Buttons ;D Also sozusagen so:


Label1.Caption := DIE_FUNKTION(Sender);


Martok - Mo 03.05.10 16:47

Recht einfach, sogar ohne FUNKTION ;)

Den Button bekommst du, indem du Sender in TButton castest. Und jedes Control weiß ja, wie es heißt:


Delphi-Quelltext
1:
Label42.Caption:= (Sender as TButton).Name;                    


So kommst du auch an alle anderen Eigenschaften von TButton ran.


Nano-Ware - Mo 03.05.10 16:52

OMG da hät ich auch selbst drauf kommen können^^ danke ;D

EDIT:// Es gibt doch noch ein Problem :

Ich habe auf meiner Form ca. 20-30 Textboxen. Ihr Name beginnt mit "sv_" wie kann ich denn jetzt einen nach der anderen durchgehen? Und den vollständigen Namen anzeigen?


Martok - Mo 03.05.10 16:58

;)

Kleiner Hinweis vielleicht noch, ist mir nach dem Absenden noch eingefallen: falls es sein kann, dass das Ereignis nicht nur von Buttons aufgerufen wird, sollte man noch testen, ob denn der Sender überhaupt ein Button ist:

Delphi-Quelltext
1:
2:
if Sender is TButton then
  Label42.Caption:= (Sender as TButton).Name;

Der as-Operator macht das zwar intern, wirft dann aber eben eine Exception, wenns nicht passt.


user profile iconNano-Ware hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe auf meiner Form ca. 20-30 Textboxen. Ihr Name beginnt mit "sv_" wie kann ich denn jetzt einen nach der anderen durchgehen? Und den vollständigen Namen anzeigen?

FindComponent