スクリプトガイド > 表示ツリー > 独自のウィンドウの作成 > ウィンドウから値を取得する
公開日: 09/19/2023

ウィンドウから値を取得する

開発者が独自のウィンドウを作成した場合で、ユーザがそのウィンドウで選択したオプションを取得するには、3つの方法があります。以下で、それら3つの方法(Return Resultメッセージ、Getメッセージ、Get Selectedメッセージを使う方法)を紹介します

値の取得: 方法1

ユーザが[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」と入力した場合

値の取得: 方法2

次の例では、チェックボックスが選択されている場合は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番目のチェックボックスは選択されていなかった

値の取得: 方法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 ) ); // 「二変量」プロットを作成する
より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).