カレンダー選択ポップアップクラス

HomeC++ Class Library[LIB-005]

 ダウンロード : GetCalendar.zip (2005/10/09) 

日付を指定する場合、自由にユーザーに選択させるととんでもない書き方をされることがあります。
そのような事態を避けるためカレンダーを表示して指定させることが多いのですが、MFC のコントロールをそのまま使用すると、ダイアログに貼り付けて使用する事になります。

このような使い方はダイアログに常にカレンダーを表示し続けることになるため、ダイアログデザイン上、困ることがあります。

そこでボタンを押したら、マウスカーソルの近くにカレンダーをポップアップさせる事でダイアログレイアウトデザインの自由度を増やそうと考えました。
また、ユーザーが他の操作をし始めたら、自動的に自分自身を消すような動作を実装しました。

漢の浪漫、自爆型です(笑)。

使い方

  1. 使いたいときに new で実体化する

    日付はエディットボックスに文字列として自動的に受け取る仕様としました。
    クラスは new でオブジェクトとして実体化させます。
    動的取得したポイントは、そのまま捨ててください。
    自爆型ですので不用意に delete すると逆に異常を起こします。

    下記の実装例は IDC_BTN_EXEC_CALENDAR ボタンが押されたときのコードです。
    日付の受け取りは IDC_EDIT_DATE というエディットボックスになります。


    // -------------------------------------------------------------------
    // カレンダーを呼び出すボタンを押した
    // -------------------------------------------------------------------
    void CTestCalendarDlg::OnBnClickedBtnExecCalendar()
    {
        CGetCalendar* cal = new CGetCalendar((CEdit*)GetDlgItem(IDC_EDIT_DATE));
    }


なんとこれだけです(笑)。

実体化の時点でエディットボックスに日付が入っていた場合は、選択開始時のデフォルト日付となります。
エディットボックスに不正な文字列や不正な日付が入っていると、無視されて本日の日付がデフォルトとなります。


 Copyright 2005 VALGUS. All Rights Reserved.