1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
//ColumnToSort et invert sont des integer
procedure TMain.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
if (ColumnToSort = Column.Index) then // si la colonne est cliquée plusieurs fois de suite
case invert of // si le paramètre invert est à 1 ou -1, on inverse le sens de tri
1 : invert := -1;
-1 : invert := 1;
end
else begin
ColumnToSort := Column.Index;
invert := 1;
end;
(Sender as TCustomListView).AlphaSort; // on trie de manière Alphanumérique
end;
procedure TMain.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var
ix:Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)*invert
else begin
ix := ColumnToSort -1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix])* invert;
end;
end; |