Firemonkey (Delphi) TListbox с MultiSelect для получения выбранных элементов

Я использую Firemonkey в Delphi 10.2 Токио.

У меня есть форма HD с TListBox с этими MultiSelectStyle установить либо Extended или же Default,

Я могу выбрать несколько элементов, однако не могу найти способ программно определить, какие элементы выбраны.

Этот код

for loop := 0 to Listbox1.Count - 1 do
if Listbox1.Selected[loop] then ; //Do Something

что я видел варианты не компилируется:

[ошибка dcc32] MainApplication.pas(60): класс E2149 не имеет свойства по умолчанию

Я прошел через различные свойства и методы TListBox и я не вижу способа узнать, какие предметы выбраны.

Может кто-нибудь помочь мне в этом?

1 ответ

Решение

В FireMonkey TListBox.Selected свойство является указателем на первый выбранный TListBoxItem объект. Это НЕ массив логических состояний, как в VCL. Вы, наверное, смотрели примеры VCL, а не примеры FMX.

Сообщение об ошибке вызвано тем, что вы пытаетесь применить [loop] индекс для конкретного TListBoxItem объект, который не имеет default имущество.

Используйте это вместо:

for loop := 0 to ListBox1.Count - 1 do
begin
  if ListBox1.ListItems[loop].IsSelected then
    ...
end;
Другие вопросы по тегам