Установить SortType := stData
и написать
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
Compare := StrToInt(Item1.SubItems[x]) - StrToInt(Item2.SubItems[x])
end;
например. Если сравнение отрицательно, Item1 должен предшествовать Item2; если сравнение положительное, применяется обратное. Таким образом, этот пример, который предполагает, что SubItem [x] содержит целое число, отсортирует элементы в соответствии с числовым значением SubItem [x].
Если, с другой стороны, SubItem [x] содержит строки, вы можете написать
procedure TForm1.ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
Compare := AnsiCompareText(Item1.SubItems[x], Item2.SubItems[x]);
end;