在XE2中,我仅使用了Scale
属性来设置控件的x和y轴比例。显然,在后续版本中,Scale
属性已在TControl
中受到保护,并在下降的控件中发布。
我有很多函数可以引用TControl
并控制其比例。
在10.2中设置TControl
的小数位数的首选方法是什么?
答案 0 :(得分:1)
您可以使用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;