内部日付の格納
グリッドのカスタマイズ:インデックス への移動
カレンダーの日付を格納するために,日付を格納するプライベートなフィールドと,その日付をアクセスする実行時用のプロパティを用意します。
内部の日付をカレンダーに追加するには,以下の 3 つのステップが必要です。
- 日付を格納するフィールドをプライベートに宣言します。
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;
.
.
.
};
- その日付フィールドをコンストラクタで初期化します。
constructor TSampleCalendar.Create(AOwner: TComponent);
begin
inherited Create(AOwner); { 元からある文 }
. { ここでほかの初期化を行う }
.
.
FDate := Date; { RTL から現在の日付を取得 }
end;
__fastcall TSampleCalendar::TSampleCalendar(TComponent *Owner) : TCustomGrid(Owner)
{
.
.
.
FDate = FDate.CurrentDate();
}
- コード化された日付にアクセスする実行時用のプロパティを宣言します。日付を設定したときは,コントロールに表示されるイメージも更新しなければならないので,日付の設定はメソッドで行います。
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(); // イメージの表示を更新する
}