delphi – TControlState.csDesignerHide与TControlStyle.csNoDesignVisible

前端之家收集整理的这篇文章主要介绍了delphi – TControlState.csDesignerHide与TControlStyle.csNoDesignVisible前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
VCL似乎提供了两种从表单设计器中隐藏控件的机制:TControlState.csDesignerHide和TControlStyle.csNoDesignVisible.

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

解决方法

概要

使用TControlState.csDesignerHide来防止控件的绘制.

使用TControlStyle.csNoDesignVisible来模拟Visible属性的运行时行为.

好问题!他们之间只是有区别,所以我做了一些调查.

在“控制”单元中搜索使用情况,我们发现:

> 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 .

因此,TControlState.csDesignerHide仅用于绘画操作,而TControlStyle.csNoDesignVisible也用于位置和对齐操作.

换句话说,使用:

> TControlState.csDesigner隐藏,如果你只想控制可见性,
> TControlStyle.csNoDesignVisible如果您还想控制存在.

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

为了说明差异,特此提出一个表格设计师的三个屏幕截图.表单从左到右放置:具有控件TControlStyle.csNoDesignVisible的属性“Panel”,具有控件TControlState.csDesignerHide属性和另一个Panel的“TStateControl”的“TStyleControl”,所有属性均设置为alLeft:

>全部使用默认设置> StateControl1.DesignerHide = True> StyleControl1.NoDesignVisible = True和StyleControl1.Visible = False

猜你在找的Delphi相关文章