在Normal Form下创建MDIForm,并在MDIForm Error下打开MDI Child

时间:2012-01-13 14:17:33

标签: delphi mdi

这是我的第一个话题

在同一个申请中:

我有一个NormalForm(Mainform),在Popupmenu调用的MDIForm中是这样的:

MDIForm:=TMDIForm.Create(nil);
MDIForm.Show;

表单正确打开...现在,在MDI表单中,我尝试使用:

创建MDIChild
  fm := TMDIChild.Create(Self);
  fm.FormStyle:=fsMDIChild;
  fm.Show;

检索错误: 无法创建表单。目前没有MDI表单活动

任何人都知道怎么做?!

2 个答案:

答案 0 :(得分:4)

你不能混合这样的表单样式。 MDI子表单期望应用程序的主要形式是MDI表单。在创建子项时,VCL的代码不会查看是否有任何 MDI表单可用。

答案 1 :(得分:1)

VCL本身并不支持您尝试的内容。它需要将应用的MainForm设置为FormStyle=fsMDIForm,而会查看MainForm。您的MainForm没有这样设置。

这是VCL限制,而不是Windows限制。可以解决这个问题并在其他非MainForm表单中使用MDI子表单,但它需要对VCL的源代码进行相当多的黑客攻击。请参阅this examplethis QC report