【问题标题】:How to hide a component at runtime?如何在运行时隐藏组件?
【发布时间】:2023-03-04 05:25:01
【问题描述】:

使用 IntraWeb 14.1 和 Delphi Berlin, 我正在像这样在IWRegion 内创建一个框架并将其作为父级:

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

其中UserSession.Body_Region;UserSessionUnit 中被取消清除为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}它不工作。
  • 也许设置property RenderInvisibleControls: Boolean;TIWRegionFalse 会有所帮助?见docs
  • 你说得对,我已将属性 RenderInvisibleControls 设置为 false 并且代码开始像魅力一样工作
  • 我认为这对其他用户也有好处,所以我对此做出了正确的回答。

标签: delphi intraweb


【解决方案1】:

虽然documentation

TIWRegion 控件是 VCL 中的 TPanel 的 IntraWeb 等效项。

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

property RenderInvisibleControls: Boolean; 继承自 TIWBaseContainer

文档将其描述为

使用此属性通知任何具有 Visible = False 的控件 当它被渲染的容器也将与 可见控件。这在您需要更改时特别有用 使用异步事件的控件的可见性。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2012-05-10
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    相关资源
    最近更新 更多