Так делается сортировка для двух колонок;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
if FSortKey = Column.Index + 1 then FSortKey := -FSortKey else FSortKey := Column.Index + 1;
if ListView1.SortType <> stText then ListView1.SortType := stText else ListView1.AlphaSort;
end;
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var
N1, N2: Integer;
begin
if Abs(FSortKey) = 1 then Compare := AnsiCompareText(Item1.Caption, Item2.Caption)
else
begin
N1 := StrToInt(Item1.SubItems[Abs(FSortKey) - 2]);
N2 := StrToInt(Item2.SubItems[Abs(FSortKey) - 2]);
if N1 = N2 then Compare := 0 else if N1 < N2 then Compare := -1 else Compare := 1;
end;
Compare := Compare * (FSortKey div Abs(FSortKey));
end;
Но это только для двух колонок, а если их три, четыре или более?
FSortKey - номер колонки.
if Abs(FSortKey) = 1 then
begin
end
else
if Abs(FSortKey) = 2 then
begin
end
else
if Abs(FSortKey) = 3 then
begin
end;
Как тут сделать сортировку не знаю.