具体看:http://www.csdn.net/expert/topic/881/881416.xml?emp=.2174494

解决方案 »

  1.   

    我刚作了个小例子,var
        fm: Tform2;procedure TForm1.Button1Click(Sender: TObject);
    begin
        fm:=tform2.create(self);
        fm.show;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        fm.Free;
    end;运行没有出错。先用button1创建,然后用button2释放,没有出错。
    但创建后,释放两次会出错,你在检查一下吧。
      

  2.   

    我刚作了个小例子,var
        fm: Tform2;procedure TForm1.Button1Click(Sender: TObject);
    begin
        fm:=tform2.create(self);
        fm.show;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        fm.Free;
    end;运行没有出错。先用button1创建,然后用button2释放,没有出错。
    但创建后,释放两次会出错,你在检查一下吧。
      

  3.   

    关不掉子窗体的话
    在子窗体的OnClose事件中写Action:= caFree;
      

  4.   

    unit1 的代码:uses unit2;
    procedure tform1.creatform;
    var
     form2 : Tform2;
    begin
     form2 := tform2.Create(application);
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
     Creatform;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     form2.Close; //在这里出错
    end;end.
    unit2的代码:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
     action := caFree;
    end;end.
      

  5.   

    这样
    调用时 :
    if not assigned(form2) then begin
      form2 := tform2.create(appliation);
      form2.show;
    end;
    //在form2的onclose里写;
      action := acfree;
    //在form2的ondestroy里写;
      form2 := nil;
      

  6.   

    当然错了,form2又不是全局变量!
      

  7.   

    能不能在子窗体中定义一条消息  处理过程为关闭在主窗体中post这条消息?
      

  8.   

    你这样释放:h:=findwindow(tfrom2,'form2');if h<>0 then sendmessage(h,wm_close,0,0);绝对ok!
      

  9.   

    windows的以消息为核心的实质要把握住嘛,呵呵!
      

  10.   

    倒 我是自己写的消息
    form2:const
      WM_CLOSEME = WM_USER + 181 ;   //
      
      private
        procedure CLOSEME(var Msg:TMessage);message WM_CLOSEME;procedure Tform2.CLOSEME(var Msg:TMessage);
    begin
      form2.Close ;
    end;form1:
       postmessage(form2.Handle,WM_CLOSEME,0,0);
      

  11.   

    还是smhpnuaa(农奴翻身感谢党)的比较简单 直接发WM_CLOSE就可以了