如何在Delphi的普通窗体中调用MDI窗体(100分)

  • 主题发起人 主题发起人 Dlwxn
  • 开始时间 开始时间
D

Dlwxn

Unregistered / Unconfirmed
GUEST, unregistred user!
在Delphi中有多个窗体,其中有应用程序主窗体(MainForm,为一般窗体)、
多文档主窗体(MDIForm)、多文档子窗体(MDIChild),要求在MainForm中
单击某个按钮弹出MDIForm,然后选择MDIForm的某个菜单项,弹出MDIChild。
在生成MDI子窗体时,总是有如下错误提示:
raised exception class EInvalidOperation with message 'Cannot create
form.No MDI forms are currently active'。

程序的执行过程是:首先是密码验证,然后登陆到主窗体,主窗体上有多个按钮,点击时分别弹出不同的窗口,调用其它fsNormal窗体没有任何问题。出现以上错误时,我把MainForm的FormStyle属性改为fsMDIForm,再运行,以上错误是没有了,但MDIForm的父窗体变成了MainForm 。我搜索过以前的帖子,有人提问,但没有解决,请问如何能解决上述问题?谢谢!
 
我以前也遇到这样的情况,你把fsMDIForm设为主窗体,然后在程序初始化的时候加入application.ShowMainForm:=false;然后在通过密码验证的时候让MainForm.show(MainForm为一般窗体),如果你想让MainForm出现在任务栏的话就调用一些api函数。
 
其实这个问题不用太多的解释
主要是你的窗体创建的逻辑关系没有搞清楚
如果main form 是主窗体。。。在他create前边创建登陆窗体
然后 main from 作为mdiform 这样就行了。。
就是一个前后顺序的问题。。。
 
问题解决,就是c3411080的方法,多谢!

to:brown0432 你可能被密码验证给迷惑了。主要的还是上一段说的。
 
多人接受答案了。
 
后退
顶部