コンポーネントの作成と登録

提供: RAD Studio
移動先: 案内検索

グラフィック コンポーネントの作成:インデックス への移動

すべてのコンポーネントは同じ方法で作成します。ユニットを作成し,コンポーネントクラスを派生させて,登録,コンパイルし,それをツールパレットにインストールします。この処理については,「新しいコンポーネントの作成」を参照してください。

このサンプルでは,一般的な手順でコンポーネントを作成します。コンポーネントに固有の点は以下のとおりです。

  1. コンポーネントユニットの名前は Shapes とする。
  2. TGraphicControl から TSampleShape という新しいコンポーネント型を派生させる。
  3. ツールパレットの[Samples]カテゴリで TSampleShape を登録する。

作成したユニットのコードは次のようになります。



 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 を使用して,作成済みコンポーネントに
 // 純粋仮想関数がないことを確認
 //
 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