TRzDateTimeEdit、TRzCalendarは、Konopka Signature VCL Controls 6.2.3に含まれており、
GetItパッケージマネージャ−にて無償で入手できます。
(10.3 RioのGetItでは「Bonus KSVC 6.2.3」と表記されてます。)
土曜日は青、日曜日や祝日は赤の文字で表示したい場合、
OnGetDayFormatイベントで文字色を指定します。
TForm1 = class(TForm)
RzDateTimeEdit1: TRzDateTimeEdit;
RzCalendar1: TRzCalendar;
procedure FormCreate(Sender: TObject);
procedure RzDateTimeEdit1GetDayFormat(Sender: TObject; DayDate: TDateTime;
Year, Month, Day: Word; var DayColor, DayFontColor: TColor;
var DayFontStyle: TFontStyles);
procedure RzCalendar1GetDayFormat(Sender: TObject; DayDate: TDateTime; Year,
Month, Day: Word; var DayColor, DayFontColor: TColor;
var DayFontStyle: TFontStyles);
procedure RzDateTimeEdit1ViewDateChange(Sender: TObject; ViewDate: TDateTime);
private
{ Private 宣言 }
CurrentViewDate: TDateTime; // RzDateTimeEdit1用
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
with RzDateTimeEdit1 do
begin
EditType := etDate;
CaptionClearBtn := 'クリア';
CaptionTodayBtn := '今日';
end;
with RzCalendar1 do
begin
//CaptionClearBtn := 'クリア';
CaptionTodayBtn := '今日';
Elements := Elements - [ceClearButton];
end;
CurrentViewDate := 0;
end;
// RzDateTimeEdit:OnGetDayFormatイベント
procedure TForm1.RzDateTimeEdit1GetDayFormat(Sender: TObject; DayDate: TDateTime;
Year, Month, Day: Word; var DayColor, DayFontColor: TColor; var DayFontStyle: TFontStyles);
var
S: String;
isSameYMView: Boolean;
begin
isSameYMView := SameDate(StartOfTheMonth(DayDate), StartOfTheMonth(CurrentViewDate));
// TRzCalendarのViewDateプロパティに該当するものがないのでViewDateChangeイベントで取得したViewDateで比較
if (DayOfWeek(DayDate) = 1) or IsSpecialHoliday(DayDate, S) then // 日曜か祝日
begin
DayFontColor := clRed;
if not isSameYMView then
DayFontColor := RGB(255, 144, 144);
end
else if DayOfWeek(DayDate) = 7 then // 土曜
begin
DayFontColor := clBlue;
if not isSameYMView then
DayFontColor := RGB(128, 128, 255);
end;
end;
// RzCalendar:OnGetDayFormatイベント
procedure TForm1.RzCalendar1GetDayFormat(Sender: TObject; DayDate: TDateTime;
Year, Month, Day: Word; var DayColor, DayFontColor: TColor; var DayFontStyle: TFontStyles);
var
S: String;
isSameYMView: Boolean;
begin
isSameYMView := SameDate(StartOfTheMonth(DayDate), StartOfTheMonth(TRzCalendar(Sender).ViewDate));
if (DayOfWeek(DayDate) = 1) or IsSpecialHoliday(DayDate, S) then // 日曜か祝日
begin
DayFontColor := clRed;
if not isSameYMView then
DayFontColor := RGB(255, 144, 144);
end
else if DayOfWeek(DayDate) = 7 then // 土曜
begin
DayFontColor := clBlue;
if not isSameYMView then
DayFontColor := RGB(128, 128, 255);
end;
end;
procedure TForm1.RzDateTimeEdit1ViewDateChange(Sender: TObject; ViewDate: TDateTime);
begin
CurrentViewDate := ViewDate;
end;
TRzCalendarではViewDateプロパティでカレンダーの年月が確認しているのですが、
TRzDateTimeEditにはViewDateプロパティがないので、OnViewDateChangeイベントで取得したViewDateの値でカレンダーの年月を確認しています。
|