我试图按字母顺序对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,它都不起作用。
答案 0 :(得分:0)
在FMX中,TListView
继承自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));