DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 1
在线用户: 6
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/3 15:55:56
标题:
XE7 FMX ListView 怎样排序? 浏览:2216
加入我的收藏
楼主: 如下代码编译出错:

procedure TForm1.ListviewSort;
var
  Comparer: TFMXObjectSortCompare;
begin
  Comparer := function(const Left, Right: TFmxObject): Integer
  begin
    Result := CompareText(TListViewItem(Left).Text, TListViewItem(Right).Text);
  end;
  ListView1.BeginUpdate;
  ListView1.Sort(Comparer);
  ListView1.EndUpdate;
end;

Delphi 10.1 代码如下,但XE7用不了:

procedure TForm1.Listview1Sort;
var
  Comparer: IComparer<TListViewItem>;
begin
  Comparer := TDelegatedComparer<TListViewItem>.Create(
  function(const LeftItm, RightItm: TListViewItem): Integer
  begin
    Result := CompareText(LeftItm.Text, RightItm.Text);
  end);
  ListView1.BeginUpdate;
  ListView1.Items.Sort(Comparer);
  ListView1.EndUpdate;
end;
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/3 15:59:41
1楼: 主要是不知道怎样使用 TFMXObjectSortCompare
----------------------------------------------
http://mcool.appinn.me/
作者:
男 homejun (homejun) ★☆☆☆☆ -
盒子活跃会员
2017/6/4 9:19:39
2楼: 类c#排序的用法,可查相关资料
----------------------------------------------
-delphi新资讯站 http://www.delphigear.cn
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/5 20:08:04
3楼: 原来就是匿名函数的使用,在万一老师博客上才找到方法。你们老鸟也不提醒一下..

procedure TForm1.ListviewSort;
begin
  ListView1.BeginUpdate;
  ListView1.Sort(function(Left, Right: TFmxObject): Integer
  begin
    Result := CompareText(TListViewItem(Left).Text, TListViewItem(Right).Text);
  end);
  ListView1.EndUpdate;
end;
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/6 12:40:54
4楼: 编译是通过了,但排序无效果(安卓),囧
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/6/6 13:18:21
5楼: CompareText 函数是不是有问题呢?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/23 17:50:00
6楼: 如果是 ListBox:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.BeginUpdate;
  ListBox1.Sort(function(Item1, Item2: TFmxObject): Integer
    begin
      Result := CompareText(TListBoxItem(Item1).Text, TListBoxItem(Item2).Text);
    end);
  ListBox1.EndUpdate;
  ListBox1.RealignContent;  //如果没有这句,也是排序无效
end;

可惜 ListView 没有 RealignContent 方法!!!
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/24 14:30:58
7楼: 在XE7时代你们就没做过ListView排序?还是它本身就不支持ListView排序?网上有看到在添加Item前先对StringList进行排序,这个有局限性,不是很方便..
----------------------------------------------
http://mcool.appinn.me/
作者:
男 delphiteacher (delphiteacher) ▲▲▲▲▲ -
普通会员
2017/6/26 9:59:15
8楼: 排序搞好了吗?学习一下
----------------------------------------------
欢迎加入OrangeUI的app开发阵营:http://www.orangeui.cn/,联系QQ452330643
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/26 13:15:30
9楼: 没搞定呢,老师的ListView控件支持XE7下排序么?
----------------------------------------------
http://mcool.appinn.me/
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2017/6/26 13:16:46
10楼: 换 10.2 吧 HOTFIX 很强大。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/6/26 14:15:51
11楼: 我用XE7主要是搞一个支持低版本安卓(如2.3)的mcool。主力还是10.1.2
----------------------------------------------
http://mcool.appinn.me/
作者:
男 delphiteacher (delphiteacher) ▲▲▲▲▲ -
普通会员
2017/6/27 10:31:53
12楼: 2.3已经很稀有了。你何必呢。。
----------------------------------------------
欢迎加入OrangeUI的app开发阵营:http://www.orangeui.cn/,联系QQ452330643
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/7/5 15:46:48
13楼: 即使是 Delphi 10.x (顶楼代码) 也只是英文排序,中文虽有排序,但不是按拼音排序。VCL 下中文则按拼音排序。有谁研究过么..
----------------------------------------------
http://mcool.appinn.me/
作者:
男 diystar (diystar) ★☆☆☆☆ -
普通会员
2017/7/24 14:22:49
14楼: 中文按拼音排序,Windows 平台下用 WideCompareText(这个利用了Win API),其他平台就要自己写方法了。楼上所说 [VCL 下中文则按拼音排序] 是错的。
----------------------------------------------
http://mcool.appinn.me/
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行66.40625毫秒 RSS