Création et recensement du composant

De RAD Studio
Aller à : navigation, rechercher

Remonter à Création d'un composant graphique - Index

La création d'un composant se fait toujours de la même façon : vous créez une unité et vous recensez le composant avant de l'installer dans la palette d'outils. Ce processus est décrit dans Création d'un nouveau composant.

Pour notre exemple, suivez la procédure générale de création d'un composant en tenant compte des spécificités suivantes :

  1. Appelez l'unité du composant Shapes.
  2. Dérivez un nouveau type de composant appelé TSampleShape, descendant de TGraphicControl.
  3. Recensez TSampleShape dans la catégorie Exemples de la palette d'outils.

L'unité que vous obtenez doit ressembler à ceci :

unit Shapes;
interface
uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms;
type
  TSampleShape = class(TGraphicControl)
  end;
procedure Register;
implementation
procedure Register;
begin
  RegisterComponent('Samples', [TSampleShape]);
end;
end.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Shapes.h"
//---------------------------------------------------------------------------
#pragma package(smart_init);
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//
static inline void ValidCtrCheck(TSampleShape *)
{
  new TSampleShape(NULL);
}
//---------------------------------------------------------------------------
__fastcall TSampleShape::TGraphicControl(TComponent* Owner)
: TGraphicControl(Owner)
{
}
//---------------------------------------------------------------------------
namespace Shapes
{
  void __fastcall PACKAGE Register()
  {
    TComponentClass classes[1] = {__classid(TSampleShape)};
    RegisterComponents("Samples", classes, 0);
  }
}
//---------------------------------------------------------------------------
#ifndef ShapesH
#define ShapesH
//---------------------------------------------------------------------------
#include <sysutils.hpp>
#include <controls.hpp>
#include <classes.hpp>
#include <forms.hpp>
//---------------------------------------------------------------------------
class PACKAGE TSampleShape : public TGraphicControl
{
private:
protected:
public:
__published:
};
//---------------------------------------------------------------------------
#endif