スクリプトガイド > 表示ツリー > モーダルウィンドウ > モーダルウィンドウを作成する
公開日: 04/01/2021

モーダルウィンドウを作成する

モーダルウィンドウを表示するスクリプトが実行されると、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 モーダルディスプレイボックスの例 

Image shown here

[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]ボタンを追加します。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).