Hallo,
gegeben ist ein Panel (dynamisch erzeugt) auf dem ein TVirtualImage und ein Label auch
dynamisch drauf sollen. Erzeugen klappt auch grundsätzlich, nur hat das Label ein Problem.
Das Label soll fast so breit wie das Panel sein und der Text im Label zentriert. Der Text
kann aber merzeilig werden.
Daher WordWrap auf true.
Setze ich AutoSzie auf true klappt es mit dem mehrzeiligen text, aber linksbündig statt
zentriert. Setze ich es auf false klappt es mit der Zentrierung aber es ist nicht mehr
automatisch mehrzeilig.
Delphi-Quellcode:
MyLabel := TLabel.Create(Panel);
MyLabel.Parent := Panel;
MyLabel.Font.Size := 14;
MyLabel.Top := Image.Top + Image.Height + 3;
MyLabel.Left := 3;
MyLabel.Width := Panel.Width - LabelPay.Left - 3;
MyLabel.AutoSize := false; //true;
MyLabel.Alignment := TAlignment.taCenter;
MyLabel.WordWrap := true;
MyLabel.Caption := 'Mein Text';
Die F1 Hilfe sagt übrigens das dazu, aber nichts über Align in dem Zusammenhang:
Zitat:
Legt fest, ob die Größe des Steuerelements automatisch an die Größe des enthaltenen Textes angepasst wird.
Mit AutoSize können Sie den Client-Bereich des Steuerelements automatisch an die Höhe und die Breite des
angezeigten Textes anpassen. Wenn AutoSize False ist, hat die Beschriftung eine feste Größe. Ist AutoSize
True, bewirkt jede Änderung am Text eine Anpassung der Beschriftungsgröße. Die Anpassung erfolgt auch, wenn
sich die Eigenschaft Font ändert.
Wenn WordWrap den Wert True hat, ist die Breite des Steuerelements fest. Ist AutoSize ebenfalls True, bewirken
Änderungen am Text, dass das Steuerelement in der Höhe angepasst wird. Wenn AutoSize True ist und WordWrap False,
wird die Höhe des Steuerelements von der Schriftart vorgegeben, und Änderungen am Text bewirken eine Breitenänderung.
Das passt für mich irgendwie noch nicht zusammen.