New Window()とColumn Dialog()は、どちらも列の選択ができる起動ウィンドウを作成できます。シンプルな起動ウィンドウを作成する場合は、Column Dialog()を使用してください。[削除]ボタン、[キャンセル]ボタン、列のリスト、[OK]ボタン(特にボタンが定義されていない場合)といった要素が自動的に追加されます。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dlg = Column Dialog(
x = ColList( "X", Max Col( 1 ) ),
y = ColList( "Y", Max Col( 1 ) )
);
Show( dlg );
// dlg = { x = {:weight}, y = {:height}, Button(1)};を戻す
If( dlg["Button"] == 1,
xCol = dlg["x"];
yCol = dlg["y"];
);
Show( xCol, yCol );
// xCol = {:height};を戻す
// yCol = {:weight};を戻す
New Window()は、オプションの引数が多数あり、より柔軟です。次の例では、ユーザは、2つの列を選択しないと[OK]ボタンをクリックできません。[OK]をクリックすると、二変量のグラフが作成されます。このような選択内容の検証は、Column Dialog()では実行できません。
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
xvar = .;
yvar = .;
win = New Window( "戻り値の確認の例",
<<Modal,
<<On Validate(
// ユーザに対し、[OK]をクリックする前に2つの変数を選択するよう求める
Show( xvar, yvar );
If( Is Missing( xvar ) | Is Missing( yvar ),
// xvarまたはyvarがない場合は、[OK]がクリックされても何もしない
0,
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 );
)
)
);
If (win["Button"] == 1, // ユーザがOKをクリックしたら...
xcol = Column( dt, xvar ); // 列を取得する
ycol = Column( dt, yvar );
dt << Bivariate( Y( ycol ), X( xcol ) ); // 「二変量」プロットを作成する
);