在菜单的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;{我是新手,虚心请教}
打开代码是: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;{我是新手,虚心请教}
procedure TForm_h_mainframe.FormShow(Sender: TObject);
begin
Form_h_login := TForm_h_login.Create(self);
Form_h_login.Show;
end;
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;
测试通过,,
2:注意要设定子文挡为 :fsMDIForm
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.
将MDI子窗体的FormStyle属性设为fsMDIChild,并且在子窗体的FormClose事件中将Action参数设为caFree
结贴