Cet exemple montre comment utiliser les événements OnColumnClick et OnCompare d'une vue liste pour permettre aux utilisateurs de trier les colonnes d'une vue liste de style rapport en cliquant sur les en-têtes de colonne. Ceci nécessite qu'une variable globale fasse le suivi de la colonne qui a été cliquée :
var ColumnToSort: Integer;
Le gestionnaire d'événement OnColumnClick définit la variable globale pour indiquer la colonne à trier et appelle AlphaSort*:
procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn);
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
end;
Le gestionnaire d'événement OnCompare provoque le tri de la colonne sélectionnée par la vue liste :
procedure TForm1.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)
else begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
end;
Partager