ユーザがウィンドウでオプションを選択した後、Return Resultメッセージ、Getメッセージ、Get Selectedメッセージを使ってこれらの選択内容をウィンドウから取得することができます。
ユーザが[OK]をクリックしたときにNew Window()スクリプトによって自動的に結果が戻されるようにするには、Modalメッセージの後にReturn Resultメッセージを含めます。
win = New Window( "値の指定",
<<Modal,
<<Return Result,
Text Box( "この値を指定" ),
variablebox = Number Edit Box( 42 ),
Button Box( "OK" ),
Button Box( "キャンセル")
);
Write( win["variablebox"] ); // variablebox 変数を添え字として指定
33 // ユーザがNumber Edit Boxに「33」と入力した場合
チェックボックスが選択されている場合は1、選択されていない場合は0を戻すGetメッセージを含めます。選択内容を表示するには、スクリプトの終わりにShow()式を追加します。
win = New Window( "V List Box",
<<Modal,
V List Box(
kb1 = Check Box( "a" ),
kb2 = Check Box( "b" ),
kb3 = Check Box( "c" )
),
Button Box( "OK",
val1 = kb1 << Get; // 最初のチェックボックスの値を取得する
val2 = kb2 << Get;
val3 = kb3 << Get;
)
);
Show( val1, val2, val3 ); // ウィンドウが閉じた後に変数を戻す
val1 = 1; // 最初と2番目のチェックボックスは選択されていた
val2 = 1;
val3 = 0; // 3番目のチェックボックスは選択されていなかった
選択されている列の名前を戻すGet Selectedメッセージを含め、その列を「二変量」プロットに挿入します。
注: 値を取得する方法2と方法3は、例は異なりますが、方法としては同一です。どちらの例でも、ウィンドウ内にあるコントロールからのJSLコールバックを使用しています。JSLコールバックは、ウィンドウ内のディスプレイボックスの値をグローバル変数に割り当てることで、ウィンドウを閉じた後もその値が使用できるようにします。方法2では、ボタンボックスにJSLコールバックがあります。方法3では、リストボックスにJSLコールバックがあります。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
xvar = .;
yvar = .;
win = New Window( "値を戻す例",
<<Modal,
// ユーザに対し、[OK]をクリックする前に2つの変数を選択するよう求める
<<On Validate(
Show( xvar, yvar );
If( Is Missing( xvar ) | Is Missing( yvar ),
0, // xvarまたはyvarがない場合は、[OK]がクリックされても何もしない
1
);
),
Text Box( "2つの数値タイプの列を選択してください。" ),
H List Box(
Text Box( " X, 説明変数" ),
x = Col List Box(
dt, // データテーブル参照
all, // データテーブルの列をすべて表示する
xvar = (x << Get Selected)[1];
// ウィンドウが閉じる前に選択されている列の名前を取得する
Show( xvar );
),
Text Box( "Y, 応答変数" ),
y = Col List Box(
dt,
all,
yvar = (y << Get Selected)[1];
Show( yvar );
)
)
);
xcol = Column( dt, xvar ); // 列を取得する
ycol = Column( dt, yvar );
dt << Bivariate( Y( ycol ), X( xcol ) ); // 「二変量」プロットを作成する