Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.431 Beiträge
 
Delphi 12 Athens
 
#14

AW: Wozu haben Komponenten Namen?

  Alt 28. Okt 2013, 13:17
Ich glaube hier findet ständig eine Verwechselung statt zwischen den Komponenten-Namen und den Variablen-Namen. Der Komponenten-Name dient ausschließlich der Zuordnung von gestreamten Resourcen zu den korrekten Variablen beim Laden der Formulare.

Im dfm wird dann vom Reader erkannt, dass:
  object Label1: TLabel hiermit verknüpft werden soll:
Delphi-Quellcode:
TForm1 = class(TForm)
  Label1: TLabel;
Das hat eigentlich gar nichts mit dem Streaming zu tun. Wenn du eine Klasse von TComponent ableitest und darin ein Feld mit einem ebenfalls von TComponent abgeleiteten Typ mit der passenden Sichtbarkeit (published) deklarierst, dann wird dieses Feld bei einem Aufruf von InsertComponent mit einer Instanz als Parameter, deren Name dem Feldnamen entspricht, genau auf diese Instanz gesetzt. Deshalb dürfen die Komponentennamen der Child-Komponenten auch nur eindeutig innerhalb der Parent-Komponente oder leer sein (weil ein Leerstring ja kein Variablenname ein kann).

Insofern würde das obige Beispiel:

Delphi-Quellcode:
   newButton := TButton.Create(self);
   newButton.Name := 'Testbutton';
   newButton.Parent := self;

...


   testButton.Click();

durchaus funktionieren, wenn testButton entsprechend als Feld im Form deklariert ist.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat