CollectionItem 下未声明的标识符 "ComponentState"

Undeclared identifier "ComponentState" under CollectionItem

为什么 ComponentState 来自波纹管的代码在 CollectionItem class 下无法被 Delphi 识别。

备注:在TMyComp方法下有效。

uses
  System.Classes, ...

type
  TMyComp = class(TComponent)
  ...

  TColumnsItem = class(TCollectionItem)
  private
    FWidth: Integer;
    procedure SetWidth(const Value: Integer);
  protected
    function GetDisplayName: String; override;
    procedure SetIndex(Value: Integer);  override;
  public
    constructor Create(Collection: TCollection); override;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
  published
    property Width: Integer read FWidth write SetWidth default 90;
  end;


  procedure TColumnsItem.SetWidth(const Value: Integer);
  begin
  if FWidth <> Value then
    begin
      FWidth:= Value;
      if csDesigning in ComponentState then //Undeclared identifier 'ComponentState' ???
        begin
          //do something...
        end;
      Changed(False);
    end;
  end;

ComponentStateTComponent 下的 属性。

要在 TCollectionItem 下使用需要定义一个 FOwner 属性 到 TComponent 并像这样使用:

if csDesigning in FOwner.ComponentState then
  begin
    //do something...
  end;