Delphi ListView排序

var m_bSort: boolean=false; //控制正反排序的变量

//ListView排序的回调函数,默认的是快速排序法,也可以自己在这里做算法

function CustomSortProc(Item1, Item2: TListItem; ParamSort: integer): integer; stdcall;

var txt1,txt2 : string;

begin

if ParamSort <> 0 then begin

try

txt1 := Item1.SubItems.Strings[ParamSort-1];

txt2 := Item2.SubItems.Strings[ParamSort-1];

if m_bSort then begin

Result := CompareText(txt1,txt2);

end else begin

Result := -CompareText(txt1,txt2);

end;

except

end;

end else begin

if m_bSort then begin

Result := CompareText(Item1.Caption,Item2.Caption);

end else begin

Result := -CompareText(Item1.Caption,Item2.Caption);

end;

end;

end;

procedure TForm1.ListView1ColumnClick(Sender: TObject;

Column: TListColumn);

begin

ListView1.CustomSort(@CustomSortProc, Column.Index);

m_bSort := not m_bSort;

end;