我有这个类型定义:
KMenuClass = class
private
pMenuID: String;
public
property MenuID: String read pMenuID;
constructor Create(const paraMenuID: String);
end;
然后我这样做:
constructor KMenuClass.Create(const paraMenuID: String);
begin
pMenuID:= paraMenuID;
end;
procedure TfrmPermissions.FormCreate(Sender: TObject);
begin
clSetup.Items.AddObject('ant', KMenuClass.Create('a007'));
clSetup.Items.AddObject('cat', KMenuClass.Create('x123'));
end;
以上两个条目仅用于测试条目。我真的在看大约50件物品。
clSetup的类型为TCheckListBox,我基本上将第二个字符串与Items字符串一起存储。
我可以输出这样的特定项目:
Var
ThisItem : KMenuClass;
.
.
.
ThisItem := clSetup.Items.Objects[clSetup.ItemIndex] as KMenuClass;
ShowMessage(clSetup.Items[clSetup.ItemIndex] + ' : ' + ThisItem.MenuID);
但是,如何处置与每个列表项关联的对象?关闭表单时它会自动处理吗?
谢谢!
最佳答案
手动迭代item.objects,item.count时间并释放每个对象可能是唯一的方法,因为该属性可能是tstrings,并且没有ownsobjects属性(仅在tstringlist中出现)。
关于dispose - 在这种情况下,如何释放内存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20586490/