if not assigned(form2) then
  begin
    form2:=tForm2.create(application);
    form2.Show;
  end
  else
  form2.show;这段代码存在于主窗口的菜单中,通过这段代码,打开子窗口form2,关闭form2后,再次通过这段代码打开的时候就报错了。form2的formclose事件中有action:=cafreef,form2的关闭按钮中有代码form2.close
大侠们能帮我看看问题在哪里吗?

解决方案 »

  1.   

    是不是要用
    Try
    ....
    ...
    finally
    form2.free;
    end;
      

  2.   

    Action,窗体会自动释放,但指针确没有指向nil,Assigned(form2)为True,不会重新构造form2对象,所以出错,这种问题设置断点就很容易调试出来.
      

  3.   

    在form2的Close事件中加入action:=Cafree;
      

  4.   

    请问ehom(?!) 老大,我该怎么做?
      

  5.   

    Free Form2以后,加上Form2:=nil就该OK了http://lysoft.7u7.net
      

  6.   

    Action := caFree去掉~~~既然要多次使用,又何必释放?
      

  7.   

    当然在对象的析构函数中将指针Form2赋为nil也是可以的,但这样的设计非常糟糕,耦合关系混乱.