From1是子窗口,在主窗口MainFrm中使用From1.ShowModal,
然后在From1中处理事务,完成后希望关闭From1回到MainFrm中,并释放Form1的内存,这样该如何做???
用close能关闭From1并回到MainFrm中,但不能释放内存。
用free则不能回到MainFrm。
用close并在onclose里写Action := caFree,则程序出错。还有什么办法处理呢???

解决方案 »

  1.   

    哦,对了,不用show,因为我想在处理From1事务时停止MainFrm的响应,等完成后再回到MainFrm。
      

  2.   

    在你想子窗口关闭并释放内存的窗体的onclose事件中加入  
      Action:=caFree;  
     就可以了
      

  3.   

    MainFrm中用showmodal打开新窗体,使用完毕直接关闭就行,不用做别的处理
      

  4.   

    用free则不能回到MainFrm ????????with TFrom1.Create(MainFrm) do
    try
      if showmodal = mrok then
        ..........
    finally
      free;
    end;
      

  5.   

    如果使用Action:=caFree;运行出错请动态创建子窗体试试var  
          frm:Tfrm;  
      begin  
          frm := From1.Create(self);  
          frm.Show;  
      end;
    然后再在onclose里写Action := caFree
      

  6.   

    我就奇怪了,怎么楼上几位都把form打成from了?
      

  7.   


    form1 :=Tfrom1.Create(nil)
    try
      form1.ShowModal
      ...
    finally
      form1.free
      

  8.   

    试用完直接Form1.close;就可以了吗?内存呢?还没有释放吧
      

  9.   


    你用的是frm.Show;这样是没有问题的。但我的问题是用showmodal,然后free就出问题了。
      

  10.   


    刚测试了下,这种方法是正确的。
    我原来错的地方就是:form1 :=Tfrom1.Create(Application);
    这个差别我还需要好好学习下。