【发布时间】:2018-07-30 23:19:21
【问题描述】:
在 XE2 中,我只是使用 Scale 属性来设置控件的 x 轴和 y 轴刻度。在后续版本中,Scale 属性显然已在TControl 中受到保护,并在下降控件中发布。
我有很多函数接受TControl 引用并操纵其比例。
在 10.2 中设置TControl 的比例的首选方法是什么?
【问题讨论】:
标签: delphi firemonkey delphi-10.2-tokyo
在 XE2 中,我只是使用 Scale 属性来设置控件的 x 轴和 y 轴刻度。在后续版本中,Scale 属性显然已在TControl 中受到保护,并在下降控件中发布。
我有很多函数接受TControl 引用并操纵其比例。
在 10.2 中设置TControl 的比例的首选方法是什么?
【问题讨论】:
标签: delphi firemonkey delphi-10.2-tokyo
您可以使用protected hack 来解决这个问题:
TYPE
TControlHack = CLASS(TControl);
PROCEDURE SetScale(C : TControl ; NewScale : TPosition);
BEGIN
TControlHack(C).Scale:=NewScale
END;
通过声明一个从原始类继承的新类,当您将实例硬转换为这个新类时,您实际上是将受保护的定义“拖”到视图中。
您也可以将其实现为类助手:
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;
【讨论】: