内部日付の格納

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

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

カレンダーの日付を格納するために,日付を格納するプライベートなフィールドと,その日付をアクセスする実行時用のプロパティを用意します。

内部の日付をカレンダーに追加するには,以下の 3 つのステップが必要です。

  1. 日付を格納するフィールドをプライベートに宣言します。
 type
   TSampleCalendar = class(TCustomGrid)
   private
     FDate: TDateTime;
   .
   .
   .
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 public:
     __property TDateTime CalendarDate = {read=FDate, write=SetCalendarDate, nodefault};
     .
     .
     .
 };
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 private:
     TDateTime FDate;
     .
     .
     .
 };
  1. その日付フィールドをコンストラクタで初期化します。
 constructor TSampleCalendar.Create(AOwner: TComponent);
 begin
   inherited Create(AOwner);         { 元からある文 }
   .                                  { ここでほかの初期化を行う }
   .
   .
   FDate := Date;                    { RTL から現在の日付を取得 }
 end;
 
 __fastcall TSampleCalendar::TSampleCalendar(TComponent *Owner) : TCustomGrid(Owner)
 {
   .
   .
   .
   FDate = FDate.CurrentDate();
 }
  1. コード化された日付にアクセスする実行時用のプロパティを宣言します。日付を設定したときは,コントロールに表示されるイメージも更新しなければならないので,日付の設定はメソッドで行います。
 type
   TSampleCalendar = class(TCustomGrid)
   private
     procedure SetCalendarDate(Value: TDateTime);
   public
     property CalendarDate: TDateTime read FDate write SetCalendarDate;
   .
   .
   .
 procedure TSampleCalendar.SetCalendarDate(Value: TDateTime);
 begin
   FDate := Value;                { 新しい日付を設定 }
   Refresh;                       { イメージの表示を更新 }
 end;
 
 class PACKAGE TSampleCalendar : public TCustomGrid
 {
 private:
     void __fastcall SetCalendarDate(TDateTime Value);
     .
     .
     .
 };
 
 void __fastcall TSampleCalendar::SetCalendarDate(TDateTime Value)
 {
   FDate = Value;                      // 新しい日付値を設定する
   Refresh();                          // イメージの表示を更新する
 }