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/)
-   -   FMX Komponente für lange Texte? (https://www.delphipraxis.net/211510-fmx-komponente-fuer-lange-texte.html)

softtouch 26. Sep 2022 18:06

FMX Komponente für lange Texte?
 
Ich habe ein Array mit strings (ca. 1000). Jeder dieser strings kann fast beliebig lang sein.
Nun muss ich diese strings darstellen, zeilenweise, mit der Möglichkeit, horizontal und vertikal zu scrollen.
Da gäbe es ja die listbox, wo auch multiselect geht (brauche ich unbedingt), aber diese zeigt zwar die horizontale scrollbar an, scrollt aber nicht.
Ich nehme an,ich muss irgendwie die Breite der items einstellen, aber woher weiss ich wie breit das item sein soll?

himitsu 26. Sep 2022 18:13

AW: FMX Komponente für lange Texte?
 
Eine ListView und in die das Item(s) eine horizontale ScrollBox mit rein? (falls das geht das neue VCL-Ding kann nur GraphicControls, aber ich glaub FMX konnte alles)



Aber vielleicht auch in der Liste nichts oder nur eine Kurzvorschau anzeigen
und ein Memo für die aktuelle Selektion danaben/drunter. oder ein Popup mit dem Memo beim Drauftippen.

softtouch 26. Sep 2022 18:20

AW: FMX Komponente für lange Texte?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei ein einfaches Beispiel. Jede Zeite besteht aus einem ca. 2000 Zeichen langen Text. Die VScrollbar arbeitet normal, aber die HScrollbar macht nichts, alle items haben nur die Breite der clients. Wie kann ich horizontal scrollen um den Rest der Zeilen zu sehen?

himitsu 26. Sep 2022 21:21

AW: FMX Komponente für lange Texte?
 
Überlegen, warum nutzlos so viel angezeigt werden soll und die Anzeige auf das Wichtige reduzieren? :roll:

peterbelow 27. Sep 2022 11:47

AW: FMX Komponente für lange Texte?
 
Zitat:

Zitat von softtouch (Beitrag 1512462)
Ich habe ein Array mit strings (ca. 1000). Jeder dieser strings kann fast beliebig lang sein.
Nun muss ich diese strings darstellen, zeilenweise, mit der Möglichkeit, horizontal und vertikal zu scrollen.
Da gäbe es ja die listbox, wo auch multiselect geht (brauche ich unbedingt), aber diese zeigt zwar die horizontale scrollbar an, scrollt aber nicht.
Ich nehme an,ich muss irgendwie die Breite der items einstellen, aber woher weiss ich wie breit das item sein soll?

Schon mal versucht, die ItemWidth-Eigenschaft auf einen hohen Wert zu setzen? FMX.Graphics.TCanvas hat Methoden um die Dimensionen eines Strings zu ermitteln.

softtouch 27. Sep 2022 11:49

AW: FMX Komponente für lange Texte?
 
Zitat:

Zitat von peterbelow (Beitrag 1512506)
Zitat:

Zitat von softtouch (Beitrag 1512462)
Ich habe ein Array mit strings (ca. 1000). Jeder dieser strings kann fast beliebig lang sein.
Nun muss ich diese strings darstellen, zeilenweise, mit der Möglichkeit, horizontal und vertikal zu scrollen.
Da gäbe es ja die listbox, wo auch multiselect geht (brauche ich unbedingt), aber diese zeigt zwar die horizontale scrollbar an, scrollt aber nicht.
Ich nehme an,ich muss irgendwie die Breite der items einstellen, aber woher weiss ich wie breit das item sein soll?

Schon mal versucht, die ItemWidth-Eigenschaft auf einen hohen Wert zu setzen? FMX.Graphics.TCanvas hat Methoden um die Dimensionen eines Strings zu ermitteln.

Ja, habe ich gerade gemacht. Ich berechne die Pixel des längsten strings und setze dann itemwidth auf diesen Wert. Nur die vertikale Scrollbar muss ich noch irgendwie reinrechnen, finde aber nicht heraus wie man die Breite dieser unter FMNX ermittelt.

Dennis07 28. Sep 2022 13:52

AW: FMX Komponente für lange Texte?
 
Zitat:

Zitat von softtouch (Beitrag 1512507)
Ich berechne die Pixel des längsten strings und setze dann itemwidth auf diesen Wert.

Das funktioniert aber nur bei Monospace-Schriftarten. Bei anderen sind die Buchstaben ja unterschiedlich lang, was bedeuten wüde, dass mmmm mehr Pixel benötigt als lllll, obwohl der String kürzer ist. So einfach kann man sich das leider meistens nicht machen.

Zitat:

Zitat von softtouch (Beitrag 1512507)
Nur die vertikale Scrollbar muss ich noch irgendwie reinrechnen, finde aber nicht heraus wie man die Breite dieser unter FMNX ermittelt.

Die ist ein normales FMX-Control. Kannst du dir über die GetStyleObject-Funktion oder als Child-Control holen.


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