在菜单的click中打开mdi子窗体时弹出错误:Cannot create form.NO MDI forms are currently active
打开代码是:Form1 := TForm1.Create(self);Form1.Show;
如果运行时只运行mdi主窗体打开就正常,如果运行登陆窗体进入mdi主界面,打开就会出现上述错误.
//project代码:
....
begin
  Application.Initialize;
  Application.CreateForm(TForm_h_mainframe, Form_h_mainframe);//mdi主窗体
  Application.Run;   
end.//Form_h_mainframe的onCreate:begin
  Form_h_login := TForm_h_login.Create(self);
  Form_h_login.Show;
end;//Form_h_login登陆成功后打开mdi主窗体的代码:    Form_h_mainframe.Visible := true;
    Form_h_login.Hide;{我是新手,虚心请教}

解决方案 »

  1.   


    procedure TForm_h_mainframe.FormShow(Sender: TObject);
    begin
        Form_h_login   :=   TForm_h_login.Create(self);
        Form_h_login.Show; 
    end;
      

  2.   

    procedure TKL.N2Click(Sender: TObject);
    Var
      Nowform: TGJ;//tcj为子文挡name
      i,flag: integer;
    begin
      flag:=0;
     for i:=0 to KL.MDIchildcount do
         Begin
           if KL.MDIChildren[i].Caption ='*****' then//子文挡caption
             Begin
                SendMessage(mdichildren[i].Handle,WM_SYSCOMMAND, SC_restore, 0); //调用窗体
                  MDIchildren[i].Show;
                MDIchildren[i].Enabled :=true;
                flag:=1;
                break;
             End;
         End;
       if flag=0 then
          Begin
            nowform:=TGJ.Create(application) ;
            nowform.Caption :='****';////子文挡caption
          End;
     End;
    测试通过,,
      

  3.   

    1: 上面kl为       fsMDIForm
     2:注意要设定子文挡为 :fsMDIForm
      

  4.   

    谢谢WANGXUELLD ,我试了,还是弹出老错误
      

  5.   

    uses Controls; 添加mrOK 定义
    begin
        Application.Initialize;
        Application.CreateForm(TForm_h_mainframe,   Form_h_mainframe);//mdi主窗体
        Form_h_login   :=   TForm_h_login.Create(Application);
        if  Form_h_login.ShowModel = mrOK then //如果验证用户名有效则继续运行。
        Application.Run;      
    end. 
      

  6.   

    需要将主窗体的FormStyle属性设为fsMDIForm,
    将MDI子窗体的FormStyle属性设为fsMDIChild,并且在子窗体的FormClose事件中将Action参数设为caFree
      

  7.   

    谢谢帮助 jwpl190乃正解,鉴于热心,都有分
    结贴