Что случилось с ComboBox.Sorted: = True;в Delphi 10.2? - PullRequest
0 голосов
/ 02 октября 2018

Недавно получив значок «Tumbleweed» для моего последнего вопроса, я не уверен, стоит ли мне задавать какие-либо дополнительные вопросы, но здесь идет речь.

Я заполняю TComboBox элементами изтаблица sqlite и это прекрасно работает.В моей предыдущей версии Delphi я мог использовать ComboBox1.Sorted := True; для сортировки элементов, но, похоже, это исчезло в Delphi 10.2.Я могу отсортировать элементы в таблице, применив запрос, а затем заполнить TComboBox из отсортированной таблицы.Тем не менее, для любопытства я хотел бы узнать, как теперь сортировать предметы в TComboBox.Я нашел некоторые ссылки на TComboBox(Sort:Compare), но пока не удалось заставить его работать.

Может кто-нибудь, пожалуйста, пролить свет на это - большое спасибо

1 Ответ

0 голосов
/ 03 октября 2018

В Firemonkey вы можете заполнить экземпляр TComboBox либо просто свойством Items типа TStrings, либо добавить 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
);
...