VCL本身不允许MainForm以外的表单托管MDI子表单。这是Borland的硬编码限制,而不是微软MDI架构的限制。 Microsoft允许应用程序中的多个窗口承载MDI子项。 Win32 API中没有MainForms的概念。
我尝试将下面的embarcadro c ++示例转换为embarcadro delphi但没有成功。 在创建mdi子窗体时,我一直遇到错误“没有mdi窗体当前处于活动状态”。
此c ++示例演示了如何允许非MDI项目承载多个MDI父表单,其中没有一个是VCL的MainForm。
下载信息(需要下载的帐户) http://cc.embarcadero.com/item/23574
直接下载(无需下载帐户) http://www.delphibasics.info/MultipleMDIParentFormsInASingleApplication.zip
如果有人将此示例从embarcadro c ++语言转换为embarcadro delphi语言,我将不胜感激。谢谢。
答案 0 :(得分:4)
Quality Central#12006 Hosting MDI child forms in non-MainForm forms在其变通方法说明中详细介绍了如何添加对此的支持。它确实涉及修补VCL源,并且针对Delphi 2005发布,因此一些步骤可能已经改变。它也被关闭为不会,所以如果你采用这种方法,你必须自己长期保持它。