2012-03-26 3 views
0

Я пытаюсь использовать как IsChecked, так и IsSelected совместно с FMX TListbox, и оба возвращают неверные результаты (всегда True независимо от выбора пользователя). Является ли это известной ошибкой и есть ли обходной путь?IsChecked свойство в Firemonkey TListbox не возвращает правильный результат?

Мой тестовый код очень прост:


var 
    i: integer; 
    lb: TListboxitem; 

for i:=0 to lbxPartners.items.Count-1 do 
begin 

    lb :=tlistboxitem(lbxPartners.Items[i]); 
    if lb=nil then continue; 

    if lb.IsChecked then 
    memo1.Lines.Add('item '+inttostr(i) +' checked') 
    else 
    memo1.Lines.Add('item '+inttostr(i)+' unchecked'); 
end; 
+0

Это должно быть lbxPartners.ListItems [i]. –

+0

Майк, спасибо за это - теперь он работает, хотя я обнаружил, что если я хочу получить текст элемента, мне все равно нужно перейти к списку .items stringlist; listitems [n] .text вызывает ошибку. Ну, по крайней мере, теперь у меня это работает! – user1248816

+0

Я написал вам полный ответ. ListItems [n] .Text отлично работает для меня. Какая у вас ошибка? У вас есть образец кода? –

ответ

4

TListBox.Items список строк, и в основном там, так что вы можете использовать управление таким же образом, как VCL TListBox.

TListBox.ListItems - это список TListBoxItems, которые являются дочерними элементами управления, которые отображаются TListBox.

Чтобы получить доступ к IsChecked собственности:

ListBox1.ListItems[n].IsChecked := True; 

Вы можете получить текст либо:

ListBox1.Items[n] := 'Hello'; 
ListBox1.ListItems[n].Text := 'World'; 

Ваш полный код не будет (Примечание нет необходимости в гипсе):

var i: integer; lb: TListboxitem; 

for i:=0 to lbxPartners.items.Count-1 do begin 
    lb := lbxPartners.ListItems[i]; 
    if lb=nil then continue; 

    if lb.IsChecked then 
    memo1.Lines.Add('item '+inttostr(i) +' checked') 
    else 
    memo1.Lines.Add('item '+inttostr(i)+' unchecked'); 
end; 
+1

Не должен ListBox1.Items [n] .IsChecked: = True; be ListBox1.ListItems [n] .IsChecked: = True; ? – HeartWare

+0

Да, извините. Ответ отредактирован. –

Смежные вопросы