如何释放自动生成的控件?送分!(300分)(300分)

  • 主题发起人 主题发起人 vinlin
  • 开始时间 开始时间
V

vinlin

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个panel里面自动生成N个image控件,在生成之前肯定要先判断是否已经有了这些image,如果有了,就释放然后再生成。不知道怎么找到全部整个panel下image,怎么处理呢?各位指导指导!
 
with panel1do
begin
for i:=0 to ComponentCount-1do
if Components.ClassName='TImage' then
FreeAndNil(TIamge(Components));
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
var
N: integer;
begin
with panel1do
for N := ControlCount - 1do
wnto 0do
//一定要downto
if Controls[N] is TImage then
begin
(Controls[N] as TImage).Picture.Bitmap.FreeImage;
(Controls[N] as TImage).Free;
end;
end;
 
for v_count := 0 to Panel.ControlCount - 1do
begin
if Panel.Controls[v_count] is Timage then
FreeAndNil(TImage(Panel.Controls[v_count]));
end;
 
如果image的Create(AOwner),AOwner不为nil就没必要自己释放
否则如楼上的写法
 
1.指定宿主时由宿主释放.也就是楼上说的OWner。
2.不指定宿主的手动释放。楼上的楼上有说了。
 
如果Panel上还有容器,就要递归了哈
 
使用man8888最简单的方法解决了。
 
后退
顶部