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