Autor Beitrag
ao
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: Mi 14.08.02 12:03 
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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: Mi 14.08.02 12:20 
Moin erstmal!

Das sollte folgendermaßen funzen:
ausblenden Quelltext
1:
ShowMessage(MeineKompo.Name);					


Gruß

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: Mi 14.08.02 12:52 
Ich glaub, ao meinte vielleicht etwas anderes, also den Namen von sich selbst herausfinden, ohne "MeineKompo" zu verwenden.
ausblenden 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 user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: 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 einfachShowMessage(Name);aufrufe, da ich mich ja innerhalb der Klasse befinde.

Wenn ich meine Komponente aber zur Laufzeit z.B. so erzeuge
ausblenden 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 gibtShowMessage(Name); nur einen leeren string zurück, da ich q.name keinen Wert zugewiesen habe.
Ich hätte aber gerne "Q".

Gruß
Andreas
Renegade
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 358

Win XP Pro, Win 7 Beta
BDS 2006
BeitragVerfasst: 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ß

_________________
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."
Arakis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 344



BeitragVerfasst: 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:
ausblenden 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
user defined image

_________________
Mit dem Computer löst man Probleme, die man ohne ihn nicht hätte.
Entwickler von SpaceTrek: The New Empire - Siehe Hompage!


Zuletzt bearbeitet von Arakis am Mi 14.08.02 13:53, insgesamt 1-mal bearbeitet
ao Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 145

Win XP Prof.
D7 Ent.
BeitragVerfasst: 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