初期値の変更

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

グリッドのカスタマイズ:インデックス への移動

カレンダーは基本的に,行と列の数が固定されているグリッドです(ただし,常にすべての行に日付が表示されるとは限りません)。カレンダーは常に 1 週間を 7 日で表示するからです。そのため,グリッドのプロパティ ColCountRowCount は,パブリッシュには設定してありません。ただし,1 週間を 7 日にするためには,プロパティの初期値をそのように設定しなければなりません。

コンポーネントプロパティの初期値を変更するには,コンストラクタをオーバーライドして値を設定します。コンストラクタは仮想でなければなりません。

コンポーネントのオブジェクト宣言の public 部にコンストラクタの宣言を追加し,ユニットの implementation 部に新しいコンストラクタを記述します。新しいコンストラクタでは,最初の文で継承コンストラクタを呼び出します。StdCtrls ユニットを uses 節に追加します。



 type
   TSampleCalendar = class(TCustomGrid)
   public
     constructor Create(AOwner: TComponent); override;
   .
   .
   .
   end;
 .
 .
 .
 constructor TSampleCalendar.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);                                 { 継承コンストラクタを呼び出す }
   ColCount := 7;                                                { 常に 1 週は 7 日 }
   RowCount := 7;                                    { 常に 6 週間+見出し }
   FixedCols := 0;                                                        { 見出しを付けない }
   FixedRows := 1;                                                { 1 行の見出しに曜日を表示 }
   ScrollBars := ssNone;                                              { スクロールは使用しない }
   Options := Options - [goRangeSelect] + [goDrawFocusSelected];  {範囲選択は使用しない}
 end;



 //ヘッダーファイル
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 protected:
     virtual void __fastcall DrawCell(int ACol, int ARow, const Windows::TRect &Rect,
       TGridDrawState AState);
     .
     .
     .
 public:
     __fastcall TSampleCalendar(TComponent *Owner);   // 追加されたコンストラクタ
     .
     .
     .
 };



 
 //実装ファイル
 __fastcall TSampleCalendar::TSampleCalendar(TComponent *Owner) : TCustomGrid(Owner)
 {
   ColCount = 7;
   RowCount = 7;
   FixedCols = 0;
   FixedRows = 1;
   ScrollBars = ssNone;
   Options = (Options >> goRangeSelect) << goDrawFocusSelected;
 }
 void __fastcall TSampleCalendar::DrawCell(int ACol, int ARow, const Windows::TRect
   &ARect, TGridDrawState AState)
 {
 }



これで,7 行 7 列で最初の行が固定行つまり非スクロールのカレンダーになりました。