今回は MAXScript リファレンスにのっとってフォームにカレンダーコントロールを貼り付けてみます。
rollout dotNETsample ".NET Sample" width:200 height:220
(
-- カレンダークラスを作成
dotNetControl calendar "MonthCalendar" width:180 height:200
-- カレンダーの MouseDownイベントハンドラ
on calendar MouseDown sender val do
(
if val.Button == (dotNetClass "MouseButtons").Left do
(
format "in mousedown handler: sender: %\n" sender
format "in mousedown handler: arg: %\n" val
)
)
-- 起動時に処理する物
on dotNETsample open do
(
calendar.ForeColor = calendar.ForeColor.Pink -- 前景色をピンク
)
)
createDialog dotNETsample
今回のサンプルではダイアログに表示させるので、rollout() と createDialog を使用しています。
rollout は一画面を構成するクラスであると解釈していただければ問題ありません。
内部にコントロールインスタンス生成、イベントハンドラ等の処理が記述できます。
今回は dotNETsample ロールアウトのオープン時にカレンダーコントロールの前景をピンクに、
calendar コントロールでクリックされた時に引数 sender, val の型情報をリスナーに出力しています。
<<出力結果>>
in mousedown handler: sender: dotNetControl:calendar:System.Windows.Forms.MonthCalendar
in mousedown handler: arg: dotNetObject:System.Windows.Forms.MouseEventArgs
はい。ちゃんと出てます。
また、イベントハンドラの引数は省略できます。
on calendar MouseDown do () -- 引数を一切使用しない場合
on calendar MouseDown val do () -- EventArgsパラメータだけ使用したい場合
on calendar MouseDown sender val do () -- SenderObjectとEventArgsパラメータを使用したい場合
上記3パターンで記述することが可能なので、状況に応じて使いわけると判りやすくていいかもしれません。
つづく...