现在,我在过去5年中创建了至少300多种手动创建的表单,我从未见过这个问题。我当然有一个主要形式,然后是一堆较小的儿童形式。这些子表单不是自动创建的,它们是在我的代码中手动声明和创建的。这个项目还为时尚早,这意味着在这个项目中没有那么多我可能会遗漏的东西。但问题是,我所做的只是创建表单,将父表单分配给主表单,并且没有任何代码来显示表单,无论如何都会显示自己的表单。
FControlPanel:= TfrmControlPanel.Create(nil);
FControlPanel.Parent:= Self;
这就是我创建它的所有代码。绝对没有代码在实际的子窗体中。至少应该FControlPanel.Show
才能看到它,但出于某种原因它仍然是可见的。
我确实有预感可能会导致这种行为开始。但我不能把两个和两个放在一起。我试图使用MDI表单功能,以保持表单在主窗体中。但在经过多次试验/错误情景后,我放弃并重新设置了我的属性。我改变的唯一属性是FormStyle - 我在fsMDIForm,fsNormal和fsStayOnTop之间切换(用于试验)的主要形式。孩子表单我将它们切换到fsMDIChild。在我放弃之后,我将它们全部切换回默认值fsNormal。在这个“车展”开始发生之后,就是在这之后。
此外,可能是一个重要的注释,这些子表单是从主表单继承的。这个主表单实际上也没有代码,至少没有代码可以显示它。在我的任何代码中,我都没有告诉它显示这些子表单,但无论如何它都可以。我知道他们不会自动创作。
我做错了什么?
PS - 一般来说实现MDI的问题还有另外一个问题,我不是在询问MDI,但可能是导致这种情况发生的原因,因为已知改变组件的属性会永久性地切换组件的内部属性例如,在TPanel上,将“ParentBackground”切换为true然后再返回false会导致它在使用XPMan时正确显示指定的颜色。答案 0 :(得分:6)
IIRC将表单的样式设置为fsMDIChild
,将表单的Visible
属性更改为True
。因此,现在无论何时创建表单,默认情况下都可以看到...将表单Visible属性更改回False
,它应该结束“自动显示”行为。
答案 1 :(得分:0)
您无法在MDIChild表单中将Visible属性更改为False。
要在Delphi 7中更正MDIChild表单的自动显示,请执行以下操作:
Nelson Santos