1111 Stimmen

Delphi/Lazarus: Label zur Laufzeit dynamisch erstellen

Tipp von Stefan Trost | Letztes Update am 18.11.2022 | Erstellt am 23.10.2013

Mit diesem kleinen Codebeispiel möchte ich euch zeigen, wie ihr ein TLabel dynamisch zur Laufzeit eures Programms neu erstellen und platzieren könnt.

Schauen wir uns dazu zunächst den Code an, der für Delphi und Lazarus in gleicher Weise verwendet werden kann:

var
  ANewLabel: TLabel;
begin
  ANewLabel         := TLabel.Create(Form1);
  ANewLabel.Name    := 'la_new';
  ANewLabel.Caption := 'New Label';
  ANewLabel.Left    := 20;
  ANewLabel.Top     := 10;
  ANewLabel.Visible := true;
  ANewLabel.Parent  := Form1;
end;

Mit TLabel.Create() können wir ein neues Label aus dem Nichts zaubern. Damit wir die Eigenschaften dieses Labels anschließend verändern können, benutzen wir die Variable "ANewLabel", in der wir einen Verweise auf das neue Label zwischenspeichern, so dass wir über diese Variable anschließend beliebige Eigenschaften des Labels setzen können.

Name, Parent und Owner des Labels

Wichtig sind hierbei vor allem 2 Dinge: Erstens muss jedes Control auf eurem Formular einen eindeutigen Namen haben. Geben wir dem Label wie in unserem Beispiel den Namen "la_new" und wollen wir anschließend ein weiteres Label erstellen, müssen wir uns für dieses Label einen neuen Namen überlegen (zum Beispiel "la_new2").

Zweitens ist es sehr wichtig, dass wir die Eigenschaft "Parent" des Labels setzen. Diese bestimmt, auf welches Control das Label gesetzt wird und dort sichtbar wird. Im Beispiel setzen wir das Label auf "Form1" (den Namen unseres Formulars), ebenso wäre es aber auch möglich, das Label auf ein Panel (TPanel), auf einen TabSheet (TTabSheet) oder was auch immer zu setzen. Würden wir die Eigenschaft "Parent" nicht setzen, bliebe unser Label unsichtbar verborgen und würde lediglich im Speicher existieren.

Wenn wir uns nicht selber darum kümmern möchten, den Speicher des Labels wieder freizugeben, wenn das Label nicht mehr benötigt wird, ist es ähnlich wichtig, auch den "Owner" des Labels zu setzen. Diesen setzen wir hier allerdings nicht nachträglich über eine der Eigenschaften des Labels sondern direkt bei der Erstellung als Parameter von Create() indem wir hier "Form1" übergeben. Dadurch wird bei der Freigabe unserer Form automatisch auch das Label freigegeben und wir ersparen uns, händisch die .Free-Procedure des Labels aufzurufen.

Positionierung und Caption

Ansonsten setzen wir noch einige andere der Eigenschaften, wie zum Beispiel "Left" und "Right" um das Label auf dem Formular zu positionieren (hier 20 Pixel vom linken Rand entfernt und 10 Pixel vom oberen Rand entfernt) oder "Caption", um einen Text auf dem Label anzuzeigen.

Natürlich könnten wir auf diese Weise auch noch alle denkbaren anderen Eigenschaften setzen, die sonst noch über den Objekt Inspektor einstellbar sind.

AntwortenPositivNegativ

Über den Autor

AvatarSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen

 

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.