TControlState.csDesignerHide 与 TControlStyle.csNoDesignVisible

2024-05-05

VCL 似乎提供了两种向表单设计者隐藏控件的机制:TControlState.csDesignerHide and TControlStyle.csNoDesignVisible.

就 IDE 而言,它们之间有什么区别?什么时候应该使用哪个?


Summary

Use TControlState.csDesignerHide以防止控件绘图。

Use TControlStyle.csNoDesignVisible模仿运行时行为Visible财产。

阐述

好问题!它们之间肯定有区别,所以我做了一些调查。

搜索使用情况Controls单位,我们发现:

  • TControlState.csDesignerHide用于:TControl.InvalidateControl, TWinControl.UpdateShowing, TWinControl.PaintHandler, TWinControl.PaintControls,
  • 除了这些方法之外,TControlStyle.csNoDesignVisible还用于:TControl.Show, TControl.Repaint, TControl.CMVisibleChanged, TWinControl.AlignControls, TWinControl.ControlAtPos, TWinControl.CMVisibleChanged, TWinControl.GetControlExtents, TWinControl.CalcConstraints, TWinControl.CanAutoSize.

Thus TControlState.csDesignerHide仅用于绘画操作,而TControlStyle.csNoDesignVisible也用于定位和对齐操作。

换句话说,使用:

  • TControlState.csDesignerHide如果您只想控制可见性,
  • TControlStyle.csNoDesignVisible如果您还想控制存在。

此外,TControlStyle.csNoDesignVisible仅与 Visible 属性结合使用。当 Visible 设置为 True 时,它​​不起作用。 (通常,Visible 属性仅影响运行时行为)。

为了说明差异,这里提供了表单设计器的三个屏幕截图。表格上从左到右依次为:“TStyleControl“ 具有财产控制TControlStyle.csNoDesignVisible,一个面板,一个"TStateControl"具有财产控制TControlState.csDesignerHide和另一个面板,所有对齐属性都设置为alLeft:

  1. 全部采用默认设置
  2. StateControl1.DesignerHide = True
  3. StyleControl1.NoDesignVisible = True and StyleControl1.Visible = False
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TControlState.csDesignerHide 与 TControlStyle.csNoDesignVisible 的相关文章

随机推荐