RCMenu において修正された .Checked プロパティと .Enabled プロパティ

3ds Max 8 以降で使用可能です。ダイアログ ボックスで使用する RCMenu のメニュー項目は、menuItem の .enabled プロパティと .checked プロパティが変更されたときに、正しく更新されるようになりました。

テスト ケース:

try (destroyDialog ro_vPropShop3) catch ()
rcmenu rc_Main
(
  local testval = false
  subMenu "Options"
  (
    subMenu "Placement Options"
    (
      menuItem mi_align "Align to face"checked:testval
      menuItem mi_art "Make Art"
      menuItem mi_pict "Make Picture"checked:false
    )
  )
  menuItem mi_halt "Halt and Catch Fire"
  on mi_align picked do (print "picked";testval = not testval)
  on rc_Main open do (print "opened")
  on rc_Main update do (print "update")
)
rollout ro_vPropShop3 "vPropShop3" ( )
createDialog ro_vPropShop3 width:600 height:400 \
  bgColor:[153,153,153] menu:rc_Main \
  style:#(#style_titlebar, #style_sysmenu, #style_minimizebox, #style_resizing)

[オプション](Options)/[Placement Options]/[Align to Face]を選択してからその項目を再び開くと、その項目にはチェックマークが付きます。これまでは、チェックマークなしで表示されていました。その他の項目を選択しても、これは実行されません。スクリプトで状態をトラックするように変数を設定する必要があります (menuItem mi_align の testval)。

注:

ダイアログ ボックスで RCMenu を使用すると、ダイアログ ボックスが作成されるときに open ハンドラが 1 回呼び出されます。

RCMenu に追加された「update」イベント ハンドラ

いずれかの最上位 subMenu または menuItem を初めてクリックすると、このイベント ハンドラが呼び出されます。メニュー項目にフォーカスが設定されるたびに 1 回だけ、このイベント ハンドラは呼び出されます。[オプション](Options)をクリックするとこのイベント ハンドラが呼び出されますが、[オプション](Options)と[Halt and Catch Fire]の間でマウスを前後に動かしたり、メニュー項目をクリックしたりすると、このイベント ハンドラは呼び出されません。このイベント ハンドラは、enabled キーワード パラメータと checked キーワード パラメータが評価されたあとで呼び出され、このプロパティに新しい値を設定できます。checked プロパティか enabled プロパティにキーワード パラメータを指定していない場合、キーワード パラメータの処理時にそのプロパティ値は変更されません (たとえば最初の作成後は、このプロパティには既定値がありません)。

テスト ケース:

rc_Main.mi_align.enabled = not rc_Main.mi_align.enabled

rc_Main.mi_art.checked = not rc_Main.mi_art.checked
rc_Main.mi_art.enabled = not rc_Main.mi_art.enabled

rc_Main.mi_pict.checked = not rc_Main.mi_pict.checked
rc_Main.mi_pict.enabled = not rc_Main.mi_pict.enabled

rc_Main.mi_halt.checked = not rc_Main.mi_halt.checked
rc_Main.mi_halt.enabled = not rc_Main.mi_halt.enabled

上記の実行後、すべての menuItem は無効になり、[Align to Face]と[Make Art]にチェックマークが付いて[Make Picture]にはチェックマークが付きません。[Make Picture]には、キーワード パラメータ checked:false があるためにチェックマークが付きません。

RCMenu を開くと、ローカル変数が再初期化されることに注意してください。

使用できません。

rcmenu MyRCmenu4
(
  local isChecked = false
  menuItem mi_xx "test slot"checked:isChecked
  on mi_xx picked do isChecked = not isChecked
  on MyRCmenu4 open do (print "opened")
)
popupmenu MyRCmenu4
popupmenu MyRCmenu4

MyRCmenu4 が表示されるたびに isChecked が false に設定されます。

RCMenu の範囲外に持続状態を保存する必要があります。

例:

isChecked = false
rcmenu MyRCmenu4
(
  menuItem mi_xx "test slot" checked:isChecked
  on mi_xx picked do isChecked = not isChecked
)
popupmenu MyRCmenu4

関連事項