モーダルウィンドウを表示するスクリプトが実行されると、JMP はウィンドウを作成し、ユーザがそれに応答して[OK]をクリックするのを待ちます。ウィンドウの外をクリックしてもエラー音が鳴るだけで、ユーザが[OK]または[キャンセル]をクリックするまではスクリプトの実行が停止されます。
Column Dialog()関数は、ユーザに現在(最前面)のデータテーブルから列を選択させることに特化した機能です。Column Dialog()で作成されるウィンドウも、モーダルウィンドウです。
ヒント:
• 可能ならば、すべてのモーダルウィンドウをスクリプトの冒頭に置きます。そうすることで、ユーザとJMPの間のすべてのインタラクティブなやりとりが一度に行われ、その後はユーザがついていなくてもJMPが後の処理を進めます。
• 作成したモーダルウィンドウが、ユーザに必要な情報を提示するようにしてください。数値を入力するフィールドを作成するだけではなく、入力された数値がどのように使われるかも、ユーザに知らせるようにします。入力内容に制限がある場合はそれを伝えます。
シンプルなモーダルウィンドウの例として、変数の値を1つ指定させるものを考えてみます。
win = New Window( "値の指定",
<<Modal,
Text Box( "この値を指定" ),
variablebox = Number Edit Box( 42 ),
Button Box( "OK" ),
Button Box( "キャンセル")
);
Number Edit Box()の引数42がその変数のデフォルト値となることに注意してください。
図11.35 モーダルディスプレイボックスの例
[OK]をクリックすると、ウィンドウが閉じ、{Button(1)}が戻されます。ボックスに入力された値を取得するには、Return Resultメッセージを指定し、後でウィンドウに添え字を付けて記述します。将来廃止されるDialog()が、変数の割り当てのリストを戻していたのと同様です。
win = New Window( "値の指定",
<<Modal,
<<Return Result,
Text Box( "この値を指定" ),
variablebox = Number Edit Box( 42 ),
Button Box( "OK" ),
Button Box( "キャンセル")
);
// 変数名variableboxを添え字に指定する
Write( win["variablebox"] );
この例で、ユーザがNumber Edit Boxに「33」と入力ししたとしましょう。この値は、winに格納されます。
[キャンセル]をクリックすると、ウィンドウは閉じ、{Button(-1)}が戻されてスクリプトの実行が継続されます。
ユーザが[キャンセル]をクリックしたかどうかを検出するには、次の式を追加します。
If( win["Button"] == 1,
Print( win["variablebox"] );
,
Print("キャンセルされました。")
);
モーダルウィンドウには、少なくとも1つのボタンが必要です。スクリプトにButton Box()が含まれない場合、[OK]ボタンが1つ自動的に含められます。[OK]ボタンを表示しないようにするには、<<Visibilityに”Collapse”を指定します。
win = New Window( "[OK]ボタンを表示しない例",
<<Modal,
b = Button Box( "ウィンドウを閉じる", b << Close Window ),
bb = Button Box( "OK", <<Visibility( "collapse" ) )
);
注: モーダルウィンドウには、ウィンドウを閉じるためのボタンが少なくとも1つ必要です。モーダルウィンドウのボタンのラベルには、[OK]、[Yes](はい)、[No](いいえ)、または[Cancel](キャンセル)が使用できます。モーダルウィンドウにボタンがまったく含まれていない場合、JMPは[OK]ボタンを追加します。