[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2007/02/05(Mon) 13:02
投稿者名:ダンボ
Eメール:
URL :
タイトル:
Calendarコントロールへの書き込み
Calendarコントロールの月/年変更時.. - Edward 01/31-19:41 No.8316
の便乗質問です。

予定表を表示するために、かねがねCalendarコントロールを使えると良いなあと思っているのですが、
各日付の枡に折角それらしい余地があるのに、VBからは書き込めません。「書き込めるCalendar」
というシェアウェア/フリーソフトもありますが、どなたかこのMicrosoft Access Calendar Controlの
任意の日付の枡に文字を書き込んだ方はいらっしゃいませんか?

投稿時間:2007/02/05(Mon) 22:19
投稿者名:neptune
Eメール:
URL :
タイトル:
Re: Calendarコントロールへの書き込み
こんにちは

興味深いので私も期待してます。
>どなたかこのMicrosoft Access Calendar Controlの
> 任意の日付の枡に文字を書き込んだ方はいらっしゃいませんか?
記憶ですが、むか〜し、弁士さんだったかな??(間違いならごめんなさい)
このコントロールは描画している旨のことを見かけたことがあります。

もしそうなら、かなりややこしいことになりそうですね。
いっその事「書き込めるCalendar」を自作するほうが簡単かも?

投稿時間:2007/02/06(Tue) 09:47
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^2: Calendarコントロールへの書き込み
> >どなたかこのMicrosoft Access Calendar Controlの
> > 任意の日付の枡に文字を書き込んだ方はいらっしゃいませんか?
> 記憶ですが、むか〜し、弁士さんだったかな??(間違いならごめんなさい)
> このコントロールは描画している旨のことを見かけたことがあります。

記憶にないです(^^;)けど、召喚されたらしいので、調べてみました。


とりあえず、MSCAL.OCX ver.8.0 をフォームに貼って、SPY++ で確認してみると、

├[ウィンドウ hhhhhhhh 'Form1' ThunderFormDC]   …… VB6 のフォーム
│└[ウィンドウ hhhhhhhh '' CalendarWndClass]   …… カレンダー コントロール
│ ├[ウィンドウ hhhhhhhh '2' ComboBox]   …… 恐らく、「月」のドロップダウンリスト
│ └[ウィンドウ hhhhhhhh '2007' ComboBox]   …… 恐らく、「年」のドロップダウンリスト

のように、子ウィンドウは 2 つしか持たず、日付部に対しては
ウィンドウハンドルが割り当てられていないようです。
また、カレンダー自身のメンバをオブジェクト ブラウザで見ても、
「任意の日付の枡に文字を書き込む機能」は見当たりません。


一応、プログラムから無理に処理するとなれば、
 1. GetDC API で、コントロールのウィンドウハンドルからデバイスコンテキストを取得。
 2. DrawText または TextOut API で、任意の座標に文字列を描画。
 3. ReleaseDC API で、デバイスコンテキストを解放。
のようにすれば描画できることまでは確認しました。

本気で実装するとなれば、さらに、コントロールのウィンドウハンドルの取得、
描画先の座標位置の計算、再描画のタイミング調査なども必要になりますので、
やはり、カレンダーを自作した方が、遙かに楽ということになってくるでしょうね。

投稿時間:2007/02/06(Tue) 13:35
投稿者名:neptune
Eメール:
URL :
タイトル:
Re^3: Calendarコントロールへの書き込み
こんにちは

> 記憶にないです(^^;)けど、召喚されたらしいので、調べてみました。
ホントにすみません。m(_ _)m
お手を煩わせてしまいました。

> とりあえず、MSCAL.OCX ver.8.0 をフォームに貼って、SPY++ で確認してみると、
省略
> のように、子ウィンドウは 2 つしか持たず、日付部に対しては
> ウィンドウハンドルが割り当てられていないようです。
> また、カレンダー自身のメンバをオブジェクト ブラウザで見ても、
> 「任意の日付の枡に文字を書き込む機能」は見当たりません。
私も一応ここまでは見たんですけどね^ ^;;;

> 一応、プログラムから無理に処理するとなれば、
>  1. GetDC API で、コントロールのウィンドウハンドルからデバイスコンテキストを取得。
>  2. DrawText または TextOut API で、任意の座標に文字列を描画。
>  3. ReleaseDC API で、デバイスコンテキストを解放。
> のようにすれば描画できることまでは確認しました。
やはりAPIゴリゴリでなければ駄目なようですね。

> やはり、カレンダーを自作した方が、遙かに楽ということになってくるでしょうね。
やはりそういうことになりますね。はるかに楽で、堅いようですね。

お手を煩わせてしまいましたが、やっぱりかと、納得いたしました。
本当にありがとうございました。

ダンボさん>
こういうことのようです。
私も自作したことありますが、そんなには時間はかかりませんでしたよ。

投稿時間:2007/02/06(Tue) 14:08
投稿者名:ダンボ
Eメール:
URL :
タイトル:
Re^4: Calendarコントロールへの書き込み
> > のように、子ウィンドウは 2 つしか持たず、日付部に対しては
> > ウィンドウハンドルが割り当てられていないようです。
> > やはり、カレンダーを自作した方が、遙かに楽ということになってくるでしょうね。

はい。せめて日付部が独立したウィンドウになっていればOCX乗っ取りもやる気になると
いうものですが、座標計算してTextOutするのならば全部自前で出きてしまいます。


ざっと検索したところ、これなんか素敵なOCXでした。

株式会社ナルボ イージーカレンダ ちょっと高い10本で\28,000。
http://www.knowlbo.co.jp/PRODUCT/ecalendar/index.htm