困扰几天的排序问题 5个按纽对应ListView里面的5个列````点击按纽实现对应列的排序````` 这个该怎么实现`````` Delphi帮助里面只有实现一个列的排序问题````我按照上面的写的代码可以实现排序```但是都是实现一个的排序````点了一个按纽实现一列的排序之后```其他4个按纽点击就实现不了了````` 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 对缓冲数据进行对应列排序 排序好之后ListView重新加载数据 NO ,只想实现单列排序````比如: 1按姓名排列就按姓的字母排列可以由A~Z也可以Z~A```3按年龄排列就按年龄由大到小排列也可以由小到大排列 procedure TForm1.lv1ColumnClick(Sender: TObject; Column: TListColumnbegin ColumnToSort := Column.Index; (Sender as TCustomListView).AlphaSort;end;procedure TForm1.lv1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer);var ix: Integer;begin if ColumnToSort = 0 then Compare := CompareText(Item1.Caption,Item2.Caption) else begin ix := ColumnToSort - 1; Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]); end;end;感觉不需要重写吧````我用上面的Delphi帮助里面的代码能够实现排序```但必须点击ListView里面的ColumnHeaders```但我是要把ColumnHeaders隐藏了的`````想用其他能显示图片的 按纽来代替点击ColumnHeaders的排序功能````` 其实楼主没必要把ColumnHeaders隐藏掉,只须在每表中加载个小图片就可以达到目的了,顺序排序时用一种图标,倒序排序再换一种图标。 真正引起排序动作的是 ListView 的 AlphaSort 函数,和是否点击ListView的列头没有关系啊你完全可以在按钮的点击事件中写 ListView1.AlphaSort;然后在ListView的OnCompare事件中,按照帮助给你提高的代码进行排序处理 你只需要把上面代码中 OnColumnClick 中的代码放入每个按钮的点击事件中,而在按钮的点击事件中,把 ColumnToSort 变量的值设置成固定值,比如,第一个按钮中 ColumnToSort 的值是0,第二个按钮中, ColumnToSort 的值是1,第三个按钮中 ColumnToSort 的值是2... 依此类推,就可以了OnCompare 的代码完全不用修改 欢迎加入Delphi群:45755097 互相交流,共同进步 奇怪错误 请问在D7里面如何安装报表啊? 请问是否在不同版本的 Delphi 程序中,不能打开源程序?如何解决? 生个儿子你还让他作程序员吗? 如何将查询出的记录存到一个临时表中?用完再将临时表删除 =====================免费的,你要吗?===================== 如何在delphi中实现TDBComboBox从一个编码表中读数据!!!!! 各位高手,帮帮忙吧!!! 请问如何在线程中访问数据库??? 请问这个问题该怎么解决啊??? cxgrid 合计 怎么让录入时立即更新合计数
NO ,只想实现单列排序````比如: 1按姓名排列就按姓的字母排列可以由A~Z也可以Z~A```3按年龄排列就按年龄由大到小排列也可以由小到大排列
begin
ColumnToSort := Column.Index;
(Sender as TCustomListView).AlphaSort;
end;
procedure TForm1.lv1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
var
ix: Integer;
begin
if ColumnToSort = 0 then
Compare := CompareText(Item1.Caption,Item2.Caption)
else
begin
ix := ColumnToSort - 1;
Compare := CompareText(Item1.SubItems[ix],Item2.SubItems[ix]);
end;
end;感觉不需要重写吧````我用上面的Delphi帮助里面的代码能够实现排序```但必须点击ListView里面的ColumnHeaders```但我是要把ColumnHeaders隐藏了的`````想用其他能显示图片的 按纽来代替点击ColumnHeaders的排序功能`````
你完全可以在按钮的点击事件中写
ListView1.AlphaSort;
然后在ListView的OnCompare事件中,按照帮助给你提高的代码进行排序处理
你只需要把上面代码中 OnColumnClick 中的代码放入每个按钮的点击事件中,
而在按钮的点击事件中,把 ColumnToSort 变量的值设置成固定值,比如,第一个按钮中 ColumnToSort 的值是0,第二个按钮中, ColumnToSort 的值是1,第三个按钮中 ColumnToSort 的值是2... 依此类推,
就可以了
OnCompare 的代码完全不用修改