Delphi 德尔福Firemonkey TListView';s项目重新排列

Delphi 德尔福Firemonkey TListView';s项目重新排列,delphi,firemonkey,Delphi,Firemonkey,我想动态地重新排列TListView的项目,例如,我有以下项目: Item #1 Apple Item #2 Banana Item #3 Orange and so on..... 我想在第1项中设置橙色,可以吗 我在10.2和10.3中使用过类似的东西,不确定TComparer是什么时候出现的 这是一个带有两个基本分拣机的单元-您可以更改代码以执行比较功能中的任何操作 unit MyFMXListView_ItemSorters; interface uses System.Gene

我想动态地重新排列TListView的项目,例如,我有以下项目:

Item #1 Apple
Item #2 Banana
Item #3 Orange
and so on.....

我想在第1项中设置橙色,可以吗

我在10.2和10.3中使用过类似的东西,不确定TComparer是什么时候出现的
这是一个带有两个基本分拣机的单元-您可以更改代码以执行比较功能中的任何操作

unit MyFMXListView_ItemSorters;

interface
uses
  System.Generics.Defaults
, FMX.ListView.Appearances
;

type
  TMyListViewItemComparer_AscendingItemText = class( TComparer<TListViewItem> )
    function Compare(const Left, Right: TListViewItem): Integer; override;
  end;

  TMyListViewItemComparer_DescendingItemText = class( TComparer<TListViewItem> )
    function Compare(const Left, Right: TListViewItem): Integer; override;
  end;

implementation
uses
  sysutils;

{ TMyListViewItemComparer_Ascending }

function TMyListViewItemComparer_AscendingItemText.Compare(const Left,
  Right: TListViewItem): Integer;
begin
  result := CompareText(Left.Text,Right.Text);
end;

{ TMyListViewItemComparer_DescendingItemText }

function TMyListViewItemComparer_DescendingItemText.Compare(const Left,
  Right: TListViewItem): Integer;
begin
  result := CompareText(Right.Text,Left.Text);
end;

end.
下面的三个图像(创建后、升序单击后和降序单击后)

我在10.2和10.3中使用过类似的东西,不确定TComparer是什么时候出现的
这是一个带有两个基本分拣机的单元-您可以更改代码以执行比较功能中的任何操作

unit MyFMXListView_ItemSorters;

interface
uses
  System.Generics.Defaults
, FMX.ListView.Appearances
;

type
  TMyListViewItemComparer_AscendingItemText = class( TComparer<TListViewItem> )
    function Compare(const Left, Right: TListViewItem): Integer; override;
  end;

  TMyListViewItemComparer_DescendingItemText = class( TComparer<TListViewItem> )
    function Compare(const Left, Right: TListViewItem): Integer; override;
  end;

implementation
uses
  sysutils;

{ TMyListViewItemComparer_Ascending }

function TMyListViewItemComparer_AscendingItemText.Compare(const Left,
  Right: TListViewItem): Integer;
begin
  result := CompareText(Left.Text,Right.Text);
end;

{ TMyListViewItemComparer_DescendingItemText }

function TMyListViewItemComparer_DescendingItemText.Compare(const Left,
  Right: TListViewItem): Integer;
begin
  result := CompareText(Right.Text,Left.Text);
end;

end.
下面的三个图像(创建后、升序单击后和降序单击后)

如果将数据和表示分开,这是没有问题的。只需重新排列您的数据,并相应地重建ListView。这就是我所做的。那么,除了组件不允许更改项目(除了其视觉属性)之外,还有什么问题?询问者似乎希望自动创建列表,类似于TStringList。Sorted=true。如果将数据和表示分开,这没问题。只需重新排列数据,并相应地重建ListView。这就是我所做的。那么,除了组件不允许更改项目(除了它的视觉属性)之外,还有什么问题呢?询问者似乎希望自动获得列表,类似于TStringList.Sorted=true.Yup,这将进行排序。但是它会动态排序吗?当添加项目时,它会自动排序列表还是在正确的位置插入新项目?AFAIK TList不像stringlist那样具有“排序”属性。是的,这将进行排序。但是它会动态排序吗?当添加项目时,它会自动排序列表还是在正确的位置插入新项目?AFAIK TList不像stringlist那样具有“排序”属性。