有两个Form.其中form2是动态生成的.在form1上有一个button1其代码:
form1.button1click(.......)
begin
 form2:=tform.create(self);
 form2.showmodal;
end;
form2上Button1的关闭窗口代码:
form2.buttonclick()
begin
 form2.release;
end;
form2是能关掉了,但form1不是当前窗口,还是showmodal状态.请问怎么恢复form1为当前窗口?我想是不是应该在form2.close()里写什么语句让form1为当前窗口?

解决方案 »

  1.   

    在buttonclick里form2.close
    在form2close里action:=cafree
      

  2.   

    http://www.jxyc.gov.cn/leida/bbs论坛过这个问题..
      

  3.   

    在buttonclick里form2.close
    在form2close里action:=cafree这样有没有释放掉窗体在内存中的资源?
      

  4.   

    begin
     form2:=tform.create(self);
     form2.showmodal;
    end;对于form2用ShowModal显示
    因为form2模态显示
    直接
    begin
     form2:=tform.create(self);
     form2.showmodal;
     form2.free;
    end;
    就可
      

  5.   

    建义不要使用caFree,用form2.free
      

  6.   

    showModal 的窗体,直接free是不行的,这时候窗体依然锁定着键盘事件,所以应该用close或modalResult来关闭窗体,以解除锁定
      

  7.   

    form1.button1click(.......)
    begin
     form2:=tform.create(self);
     form2.showmodal;
     form2.free;
    end;
      

  8.   

    原来的方法是使用以下结构:
    try
       Form2.ShowModal;
    finally
       Form2.Free;
       Form2 := nil;
    end;
    现在一般使用:
    try
       Form2.ShowModal;
    finally
       FreeAndNil(Form2);
    end;
      

  9.   

    模态窗口需要返回一个模态值,所以在BUTTON的CLICK事件里应该给窗口赋值form1.button1click(.......)
    begin
     form2:=tform.create(self);
     form2.showmodal; 
    end;
    form2上Button1的关闭窗口代码:
    form2.buttonclick()
    begin
      ModalResult := mrYes;
    end;
      

  10.   

    form1.button1click(.......)
    begin
     form2:=tform.create(self);
     form2.showmodal; form2.Free;   // 这样行吗?end;
      

  11.   

    form1.button1click(.......)
    begin
     form2:=tform.create(self);
     form2.showmodal;
    form2.free;
    end;
      

  12.   

    form2上Button1的关闭窗口代码:
    form2.buttonclick()
    begin
     form2.release;//@@@@这里不对,应该是给ResultModal变量赋非mrNone值,这样模式对话框才能正确关闭和返回@@@@
    end;