AI摘要
文章介绍了如何在Delphi中实现ListView控件的排序功能。通过定义一个全局变量m_bSort来控制正反排序,使用CustomSortProc回调函数来比较两个列表项,并根据ParamSort参数确定比较的列。在lv_SelectedHDTCColumnClick事件中调用CustomSort方法进行排序,并改变m_bSort的值以实现正反排序切换。
文章介绍了如何在
var
m_bSort:Boolean; //控制正反排序的变量
implementation
{$R *.dfm}
//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 TFrm_CommunityModify.lv_SelectedHDTCColumnClick(Sender: TObject;
Column: TListColumn);
begin
lv_SelectedHDTC.CustomSort(@CustomSortProc,Column.Index);
m_bSort:=not m_bSort;
end;