说我有

type
  TLight = class
  private
    Ftimer : TTimer;
    property IsAutoRotating: Boolean read Ftimer.Enabled;


显然,这不能编译,但是为什么不能编译以及如何解决(最好不要将该状态保存在单独的var中)。

最佳答案

您的代码无法编译,因为属性读写说明符必须引用该类的字段或方法。 Ftimer.Enabled都不是。

要实现IsAutoRotating属性,您需要创建一个getter函数:

type
  TLight = class
  private
    Ftimer : TTimer;
    function GetIsAutoRotating: Boolean;
  public
    property IsAutoRotating: Boolean read GetIsAutoRotating;
  end;

function TLight.GetIsAutoRotating : Boolean;
begin
  Result := Ftimer.Enabled;
end;

10-08 07:43