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/)
-   -   VST, Spalte die den restlichen Platz ausfüllt (https://www.delphipraxis.net/211275-vst-spalte-die-den-restlichen-platz-ausfuellt.html)

TurboMagic 24. Aug 2022 22:40

VST, Spalte die den restlichen Platz ausfüllt
 
Gegeben: D11.1 und ein VirtualTreeView als Liste benutzt.
Dieses hat 3 Spalten und ich möchte erreichen, das die mittlere Spalte bei fixer
Summe aller VST Spalten zusammen immer den restlichen Platz ausfüllt.

Beispiel Breiten: 50:100:50, dann ändere ich die Breite der ersten und die mittlere
ändert sich auch: 75:75:50

oder 50:100:50, dann ändere ich die Breite der letzten und die mittlere
ändert sich auch: 50:75:75

Was muss ich wo einstellen?

Grüße
TurboMagic

Uwe Raabe 24. Aug 2022 23:04

AW: VST, Spalte die den restlichen Platz ausfüllt
 
In
Delphi-Quellcode:
Header.AutoSizeIndex
die Spaltennummer eintragen.

TurboMagic 25. Aug 2022 07:56

AW: VST, Spalte die den restlichen Platz ausfüllt
 
Das scheint nicht alles zu sein! Ziehe ich in meinem Beispiel die 1. Spalte breiter und
AutoSizeIndex ist 1 wird nicht die 2. Spalte schmäler, sondern das VST insgesammt breiter
und ich bekomme einen horizontalen Scrollbalken.

Grüße
TurboMagic

PaPaNi 25. Aug 2022 08:21

AW: VST, Spalte die den restlichen Platz ausfüllt
 
Wenn VST den Event OnResize hat, wäre es nicht möglich so was zu machen?
Der Code ist teilweise aus dem Kopf und kann Fehler enthalten.

Code:
// hier wird die Breite der zweite Spalte beim Resize neu berechnet bzw. gesetzt. Die erste und die dritte Spalten bleiben unverändert
...
const
COL_INDEX_DATE = 0;
COL_INDEX_DECRIPTION = 1;
COL_INDEX_CHECKBOX = 2;
COL_WIDTH_DATE = 80; // Breite fixiert
COL_WIDTH_CHECKBOX = 60; // Breite fixiert
WIDTH_SCROLL = 30; // Platz fuer vert. Scroller
...
procedure Tf_Test.vsg_TestResize(Sender: TObject);
begin
vsg_Test.ColWidths[COL_INDEX_DATE] := COL_WIDTH_DATE;
vsg_Test.ColWidths[COL_INDEX_DECRIPTION] := vsg_Test.Width - COL_WIDTH_DATE - COL_WIDTH_CHECKBOX - WIDTH_SCROLL;
vsg_Test.ColWidths[COL_INDEX_CHECKBOX ] := COL_WIDTH_CHECKBOX;
...

TurboMagic 25. Aug 2022 10:32

AW: VST, Spalte die den restlichen Platz ausfüllt
 
Hallo,

danke für die Idee, die wäre nur nicht im Sinne des Erfinders, da hierbei ja die beiden äußeren Spalten immer gleich breit blieben.
Nene, das VST hat ja scheinbar einen Lösungsansatz, nur muss es wohl noch eine Eigenschaft geben, welche die horizontale Breite
über alle Spalten festlegt. Wenn die fix ist, sollte beim Verbreitern/Verschmälern einer Spalte einfach die durch
Header.AutoSizeIndex festgelegte Spalte den restlichen Platz dynamisch ausfüllen.

Nur welche EInstellung fehlt mir dazu noch?

Grüße

TurboMagic

mytbo 25. Aug 2022 12:49

AW: VST, Spalte die den restlichen Platz ausfüllt
 
Zitat:

Zitat von TurboMagic (Beitrag 1510642)
Nur welche EInstellung fehlt mir dazu noch?

Code:
TVTHeaderOption -> hoAutoResize
TVTHeader -> AutoSizeIndex
Nachtrag: Schritt für Schritt
  • Den Wert für Header.AutoSizeIndex setzen (Index für die Spalte beginnt bei 0).
  • Header.Options.hoAutoResize = False
  • Die Breite für alle Spalten, außer der Spalte die im AutoSizeIndex angegeben ist, zuweisen.
  • Header.Options.hoAutoResize = True (VST berechnet die Breite für die Spalte AutoSizeIndex neu).
Bis bald...
Thomas

TurboMagic 25. Aug 2022 13:42

AW: VST, Spalte die den restlichen Platz ausfüllt
 
Test war erfolgreich!
Genau, was ich wollte! Danke! :-)


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