Hallo Tux,
ich nutze die Funktion zwar nicht da ich immer selbst die Breite der Columns angebe, habe aber im SourceCode gesehen, dass vor dem Ausführen des Sizing das Event OnBeforeAutoFitColumns
ausgelöst wird (wenn denn ein EventHandler existiert).
Hier gibt es einen Parameter var SmartAutoFitType: TSmartAutoFitType
. Setzt du diesen an irgendeiner Stelle auf einen anderen Wert oder nutzt du das Event überhaupt?
Wenn nicht, dann steht (wie du es beim Aufruf auch übergibst) die Option auf smaUseColumnOption
.
Und das ist der Knackpunkt. Hast du auch bei deiner ersten Column die Option in den ColumnOptions eingeschaltet?
OnBeforeAutoFitColumns
verwende ich nicht in dem Projekt, das komische ist es das ja eigentlich alles funktioniert und richtig ist nur beim Ändern eines Eintrags will er einfach nicht die erste Spalte anpassen. Füge ich einen weiteren Eintrag hinzu, wird die Spalte korrekt angepasst.
Delphi-Quellcode:
var
Node: PVirtualNode;
Data: PDataset;
begin
Node := vstTable.FocusedNode;
if Assigned(Node) then
begin
Data := vstTable.GetNodeData(Node);
if Assigned(Data) then
begin
Data.Name := edtName.Text; //1. Spalte, hier wird eine längere Bezeichnung eingegeben
Data.Type := edtType.Text; //2. Spalte, hier wird ebenfalls etwas längeres Eingetragen
end;
end;
//Spalten anpassen...
vstTable.Header.AutoFitColumns(False, smaUseColumnOption, 0, vstTable.Header.Columns.Count-1);
Jetzt passiert folgendes, Spalte 2 hat die korrekte und angepasste Breite und Spalte 1 bleibt unverändert und somit zu klein. Dazu kommt noch das erst wenn ich auf eine andere Zeile wechsle werden in der 1. Spalte die drei Punkte gezeichnet.