现在至少有300多种我在过去5年中创建的手动创建的表单,我从未见过这个问题。我当然有一个主要的形式,然后是一堆小的孩子形式。这些子表单不是自动创建的,它们是在我的代码中手动声明和创建的。这个项目还很不成熟,这意味着在这个项目中没有太多的代码可能会丢失一些东西。但问题是,我所做的只是创建窗体,将父窗体分配给主窗体,并且没有任何代码来显示窗体,无论如何它都会显示其自身。表单自动显示没有我告诉他们?
FControlPanel:= TfrmControlPanel.Create(nil);
FControlPanel.Parent:= Self;
这就是我必须创建它的所有代码。绝对没有代码在实际的子表单中。它至少需要FControlPanel.Show
才能看到,但由于某种原因,它仍然可见。
我确实有一种预感可能导致此行为开始。但我不能把两个和两个放在一起。我试图使用MDI表单功能,将表单保存在主窗体中。但是在一些试验/错误情况出现之后,我放弃了并重新设置了自己的属性。我改变的唯一属性是FormStyle - 我在fsMDIForm,fsNormal和fsStayOnTop之间切换的主要形式(用于试用)。我把孩子换成fsMDIChild。在我放弃之后,我将它们全部切换回默认的fsNormal。当这场“车展”开始发生时,这是在玩这个游戏之后。
此外,可能是一个重要的说明,这些子窗体是从主窗体继承而来的。这种主表格几乎没有代码,至少没有可能显示它的代码。我在任何代码中都没有告诉它显示这些子表单,但无论如何。而且我知道他们不是自动创建的。
我该做什么错了?
PS - 实现MDI的一般问题还有另外一个问题,我并不是在问MDI,但它可能是导致这种情况发生的原因,因为已知组件的属性会改变属性的永久性组件,例如,在TPanel上,将“ParentBackground”切换为true,然后再次返回false,使其在使用XPMan时正确显示指定的颜色。
BINGO!非常感谢 - 我忘记了甚至有Visible属性的表单,我从来没有使用它...+1并且接受:D – 2011-12-22 00:53:20
因此,在这种情况下,我假设'Visible'属性用于指定创建时是否可见?我一直使用窗体上的显示/隐藏... – 2011-12-22 00:55:35
是的。我想它被用于自动创建的表单。 – ain 2011-12-22 00:57:19