【问题标题】:How set the scale of a TControl?如何设置 TControl 的比例?
【发布时间】:2018-07-30 23:19:21
【问题描述】:

在 XE2 中,我只是使用 Scale 属性来设置控件的 x 轴和 y 轴刻度。在后续版本中,Scale 属性显然已在TControl 中受到保护,并在下降控件中发布。

我有很多函数接受TControl 引用并操纵其比例。

在 10.2 中设置TControl 的比例的首选方法是什么?

【问题讨论】:

    标签: delphi firemonkey delphi-10.2-tokyo


    【解决方案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;
    

    【讨论】:

    • 我害怕那个。在 XE2 中它看起来要优雅得多。
    • 那是 CDO,你这个不按字母顺序排列的缩写人 :-)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多