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/)
-   -   VCL-Control für Textanzeige (https://www.delphipraxis.net/198704-vcl-control-fuer-textanzeige.html)

freimatz 24. Nov 2018 19:15

VCL-Control für Textanzeige
 
Ich suche eine Komponente für die Anzeige von Text. Die soll könnnen:
  1. Breite soll fix sein
  2. Die Höhe soll automatisch je nach Text ändern
  3. Man soll einen Umbruch einfügen können
  4. Schön wäre noch ein zusätzlicher Rand oben und unten
Versucht habe ich TLabel, TPanel und TMemo. Letztere bricht schön um, macht aber die Höhe nicht automatisch. Was nehmt ihr denn so dafür? Als Parent ist dann ein TFlowPanel da.

Der schöne Günther 24. Nov 2018 19:28

AW: VCL-Control für Textanzeige
 
Nimm ein
Delphi-Quellcode:
TMemo
und errechne dir die benötigte Höhe selbst:

https://www.delphipraxis.net/189407-...%5Bvcl%5D.html

freimatz 24. Nov 2018 19:43

AW: VCL-Control für Textanzeige
 
Danke.
Habe ich mir kurz angesehen. Wenn das Memo lange Zeilen selber umbricht dann stimmt das wohl nicht. Fixen Text könnte ich selber umbrechen, aber ein Problem gibts bei dynamischen Text. :gruebel:

p80286 24. Nov 2018 20:57

AW: VCL-Control für Textanzeige
 
Was ist Dynamischer Text:gruebel:

Angenommen Du hast einen 300 Zeichen langen String. Den übergibst Du als Text an das Memo und liest dann die Anzahl Zeilen aus?

Gruß
K-H

Redeemer 25. Nov 2018 12:41

AW: VCL-Control für Textanzeige
 
Man nehme ein TPanel der gewünschten Breite, packe ein TLabel drauf und setze TLabel.Align auf alTop. Fertig.

Der schöne Günther 25. Nov 2018 16:25

AW: VCL-Control für Textanzeige
 
Inwiefern erfüllt das Anforderung Nummer 2?

Delphi.Narium 25. Nov 2018 16:59

AW: VCL-Control für Textanzeige
 
TLabel hat die Eigenschaft WordWrap, kann also selbständig den Text passend umbrechen.

Mit AutoSize = True sorgt es dafür, dass es die richtige Größe für den Inhalt bekommt.

Das TPanel, auf dem das TLabel liegt, passt wiederum seine Größe per AutoSize an die vom TLabel geforderte an.

Bei geändertem Inhalt ändert sich auch die Größe, damit ist die Anforderung Nummer 2 erfüllt.

Der schöne Günther 25. Nov 2018 19:45

AW: VCL-Control für Textanzeige
 
Oh, das war mir neu. Ich dachte immer
Delphi-Quellcode:
AutoSize
und
Delphi-Quellcode:
WordWrap
würden sich ausschließen. Dann war dem wohl nicht so.

Zitat:

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.
DocWiki


Oder
Delphi-Quellcode:
Align = alTop
oder so verhindert AutoSize, irgendetwas war da...

Redeemer 25. Nov 2018 21:35

AW: VCL-Control für Textanzeige
 
Ich bezog mich auf Delphi 2009. Muss also schon sehr lange so sein, wenn das mal anders war.

Zitat:

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.
Das ganze funktioniert sehr sehr seltsam. Nach jeder Änderung wird das Label auf die zu der Zeit kleinste Breite eingestellt, bei denen sich die Umbrüche nicht weiter verändern. Das macht die Nutzung des Labels alleine nutzlos.

Zitat:

Zitat von Delphi.Narium (Beitrag 1419169)
Das TPanel, auf dem das TLabel liegt, passt wiederum seine Größe per AutoSize an die vom TLabel geforderte an.

Das mit dem TPanel.Autosize würde ich nicht machen. Lieber manuell die Höhe einstellen nach dem Ändern des Labeltextes.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:07 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