MS Access Tips/Sample and VBA and Blog customize etc...

カレンダーダイアログ日付入力関数の改良版

以前の記事 カレンダーコントロールを利用した日付入力汎用関数 でカレンダーダイアログを表示させて日付を入力する関数を紹介しましたが、それは画面の中央にカレンダーダイアログが表示されるので、入力テキストボックスが画面の端にあると離れた場所に表示されることになり、それが不満でした。

今回は、前回の関数を改良して、入力テキストボックスのすぐ隣に表示されるようにしました。さらに、コンボボックスのドロップダウンリストのように表示されるバージョンも追加しました。

CalenderDlg2.jpg

難易度:

以前の記事 カレンダーコントロールを利用した日付入力汎用関数 を読んでない方は先に読んでおいてください。

入力テキストボックスの隣に表示するには、その位置(スクリーン座標)を知る必要があります。これを知るには WinAPI を使うことになります。この方法は、このブログからもリンクさせていただいている 雅のプログラム研究所 で紹介されています。
帳票フォームの詳細にあるテキストコントロールの座標を知る方法
今回はこれを利用させていただきました。

標準モジュールのCallCalendar関数は前回のままです。F_Calendarフォームの「自動中央寄せ」プロパティは「いいえ」にします。フォームモジュールは下記のようになります。

これで、テキストボックスの右隣にカレンダーダイアログが表示されます。単票フォームでも帳票フォームでもサブフォームでもOKです。

ドロップダウンリスト風カレンダーダイアログ

F_Calendar をコピーして名前を F_CalendarDropDown としてください。フォームプロパティを下記のように設定します。

レコードセレクタ  いいえ 
サイズ自動調整    はい 
移動ボタン  いいえ 
自動中央寄せ  いいえ 
境界線スタイル  なし 
ポップアップ  はい 

F_CalendarDropDown のフォームモジュールは下記のように記述します。

「タイマ間隔」プロパティは 50 ぐらいに設定しておきます。

標準モジュールに下記の関数を作成します。

関数とテキストボックスやコマンドボタンとの関連づけは前回と同じです。

サンプルファイルが下記からダウンロードできます。
CalendarDlg2_07.zip (Access 2007-2010 形式 - 52kb)
CalendarDlg2.zip (Access 2002-2003 形式 - 53kb)
CalendarDlg2_2k.zip (Access 2000 形式 - 51kb)

拍手する

-7 Comments

雅 says...""

おはようございます。雅です。

記事を紹介していただきましてありがとうございます。
ほかにもネタになるものがあれば使ってやってください(^o^)

# こんなの何に使うんだ的なネタを生かしていただきありがとうございますです

でわ。

2009.06.16 09:43 | URL | #llOsW3ec [edit]
hatena says..."雅さん、コメントありがとう。"

雅さんのところには、他にはない情報が多いので、参考になります。
特にAPI関係はすごいですね。

また利用させていただくことがあると思います。

では、では。

2009.06.17 08:01 | URL | #5uE6dEgY [edit]
ku- says...""

こんにちは
いつも参考にさせていただいております。

この度こちらのサンプルをダウンロードさせていただいたのですが、カレンダーを開くと「このコントロールにはオブジェクトがありません」というエラーが出てしまいます。
こちらの設定が何かおかしいのでしょうか?
お忙しいところ申し訳ありませんが、教えていただけると有難いです。
よろしくお願い致します。

2017.08.21 12:07 | URL | #- [edit]
hatena says..."re: ku- saystさん"

このページのサンプルはAccess2007以前のバージョンが対象です。
2010以降では提示のエラーが出て動作しません。
下記のページのサンプルを使用ください。

カレンダーダイアログ日付入力関数 祝日表示対応版 - hatena chips
http://hatenachips.blog34.fc2.com/blog-entry-191.html

2017.08.21 15:53 | URL | #5uE6dEgY [edit]
ku- says..."re:re: ku- saystさん"

> hatenaさん

お返事ありがとうございます。
そうなんですね!
そちらの方も使用してみたのですが、ボタン押下の際にカレンダーを表示させたくて試してみたところ、テキストボックスをダブルクリックでは上手くいくのですがボタンに変えるとカレンダーの表示位置が変わってしまうため、こちらがボタン対応しているようなので使わせていただきたいと思って質問させていただきました。
新しいバージョンの方でもボタンに対応させることって可能でしょうか?

2017.08.23 12:16 | URL | #- [edit]
hatena says..."re:re:re: ku- saystさん"

> 新しいバージョンの方でもボタンに対応させることって可能でしょうか?

このバージョンと同様にボタンに対応してます。同じ方法で可能なはずです。
コマンドボタンのクリック時欄に下記の式を設定。

=CallCalendar([テキストボックス名])

2017.08.23 16:00 | URL | #5uE6dEgY [edit]
ku- says...""

> hatenaさん

できました!
ありがとうございました!

2017.08.25 11:33 | URL | #- [edit]

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/116-a4b733bb
該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。