如何设置 TControl 的比例?
How set the scale of a TControl?
在 XE2 中,我只是使用 Scale
属性 来设置控件的 x 轴和 y 轴刻度。在后续版本中,显然,Scale
属性 已在 TControl
中受到保护,并在后代控件中发布。
我有很多函数采用 TControl
引用并操纵其比例。
在 10.2 中设置 TControl
比例的首选方法是什么?
您可以使用 protected hack
来解决这个问题:
TYPE
TControlHack = CLASS(TControl);
PROCEDURE SetScale(C : TControl ; NewScale : TPosition);
BEGIN
TControlHack(C).Scale:=NewScale
END;
通过声明从原始 class 继承的新 class,当您将实例硬转换为这个新 [=20] 时,您实际上 "dragging" 受保护的定义进入视图=].
您也可以将其实现为 class 助手:
TYPE
TControlHelper = CLASS HELPER FOR TControl
STRICT PRIVATE
PROCEDURE SetScale(Value : TPosition); INLINE;
FUNCTION GetScale : TPosition; INLINE;
PUBLIC
PROPERTY Scale : TPosition Read GetScale Write SetScale;
END;
FUNCTION TControlHelper.GetScale : TPosition;
BEGIN
Result:=INHERITED Scale
END;
PROCEDURE TControlHelper.SetScale(Value : TPosition);
BEGIN
INHERITED Scale:=Value
END;
在 XE2 中,我只是使用 Scale
属性 来设置控件的 x 轴和 y 轴刻度。在后续版本中,显然,Scale
属性 已在 TControl
中受到保护,并在后代控件中发布。
我有很多函数采用 TControl
引用并操纵其比例。
在 10.2 中设置 TControl
比例的首选方法是什么?
您可以使用 protected hack
来解决这个问题:
TYPE
TControlHack = CLASS(TControl);
PROCEDURE SetScale(C : TControl ; NewScale : TPosition);
BEGIN
TControlHack(C).Scale:=NewScale
END;
通过声明从原始 class 继承的新 class,当您将实例硬转换为这个新 [=20] 时,您实际上 "dragging" 受保护的定义进入视图=].
您也可以将其实现为 class 助手:
TYPE
TControlHelper = CLASS HELPER FOR TControl
STRICT PRIVATE
PROCEDURE SetScale(Value : TPosition); INLINE;
FUNCTION GetScale : TPosition; INLINE;
PUBLIC
PROPERTY Scale : TPosition Read GetScale Write SetScale;
END;
FUNCTION TControlHelper.GetScale : TPosition;
BEGIN
Result:=INHERITED Scale
END;
PROCEDURE TControlHelper.SetScale(Value : TPosition);
BEGIN
INHERITED Scale:=Value
END;