|
|
导航: |
论坛 -> 移动应用开发
斑竹:flyers,iamdream |
|
作者: |
|
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/ |
作者: |
|
2017/6/3 15:59:41 |
1楼: |
主要是不知道怎样使用 TFMXObjectSortCompare
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/6/4 9:19:39 |
2楼: |
类c#排序的用法,可查相关资料
----------------------------------------------
-delphi新资讯站 http://www.delphigear.cn
|
作者: |
|
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/
|
作者: |
|
2017/6/6 12:40:54 |
4楼: |
编译是通过了,但排序无效果(安卓),囧
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/6/6 13:18:21 |
5楼: |
CompareText 函数是不是有问题呢?
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
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/
|
作者: |
|
2017/6/24 14:30:58 |
7楼: |
在XE7时代你们就没做过ListView排序?还是它本身就不支持ListView排序?网上有看到在添加Item前先对StringList进行排序,这个有局限性,不是很方便..
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/6/26 9:59:15 |
8楼: |
排序搞好了吗?学习一下
----------------------------------------------
欢迎加入OrangeUI的app开发阵营:http://www.orangeui.cn/,联系QQ452330643
|
作者: |
|
2017/6/26 13:15:30 |
9楼: |
没搞定呢,老师的ListView控件支持XE7下排序么?
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/6/26 13:16:46 |
10楼: |
换 10.2 吧 HOTFIX 很强大。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2017/6/26 14:15:51 |
11楼: |
我用XE7主要是搞一个支持低版本安卓(如2.3)的mcool。主力还是10.1.2
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/6/27 10:31:53 |
12楼: |
2.3已经很稀有了。你何必呢。。
----------------------------------------------
欢迎加入OrangeUI的app开发阵营:http://www.orangeui.cn/,联系QQ452330643
|
作者: |
|
2017/7/5 15:46:48 |
13楼: |
即使是 Delphi 10.x (顶楼代码) 也只是英文排序,中文虽有排序,但不是按拼音排序。VCL 下中文则按拼音排序。有谁研究过么..
----------------------------------------------
http://mcool.appinn.me/
|
作者: |
|
2017/7/24 14:22:49 |
14楼: |
中文按拼音排序,Windows 平台下用 WideCompareText(这个利用了Win API),其他平台就要自己写方法了。楼上所说 [VCL 下中文则按拼音排序] 是错的。
----------------------------------------------
http://mcool.appinn.me/
|
|