主题: 关于两个窗体间的转换问题
 
  现在有两个窗体,form1 和 form2,在1中有一个按钮,在单击以后form1将消失,form2将出现,同样在form2中也有一按钮,在单击以后form2将消失,form1又会出现,应该怎么样实现这个功能呢?
 
  还有,如果form2是主要窗体,但是在form2显示之前,需要form1的一个身份验证,该如何实现比较好呢?
 
  谢谢!
/////////

解决方案 »

  1.   

    form1上的按钮如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
        form2.Show;
        close;
    end;
    form2上的按钮代码如下:
    procedure TForm2.Button1Click(Sender: TObject);
    begin
        form1.Show;
        close;
    end;
    --注意:form1和form2都不能是主窗口-------------------------
    还有,如果form2是主要窗体,但是在form2显示之前,需要form1的一个身份验证,该如何实现比较好呢?
    -----------------------------------------------------------
    在form2的onshow里面写上
    if form1.showmodal=mrOK then
    通过验证
    else
    application.terminate;
    ----------------------
    在form1里面进行身份验证(连接数据库什么的就不说了),如果验证通过就:
    form1.ModalResult:=mrOK;
    就可以了...
      

  2.   

    如果窗体要动态生成呢?
    简单的form2.Show;
          close;
    好象不行的  另外在unit单元中也要互相引用才行呢 
    但是似乎如果unit1中引用了unit2,那么如果我想从form2中返回form1中,那么在unit2中也要引用unit1才行 ,但是这个时候是不能引用unit1的,因为已经循环了,这个问题该如何解决呢 ?
    我要在任意的窗体间任意的切换  
    大家给点意见了 谢谢先!
      

  3.   

    在Form1中
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     Form2:=TForm2.Create(Application);
     with Form1 do
       begin
         try
           ShowModal;
         finally
           Free;
         end;
       end;
    end;在Form2中
    procedure TForm2.Button1Click(Sender: TObject);
    begin
     Form1:=TForm1.Create(Application);
     with Form1 do
       begin
         try
           ShowModal;
         finally
           Free;
         end;
       end;
    end;需要加的东西,按下F9后,会提示你.
    这样应该可以了,任意的窗口任意的切换.
      

  4.   

    晕 刚才发错了
    在Form1 应该是这样
    procedure TForm1.Button1Click(Sender: TObject);
    begin
     Form2:=TForm2.Create(Application);
     with Form2 do
       begin
         try
           ShowModal;
         finally
           Free;
         end;
       end;
    end;
      

  5.   

    循环引用的解决:把其中一个单元的USES子句加到IMPLEMENTATION中去。