SortDirection kennt nur sdAscending und sdDescending. Verwende den HeaderClick Event. Das könnte als Beispiel so aussehen:
Delphi-Quellcode:
procedure ...vlvListHeaderClick(Sender: TVTHeader; Column: TColumnIndex;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button <> mbLeft then Exit; //=>
with Sender, Treeview do
begin
if SortColumn > NoColumn then
Columns[SortColumn].Options :=
Columns[SortColumn].Options + [coParentColor];
if (SortColumn = NoColumn)
or (SortColumn <> Column) then
begin
SortColumn := Column;
SortDirection := sdAscending;
end
else if SortDirection = sdAscending then
SortDirection := sdDescending
else
SortDirection := sdAscending;
if (SortColumn <> DefaultSortColumn)
or (SortDirection <> DefaultSortDirection) then
begin
Columns[SortColumn].Color := u_Options.Options.DifferentSortColumnColor;
end;
SortDataList(FDataList);
SortTree(SortColumn, SortDirection, False);
end;
end;
Ich verwende noch die älteren VirtualTree Versionen 4 und 5. Kann bei einer neueren Version anders aussehen.
Bis bald...
Thomas