2016-07-25 32 views
-2

なぜComponentState郵便番号からそれはCollectionItemクラスの下でDelphiによって認識されません。CollectionItemの下に宣言されていない識別子 "ComponentState"

備考: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; 
+1

if csDesigning in FOwner.ComponentState then begin //do something... end; 
[ドキュメント]で優勢を観察(http://docwiki.embarcadero.com/Libraries /en/System.Classes.TCollectionItem)。 –

+0

うわー!どうしたらいいですか? – REALSOFO

+0

[OK]を、私は答えを見つけた!私はこの例のように、所有者を使うべきです:もしそうでなければ(Owner.Header.Treeview.ComponentStateのcsLoading) ' – REALSOFO

答えて

0

ComponentStateTComponent下のプロパティです。 TCollectionItem下で使用されるように

TComponentFOwnerプロパティを定義するためなどに使用することが必要である:

関連する問題