我想实现这样一个功能:
在显示主窗口后,同时显示登陆窗口。
我在新建的工程里,这样可以实现:
在主窗口的FormActivate写:
Application.CreateForm(TFrmLogin, frmFrmLogin);
FrmLogin.ShowModal;
但在我快完成的项目程序里这样却没反应,不知道是什么原因

解决方案 »

  1.   

    procedure TForm1.FormActivate(Sender: TObject);
    var  Fsign:TForm2;
    begin
      Fsign:=TForm2.Create(self);//动态创建登录窗体
      while (Fsign.Edit1.Text<>'abc')and(Fsign.ModalResult<>mrcancel) do
         begin
            Fsign.ShowModal;
            Fsign.Label1.Caption:='密码错误';
          end;
      if Fsign.Edit1.Text='abc' then
       Fsign.Close
        else Application.Terminate;
    end;
      

  2.   

    或者放在工程文件里面begin
      Application.Initialize;
      Application.Title :=‘某某系统’;
      Application.CreateForm(Tmainform, mainform);  //先创建MAIN窗体,但是不可见
      Application.CreateForm(TDataModule1, DataModule1);  
      Application.CreateForm(Tloginform, loginform);  //创建登陆login窗体
      loginform.ShowModal ;                            //login窗体出现。
      loginform.Free;
      Application.Run;
    end.
      

  3.   

    我在新建的工程里,这样可以实现 但在我快完成的项目程序里这样却没反应
    -----------
    这样的问题只能靠你自己去检查。
    建议检查你项目程序的工程文件,OnCreate,OnShow,OnPaint等先于OnActivate执行的部分,
    看看是不是有代码令你的登陆窗口显示不出来。
      

  4.   

    同意cuteant的第二个方法,我就是这样做的
      

  5.   

    cuteant的第二个方法可行,但是我要求的是在显示主窗口后,同时显示登陆窗口
      

  6.   

    那还有必要这么复杂么?直接在OnActivate事件里面FrmLogin.ShowModal;就完了
      

  7.   

    如果还是不行,就需要你调试一下了,比如说ShowModal不行就改为Show看看能不能出来还是不行就加一个Timer,过几秒以后将登陆窗体Show出来,多试试,看看哪里出了问题。