form1是主form,你把它关了,form2自然就关了
将form2也设置为主form就可以了

解决方案 »

  1.   

    呵呵,楼上说的没错,你改form1.Close为form1.Hide;吧!
      

  2.   

    不用TIMER控件。在FORM1的ONCLOSE事件里让FORM2。SHOW可以吗?
      

  3.   

    我用了hide,不成啊。程序退不出去!!!我怎么才能让form2为主???
      

  4.   

    主窗口Form1是不能关闭的。
    你可以在关闭Form1的按钮Click事件中这样写:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      Hide;
      Form2.Show;
    end;
    但要注意的是,这样做你的主窗体Form1只是被隐藏了,并没有被释放。
    如果要在Form2做完事情后就关闭的话,那时也要将Form1关闭掉。即:
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form1.Close;
    end;
    如果要在Form2做完事情后再回到主窗体Form1话,那时可将Form1重新显示。即:
    procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
      Form1.Show;
    end;
    当然,Unit1单元中要uses Unit2;Unit2单元中要uses Unit1
      

  5.   

    如果Form2为主的放,那何来Form1啊?
    呵这个办法恐怕也不妥吧……
      

  6.   

    Form1为主窗体,
    在Form1里创建Form2:
    Application.MainForm.Hide ;
    Form2.Show ;在Form2.Close里加入:
    application.Terminate ;
    就可以即隐藏主窗体又可显示F2,又避免Unit间的重复引用!
      

  7.   

    to chinajavis(我选择 我喜欢) 真是好人,补充一下,就是为什么不用Form1.Close而用Form1.Hide
    因为Form1是主窗口,它的关闭就意味着整个程序的关闭,当然Form2就不见了至于改Form2为主窗体是治标不治本的,你还得先把Form1 Show出来把Form2 Hide掉,回到上面的问题中去了可以在Project options中改变主窗体,也可在工程文件中通过改变第一个创建的窗体达到目的
      

  8.   

    谢谢大家了。我用 chinajavis(我选择 我喜欢) 的方法了。
      

  9.   

    bosshawk(BossHawk)、hwkknd(白开水)说的也都对