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:stNonestDatastTextstBoth
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου