Delphi 父窗体如何判断非模态窗体是否仍处于打开状态?

Delphi 父窗体如何判断非模态窗体是否仍处于打开状态?,delphi,forms,vcl,Delphi,Forms,Vcl,如果模态窗体创建了一个窗体并执行了.Show,那么父级以后如何确定非模态窗体是否仍处于打开状态,或者用户是否已将其关闭?当您关闭窗体时,它调用Hide,将Visible设置为false。尝试检查Visible属性。当您关闭表单时,它会调用Hide,将Visible设置为false。尝试检查Visible属性。让子窗体在关闭时通知父窗体。父窗体可以使用子窗体的TForm.OnClose事件在子窗体关闭时通知自己。让子窗体在关闭时通知父窗体。父窗体可以使用子窗体的TForm.OnClose事件让自己

如果模态窗体创建了一个窗体并执行了.Show,那么父级以后如何确定非模态窗体是否仍处于打开状态,或者用户是否已将其关闭?

当您关闭窗体时,它调用Hide,将Visible设置为false。尝试检查Visible属性。

当您关闭表单时,它会调用Hide,将Visible设置为false。尝试检查Visible属性。

让子窗体在关闭时通知父窗体。父窗体可以使用子窗体的TForm.OnClose事件在子窗体关闭时通知自己。

让子窗体在关闭时通知父窗体。父窗体可以使用子窗体的TForm.OnClose事件让自己在子窗体关闭时发出通知。

所有VCL组件都通过AddComponent和RemoveComponent通知绑定到其父窗体。如果表单在OnClose中设置为Action=caFree,那么当用户(或您)关闭它时,它将释放自己。这已通知其父级,您可以覆盖父级中的通知接收以获取此事件。
Bri

所有VCL组件都通过AddComponent和RemoveComponent通知绑定到其父组件中。如果表单在OnClose中设置为Action=caFree,那么当用户(或您)关闭它时,它将释放自己。这已通知其父级,您可以覆盖父级中的通知接收以获取此事件。
Bri

我曾经想到过,但是Delphi的帮助说明:“如果Visible是真的,那么表单是可见的,除非它被其他表单完全遮挡。”因此,.Visible可能是假的,即使表单仍然是打开的,只是被覆盖了……它在哪里说的?这不是真的,你看错了。如果Visible为true,则表单对用户可见,除非它被其他表单覆盖,在这种情况下Visible仍然为true,但用户无法看到它,因为它被覆盖了。但如果Visible为false,则无论其他窗体正在执行什么操作,它都不会显示。并且,并非所有窗体在关闭时都会隐藏。这实际上取决于表单的编程方式。梅森很好地解释了可见属性。决定在关闭时释放自己的表单实际上是关闭的,而不仅仅是隐藏的。这完全取决于你作为一个程序员在每种情况下需要什么。我曾经想过,但是Delphi的帮助声明:“如果Visible是真的,那么表单是可见的,除非它被其他表单完全遮挡。”所以,.Visible可能是假的,即使表单仍然是打开的,只是被覆盖了……它在哪里说的?这不是真的,你看错了。如果Visible为true,则表单对用户可见,除非它被其他表单覆盖,在这种情况下Visible仍然为true,但用户无法看到它,因为它被覆盖了。但如果Visible为false,则无论其他窗体正在执行什么操作,它都不会显示。并且,并非所有窗体在关闭时都会隐藏。这实际上取决于表单的编程方式。梅森很好地解释了可见属性。决定在关闭时释放自己的表单实际上是关闭的,而不仅仅是隐藏的。这完全取决于你作为一个程序员在每种情况下需要什么。