Подскажите, пожалуйста, как отсортировать TListView. Все перепробовал — результата никакого...

Буду признателен любым рекомендациям.
вот как я делаю сортировку: (получается полная белиберда, хотя я думаю, что все делаю правильно)
procedure TForm1.ListView4ColumnClick(Sender: TObject;
Column: TListColumn);
begin
ListView_sorting(false, ListView4, Column.Index);
end;
procedure TForm1.ListView_sorting(Down:boolean;var ListView:TListView; column: integer);
Var Skach,m,n:integer;
St:boolean;
Tmp:TListItem;
begin
if(column=0) then exit; //колонка с порядковыми номерами
dec(column);
Skach:=ListView.Items.Count-1;
While Skach>0 do
begin
Skach:=Skach div 2;
repeat
St:=True;
for m:=0 to ListView.Items.Count-1-Skach do
begin
n:=m+Skach;
if ( Down and (ListView.Items.Item[n].SubItems[column]<ListView.Items.Item[m].SubItems[column]) )
or ( (not Down) and (ListView.Items.Item[n].SubItems[column]>ListView.Items.Item[m].SubItems[column]) ) then
begin
Tmp:=ListView.Items.Item[m];
ListView.Items.Item[m]:=ListView.Items.Item[n];
ListView.Items.Item[n]:=Tmp;
St:=False;
end;
end;
until St;
end;
end;