您的位置:首页 > 编程语言 > Delphi

Delphi listview 点击列头排序

2016-11-05 00:45 579 查看


listview 的数字排序。

首先添加全局变量

m_bSort: Boolean = false;//控制双向排序
function CustomSortProc(Item1, Item2: TListItem; ParamSort: Integer): Integer;stdcall;


之后在需要排序的listview 控件的OnColumClick 事件中编写代码

procedure TMainForm.lv_UpLoadListColumnClick(Sender: TObject;
Column: TListColumn);
begin
if (Column.Index = 1) or (Column.Index = 3) then
begin
lv_UpLoadList.CustomSort(@CustomSortProc, Column.Index);
m_bSort := not m_bSort;
end;

end;


之后编写全局函数

function CustomSortProc(Item1, Item2: TListItem;
ParamSort: Integer): Integer; stdcall;
var
// txt1, txt2: string;
txt1, txt2: Integer;
begin
if ParamSort <> 0 then
begin
try
txt1 := StrToInt(Item1.SubItems.Strings[ParamSort - 1]);
txt2 := StrToInt(Item2.SubItems.Strings[ParamSort - 1]);
if m_bSort then
begin
// Result := CompareText(txt1, txt2);
Result := txt1 - txt2;
end
else
begin
Result := -(txt1 - txt2);
// 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;


以上是数字的排序,如果需要汉字什么的排序,这将上面的strtoint去掉,并将上面的注释行替换上面的行就行了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  排序