如何在运行时隐藏一个组件?

6
使用 IntraWeb 14.1 和 Delphi Berlin,我正在创建并在 IWRegion 中创建一个框架,方法如下:
 Page := TFrame.Create(Self);
 Page.Parent := UserSession.Body_Region;

UserSessionUnit 中声明了 UserSession.Body_Region; 作为 Body_Region: TIWRegion;,以便在运行时将该区域从一个窗体传递到另一个窗体,并且一切工作正常。

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

我已经尝试过了

(UserSession.Main_Body_Region.Component[0] as TFrame).hide;

或者

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

但是它没有起作用!而且也没有错误提示!是否还有其他方法可以实现,或者我漏掉了什么?

我已经尝试过使用{Visible},但我也尝试了{Enable}来检查这段代码是否有响应并因为错误而将其贴在此处,所以在这两种情况下{Visible/Enable}都无法正常工作。 - Dreamer64
1
也许将 TIWRegion 的属性 RenderInvisibleControls: Boolean 设置为 False 可以解决问题?请参阅文档 - Tom Brunberg
你说得对,我将属性RenderInvisibleControls设置为false,代码开始完美运行。 - Dreamer64
1
我认为这对其他用户也有益,所以我写了一个详细的答案。 - Tom Brunberg
1个回答

6
尽管文档表示:

TIWRegion控件是VCL的TPanel在IntraWeb中的等价物。

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

property RenderInvisibleControls: Boolean;TIWBaseContainer继承而来。

文档将其描述为:

使用此属性通知将呈现容器时Visible = False的任何控件也将与可见控件一起呈现。 当您需要使用Async事件更改控件的可见性时,这非常有用。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接