如何在运行时隐藏组件?

How to hide a component at runtime?

使用 IntraWeb 14.1 和 Delphi 柏林, 我正在像这样在 IWRegion 中创建和养育一个框架:

 Page := TFrame.Create(Self);
 Page.Parent := UserSession.Body_Region;

其中 UserSession.Body_Region;UserSessionUnit 中被声明为 Body_Region: TIWRegion; 以在运行时将该区域从一个表单传递到另一个表单,并且一切正常。

问题是 我想在 UserSession.Main_Body_Region.Component[0]; 运行时隐藏 UserSession.Body_Region 中加载的框架 但我做不到。

我和

一起尝过
(UserSession.Main_Body_Region.Component[0] as TFrame).hide;

(UserSession.Main_Body_Region.Component[0] as TFrame).Visible:= false;

但它不起作用!也没有错误!

还有其他方法吗?还是我错过了什么?

尽管 documentation

TIWRegion control is the IntraWeb equivalent of the TPanel from VCL.

它有一个重要的区别需要考虑:

property RenderInvisibleControls: Boolean; 继承自 TIWBaseContainer

文档将其描述为

Use this property to inform that any control that has Visible = False when the container it is rendered will also be rendered along with the visible controls. This is particulary useful when you need to change the visibility of controls using Async events.

IOW,将此 属性 设置为 False 将停止呈现具有 Visible = False 的子组件。