下面这种做法比较容易理解。可以参考一下,我一直是这样做的,效果很好
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
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;
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;
自己测试了下 效果不错
来自csdn。net