form1 form2 属于那种现调用现生成的窗体(本人很菜,不会描述,见笑).
form1上有个按钮 点了之后调用出form2 并把form1窗体上的某些数据传送到form2上  
 
我是这么写的 
form1.close;
form2:=TForm2.create(nil);
try
   ............
   {把form1上的数据传给form2}
   ................
   Form2.showmodal;
finally 
   freeandnil(form2)
end;
结果都很好,就是有一个问题。
form2出来了 form1却没有关闭 
只有把form2 关了 form1才关 
这是怎么回事啊 有什么解决办法吗  让 form2打开的同时 把form1关了 。

解决方案 »

  1.   

    你描述的不是很清楚,我下面处理了一下看看
    form1.close;
    form2:=TForm2.create(nil);
    try
       ............
       {把form1上的数据传给form2}
       form1.free;//释放看看
       ................
       Form2.showmodal;
    finally 
       freeandnil(form2)
    end;
      

  2.   

    Form2.showmodal;showmodal了当然form1不会关了。改成Form2.show;另外把form1.close放在form2 show完之后吧。
      

  3.   

    to 2楼 行不通 按照你的方法 2个窗体都是闪一下就全关了 FORM2根本出不来
    to 1楼 你的办法不错  可是当我把FORM2关了的时候,会出现错误
    说明:FORM1 FORM2都可以通过主窗体上的按钮调用 (假设为BUTTON1 BUTTON2)
         FROM1呢又可以生成FORM2 (如问题所说)
    BUTTON1的代码为  FORM1调用FORM2后,按一楼所说,会出现错误 如下
      Frm_Plan:=TFrm_Plan.Create(nil);
      try
       Frm_Plan.ShowModal;----------------------指向这一行
      finally
        freeandnil(Frm_Plan);
      end;
      

  4.   

    with TForm2.Create(Ownre) do
    begin
      ..进行你所说的传送数据
      ShowModal;
      Destroy;
    end;
      

  5.   

    我想提个问题,我觉得你的代码逻辑有点问题,你想form2打开后释放(还是隐藏)form1呢?如如果是释放,接着谁来负责释放form2呢?(如果你打算Action=caFree当我没说)然后请清晰描述下你的要求和具体出现的错误。
      

  6.   

    哎,如果你的form1是启动窗体的话,我说的方法当然就不行了。这样你就只能hide而不能close了
      

  7.   

    Form1调用Form2
    if Form2=nil then
       Form2:=TForm2.Create(self);
       {输入你需要传递的数据(代码)}
       Form2.ShowModal;
    Form2关闭需要释放
    Form2Close中
    Active:=cafree;Form2:=nil;
    即可。