Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Breitenberechnung Text in Listbox FMX (https://www.delphipraxis.net/208517-breitenberechnung-text-listbox-fmx.html)

matashen 9. Aug 2021 07:36

Breitenberechnung Text in Listbox FMX
 
Hallo zusammen,

ich habe in einem Fenster eine Listbox, die Breite des Fensters soll sich je nach Textinhalt der Listbox in der Breite automatisch anpassen, früher hatte ich ein Label mit Zeilenumbrüche und ich hab bei jeder angefügten Information die Breite neu ermittelt und die Breite dann entsprechend geändert. Da inzwischen auch anwählbare Werte angezeigt werden sollen hab ich das Label mit einer Listbox ersetzt nur die Breitenberechnung funktioniert jetzt nicht mehr, ein Teil des Textes ist außerhalb des Sichtbaren Bereichs.
Die Anwendung habe ich mit dem FMX Framework gebaut.

so hats funktioniert
newlength:=Parameterlabel.Canvas.TextWidth(Eigensc haften.Items[i].Caption+Eigenschaften.Items[i].Value);//TLabel

so funktionierts nicht, Breite wird zu kurz berechnet
newlength:=Parameterlist.Canvas.TextWidth(Eigensch aften.Items[i].Caption+Eigenschaften.Items[i].Value);//TListbox

ich komm leider nicht drauf wie ich die Berechnung der Breite mit der Listbox machen soll das mein Text noch komplett sichtbar ist.


Gruß Matthias

Delphi.Narium 9. Aug 2021 14:44

AW: Breitenberechnung Text in Listbox FMX
 
In meinem ollen Delphi 7 mache ich das sinngemäß so:

TLabel auf's Formular. Visible = false, AutoSize = true.
Delphi-Quellcode:
function TForm1.GetNewLength(sCaption : String) : Integer;
begin
  Label1.Caption := sCaption;
  Result        := Label1.Width; // gglfs. muss man hier noch was für die Scrollbar ... zurechnen.
end;
...
newlength := GetNewLength(Eigenschaften.Items[i].Caption + Eigenschaften.Items[i].Value);
Oder:
Delphi-Quellcode:
newlength := Label1.Canvas.TextWidth(Eigenschaften.Items[i].Caption+Eigenschaften.Items[i].Value);//TListbox


Nur so als Idee, keine Ahnung ob unter FMX umsetzbar.

Harry Stahl 9. Aug 2021 18:36

AW: Breitenberechnung Text in Listbox FMX
 
Zitat:

Zitat von matashen (Beitrag 1493424)
Hallo zusammen,

ich habe in einem Fenster eine Listbox, die Breite des Fensters soll sich je nach Textinhalt der Listbox in der Breite automatisch anpassen, früher hatte ich ein Label mit Zeilenumbrüche und ich hab bei jeder angefügten Information die Breite neu ermittelt und die Breite dann entsprechend geändert. Da inzwischen auch anwählbare Werte angezeigt werden sollen hab ich das Label mit einer Listbox ersetzt nur die Breitenberechnung funktioniert jetzt nicht mehr, ein Teil des Textes ist außerhalb des Sichtbaren Bereichs.
Die Anwendung habe ich mit dem FMX Framework gebaut.

so hats funktioniert
newlength:=Parameterlabel.Canvas.TextWidth(Eigensc haften.Items[i].Caption+Eigenschaften.Items[i].Value);//TLabel

so funktionierts nicht, Breite wird zu kurz berechnet
newlength:=Parameterlist.Canvas.TextWidth(Eigensch aften.Items[i].Caption+Eigenschaften.Items[i].Value);//TListbox

ich komm leider nicht drauf wie ich die Berechnung der Breite mit der Listbox machen soll das mein Text noch komplett sichtbar ist.


Gruß Matthias

Verstehe hier nicht, woher ".caption" bzw. .value kommen soll, caption gibt es bei FMX eigentlich nur bei der Form, sonst ist alles ".Text".

Evtl zeigst Du mal ein konkretes Beispiel?

Rollo62 12. Aug 2021 17:38

AW: Breitenberechnung Text in Listbox FMX
 
In FMX gibt es TTextLayout, damit sollte es klappen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz