C
coolqiang
Unregistered / Unconfirmed
GUEST, unregistred user!
由于需要根据数据库中的具体内容来生成菜单项,所以必须动态生成。
我的代码如下:
PopupMenu := TPopupMenu.Create(Self);
try
for i:=0 to n-1 do
begin
PopupItems := TMenuItem.Create(Self);
PopupItems.Caption := '菜单'+IntToStr(i);
PopupMenu.Items.Add(PopupItems);
end;
......
finally
[blue] PopupMenu.Free;[/blue]
[green] for i := Low(PopupItems) to High(PopupItems) do
PopupItems.Free;[/green]
end;
我见过其它动态生成控件要设置其Owner属性,可以在其Owner释放时自动释放,但我用
PopupItems.Owner := PopupMenu
时,编译说不能给只读属性赋值。
上面代码运行后出错,但如果将蓝色那一行放到绿色那一段后面,就正常,我想知道为什
么?而且这样的方法是否就没问题?用Free可以保证释放资源吗?我看到还有用
FreeAndNil的,能不能请哪位高手系统地说一下资源的分配和释放?如果能说清楚,另有
高分相送!
我的代码如下:
PopupMenu := TPopupMenu.Create(Self);
try
for i:=0 to n-1 do
begin
PopupItems := TMenuItem.Create(Self);
PopupItems.Caption := '菜单'+IntToStr(i);
PopupMenu.Items.Add(PopupItems);
end;
......
finally
[blue] PopupMenu.Free;[/blue]
[green] for i := Low(PopupItems) to High(PopupItems) do
PopupItems.Free;[/green]
end;
我见过其它动态生成控件要设置其Owner属性,可以在其Owner释放时自动释放,但我用
PopupItems.Owner := PopupMenu
时,编译说不能给只读属性赋值。
上面代码运行后出错,但如果将蓝色那一行放到绿色那一段后面,就正常,我想知道为什
么?而且这样的方法是否就没问题?用Free可以保证释放资源吗?我看到还有用
FreeAndNil的,能不能请哪位高手系统地说一下资源的分配和释放?如果能说清楚,另有
高分相送!