Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Innerhalb einer Komponente ihren Namen rausfinden
ao - Mi 14.08.02 12:03
Titel: Innerhalb einer Komponente ihren Namen rausfinden
Moin, moin,
ich habe einen Komponente entwickelt, klappt auch alles wunderbar, nur bin ich irgendwie zu dumm, innerhalb der Komponente (zur Laufzeit) ihren Namen rauszufinden. :cry:
Ich hoffe ihr könnt mir helfen.
Gruß
Andreas
Renegade - Mi 14.08.02 12:20
Moin erstmal!
Das sollte folgendermaßen funzen:
Quelltext
1:
| ShowMessage(MeineKompo.Name); |
Gruß
Arakis - Mi 14.08.02 12:52
Ich glaub, ao meinte vielleicht etwas anderes, also den Namen von sich selbst herausfinden, ohne "MeineKompo" zu verwenden.
Quelltext
1:
| ShowMessage(self.Name); |
Vorraussetzung ist, dass man sich gerade in der Klasse der Komponente befindet.
Oder ist das das selbe wie bei Renegade
ao - Mi 14.08.02 13:14
Hallo,
Wenn ich meine Komponente zur Entwicklungszeit z.B. in ein DataModule
setze, bekommt die Komponente ja automatisch einen Namen. In dem Fall reicht es, wenn ich innerhalb meiner Komponente einfach
ShowMessage(Name);aufrufe, da ich mich ja innerhalb der Klasse befinde.
Wenn ich meine Komponente aber zur Laufzeit z.B. so erzeuge
Quelltext
1: 2: 3: 4: 5: 6: 7:
| var Q: TMyComponent; begin Q := TMyComponent.Create(Form1); // irgendwas mit der Komponente machen Q.Free; end; |
dann gibt
ShowMessage(Name); nur einen leeren string zurück, da ich q.name keinen Wert zugewiesen habe.
Ich hätte aber gerne "Q".
Gruß
Andreas
Renegade - Mi 14.08.02 13:30
Moin erstmal!
Ich wüßte im Moment nicht wozu du das bräuchtest. Du erzeugst die Kompo ja im Code - also weißt du ja wie sie heißt.
Ansonsten weiß doch beim createn Q.Name:='Q' zu.
Gruß
Arakis - Mi 14.08.02 13:32
Meiner Meinung nach kann das nicht gehen, weil der Variabelname zur Laufzeit nicht bekannt ist. Variabelnamen sind ja nur eine Kleine Hilfe für uns Menschen, das Objekt "Q" kann ja als Komponente den Namen "irgendwas" haben. Alles andere wären Sprachkonstrukte, so wie sie bei Scriptsprachen häufig verwendet werden(Sourcecode zur Laufzeit generieren)
Vielleicht sagt dir das irgendwas:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| procedure TForm1.Button1Click(Sender: TObject); var IrgendEineKompo: TComponent; begin IrgendEineKompo := self.FindComponent('Button1'); showmessage(IrgendEineKompo.Name); //Hier wird "Button1" angezeigt end; |
Bis dann
ao - Mi 14.08.02 13:50
Also wenn ich "Q" nicht anders rausfinden kann, dann muss ich halt der Eigenschaft Name den Wert "Q" zuweisen. Ich habe nur immer gedacht, k.A. wieso, dass der Name der Variablen automatisch der Name der Komponente ist. Aber wenn man da genauer drüber nachdenkt ist es ja auch unlogisch, wie Arakis schon sagte, es ist ja nur eine Hilfe. Ich konnte mir nur irgendwie nicht vorstellen das die Komponente die ich erzeuge keinen Namen hat, obwohl ich sie doch mit "Q" anspreche, aber das ist ja nur ein "Zeiger".
Aber danke euch trotzdem! Man lernt nie aus! :D
Gruß
Andreas
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!