就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