掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
MonthCalendarで日付が選択されたかどうかを知るには? (ID:46859)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
TMonthCalendar の OnClick イベントで, カレンダーのどの部分をクリックしたかを検出するサンプルです. Form1 から Form2 を表示します. Form2 には TMonthCalendar を配置しておきます. 動作確認は,Windows 7 U64(SP1) + Delphi XE5(UP2) Pro です. --------------------- Form1 のコード --------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin Form2.Left := Self.Left + 100; Form2.Top := Self.Top + 200; Form2.ShowModal; Panel1.Caption := DateToStr(Form2.FDataTime); end; --------------------- Form2 のコード --------------------------------- type TForm2 = class(TForm) MonthCalendar1: TMonthCalendar; procedure MonthCalendar1Click(Sender: TObject); private { Private 宣言 } public public { Public 宣言 } FDataTime : TDateTime; //この値をForm1で取得する end; var Form2: TForm2; implementation uses CommCtrl; {$R *.dfm} { TForm2 } //----------------------------------------------------------------------------- // TMonthCalendarのOnClickイベント処理 // クリックしたマウスの位置を取得し // どんな通知メッセージでOnClickが発生したかを調べる // WM_NOTIFYメッセージで調べる方法もある(WMNotifyメソッド使用) // // usesにCommCtrlが必要 // (コモンコントロールの定数値やレコード型の定義等が書かれているユニット) //----------------------------------------------------------------------------- procedure TForm2.MonthCalendar1Click(Sender: TObject); var MousePos : TPoint; HitInfo : TMCHitTestInfo; begin GetCursorPos(MousePos); MousePos := MonthCalendar1.ScreenToClient(MousePos); HitInfo.cbSize := SizeOf(HitInfo); HitInfo.pt := MousePos; //MonthCal_HitTestマクロを使用 //Delphi XE以前では以下のメッセージを使用 //SendMessage(MonthCalendar1.Handle, MCM_HITTEST, 0, Longint(@HitInfo)); MonthCal_HitTest(MonthCalendar1.Handle, HitInfo); //クリックした場所が日付関係だったらこのフォームを閉じる if HitInfo.uHit and MCHT_CALENDARDAY <> 0 then begin FDataTime := MonthCalendar1.Date; ModalResult := mrOk; end; end; --------------------- Form2 のコード 終り --------------------------------- MCHT_CALENDARDAY については以下を参照. こういうメッセージ関係は,日本語はほとんどないので, [このページを訳す] をクリックしてみることになります. https://www.google.co.jp/search?num=50&site=webhp&source=hp&q=MCHT_CALENDARDAY+site%3Ahttp%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2F&oq=MCHT_CALENDARDAY+site%3Ahttp%3A%2F%2Fmsdn.microsoft.com%2Fen-us%2Flibrary%2F&gs_l=hp.12...0.0.2.41.0.0.0.0.0.0.0.0..0.0....0...1c..58.hp..14.0.0.80xrR1ghXVg コントロールの通知メッセージについては,以下を参照. MonthCalendar, DateTimePicker は,Windows (マイクロソフト) が提供しているコントロールです. こういうコントロールを一般的に「コモンコントロール」と言っています. コモンコントロール類を Delphi から利用するためのコードが ComCtrls ユニットにあります. ComCtrls, CommCtrl は,Common Control(s) の略でしょう.多分. [2−4 WM_NOTIFY での通知メッセージ] http://mrxray.on.coocan.jp/Halbow/VCL02.html#VChap2-4
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.