我做了一个项目,现作登录窗体,
 if query1.fieldbyname('greade').asstring='管理员' then
  begin
  mainform:=Tmainform.create(self);
     try
     enter.hide;
     mainform.showmodal;
   finally     mainform.free;
      end;
     end;
但建立主窗体后,提示no active mdi???,这是为什么?
我茶了源码?在mainform中游调用子窗体的源码,但不起作用了?/
怎样调用?
才能让mainform正常执行?此mainform为mdi!xiexie

解决方案 »

  1.   

    mdi窗体是首先激活的窗体,只能用他打开其他窗体,别的窗体不能打开他,你可以先打开mdi窗体,在create 中打开登陆窗体,登陆不成功 在mdi的show事件中关掉mdi .
      

  2.   

    不会的,用户并不能看见mdi窗口,你可以试一下,我就是这样用的,其他比如像pb就可以先打开登陆在打开mdi窗口,但delphi不行。
      

  3.   

    这跟用户登陆没关系啊,你完全可以实现你的想法,只是不在登陆中打开mdi窗口啊.不知是我没说清楚还是你们理解,我不在说了,如下:
    procedure TFrm_main.FormCreate(Sender: TObject);
    begin
        Frm_Login:=TFrm_Login.Create(Application);
        Frm_Login.Showmodal;
        Frm_Login.Update;
    end;procedure TFrm_main.FormShow(Sender: TObject);
    begin
    //如果登陆密码错,或用户不正确,关避主窗体
      if is_close = '1' then
            Frm_main.close;end;
      

  4.   

    我是想通过登录窗口打开连么不同的界面(mdi),哪该怎么办????
      

  5.   

    登陆窗体在project文件里写 
    program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};{$R *.RES}begin
      login:=tlogin.create(application);
      login.showmodal;
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.Run;
    end.
      

  6.   

    我也遇到过同样的问题,请参考http://www.csdn.net/expert/topic/908/908730.xml?temp=.5237543
      

  7.   

    我的想法是:在登录窗口前先弹出flash窗口,然后登录窗口出现,然后根据密码的不同,封锁mdi上的部分菜单,怎样写????
      

  8.   

    mainform 的formstyle :=fsNormal在工程单元中将登陆窗口执行语句写在主窗体生成之前:program Project1;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1};{$R *.res}begin
      Application.Initialize;
      application.createform(Tsplash,splsh); //登陆窗体
      Application.CreateForm(TForm1, Form1);//主窗体
      Application.Run;
    end.
      

  9.   

    var
        Formlog:TForm1;
    begin
      Application.Initialize;
      SplashForm:= TSplashForm.create(Application);
      SplashForm.Show; {显示徽标Form}
      SplashForm.Update;
      Application.CreateForm(TDataModule2, DataModule2);
      Formlog:= TForm1.Create(Application);
      Formlog.Showmodal;
      //if formlog.Showmodal =1 then
          Application.CreateForm(TMainForm, MainForm);
      SplashForm.Hide;
      SplashForm.Free;
      Application.Run;
    end.我这样写了怎么会出现这个错误呀?
    cannot make a visible window modal
      

  10.   

    把SplashForm从AutoCreate列表中去掉
      

  11.   

    我的SplashForm是好的,它没有错.
    错的是 Formlog登录窗口用它来登录应用程序的.错误是:cannot make a visible window modal
      

  12.   

    你可以先打开SplashForm
    然后打开mdi
    同时打开登录窗体,使mdi.enabled:=false;
    登录成功后使mdi.enabeld:=true;
      

  13.   

    我希望我的login窗口能够放在splashForm上,
    登录好了之后一起关闭, 
    再打开mdi.怎么实现呀难道没有办法??