Firemonkey TListbox中的IsChecked属性未返回正确的结果?

时间:2012-03-26 17:20:54

标签: delphi delphi-xe2 firemonkey

我正在尝试将IsChecked和IsSelected与FMX TListbox控件结合使用,并且两者都返回不正确的结果(无论用户选择什么,始终为True)。这是一个已知的错误,是否有解决方法?

我的测试代码非常简单:


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;

1 个答案:

答案 0 :(得分: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;