为什么关闭子窗体时发生错误?以下是相关代码:
////建立窗体/////////////////////////////////////////////////////////
          begin
                    if not assigned(frmAFMDay) then
                    begin
                            frmAFMDay:=TFrmAFMDay.Create(Application);
                    end;
                    frmAFMDay.Show;         end;////关闭窗体/////////////////////////////////////////////////////////
procedure TfrmAFMDay.BitBtn1Click(Sender: TObject);
begin
        frmAFMDay.Close;end;////关闭事件/////////////////////////////////////////////////////////
procedure TfrmAFMDay.FormClose(Sender: TObject; var Action: TCloseAction);
begin
        Action:=caFree;end;end.

解决方案 »

  1.   

    错误在哪里呀?一般还要在form的destroy事件中写上:
    frmAFMDay := nil;
      

  2.   

    写上frmAFMDay:=nil;也错误。说是读写地址xxxxx出错。但用窗口的标题栏的关闭图案就可以关闭窗体。
      

  3.   

    试试 :uses unit2 ;
    Application.CreateForm(TForm2,Form1) ;
    Form2.Show ;---------------Action := CaFree ;没有错误
      

  4.   

    还是不行,用Application.CreateForm(TfrmADMDay,frmADMDay);
    用TfrmADMDay.Create(Application)
      TfrmADMDay.Create(frmMain)  都不行!
      

  5.   

    Form1 : MDIForm ;
    Form2 : MDIChild ;----------------------
    不行 ?
      

  6.   

    这样看看:
    procedure TfrmAFMDay.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
            Action:=caFree;
            frmAFMDay:=nil; 
    end;
      

  7.   

    给你一个通用函数:procedure OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent);
    var
      i: integer;
      Child:TForm;
    begin
      for i := 0 to Screen.FormCount -1 do
          if Screen.Forms[i].ClassType=FormClass then
          begin
            Child:=Screen.Forms[i];
            if Child.WindowState=wsMinimized then
               ShowWindow(Child.handle,SW_SHOWNORMAL)
            else
               ShowWindow(Child.handle,SW_SHOWNA);
            if (not Child.Visible) then Child.Visible:=True;
            Child.BringToFront;
            Child.Setfocus;
            TForm(fm):=Child;
            exit;
          end;
      Child:=TForm(FormClass.NewInstance);
      TForm(fm):=Child;
      Child.Create(AOwner);
    end;这样你每次调用即可:如:  OpenForm(TfrmChild1,frmChild1, self);别忘了在close的时候:  Action:=caFree;