我用Form1.button show Form2,Form2里有两个DBGRID,调用的数据源是Form1的数据源,我在双击DBGRid后关掉Form2,把所需要的纪录传回Form1中,两个Form的交流都是在Form1中uses Form2,Form2中uses Form1,Form1的button第一次运行时,一切正常,数据也正常传回,但第二次运行的时候就出现异常错误,光够一个Form2.Free是不够的,请问有什么办法可以解决

解决方案 »

  1.   

    要Form2 := Free;
    不然你用 if Form2 = nil then Form2 := TForm2.Create;就不能正确创建Form2.
      

  2.   

    我试过了,不行,用Form2 := nil;还是不行的,我是想重新打开FORM2时,就象第一次打开FORM2,使用第一次使用的FORMCREATE,但是,不成功,能告诉我怎么回事吗
      

  3.   

    Form2.Tree;Application.CreateForm(TForm2, Form2);
      

  4.   

    Form2.Free; //SorryApplication.CreateForm(TForm2, Form2);
      

  5.   

    很简单的啊。
    1、既然你要用到才Create,那么首先在Project菜单选Remove from project...,不让Delphi自动创建他。
    2、创建的时候这样:
       if Form2 = nil then Form2 := TForm2.Create(Application);
       //这里可以做点初始化;
    3、在Form2的OnClose事件中写上, 
       Action := caFree;
       Form2 := nil;
      不然只是隐藏。
    4、没有理由不成功的,如果真的不成功,检查你TForm2的代码,一定有错。
       
      

  6.   

    窗体已经Free
    你怎么还能Show呢
    在Show之前加上
    Form2:=TForm2.Create(Application);