我写了一段这样的代码
procedure TFrm_main.N45Click(Sender: TObject);
begin
  f:=Tfrm_navigation.Create(self);
  f.Show;
end;
frm_main:是fsMDImain,frm_navigation是fsMDIchild
我按上面代码新建了一个窗口f实例,然后,将其关闭,f肯定还驻留在内存中,
请问:我在那写代码将f释放呢?

解决方案 »

  1.   

    procedure TFrm_main.N45Click(Sender: TObject);
    begin
      f:=Tfrm_navigation.Create(self);
      f.Show;
      f.Free;
    end;
      

  2.   

    procedure TFrm_main.N45Click(Sender: TObject);
    begin
      f:=Tfrm_navigation.Create(self);
      f.Showmodal;
      f.free;
    end;
      

  3.   

    子窗体的关闭要在起关闭事情中写入释放。
    procedure Tfrm_navigation.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
        Action:=cafree;
    end;
      

  4.   

    f:=Tfrm_navigation.Create(self);
      f.ShowModal;
      f.Free;
      

  5.   

    在frm_navigation的关闭事件中写:frm_navigation:=nil;
      

  6.   

    在Form的Close中输入
    procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
      frm_navigation := nil;
    end;
      

  7.   

    procedure TFrm_main.N45Click(Sender: TObject);
    begin
      f:=Tfrm_navigation.Create(self);
      f.Show;
      f.Free;//这样是不行的。
    end;如下:
    procedure Tfrm_navigation.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
        Action:=cafree;
    end;----------------
    沉沦中..........
      

  8.   

    procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
      frm_navigation := nil;
    end;
      

  9.   

    procedure TFrm_main.N45Click(Sender: TObject);
    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;
      

  10.   

    procedure TFrm_main.N45Click(Sender: TObject);
    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;
      

  11.   


    procedure TFrm_main.N45Click(Sender: TObject);
    begin
    application.createform(Tfrm_navigation,frm_navigation);
    frm_navigation.showmodal;
    frm_navigation.free;
    end;
      

  12.   

    procedure Tfrm_navigation.FormClose(Sender: TObject;
      var Action: TCloseAction);
    begin
        Action:=cafree;
    end;
      

  13.   

    靠...一顿饭工夫,这么多人回答,十分感谢!
    可惜,我问的不是很明确...
    但回答正确的均会有分
    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没被释放吗?
      

  14.   

    to :jjpan
      f:=Tfrm_navigation.Create(self);
      f.Showmodal;
      f.Free;
    MDI窗口好象不支持showmodal,不信你试试
      

  15.   

    to haj77()
      如果不写cafree,那我关闭子窗口都不行,肯定写了
      

  16.   

    在窗体的close事件中加入.
    Action:=cafree;
      

  17.   

    procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
      frm_navigation := nil;
    end;
      

  18.   


    procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
    end;procedure Tfrm_navigation.FormDestroy(Sender: TObject);
    begin
      frm_navigation := nil;
    end;
      

  19.   

    支持子窗体的关闭要在起关闭事情中写入释放。
    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;
      

  20.   

    在Close里写procedure Tfrm_navigation.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Action := caFree;
    end;在Destroy里写procedure Tfrm_navigation.FormDestroy(Sender: TObject);
    begin
      frm_navigation := nil;
    end;