Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView? (https://www.delphipraxis.net/196557-wie-ermittel-ich-die-breite-einer-vertikal-scrollbar-einem-listview.html)

KodeZwerg 30. Mai 2018 14:40

Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Delphi-Version: 2009

Hallo Gemeinde, der Titel besagt ja was ich gerne in Erfahrung bringen möchte.
Wozu?
Ich habe eine ListView mit fester Größe, darin sind 2 Spalten. Die letzte Spalte soll so breit werden das der Längste vorhandene String hineinpasst. Diese Funktion ist bereits erfüllt.
Da ich nicht weiß wie Breit eine Vertikale Scrollbar ist habe ich pro forma einen Wert von
Delphi-Quellcode:
"LängsterStringInPixel" + 20 Pixel
Lokal bei mir klappt es so aber ich Wette das die Scrollbar woanders auch breiter sein kann, deswegen benötige ich diesen Wert.

Falls das jemand weiß, ich freue mich auf eine Antwort!

Danke fürs Lesen.

Delphi-Quellcode:
  LVProcess.Columns[1].Width := L+20;
<- so stell ich die breite momentan ein, L = LängsterStrInPx

Fritzew 30. Mai 2018 14:53

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Sollte eigentlich alle beantworten

himitsu 30. Mai 2018 14:57

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx -> SM_CXVSCROLL and SM_CYVSCROLL

Aber kann man bestimmt auch irgendwie über die Theming-Klassen der VCL erfragen.

KodeZwerg 30. Mai 2018 15:11

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Zitat:

Zitat von Fritzew (Beitrag 1403455)
Sollte eigentlich alle beantworten

Funktioniert prima, vielleicht ein ticken zu Breit aber besser als anders herum, vielen Dank Fritzew!:thumb:
Delphi-Quellcode:
LVProcess.Columns[1].Width := L+GetSystemMetrics(SM_CXVSCROLL);
Zitat:

Zitat von himitsu (Beitrag 1403457)
Aber kann man bestimmt auch irgendwie über die Theming-Klassen der VCL erfragen.

Ich weiß es jedenfalls noch nicht :)

Redeemer 30. Mai 2018 16:57

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Dir ist schon klar, dass es für ListView-Spaltebreiten Konstanten wie Beispielsweise "längster String" gibt?

KodeZwerg 30. Mai 2018 17:48

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Nein, ich ermittle momentan über Canvas wie breit die Spalte sein muss bei Erstellung der Einträge.
Wie lautet denn das ListView Pendant dazu bitte?

Redeemer 30. Mai 2018 17:51

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Delphi-Referenz durchsuchenTListColumn.Width

Die Zahlen haben auch einen Namen:
Delphi-Quellcode:
const
  ColumnHeaderWidth = -2;
  ColumnTextWidth = -1;

KodeZwerg 30. Mai 2018 18:07

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Ich Verstehe nicht wie Du das meinst es umzusetzen?
Also beim Start ist meine Column.Width = 10, nach füllen der List so ca das zehnfache.
Wie rufe ich bei der ListView jetzt welchen Befehl auf der als Ergebnis mir den Längsten String in Pixel wieder gibt, oder halt nur den längsten String den ich wieder übers Canvas ausrechnen lasse wieviel Pixel ich brauche?
Wenn Du da ein Beispiel für hättest das wäre lieb.

edit
Also momentan ist
Delphi-Quellcode:
LVProcess.Columns[1].Width := L+GetSystemMetrics(SM_CXVSCROLL);
das meine methode, was sollte als Ersatz für "L" da stehen?

DeddyH 30. Mai 2018 19:12

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
https://msdn.microsoft.com/de-de/lib...(v=vs.85).aspx Unter "Parameters" stehen auch die erwähnten Konstanten.

KodeZwerg 30. Mai 2018 19:26

AW: Wie ermittel ich die Breite einer Vertikal Scrollbar in einem ListView?
 
Ja Danke DeddyH.
Ich vermute
Delphi-Quellcode:
LVSCW_AUTOSIZE_USEHEADER
würde mich ans Ziel bringen um mir das "L" zu ersparen.
Diese Function/Macro kennt mein Delphi noch nicht. Da muss ich erst wieder gucken/suchen/lesen wie ich das nun wieder umsetze :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 Uhr.
Seite 1 von 2  1 2      

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