喫茶XRAYトップページ

[スレッド全体
]

[12237] 指定した日が祝日かどうかを調べる返信 削除
2018/9/7 (金) 20:16:44 igy
以前、
[8163] Re5:TDateTimePicker で元号表示
http://mrxray.on.coocan.jp/bbs/DelphiBBS/mrxray_delphifan_coffe.cgi?tree=s8156#8163

で紹介した、DEKOさんのところの

指定した日が祝日かどうかを調べる
https://ht-deko.com/tech004.html#tech026

が、更新されてました!

> 2018/07/03: 五輪祝日移動法および皇室典範特例法に対応。

とのことです。

また、Qiita にも、

[Qiita] Delphi で "指定した日が祝日かどうか" を調べる
https://qiita.com/ht_deko/items/a0cbbbd899c1c016ae67

の記事が公開されています。


[12913] TRzDateTimeEdit、TRzCalendarでの使用例返信 削除
2019/6/15 (土) 20:54:44 igy
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の値でカレンダーの年月を確認しています。

[12916] Re:TRzDateTimeEdit、TRzCalendarでの使用例返信 削除
2019/6/15 (土) 21:44:46 Mr.XRAY
▼ igyさん

> TRzDateTimeEdit、TRzCalendarは、Konopka Signature VCL Controls 6.2.3に含まれており、
> GetItパッケージマネージャ−にて無償で入手できます。
> (10.3 RioのGetItでは「Bonus KSVC 6.2.3」と表記されてます。)


おっ,こいつは便利そうだ !
時刻の入力もまとも (? ) にできる感じですね.


[12917] Re2:TRzDateTimeEdit、TRzCalendarでの使用例返信 削除
2019/6/15 (土) 22:14:05 igy
▼ Mr.XRAYさん
> 時刻の入力もまとも (? ) にできる感じですね.

procedure TForm1.FormCreate(Sender: TObject);
begin
    with RzDateTimeEdit2 do
    begin
        EditType := etTime;

        CaptionAM := '午前';
        CaptionPM := '午後';
        CaptionSet := 'セット';
        HowToUseMsg :=  '左クリックで時(Hour)をセット' + #13#10 +
                        '右クリックで分(Minute)をセット' + #13#10 +
                        '(Ctrl+右クリックで5分刻みでセット)';
    end;
end;

右クリックで分を指定できる仕様を、(職場などで)ユーザーに受け入れられるかは、気になるところです。


[12918] Re3:TRzDateTimeEdit、TRzCalendarでの使用例返信 削除
2019/6/15 (土) 23:27:44 Mr.XRAY
> 右クリックで分を指定できる仕様を、(職場などで)ユーザーに受け入れられるかは、気になるところです。

ハハハッ
「クリック ? 右 ? 左 ?」
と訊く人がいる一方で右クリックには馴染みがない人も多いです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82