コンポーネントの作成と登録(グリッド)
グリッドのカスタマイズ:インデックス への移動
すべてのコンポーネントを同じように作成します。 ユニットの作成、コンポーネント クラスの派生、登録、コンパイル、ツール パレットへのインストールを行います。 新しいコンポーネントの作成 を参照。
たとえば、次の仕様に従って、コンポーネント作成の一般的な手順を実行します。
- コンポーネントのユニットを CalSamp という名前で保存します。
- TCustomGrid から TSampleCalendar という新しいコンポーネント タイプを派生させます。
- ツール パレットの [Samples] カテゴリに TSampleCalendar を登録します。
その結果作成されるVCL アプリケーション内の TCustomGrid から派生したユニットは、次のようになります。
unit CalSamp;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids;
type
TSampleCalendar = class(TCustomGrid)
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Samples', [TSampleCalendar]);
end;
end.
#include <vcl\vcl.h>
#pragma hdrstop
#include "CalSamp.h"
//---------------------------------------------------------------------------
#pragma package(smart_init);
//---------------------------------------------------------------------------
static inline TSampleCalendar *ValidCtrCheck()
{
return new TSampleCalendar(NULL);
}
//---------------------------------------------------------------------------
namespace Calsamp
{
void __fastcall PACKAGE Register()
{
TComponentClass classes[1] = {__classid(TSampleCalendar)};
RegisterComponents("Samples", classes, 0); //VCL アプリケーションで別のページを使用
}
}
#ifndef CalSampH
#define CalSampH
//---------------------------------------------------------------------------
#include <vcl\sysutils.hpp>
#include <vcl\controls.hpp>
#include <vcl\classes.hpp>
#include <vcl\forms.hpp>
#include <vcl\grids.hpp>
//---------------------------------------------------------------------------
class PACKAGE TSampleCalendar : public TCustomGrid
{
private:
protected:
public:
__published:
};
//---------------------------------------------------------------------------
#endif
ここでカレンダー コンポーネントをインストールすると、これが [Samples] カテゴリに表示されます。 利用可能なプロパティは、最も基本的なコントロール プロパティのみです。 次のステップで、もっと特化したプロパティをカレンダーのユーザーに利用できるようにします。
メモ: コンパイルしたばかりのサンプル カレンダー コンポーネントはインストールできますが、フォーム上にはまだ配置しないでください。 TCustomGrid コンポーネントには、抽象 DrawCell メソッドがあり、再宣言してからでないと、インスタンス オブジェクトは作成できません。 DrawCell メソッドのオーバーライドについては、「セルの内容を設定する」で説明されています。