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