我现在想通过一个密码窗口的合格检测后进入MDI窗口,再打开一个子窗口,
使用了以下语句:
1.密码合格后事件:
    mainfrm:=Tmainfrm.create(self);
    mainfrm.show;
2.MDI窗口的菜单打开子窗口事件:
    childfrm:=Tchildfrm.create(self);
    childfrm.show;
  运行上一句后出错,说我的主窗口不在激和状态,什么原因?
  我的密码窗口检测合格后要关闭。

解决方案 »

  1.   

    你的MDI主窗体(formstyle属性为fsMDIForm)要设置为工程中的主窗体。
      

  2.   

    只有当mainfrm完全激活可视才可创建childfrm.
    你延时0.5秒代mianfrm出现后再执行:
    childfrm:=Tchildfrm.create(self);
    childfrm.show;
      

  3.   

    我试过MDI窗口为主窗口,可一运行它就自已出来了,
    我想先出来密码窗口,密码合格后再出来MDI窗口。
      

  4.   

    mainfrm:=Tmainfrm.create(self);
        mainfrm.formstyle:=fsMDIForm;
        mainfrm.show;
    这样才是MDI的主窗体
    但是你的报错不是指这个,你最好把你的子窗体作在一个Button的事件里面比较好
      

  5.   

    我试过MDI窗口为主窗口,可一运行它就自已出来了,
    我想先出来密码窗口,密码合格后再出来MDI窗口你可以把密码窗口的密码检测放在工程文件中或在主窗口的OnCreate事件中。
    你可以在这里搜索一下,这方面的资料很多。
      

  6.   

    盗用 hfyun(逮住就问) ( ) 写的在工程文件中,大概这样写:program TEST;
    begin
      Application.Initialize ;
      //
      SplashForm := TfrmSplashForm.Create(Application);
      SplashForm.Show;
      SplashForm.Update;
      LoginForm := TfrmLoginForm.Create(Application);
      LoginForm.ShowModal;
      //这里处理登录结果
      LoginForm.Free;
      
      SplashForm.Update;
     //frmMainForm是MDI主窗口
      Application.CreateForm(TfrmMainForm,frmMainForm);  SplashForm.Hide;
      SplashForm.Free;  Application.Run;
    end;
    end;
      

  7.   

    wks(mex) 的方法
    program mAppTemplateChs;uses
      Forms,
      Controls,
      wFlash,
      wLogon,
      AppInfo in 'AppInfo.pas',
      untMaindb in 'untMaindb.pas' {dmMaindb: TDataModule},
      untMain in 'untMain.pas' {frmMain},
      wmaindb in '..\source\wmaindb.pas' {MainDataModule: TDataModule},
      untOption in 'untOption.pas' {frmOption};{$R *.res}begin
      Application.Initialize;
      Application.Title := '梦湘工作室软件-数据库应用程序模板';
      frmflash:=Tfrmflash.Create(Application);
      {$ifndef debug}
        frmflash.Show;
        frmflash.Refresh;
      {$endif}
      //初始化数据库
      dmMainDB:=TdmMainDB.Create(Application);
      if not dmMainDB.OpenDatabase then
      begin
        dmMainDB.Free;
        Application.Terminate;
        exit;
      end;
      //连接数据库成功,开始登录
      frmLogon:=TfrmLogon.Create(Application);
      if frmLogon.ShowModal<>mrOK then  //登录失败
      begin
        dmMainDB.Free;
        Application.Terminate;
        exit;
      end;
      frmLogon.Free;
      //建立主窗口
      Application.CreateForm(TfrmMain, frmMain);
      frmflash.Free;
      //开始循环
      Application.Run;
    end.