我有这个类型定义:

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/

10-11 23:26