![]() |
Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Hallo zusammen,
ich setze die Virtual TreeView in der Version 6.4.1 mit Delphi Berlin 10.2 ein. Ich stehe gerade auf den Schlauch oder bin im Mittagstief, daher brauche ich einen Schubs in die richtige Richtung: Wo und wie konnte ich nochmal einstellen, dass die Treeview in der Spaltenansicht automatisch die Spaltenbreite anhand der Länge der Einträge anpasst? Beispiel - Ich habe zur Zeit: Eintrag 1 Eintrag 2 Eintrag 3 Sehe beim Programmstart aber nur: Ein... Ein... Ein... Muss ich manuell über TVirtualStringTree.Header.Columns.Count iterieren und die TVirtualTreeColumn.Width setzen? |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
|
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Hm, nein...nicht so wirklich.
Im Gegenteil, die Spalten sind nun noch schmaler als vorher mit den Tipp aus dem letzten Post des verlinkten Threads:
Delphi-Quellcode:
ATreeView.Header.AutoFitColumns(False);
ATreeView.Header.AutoSizeIndex := -1; |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
bei Doppelklick zwischen zwei Spalten (vst liegt als Komponente in einem Frame):
Delphi-Quellcode:
vst: TVirtualStringTree;
FmerkOnBeforeCellPaint: TVTBeforeCellPaintEvent; procedure TFrameVST.vstBeforeGetMaxColumnWidth(Sender: TVTHeader; Column: TColumnIndex; var UseSmartColumnWidth: Boolean); begin if Assigned(vst.OnBeforeCellPaint) then begin FmerkOnBeforeCellPaint := vst.OnBeforeCellPaint; vst.OnBeforeCellPaint := nil; end; end; procedure TFrameVST.vstAfterGetMaxColumnWidth(Sender: TVTHeader; Column: TColumnIndex; var MaxWidth: Integer); begin if Assigned(FmerkOnBeforeCellPaint) then begin vst.OnBeforeCellPaint := FmerkOnBeforeCellPaint; FmerkOnBeforeCellPaint := nil; end; end; procedure TFrameVST.vstColumnWidthDblClickResize(Sender: TVTHeader; Column: TColumnIndex; Shift: TShiftState; P: TPoint; var Allowed: Boolean); begin if (Allowed) and (Shift = []) then begin AutoFitColumn(Column); Allowed := False; end; end; procedure TFrameVST.AutoFitColumn(Column: TColumnIndex); var cWidth, hWidth: Integer; begin if [coResizable, coVisible] * vst.Header.Columns[Column].Options = [coResizable, coVisible] then begin cWidth := vst.GetMaxColumnWidth(Column); if (hoVisible in vst.Header.Options) then begin hWidth := GetMaxHeaderWidth(Column); if cWidth < hWidth then cWidth := hWidth; if cWidth > vst.Header.Columns[Column].MaxWidth then cWidth := vst.Header.Columns[Column].MaxWidth; end; vst.Header.Columns[Column].Width := cWidth; end; end; |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Was passiert, wenn du das einstellst?
Code:
ATreeView.Header.Options:= ATreeView.Header.Options + [hoAutoResize];
ATreeView.Header.Options:= ATreeView.Header.Options + [hoColumnResize]; ATreeView.Header.AutoSizeIndex := 0; Ach, und zu madas -> wtf? |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Liste der Anhänge anzeigen (Anzahl: 1)
Hab das mal schnell ausprobiert und das sollte eigentlich ganz einfach funktionieren....
|
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Zitat:
Falls jedoch mehr Spalten vorhanden sind, werden die in den nicht sichtbaren Bereich geschoben und bleiben schmal. Gab es denn keine Möglichkeit, dass sich die Treeview selber an den Breiten der Itemtexte (nebst Checkbox etc.) orientiert? @Whookie: Was? :spin: Das hat ja nicht einmal sichtbare Spalten mit Header?!? |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Liste der Anhänge anzeigen (Anzahl: 1)
Beim mir schon:
|
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Zitat:
@TE: Versuch doch mal folgendes:
Delphi-Quellcode:
.
vst.Header.AutoFitColumns;
Eventuell noch mit den diversen Parametern rumspielen. Das ist auch die Funktion die aufgerufen wird wenn du zwischen 2 Columns einen Doppelklick ausführst und dann bei dem Event OnColumnWidthDblClickResize() den Paramter Allowed auf True stellst. Hoffe dir geholfen zu haben. |
AW: Virtual TreeView - Anhand des längsten Eintrages die Breite der Spalte anpassen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz