First of all, set
ListView
to vsReport
style and fill in some data. OnColumnClick
and OnCompare
events will do the rest.Descending
(boolean type) to store the order of sorting, and SortedColumn
to keep the number of column by which is the ListView
sorted.private { Private declarations } Descending: Boolean; SortedColumn: Integer; procedure TForm1.ListView1ColumnClick(Sender: TObject; Column: TListColumn); begin TListView(Sender).SortType := stNone; if Column.Index<>SortedColumn then begin SortedColumn := Column.Index; Descending := False; end else Descending := not Descending; TListView(Sender).SortType := stText; end; procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer); begin if SortedColumn = 0 then Compare := CompareText(Item1.Caption, Item2.Caption) else if SortedColumn <> 0 then Compare := CompareText(Item1.SubItems[SortedColumn-1],
Item2.SubItems[SortedColumn-1]); if Descending then Compare := -Compare; end;
SortType
parameter could have these values:stNone
stData
stText
stBoth
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου