ComboBox.Sorted 发生了什么事 := True;在 Delphi 10.2 中?

What has happened to ComboBox.Sorted := True; in Delphi 10.2?

我的最后一个问题最近收到了一个 'Tumbleweed' 徽章,我不确定我是否应该再问任何问题,但现在开始了。

我正在用来自 sqlite table 的项目填充 TComboBox,这工作正常。在我以前的 Delphi 版本中,我可以使用 ComboBox1.Sorted := True; 对项目进行排序,但这似乎在 Delphi 10.2 中消失了。我可以通过应用查询对 table 中的项目进行排序,然后从排序后的 table 中填充 TComboBox。但是,出于好奇,我想知道现在如何对 TComboBox 中的项目进行排序。我找到了一些对 TComboBox(Sort:Compare) 的引用,但到目前为止还没有成功使它起作用。

有人可以解释一下吗 - 非常感谢

在 Firemonkey 中,您可以简单地使用 TStrings 类型的 Items 属性 填充 TComboBox 实例,或者使用以下形式添加 TListBoxItem 实例设计师。但在内部总是使用元素的 TListBoxItem

要使用 TComboBox.Sort 您需要提供匿名比较功能。

这是TComboBox.Sort

的简单用法示例
cbxItems.Sort(
  function (pLeft, pRight: TFMXObject): Integer
  var
    lLeft, lRight: TListBoxItem;
  begin
    lLeft := TListBoxItem(pLeft);
    lRight := TListBoxItem(pRight);
    Result := String.Compare(lLeft.Text, lRight.Text);
  end
);