C++Builder XEでTJvMonthCalendar2を使ってみる。

TJvMonthCalendar2はJVCLのコンポーネントです。
指定日を太字で表示するなど、標準コンポーネントのTMonthCalendarにはない機能があります。

■Boldプロパティ

指定した日付が太字かどうかを表します。

JvMonthCalendar21->BoldDays->Add("201207=11"); //2012年7月11日は太字
bool bold1 = JvMonthCalendar21->Bold[2012][7][10]; //=> false
bool bold2 = JvMonthCalendar21->Bold[2012][7][11]; //=> true

JvMonthCalendar21->Bold[2012][7][12] = true; //2012年7月12日は太字
bool bold3 = JvMonthCalendar21->Bold[2012][7][12]; //=> true

■BoldDaysプロパティ

太字で表示する日付を設定します。

次の2種類の書式を使用できます。

  1. 0000mm=daylist

    毎年mm月のdaylist日を太字にします。

  2. yyyymm=daylist

    yyyy年mm月のdaylist日を太字にします。

daylistはカンマ区切りで日にちを並べます。

//2012年7月の1日,11日,21日を太字にする
JvMonthCalendar21->BoldDays->Add("201207=1,11,21");

//毎年10月の10日,20日,30日を太字にする
JvMonthCalendar21->BoldDays->Add("000010=10,20,30");

■CircleTodayプロパティ

trueのときは当日の日付を囲みます。

■Colorsプロパティ

コントロールの各部品の色を設定します。

■DateFirstプロパティ、DateLastプロパティ

MultiSelectプロパティがtrueのときは選択されている期間の開始と終了の日付を示します。

JvMonthCalendar21->MultiSelect = true;
JvMonthCalendar21->DateFirst = TDateTime(2012, 8, 10);
JvMonthCalendar21->DateLast = TDateTime(2012, 8, 15);

MultiSelectプロパティがfalseのときはDateFirstプロパティは選択されている日付を示します。

■DateMaxプロパティ、DateMinプロパティ

選択できる期間を示します。

0のときは制限はありません。

JvMonthCalendar21->DateMin = TDateTime(2012, 8, 10);
JvMonthCalendar21->DateMax = TDateTime(2012, 8, 15);

■Daysプロパティ

指定した年月の太字の日にちをカンマ区切り文字列で示します。

//2012年7月の1日,11日,21日を太字にする
JvMonthCalendar21->Days[2012][7] = "1,11,21,31";

//2012年7月の太字に日にちを取得する
UnicodeString days = JvMonthCalendar21->Days[2012][7];
//=> days = "1,11,21"

■FirstDayOfWeekプロパティ

週の始まりの曜日をTJvMonthCalWeekDay型で示します。

JvMonthCalendar21->FirstDayOfWeek = mcTuesday;

■ShowTodayプロパティ

trueのときはコントロールの下部に当日の日付を表示します。

■WeekNumbersプロパティ

trueのときは週数を表示します。

■OnGetDayStateイベント

コントロールが日にちの状態を取得する時に呼ばれます。

引数

  • Date
    要求された最初の日にち。通常は月の初めの日。

  • Count
    要求された月の数。

  • DayStateArray
    日付の状態を示すTMonthDayStateの配列

たとえば2012年7月を表示する時は、2012年6月~2012年8月までの情報が必要になるので、

Date=2012/06/01
Count=3
DayStateArray[0]=6月の太字の日にちのTMonthDayState
DayStateArray[1]=7月の太字の日にちのTMonthDayState
DayStateArray[2]=8月の太字の日にちのTMonthDayState

となります。

TMonthDayStateはDayStatesToString関数で、カンマ区切りの文字列に変換できます。

var
  S: String;
begin
  S := DayStatesToString(DayStateArray[0]); //=> 1,11,21

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください