清单框添加项目
Checklistbox adding items
有人知道会出现什么问题吗?我想将项目添加到检查列表框但没有任何反应...项目是 Table 集合中的 CollectionItems。 Tables 有一个名字 属性
procedure TForm1.FormShow(Sender: TObject);
var
DisplayName: string;
c :integer;
begin
for C := 0 to Compname.Tables.Count - 1 do
with cxCheckListBox1.Items.Add do
begin
DisplayName := Compname.Tables.Items[C].TableName;
Tag := C;
end;
结束;
谢谢!
DisplayName
是一个局部变量,否则不会被使用。您应该设置新项目的 Text
属性。
我建议您停止使用 with
。如果你没有这样做,你会写出这样的代码:
Item := cxCheckListBox1.Items.Add;
Item.DisplayName := ...;
编译器可能会拒绝该代码。事实上,使用 with
只会让你的范围变得混乱。请停止使用它。
如果不仅需要在列表中存储字符串,还需要存储其他数据(例如某些标识符)Items.Add()
方法不合适。在这种情况下有用的是 Items.AddObject()
方法。
例如添加新项目:
lbFeatures.AddItem(
qrFeatures.FieldByName('DESCR').AsString,
TObject(qrFeatures.FieldByName('ID').AsInteger));
并读取存储的 ID:
if lbFeatures.Checked[I] then
id := Integer(lbFeatures.Items.Objects[I]);
有人知道会出现什么问题吗?我想将项目添加到检查列表框但没有任何反应...项目是 Table 集合中的 CollectionItems。 Tables 有一个名字 属性
procedure TForm1.FormShow(Sender: TObject);
var
DisplayName: string;
c :integer;
begin
for C := 0 to Compname.Tables.Count - 1 do
with cxCheckListBox1.Items.Add do
begin
DisplayName := Compname.Tables.Items[C].TableName;
Tag := C;
end;
结束;
谢谢!
DisplayName
是一个局部变量,否则不会被使用。您应该设置新项目的 Text
属性。
我建议您停止使用 with
。如果你没有这样做,你会写出这样的代码:
Item := cxCheckListBox1.Items.Add;
Item.DisplayName := ...;
编译器可能会拒绝该代码。事实上,使用 with
只会让你的范围变得混乱。请停止使用它。
如果不仅需要在列表中存储字符串,还需要存储其他数据(例如某些标识符)Items.Add()
方法不合适。在这种情况下有用的是 Items.AddObject()
方法。
例如添加新项目:
lbFeatures.AddItem(
qrFeatures.FieldByName('DESCR').AsString,
TObject(qrFeatures.FieldByName('ID').AsInteger));
并读取存储的 ID:
if lbFeatures.Checked[I] then
id := Integer(lbFeatures.Items.Objects[I]);