VCL本身不允许MainForm以外的其他表单托管MDI子表单。这是Borland的硬编码限制,不是Microsoft 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语言,将不胜感激。谢谢。
Quality Central #12006以非MainForm形式托管MDI子表单在其变通办法描述中具有详细步骤,以介绍如何为此添加支持。它确实涉及修补VCL源,并且是针对Delphi 2005发布的,因此某些步骤可能已更改。它也因为“不会做”而关闭,因此,如果您采用这种方法,则必须长期保持这种状态。