我编定一用户验证登陆的MDI应用程序,怎样解决动态创建子窗体问题,我已附上程序源码 (50分)

  • 主题发起人 gaohua21
  • 开始时间
G

gaohua21

Unregistered / Unconfirmed
GUEST, unregistred user!
我编定一用户验证登陆的MDI应用程序,并且在 project option 中将Main Form设为fLogin
窗体,Auto-Create forms中只有fLogin,fMain,TqismDM(数据模块窗体)三窗体,fLogin窗体
的formStyle属性设为‘fsStayOnTop’,程序编译运行,用户验证登陆正常,但在主窗体中
创建一子窗体时出错,提示“Cannot Create form. No MDI Forms are Currently active”,
我没法找出问题所在,如下是程序源码:
begin //工程执行过程
Application.Initialize;
fStart := TfStart.Create(fStart);
fStart.Show;
fStart.Update;

Application.CreateForm(TTqismDM, TqismDM);
Application.CreateForm(TfLogin, fLogin);
Application.CreateForm(Tfmain, fmain);
fStart.Hide;
fStart.free;
fLogin.Show;
Application.Run;
End.

FLogin窗体的“确定”按钮的事件:
If (Passw = cpass) Then //如果输入的密码等于用户资料表的密码
begin
fLogin.hide;
fLogin.Free;
fmain.Show;
end

fMain窗体的私有过程:(动态创建子窗体过程)
procedure OpenForm(FormClass: TFormClass; var fm; AOwner:TComponent);
var
i: integer;
Child:TForm;
begin
for i := 0 to Screen.FormCount -1 do
if Screen.Forms.ClassType=FormClass then
begin
Child:=Screen.Forms;
if Child.WindowState=wsMinimized then
begin
ShowWindow(Child.handle,SW_SHOWNORMAL);
end
else
begin
child.Left:=0;
child.top:=0;
ShowWindow(Child.handle,SW_SHOWNA);
end;
if (not Child.Visible) then Child.Visible:=True;
Child.BringToFront;
Child.Setfocus;
TForm(fm):=Child;
exit;
end;
Child:=TForm(FormClass.NewInstance);
TForm(fm):=Child;
Child.Create(AOwner);
end;

主窗体中动态创建子窗体用:OpenForm(TForm2, Form2, self)语句
 
它说你没出有MDI主窗体,试试在创建时修改一下窗体属性
 
接受答案了.
 
顶部