DesignIntf.RegisterPropertyEditor
Delphi
procedure RegisterPropertyEditor(PropertyType: PTypeInfo;
ComponentClass: TClass; const PropertyName: string;
EditorClass: TPropertyEditorClass);
C++
extern DELPHI_PACKAGE void __fastcall RegisterPropertyEditor(System::Typinfo::PTypeInfo PropertyType, System::TClass ComponentClass, const System::UnicodeString PropertyName, TPropertyEditorClass EditorClass);
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | DesignIntf.pas DesignIntf.hpp |
DesignIntf | DesignIntf |
説明
コンポーネントが、オブジェクト インスペクタから、自分のカスタム プロパティ エディタに呼び出せるようにします。
RegisterPropertyEditor を呼び出すと、EditorClass
パラメータで指定されたプロパティ エディタ クラスを、PropertyType
パラメータで指定されたプロパティの型に関連付けることができます。
コンポーネントが選択された際、オブジェクト インスペクタは、コンポーネントのプロパティそれぞれに対し、そのプロパティの型に基づいて、プロパティ エディタを作成します。 たとえば、プロパティ型が Integer の場合、Integer のプロパティ エディタが作成されます(デフォルトでは、TIntegerProperty)。 大抵のプロパティについては、特化したプロパティ エディタは必要ありません。 たとえば、プロパティが順序型の場合、デフォルトのプロパティ エディタは、範囲をサブタイプの範囲に制限します。
あるプロパティの型が、デフォルトのプロパティ エディタ、または、既存のプロパティ エディタのいずれかを使用しても適切に編集できない場合に、RegisterPropertyEditor を使用して、カスタム プロパティ エディタとそのプロパティの型を関連付けます。 このケースは、大抵プロパティがオブジェクトの場合に発生します。
プロパティ エディタを登録する際、PropertyType
を型情報ポインタに設定します。 Delphi では、型情報ポインタは、TypeInfo 機能によって返されます。 例: TypeInfo(TPropertyObject) C++ では、プロパティの型がクラスの場合、__typeinfo マクロを使用してそのポインタを取得することができます。 他の型については、型情報ポインタを、同じ型の公開されているプロパティから取得することができます。 例:
PTypeInfo TypeInfo; PPropInfo PropInfo =GetPropInfo(__typeinfo(TForm), "BorderStyle"); if (PropInfo) TypeInfo = *(PropInfo->PropType);
ComponentClass
パラメータを設定すると、プロパティ エディタを、1 つのコンポーネント クラスとその下位クラスに限定できます。 ComponentClass
に nil (Delphi) または NULL (C++) を設定すると、
プロパティ エディタがコンポーネントのプロパティの型に関連付けられます。
PropertyName
パラメータを設定すると、プロパティ エディタを、指定されたプロパティの型だけでなく、その型の特定の名前のプロパティに限定することができます。 PropertyName
に空文字列を設定すると、プロパティ エディタが指定された型のあらゆるプロパティに関連付けられます。
EditorClass
パラメータは、プロパティがオブジェクト インスペクタで選択された際に表示させたい、プロパティ エディタのクラスに設定します。 このクラスは、IProperty インターフェイスを実装している TBasePropertyEditor の下位クラスでなければなりません。