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
);
我的最后一个问题最近收到了一个 '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
);