Utilisation de la procédure RegisterComponents

De RAD Studio
Aller à : navigation, rechercher

Remonter à Ecriture de la procédure Register

Dans la procédure Register, appelez RegisterComponents pour recenser les composants spécifiés dans le tableau des classes ComponentClasses. RegisterComponents est une procédure qui prend deux paramètres : le paramètre {{Arg|Page} spécifie le nom d'une catégorie de la palette d'outils et le paramètre ComponentClasses spécifie le tableau des classes de composants à recenser.

Définissez le paramètre Page sur le nom de la page de la palette de composants où doivent se placer les composants. Si la catégorie nommée Page existe déjà, les composants y sont ajoutés. Si Page n'existe pas, Delphi crée une nouvelle catégorie ayant ce nom sur la palette d'outils.

Appelez RegisterComponents depuis l'implémentation de la routine Register dans une des unités définissant les composants personnalisés. Les unités définissant les composants doivent alors être compilées en package et ce package doit être installé avant l'ajout à la palette d'outils des composants personnalisés.

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

Définition de l'état de chargement pour les composants recensés dans un package

Par défaut, l'EDI utilise le chargement intelligent des packages de conception installés dans l'EDI. Dans ce cas, seuls les composants des packages de conception qui sont explicitement utilisés dans des projets ouverts sont initialement chargés par l'EDI. En conséquence, des messages d'erreur peuvent apparaître lors de l'ouverture d'un projet et des erreurs d'exécution lors de l'exécution d'une application créée. Dans de telles situations, vous devez explicitement désactiver le chargement intelligent du package dans lequel ces composants non chargés sont recensés. Pour désactiver explicitement le chargement intelligent d'un package de conception, appelez

ForceDemandLoadState(dlDisable)

lors de l'implémentation de la procédure Register de ce package.

Par exemple, vous pouvez écrire :

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;

Voir aussi