Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 表格自动显示而不需要我告诉他们?_Delphi_Delphi 7_Mdi_Tform - Fatal编程技术网

Delphi 表格自动显示而不需要我告诉他们?

Delphi 表格自动显示而不需要我告诉他们?,delphi,delphi-7,mdi,tform,Delphi,Delphi 7,Mdi,Tform,现在,我在过去5年中创建了至少300多种手动创建的表单,我从未见过这个问题。我当然有一个主窗体,然后是一堆较小的子窗体。这些子表单不是自动创建的,它们是在我的代码中手动声明和创建的。这个项目还很不成熟,这意味着在这个项目中没有太多的代码,我可能会遗漏一些东西。但问题是,我所做的只是创建表单,将父表单分配给主表单,并且在没有任何代码显示表单的情况下,它仍然显示了自己 FControlPanel:= TfrmControlPanel.Create(nil); FControlPanel.Parent

现在,我在过去5年中创建了至少300多种手动创建的表单,我从未见过这个问题。我当然有一个主窗体,然后是一堆较小的子窗体。这些子表单不是自动创建的,它们是在我的代码中手动声明和创建的。这个项目还很不成熟,这意味着在这个项目中没有太多的代码,我可能会遗漏一些东西。但问题是,我所做的只是创建表单,将父表单分配给主表单,并且在没有任何代码显示表单的情况下,它仍然显示了自己

FControlPanel:= TfrmControlPanel.Create(nil);
FControlPanel.Parent:= Self;
这就是我要创建的所有代码。绝对没有任何代码是实际的子表单。至少需要
FControlPanel.Show
才能使其可见,但出于某种原因,它仍然可见

我确实有预感是什么导致了这种行为。但我不能把二和二放在一起。我尝试使用MDI表单功能,将表单保留在主表单中。但经过多次尝试/错误后,我放弃了,并重新设置了我的属性。我唯一更改的属性是FormStyle—我在fsMDIForm、fsNormal和FSStationTop之间切换(用于试验)的主窗体。子窗体我将它们切换为fsMDIChild。在我放弃之后,我将它们全部切换回默认状态,即fsNormal。就在这场闹剧之后,这场“车展”开始了

另外,可能需要注意的是,这些子窗体是从主窗体继承的。这个主窗体实际上也没有代码,至少没有可能显示它的代码。在我的任何代码中,我都没有告诉它显示这些子表单,但它还是这样做了。我知道它们不是自动创建的

我会做错什么


PS-实现MDI的问题通常会受到另一个问题的影响,我不是问MDI,但这可能是导致这种情况发生的原因,因为更改组件的属性会永久切换组件的内部属性,例如,在TPanel上,切换“ParentBackground”如果设置为true,然后再次返回为false,则会在使用XPMan时使其正确显示指定的颜色。

IIRC将窗体的样式设置为
fsMDIChild
会将窗体的
Visible
属性更改为
true
。所以现在,无论何时创建表单,它在默认情况下都是可见的。。。将forms Visible属性更改回
False
,它将结束“自动显示”行为。

IIRC将表单的样式设置为
fsMDIChild
将表单的
Visible
属性更改为
True
。所以现在,无论何时创建表单,它在默认情况下都是可见的。。。将forms Visible属性更改回
False
,它将结束“自动显示”行为。

在子表单中,不能将Visible属性更改为False

要更正Delphi 7中MDIChild表单的自动显示,只需执行以下操作:

  • 打开项目->选项
  • 在“自动创建表单”列表中选择每个MDI子表单,然后单击 “>”按钮将表单移动到“可用表单”列表
  • 确保只允许您希望“自动创建”的表单,如MDI 例如,主窗体、登录窗体和数据模块

Nelson Santos

您不能在子窗体中将Visible属性更改为False

要更正Delphi 7中MDIChild表单的自动显示,只需执行以下操作:

  • 打开项目->选项
  • 在“自动创建表单”列表中选择每个MDI子表单,然后单击 “>”按钮将表单移动到“可用表单”列表
  • 确保只允许您希望“自动创建”的表单,如MDI 例如,主窗体、登录窗体和数据模块

尼尔森·桑托斯

宾果!非常感谢-我忘了表单甚至有一个可见的属性,我从来没有使用过它+1和accepted:DSo在这种情况下,我假定
Visible
属性用于指定它在创建时是否可见?我总是在表单上使用显示/隐藏…是的。我猜它是用于自动创建表单的。宾果!非常感谢-我忘了表单甚至有一个可见的属性,我从来没有使用过它+1和accepted:DSo在这种情况下,我假定
Visible
属性用于指定它在创建时是否可见?我总是在表单上使用显示/隐藏…是的。我猜它是用于自动创建表单的。