-1

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 语言,我将不胜感激。谢谢你。

4

1 回答 1

5

Quality Central #12006 在非 MainForm 表单中托管 MDI 子表单在其解决方法描述中有详细步骤,说明如何添加对此的支持。不过,它确实涉及修补 VCL 源代码,并且是针对 Delphi 2005 发布的,因此某些步骤可能已经改变。它也被关闭为Won't Do,所以如果你采用这种方法,你必须自己长期维护它。

于 2012-04-12T19:35:33.317 回答