现在遇到一个问题,有三个窗体frmLogin,frmMain,frmMDIChild三个窗体frmMain为MDI父窗体,frmChild为子窗体。
问题是当我的:
program project1;uses
  Forms,
  MAIN in 'MAIN.PAS' {frmMain},
  about in 'MDIChild.pas' {frmchild},
  login in 'login.pas' {frmLogin};{$R *.RES}begin
  Application.Initialize;
  Application.CreateForm(frmMain, frmMain);
  Application.CreateForm(TfrmLogin, frmLogin);
  Application.Run;
end.
当我点frmMain上的button显示frmMDI时Child没有问题,若代码如下program project1;uses
  Forms,
  MAIN in 'MAIN.PAS' {frmMain},
  about in 'MDIChild.pas' {frmchild},
  login in 'login.pas' {frmLogin};{$R *.RES}begin
  Application.Initialize;  
  Application.CreateForm(TfrmLogin, frmLogin);
  Application.CreateForm(frmMain, frmMain);
  Application.Run;
end.
先显示frmLogin窗体,然后显示frmMain之后点击button想显示frmMDIChild时就会出现错误,想问问该怎样解决??

解决方案 »

  1.   

    错误信息:
    弹出警告窗口:cannot Create form.NO MDI forms are currently active
      

  2.   

    我的弹出子窗体代码如下:
    procedure TMainForm.f1Click(Sender: TObject);
    begin
      if not Assigned(frmchild) then
      begin
        frmchild:= Tfrmchild.Create(Application);////执行到这里就出现问题
        frmchild.Show;
      end
    end;
      

  3.   

    Application.CreateForm(TfrmLogin, frmLogin);//这样写的话把frmLogin作为主窗体
    改为 frmLogin:=TfrmLogin.Create(nil);
      

  4.   

    还有子窗体的visible属性设置为True;
      

  5.   

    MDIForm必须是整个应用程序的主窗体
    也就是说Application.CreateForm(TfrmLogin, frmLogin);只能放在后面写
      

  6.   

    可是我必须先显示frmLogin窗体啊,因为他是登陆窗体啊,代码该如何改呢?回复人: readersm68(地主) ( ) 信誉:100  2004-10-13 11:55:00  得分: 0  
     
     
       Application.CreateForm(TfrmLogin, frmLogin);//这样写的话把frmLogin作为主窗体
    改为 frmLogin:=TfrmLogin.Create(nil);
      
     
    我按照这个改可是却变成frmMain为先显示了
      

  7.   

    可以把frmLogin放到frmMain的OnShow事件里创建,这样就会先创建frmMain而先显示frmLogin
      

  8.   

    把frmchild.Show;去掉frmchild:=tfrmchild.create(nil);
      

  9.   

    Application.ShowMainForm := False;
    Application.CreateForm(frmMain, frmMain);
    Application.CreateForm(TfrmLogin, frmLogin);
    在frmLogin的Close事件中,Application.ShowMainForm := True;