1212 Stimmen

Delphi: Mehrzeilige Caption für TLabel (zur Laufzeit und Design Zeit)

Tutorial von Stefan Trost | Letztes Update am 25.12.2022 | Erstellt am 05.09.2012

In diesem Tipp möchte ich euch zeigen, wie ihr es hinbekommen könnt, einem Label (TLabel) eine mehrzeilige Caption in Delphi zu verpassen. Wir möchten uns dabei sowohl ansehen, wie wir mehrzeilige Captions zur Laufzeit als auch zur Design Zeit erstellen können.

Zunächst könnt ihr die folgenden Eigenschaften eures Labels anpassen. Das könnt ihr einfach über den Objektinspektor tun oder ihr nutzt den folgenden Code dafür (zum Beispiel in der OnCreate-Procedure eurer Form):

with Label1 do begin
   WordWrap  := True;
   AutoSize  := True;
   Align     := alTop;  // oder alClient
end;

Die Eigenschaft "WordWrap" sorgt dafür, dass der Text eurer Caption automatisch umgebrochen wird, falls er zu lang für die Breite des Labels ist. Wenn ihr einen längeren Text als Caption benutzen möchtet, solltet ihr diese Eigenschaft setzen, da der Text sonst nicht vollständig sichtbar sein wird.

Darüber hinaus können auch die Eigenschaften "AutoSize" und "Align" im Zusammenhang mit mehrzeiligen Captions sinnvoll sein, damit sich die Größe des Labels automatisch an seinen Inhalt anpasst und den zur Verfügung stehenden Platz vollständig ausnutzt (zum Beispiel wenn das Label auf einem Panel liegt).

Mehrzeilige Caption zur Laufzeit setzen

Als erstes möchten wir uns anschauen, wie wir eine mehrzeilige Caption für unser Label zur Laufzeit (Run Time) unseres Programms setzen können. Dafür müssen wir in unseren String für die Caption des Labels einfach nur einen Zeilenumbruch an der Stelle einbauen, an der die Zeile umbrechen soll.

Unter Windows stehen die Zeichen #13 und #10 nacheinander geschrieben für einen Zeilenumbruch (das sind die Codepoints U+0D und U+0A). Demnach könnt ihr im Code zum Beispiel auf die folgende Weise eine mehrzeilige Caption erzeugen:

Label1.Caption := 'Zeile 1' + #13#10 + 'Zeile 2';

Alternativ könnt ihr auch die Konstante sLineBreak verwenden, die in der Unit "System" von Delphi definiert ist:

Label1.Caption := 'Zeile 1' + sLineBreak + 'Zeile 2';

Der Vorteil der Verwendung dieser Variante ist, dass die Konstante sLineBreak je nach System, auf dem wir unser Programm kompilieren, die richtigen Zeichen für einen Zeilenumbruch des jeweiligen Systems enthält, ohne dass wir den Code anpassen müssen. Unser Code wird damit plattformunabhängig. Linux und macOS verwenden zum Beispiel nur das Zeichen #10 (U+0A) als Zeilenumbruch.

Wenn wir statt Delphi zu nutzen, ein Programm mit Lazarus erstellen, können wir auch die Konstante LineEnding, die ebenfalls in der Unit "System" deklariert ist, in der gleichen Weise wie "sLineBreak" verwenden. Lazarus ermöglicht es, den gleichen Code zu nutzen, um ein Programm zum Beispiel sowohl für Windows als auch für macOS und Linux zu kompilieren. Mit der Verwendung der Konstante LineEnding müssen wir unseren Code nicht für die unterschiedlichen Zeilenumbruchtypen der einzelnen Systeme anpassen.

Mehrzeilige Caption zur Design-Zeit erstellen

Wollt ihr den Zeilenumbruch bereits zur Design Time einstellen, könnt ihr dafür leider nicht wie gewohnt den Objektinspektor benutzen, da dieser nur einzeilige Texte für die Caption zulässt.

Stattdessen könnt ihr mit der rechten Maustaste auf das Label klicken und "View as Text" auswählen. Irgendwo findet ihr in dem neuen sich öffnenden Fenster den Bereich "object Label1:TLabel", wo ihr die Caption mit dem #13#10 wie oben beschrieben einstellen könnt.

Das könnte zum Beispiel so aussehen:

object Label1: TLabel
  Left = 0
  Top = 0
  Width = 100
  Height = 13
  Caption = 'Zeile 1'#13#10'Zeile 2'
  WordWrap = True
  AutoSize = True
  Align = alTop
end

Anschließend könnt ihr wieder mit der rechten Maustaste auf den Inhalt des Fensters klicken und "View as Form" auswählen. Damit gelangt ihr wieder zurück zur Design-Ansicht und solltet den Zeilenumbruch im Text des Labels sehen.

AntwortenPositivNegativ
77 Stimmen

Rechte Maustaste auf das Label

Quelltext (.lfm) anzeigen

Labelobjekt suchen

Caption = 'Zeile1'#13#10'Zeile2';

Speichern

Fertig
19.07.2015 um 20:08

AntwortenPositiv Negativ
Antworten

Ü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

PHP: Eine E-Mail versenden

Tutorial | 0 Kommentare

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.