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

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

У меня есть 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 и не вижу способа узнать, какие элементы выбраны.

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


person Gord Bestwick    schedule 21.06.2018    source источник


Ответы (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;
person Remy Lebeau    schedule 21.06.2018
comment
Спасибо! Это именно то, что я искал! - person Gord Bestwick; 22.06.2018