DesignIntf.RegisterPropertyEditor

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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);

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
procedure
function
public
DesignIntf.pas
DesignIntf.hpp
DesignIntf DesignIntf

Beschreibung

Ermöglicht es einer Komponente, einen benutzerdefinierten Eigenschaftseditor über den Objektinspektor bereitzustellen.

Mit RegisterPropertyEditor kann die in EditorClass angegebene Eigenschaftseditor-Klasse dem im Parameter PropertyType angegebenen Eigenschaftstyp zugeordnet werden.

Wenn eine Komponente ausgewählt wird, erzeugt der Objektinspektor für jede Eigenschaft der Komponente einen Eigenschaftseditor. Welcher Editor dabei generiert wird, ist vom Typ der jeweiligen Eigenschaft abhängig. Beispielsweise wird für eine Eigenschaft des Typs Integer der Integer-Eigenschaftseditor erzeugt (standardmäßig TIntegerProperty). Für die meisten Eigenschaften ist aber kein spezieller Editor erforderlich. Für eine Eigenschaft des Typs Ordinal beschränkt der Standard-Eigenschaftseditor den Bereich auf die Untertypen.

Wenn eine Eigenschaft mit dem Standard-Eigenschaftseditor oder einem der existierenden Eigenschaftseditoren nicht bearbeitet werden kann, weisen Sie dem betreffenden Eigenschaftstyp mit der Prozedur RegisterPropertyEditor einen benutzerdefinierten Editor zu. Das ist möglich, weil die Eigenschaft ein Objekt ist.

Setzen Sie bei der Registrierung eines Eigenschaftseditors PropertyType auf den Typinformationszeiger. In Delphi wird der Typinformationszeiger von der Funktion TypeInfo zurückgegeben. Z.B. TypeInfo(TPropertyObject). Wenn der Eigenschaftstyp eine Klasse ist, kann in C++ dieser Zeiger mit dem Makro __typeinfo abgerufen werden. Bei anderen Typen kann der Typinformationszeiger aus einer als published deklarierten Eigenschaft desselben Typs abgerufen werden. Ein Beispiel:

PTypeInfo TypeInfo;
PPropInfo PropInfo = GetPropInfo(__typeinfo(TForm), "BorderStyle");
if (PropInfo)
TypeInfo = *(PropInfo->PropType);

Durch den Parameter ComponentClass kann der Eigenschaftseditor auf eine Komponentenklasse und deren Nachkommen beschränkt werden. Wenn Sie ComponentClass auf nil (Delphi) bzw. NULL (C++) setzen, ist der Eigenschaftseditor für jeden Eigenschaftstyp jeder beliebigen Komponente gültig.

Mit dem Parameter PropertyName kann der Editor auf Eigenschaften beschränkt werden, die einen bestimmten Namen und Typ aufweisen. Wenn Sie für PropertyName einen leeren String angeben, ist der Editor für jede Eigenschaft des angegebenen Typs gültig.

Im Parameter EditorClass wird die Klasse des Eigenschaftseditors festgelegt, die nach Auswahl der Eigenschaft im Objektinspektor angezeigt wird. Diese Klasse muss von der Klasse TBasePropertyEditor abgeleitet sein, die die Schnittstelle IProperty implementiert.

Siehe auch

Codebeispiele