Ich habe den VST in Delphi leider nie installiert aber in Lazarus.
Dort gibt es "VST.Header.AutoFitColumns()" als Methode.
Delphi-Quellcode:
procedure TVTHeader.AutoFitColumns(Animated: Boolean = True; SmartAutoFitType: TSmartAutoFitType = smaUseColumnOption;
RangeStartCol: Integer = NoColumn; RangeEndCol: Integer = NoColumn);
//--------------- local functions -------------------------------------------
function GetUseSmartColumnWidth(ColumnIndex: TColumnIndex): Boolean;
begin
Result := False;
case SmartAutoFitType of
smaAllColumns:
Result := True;
smaNoColumn:
Result := False;
smaUseColumnOption:
Result := coSmartResize in FColumns.Items[ColumnIndex].FOptions;
end;
end;
//----------------------------------------------------------------------------
procedure DoAutoFitColumn(Column: TColumnIndex);
begin
with FColumns do
if ([coResizable, coVisible] * Items[FPositionToIndex[Column]].FOptions = [coResizable, coVisible]) and
DoBeforeAutoFitColumn(FPositionToIndex[Column], SmartAutoFitType) and not TreeView.OperationCanceled then
begin
if Animated then
AnimatedResize(FPositionToIndex[Column], Treeview.GetMaxColumnWidth(FPositionToIndex[Column],
GetUseSmartColumnWidth(FPositionToIndex[Column])))
else
FColumns[FPositionToIndex[Column]].Width := Treeview.GetMaxColumnWidth(FPositionToIndex[Column],
GetUseSmartColumnWidth(FPositionToIndex[Column]));
DoAfterAutoFitColumn(FPositionToIndex[Column]);
end;
end;
//--------------- end local functions ----------------------------------------
var
I: Integer;
StartCol,
EndCol: Integer;
begin
StartCol := Max(NoColumn + 1, RangeStartCol);
if RangeEndCol <= NoColumn then
EndCol := FColumns.Count - 1
else
EndCol := Min(RangeEndCol, FColumns.Count - 1);
if StartCol > EndCol then
Exit; // nothing to do
TreeView.StartOperation(okAutoFitColumns);
try
if Assigned(TreeView.FOnBeforeAutoFitColumns) then
TreeView.FOnBeforeAutoFitColumns(Self, SmartAutoFitType);
for I := StartCol to EndCol do
DoAutoFitColumn(I);
if Assigned(TreeView.FOnAfterAutoFitColumns) then
TreeView.FOnAfterAutoFitColumns(Self);
finally
Treeview.EndOperation(okAutoFitColumns);
end;
end;
Meintest Du sowas?