我正在用Delphi一个小问题:
在一个Project中有三个窗体,
一个是frmLogin, 登录窗体 formstyle为fsNormal
一个是frmMain, 母窗体 formstyle为fsMDIForm
一个是frmPersonList, 子窗体 fromstyle为fsMDIChild意图是:在登录框中输入用户名、密码
然后登录主窗体,
在母窗体的子窗体中进行一些功能操作~错误现象:根本无法编译运行,错误提示为
Project Project1.exe raised exception class EInvalidOperation with message 'Cannot create form.No MDI forms are currently active'.Process stopped.Use Step or Run to continue.相应代码如下:
project.dpr
begin
//创建登录窗体
Application.CreateForm(TfrmLogin, frmLogin);
frmLogin.show;
Application.Run;
end.frmLogin.pas 登录窗体
procedure TfrmLogin.Button1Click(Sender: TObject);
begin
//登录窗体代码中创建母窗体
Application.CreateForm(TfrmMain, frmMain);
frmMain.show;
frmLogin.hide
end;frmMain.pas 母窗体
procedure TfrmMain.FormShow(Sender: TObject);
begin
//想在母窗体代码中创建子窗体,不过失败了
Application.CreateForm(TfrmPersonList, frmPersonList);//问题就处在这里
end;
end.请点解,谢谢。我以前用VB的,刚刚用Delphi。
问题描述的不是很清晰,不好意思。
在一个Project中有三个窗体,
一个是frmLogin, 登录窗体 formstyle为fsNormal
一个是frmMain, 母窗体 formstyle为fsMDIForm
一个是frmPersonList, 子窗体 fromstyle为fsMDIChild意图是:在登录框中输入用户名、密码
然后登录主窗体,
在母窗体的子窗体中进行一些功能操作~错误现象:根本无法编译运行,错误提示为
Project Project1.exe raised exception class EInvalidOperation with message 'Cannot create form.No MDI forms are currently active'.Process stopped.Use Step or Run to continue.相应代码如下:
project.dpr
begin
//创建登录窗体
Application.CreateForm(TfrmLogin, frmLogin);
frmLogin.show;
Application.Run;
end.frmLogin.pas 登录窗体
procedure TfrmLogin.Button1Click(Sender: TObject);
begin
//登录窗体代码中创建母窗体
Application.CreateForm(TfrmMain, frmMain);
frmMain.show;
frmLogin.hide
end;frmMain.pas 母窗体
procedure TfrmMain.FormShow(Sender: TObject);
begin
//想在母窗体代码中创建子窗体,不过失败了
Application.CreateForm(TfrmPersonList, frmPersonList);//问题就处在这里
end;
end.请点解,谢谢。我以前用VB的,刚刚用Delphi。
问题描述的不是很清晰,不好意思。
解决方案 »
- 有关退出delphi软件的问题?
- [请教]选择用AdoCommand还是选择用AdoQuery?
- 如何把某一目录下所有的.txt文件载入一个stringlist?在线等,解决就结帐!
- 散分,完成fastreport+dbgrideh多层表头的动态打印功能
- 一个很简单得DLL问题,在线等待
- 如何让打印时成如下效果
- 谁能告诉我制作控件及调试控件的方法
- 急需SQL Server 2000的序列号!谢谢.
- 把表分别放在几个不同的库里是不是个办法呢?Help!!
- 各位helpme~~~~~~~~~http://www.csdn.net/expert/TopicView.asp?id=263522
- 要應聘delphi程序員的請進
- 在线等待帮助!!
begin
//创建登录窗体
Application.CreateForm(TfrmLogin, frmLogin);
frmLogin.show;
Application.Run;
end.
//????????????????????????????????????????????????????????
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//窗体不创建就Show当然是不行的
在创建父窗体时就会自动产生子窗体,
在父窗体的OnShow()事件中动态创建子窗体,好象会出错.
子窗体不能用Application.CreateForm来创建,
改成:
frmPersonList:=TfrmPersonList.create(self);
frmPersonList.show();
如果frmLogin和frmMain一起创建,他们就会一起显示出来了,
而我的本意是先显示frmLogin,填写用户名密码验证通过后,
frmLogin隐藏,进入系统,frmMain再显示出来to zhangheaaa(竹) :如果我不设置成动态创建,就会在登录后只显示母窗体而不显示子窗体 使用frmPersonList:=TfrmPersonList.create(self)还是不行
begin
//创建登录窗体
with TfrmLogin.Create(Application) do
begin
ShowModal;
Free;
end;
Application.CreateForm(TfrmMain, frmMain);
Application.Run;
end.在frmLogin中判断用户名是否合法,如果合法则正常关闭frmLogin即可,不合法可出提示并返回或用Halt来退出应用程序