コンポーネントの作成と登録
すべてのコンポーネントは同じ方法で作成します。ユニットを作成し,コンポーネントクラスを派生させて,登録,コンパイルし,それをツールパレットにインストールします。この処理については,「新しいコンポーネントの作成」を参照してください。
このサンプルでは,一般的な手順でコンポーネントを作成します。コンポーネントに固有の点は以下のとおりです。
- コンポーネントユニットの名前は Shapes とする。
- TGraphicControl から TSampleShape という新しいコンポーネント型を派生させる。
- ツールパレットの[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