8

How to sort in tlistview with data present in subitem[x]?

Mosty Mostacho
  • 42,742
  • 16
  • 96
  • 123
steve0
  • 721
  • 3
  • 11
  • 19

1 Answers1

10

Set SortType := stData and write

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  Compare := StrToInt(Item1.SubItems[x]) - StrToInt(Item2.SubItems[x])
end;

for instance. If compare is negative, Item1 should come before Item2; if compare is positive, the opposite applies. Thus this example, which assumes that SubItem[x] contains an integer, will sort the items according to the numerical value of SubItem[x].

If, on the other hand, SubItem[x] contains strings, then you can write

procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
  Data: Integer; var Compare: Integer);
begin
  Compare := AnsiCompareText(Item1.SubItems[x], Item2.SubItems[x]);
end;
Andreas Rejbrand
  • 105,602
  • 8
  • 282
  • 384