我正在写一个数据库程序
我先做了一个登陆界面,单用户登陆时进入主窗体(MDI)。
但是,如果我把登陆界面Login设置为主窗体,程序能进入,但是在MDI中无法使用子窗体。报错No MDI Forms as currently active,我知道时因为MDI不是主窗体引起的,但是如果把MDI设置为主窗体,程序的登陆界面login就没有了,请教大侠们怎么办?谢谢,我初学,请大家多多关照。
程序执行顺序login->mdimain->其他子窗体

解决方案 »

  1.   

    可以在开启MDI主窗体时打开登录窗口,若口令正确则进入,否则不允许运行。
      

  2.   

    可不可以这样修改工程文件呀?
    begin
      Application.Initialize;
      LoginForm.create;
      LoginForm.show;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  3.   

    我把主界面直接创建,而登陆界面在ONshow中动态创建。
      

  4.   

    但是设计说明书让我先用Login窗口打开,
    当用户输入正确时才展开MDI窗口啊。我会没辙了,以前用的是VB,三分钟就搞定。难道DELPHI不能先启动一个窗体后再关联主窗体吗?
      

  5.   

    在工程文件里改写:
    先启动登录窗口,判断合法性,在启动主窗体(设置mdi为主窗体)既可以,还不行的话,在留言
    我的提示
    工程文件里:
    Application.Initialize;
      FrmUserLogin:=TFrmUserLogin.Create(nil);//密码验证窗体
    try
         FrmUserlogin.Showmodal;     
    finally
           FrmUserlogin.Free;
    在登录窗体;里
    if //用户合法
       begin
             Application.CreateForm(TMainForm,MainForm);
             mainform.show;
       end
        else//非法
                 begin
                   application.Terminate;
                       exit;
                 end;
      

  6.   

    我试过了,
    再操作后,我把窗体login free了.
    但是还报错MDI Forms as currently active
      

  7.   

    昨天还没有解决吗?
    procedure Tmain.FormCreate(Sender: TObject);
    begin
      login:=Tlogin.Create(self);
      try
      login.ShowModal;
      finally
      login.Free;
      end; 
    end;
    接下来,在登陆里判断,如果通过,那么把login关闭了,用可以了.
      

  8.   

    问题简单!
    procedure TFrmMain.FormCreate(Sender: TObject);
    if FrmLogin=nil then
     FrmLogin:=TFrmLogin.Create(self);
     try
     FrmLogin.ShowModal;
     finally
      frmlogin.release;
      frmlogin:=nil;