delphi - FMX TListView.Sort 在 delphi 10.3.3 中不起作用
问题描述
我正在尝试按字母顺序对 TListView 进行排序,但我使用的方法似乎不起作用。
这是调用代码:
procedure TfMain.ButtonClick(Sender: TObject);
begin
miSort.IsChecked := not miSort.IsChecked; // miSort is a TMenuItem in a TPopupMenu
if miSort.IsChecked then
begin
lvLinks.BeginUpdate;
lvLinks.Sort(AlphaSort);
lvLinks.EndUpdate;
end;
end;
Sort 方法需要一个 TFmxObjectSortCompare
TFmxObjectSortCompare = reference to function (Left, Right: TFMXObject): Integer;
,有我的:
function AlphaSort(Left, Right: TFMXObject): Integer;
begin
result := CompareText(TListViewItem(Left).Text, TListViewItem(Right).Text) // require System.SysUtils
end;
无论有没有 BeginUpdate...EndUpdate,它都不起作用。
解决方案
在 FMXTListView
中继承自TAdapterListView
,它公开了Adapter
类型的属性IListViewAdapter
。该接口为Sort
列表项提供了一个方法。
根据您的示例,这种方法可能应该是有效的:
lvLinks.Adapter.Sort(TDelegatedComparer<TListItem>.Create(
function(const Left, Right: TListItem): Integer
begin
Result := CompareText(TListViewItem(Left).Text, TListViewItem(Right).Text);
end));
推荐阅读
- kotlin - 如何在房间数据库kotlin中保存数字
- c++ - 同时读取和写入不同的文件 - 多线程有用吗?
- python - 等到在python中满足所需的条件
- php - laravel Web 应用程序的 Cron 作业
- google-sheets - 如果表列包含空单元格,则正确计算总行平均值
- python - http://localhost:5000/user/signup 404 未找到
- python - 读取和拆分 .csv 文件,其中包含带逗号的字符串
- python-3.x - 在 Python Tkinter 中使用按钮(和函数)更改变量
- git - 我从服务器上的 github 克隆我的项目时出错
- discord.js - 尝试执行一个不带前缀的 Discord.js 命令