关闭可以了,Action := caFree;Form2 := nil;也写上了,但重新打开就不行了啊,不清楚是怎么回师,有没有个大哥帮我啊,已经捆饶我三天了,谢谢~~~

解决方案 »

  1.   

    是多文档的么?可以这么样子写阿form1.terminate;
      

  2.   

    打开的话先要判断是不是存在子窗体。若存在则打开。不存在则要重新建立句并的啊。
    象你关闭了的话。就不能用show了啊。
      

  3.   

    对了还要先创建阿
    form1:=tform1.create(application);
    form1.show;
    再在子窗体的onclose 下写Action := caFree
      

  4.   

    if frmSUBFORM=nil then 
      frmSUBFORM:=TfrmSUBFORM.Create(Application);
    frmSUBFORM.Show;在OnClose中:Action := caFree;
    frmSUBFORM:= nil;
      

  5.   

    procedure TMainForm.N83Click(Sender: TObject);
    begin
        Try
         If FrmSetupSendCheckWater = nil then
               begin             FrmSetupSendCheckWater :=TFrmSetupSendCheckWater.Create(self);
                 FrmSetupSendCheckWater.Show;
                 //FrmSetupSendCheckWater.WindowState :=wsMaximized;           end
         else
               begin             FrmSetupSendCheckWater.BringToFront;
                 //FrmSetupSendCheckWater.WindowState := wsMaximized;           end;
       except
       end;在OnClose中:Action := caFree;
    FrmSetupSendCheckWater := nil;
      

  6.   

    OnClose事件:form1:=Nil;action:=cafree;//表示关闭时释放窗体
    打开前要动态生成:if form1=nil then
                         form1:=tform1.creat(self);
                      from1.show;
      

  7.   

    谢谢各位大哥,我现在解决了一部分
    if assigned(form4) then
            begin
              try
                 application.CreateForm(tform4,form4);
                 manage.Form4.FormStyle:=fsmdichild;
                 manage.Form4.Show;
              except
                 manage.Form4.FormStyle:=fsmdichild;
                 manage.Form4.Show;
              end;
    我用的TREEVIEW,第一个接点可以了,我晕死~,第二个接点就不行了,第一次能弹出来,第二次死活不出来窗体了都,这是咋回师啊
      

  8.   

    是if not assigned(form4) then
    不是
    if assigned(form4) then
      

  9.   

    free 以后的窗体它已经从内存中清除,如要显示要重新创建。close 只是关闭显示但是创建窗体的资源还在内存中,可以重新show