我有两个窗体,是运行程序时,我用主窗体调用了一个窗体,后我又把子窗体关闭(用close方法)了,现在我又想从主窗体里调用这个窗体时就出现了错误,请大家帮帮我,谢谢了。

解决方案 »

  1.   

    你说的是不是MDI窗体?
    如果是这样,在你的子窗体Onclose事件里写上 action:=Cafree;
    如果是普通的窗体
    当你释放窗体的时候
    比如
    Try
     FORM2.SHOWMODEL;
    FINALLY
     FORM2.FREE;
     FORM2:=NIL;//这句话保证窗体的指针为空 
    END
      

  2.   

    是的,我用了下面的代码:
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
        [mbYes, mbNo], 0) = mrYes then
        begin
        Action := caFree
        end
      else
        Action := caNone;
    end;
      

  3.   

    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
        [mbYes, mbNo], 0) = mrYes then
        Action := caFree;
    end;
    //这样就行了吧
      

  4.   

    如果一个窗体Free了,就不能再使用了,要是你还想用,关闭它就行如果你的窗体不是动态创建,可以把你的代码中的改为:procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if MessageDlg('还没有完成工程信息输入,是否取消?', mtConfirmation,
        [mbYes, mbNo], 0) <> mrYes then
        Action := caNone;
    end;