Die Prozedur RegisterComponents aufrufen
Inhaltsverzeichnis
Nach oben zu Die Register-Prozedur implementieren
Rufen Sie in der Prozedur Register die Prozedur RegisterComponents auf, um die Komponenten, die im Klassen-Array ComponentClasses
angegeben sind, zu registrieren. RegisterComponents ist eine Prozedur, die zwei Parameter übernimmt: Den Parameter Page
, der den Namen einer Kategorie der Tool-Palette angibt und den Parameter ComponentClasses
, der das Array mit den zu registrierenden Komponentenklassen angibt.
Geben Sie im Parameter Page
den Namen der Registerkarte (Kategorie) der Tool-Palette an, in der die Komponenten angezeigt werden sollen. Falls die Kategorie Page
bereits vorhanden ist, werden die Komponenten in diese Kategorie eingefügt. Ist die Kategorie Page
nicht vorhanden, erstellt Delphi eine neue Kategorie in der Tool-Palette mit dem angegebenen Namen.
Rufen Sie RegisterComponents in der Implementierung der Prozedur Register in einer der Units auf, in der die benutzerdefinierten Komponenten definiert sind. Die Units, in denen die Komponenten definiert sind, müssen anschließend in ein Package compiliert werden. Dieses Package muss installiert werden, bevor die Komponenten der Tool-Palette hinzugefügt werden.
Delphi
procedure Register; begin RegisterComponents('System', [TSystem1, TSystem2]); {add to system category} RegisterComponents('MyCustomPage',[TCustom1, TCustom2]); {new category} end;
C++
namespace Newcomp { void __fastcall PACKAGE Register() { TMetaClass* classes[1] = {__classid(TMyComponent)}; RegisterComponents("Miscellaneous", classes, 0); } }
namespace Mycomps { void __fastcall PACKAGE Register() { //declares an array that holds two components TMetaClass classes1[2] = {__classid(TFirst), __classid(TSecond)}; //adds a new palette page with the two components in the classes1 array RegisterComponents("Miscellaneous", classes1, 1); //declares a second array TMetaClass classes2[1]; //assigns a component to be the first element in the array classes2[0] = __classid(TThird); //adds the component in the classes2 array to the Samples page RegisterComponents("Samples", classes2, 0); } }
Festlegen des Ladestatus für in einem Package registrierte Komponenten
Standardmäßig verwendet die IDE das intelligente Laden (Lazy Loading) von in der IDE installierten Entwurfszeit-Packages. In diesem Fall lädt die IDE anfänglich nur die Komponenten der Entwurfszeit-Packages, die explizit in den geöffneten Projekten verwendet werden. Dies kann beim Öffnen eines Projekts zu Fehlermeldungen und beim Ausführen einer erzeugten Anwendung zu Laufzeitfehlern führen. In diesen Situationen müssen Sie das intelligente Laden eines Package explizit deaktivieren, in dem diese nicht geladenen Komponenten registriert sind. Rufen Sie zum Deaktivieren des intelligenten Ladens eines Entwurfszeit-Package
bei der Implementierung der Prozedur Register dieses Package auf.
Zum Beispiel können Sie Folgendes schreiben:
Delphi
procedure Register; begin RegisterComponents('MyCustomPage',[TCustom1, TCustom2]); {register custom components} ForceDemandLoadState(dlDisable); {enforce always load in the IDE all component registered in this unit} end;