close;//form2
form3.formshow();

解决方案 »

  1.   

    对于form3来说是form2打开的模态窗口,在form3没关闭的情况下是不能关闭from2的,你为什么不用Show来显示非模态窗口呢?
      

  2.   

    用 Hide 隐藏啊(占系统资源)
      

  3.   

    在Form2的Onclose事件中加入如下代码
    if Action=caHide then
      begin
       Form3.Show;
       Close;
      end;
      

  4.   

    试试看
    Unit1
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form2 = nil then
        Application.CreateForm(TForm2,Form2) ;
      Form2.Show;
      Freeandnil(Form1);
    end;Unit2
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form3 = nil then
        Application.CreateForm(TForm3,Form3) ;
      Form3.Show;
      Freeandnil(Form2);
    end;Unit3
    procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form1 = nil then
        Application.CreateForm(TForm1,Form1) ;
      Form1.Show;
      Freeandnil(Form3);
    end;
      

  5.   

    试试看
    Unit1
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form2 = nil then
        Application.CreateForm(TForm2,Form2) ;
      Form2.Show;
      Freeandnil(Form1);
    end;Unit2
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form3 = nil then
        Application.CreateForm(TForm3,Form3) ;
      Form3.Show;
      Freeandnil(Form2);
    end;Unit3
    procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form1 = nil then
        Application.CreateForm(TForm1,Form1) ;
      Form1.Show;
      Freeandnil(Form3);
    end;
      

  6.   

    试试看
    Unit1
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form2 = nil then
        Application.CreateForm(TForm2,Form2) ;
      Form2.Show;
      Freeandnil(Form1);
    end;Unit2
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form3 = nil then
        Application.CreateForm(TForm3,Form3) ;
      Form3.Show;
      Freeandnil(Form2);
    end;Unit3
    procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      if Form1 = nil then
        Application.CreateForm(TForm1,Form1) ;
      Form1.Show;
      Freeandnil(Form3);
    end;
      

  7.   

    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form3.Show;
    end;
    不过主窗体关闭时程序就会结束.