我写了一段这样的代码
procedure TFrm_main.N45Click(Sender: TObject);
begin
f:=Tfrm_navigation.Create(self);
f.Show;
end;
frm_main:是fsMDImain,frm_navigation是fsMDIchild
我按上面代码新建了一个窗口f实例,然后,将其关闭,f肯定还驻留在内存中,
请问:我在那写代码将f释放呢?
procedure TFrm_main.N45Click(Sender: TObject);
begin
f:=Tfrm_navigation.Create(self);
f.Show;
end;
frm_main:是fsMDImain,frm_navigation是fsMDIchild
我按上面代码新建了一个窗口f实例,然后,将其关闭,f肯定还驻留在内存中,
请问:我在那写代码将f释放呢?
begin
f:=Tfrm_navigation.Create(self);
f.Show;
f.Free;
end;
begin
f:=Tfrm_navigation.Create(self);
f.Showmodal;
f.free;
end;
procedure Tfrm_navigation.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
f.ShowModal;
f.Free;
procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
frm_navigation := nil;
end;
begin
f:=Tfrm_navigation.Create(self);
f.Show;
f.Free;//这样是不行的。
end;如下:
procedure Tfrm_navigation.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;----------------
沉沦中..........
begin
Action := caFree;
frm_navigation := nil;
end;
begin
try
f:=Tfrm_navigation.Create(self);
f.ShowModal
finally
f.Free;//这样是不行的。
end;
end;procedure TFrm_main.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=caFree;
end;
begin
try
f:=Tfrm_navigation.Create(self);
f.Showmodal;
finally
f.Free;
end;
end;procedure TFrm_main.FormClose(Sender: TObject; var Action: TCloseAction);
beign
Action:=caFree;
end;
procedure TFrm_main.N45Click(Sender: TObject);
begin
application.createform(Tfrm_navigation,frm_navigation);
frm_navigation.showmodal;
frm_navigation.free;
end;
var Action: TCloseAction);
begin
Action:=cafree;
end;
可惜,我问的不是很明确...
但回答正确的均会有分
to: smallHand
f:=Tfrm_navigation.Create(self);
f.Show;
f.Free;
我开始就是这样的,如果刚show,就free,那我create f 干吗?
我想问的是:在f中丢个button 在其中写一行close,我运行以后,实例f肯定被关闭,但不我知道
此实例是否在内存中被释放,
然后我在,procedure TFrm_navigation.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
if assigned(frm_main.f) then showmessage('close');
end;
procedure TFrm_navigation.FormDestroy(Sender: TObject);
begin
if assigned(frm_main.f) then showmessage('destroy');
end;
测试f是否已经被释放,但均弹出两个对话框,说明f没被释放吗?
f:=Tfrm_navigation.Create(self);
f.Showmodal;
f.Free;
MDI窗口好象不支持showmodal,不信你试试
如果不写cafree,那我关闭子窗口都不行,肯定写了
Action:=cafree;
begin
Action := caFree;
frm_navigation := nil;
end;
procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;procedure Tfrm_navigation.FormDestroy(Sender: TObject);
begin
frm_navigation := nil;
end;
procedure Tfrm_navigation.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=cafree;
end;
对了,一颗星怎么也会:
procedure TFrm_main.N45Click(Sender: TObject);
begin
f:=Tfrm_navigation.Create(self);
f.Show;//
f.Free;//这真的与一颗星不行配啊。建议保护好密码,不要被他人盗用,坏了名声
end;
begin
Action := caFree;
end;在Destroy里写procedure Tfrm_navigation.FormDestroy(Sender: TObject);
begin
frm_navigation := nil;
end;