公開日: 04/01/2021

New WindowとDialogの違い

この節では、New Window()のディスプレイボックスと今後廃止されるDialog()スクリプトの違いを紹介します。表11.4は違いをまとめたものです。詳細については、表に続く節に解説があります。

表11.4 New WindowとDialogのディスプレイボックス

ボックスの種類

New Window

Dialog

文字列とリスト

win = New Window( "Combo Box",

<<Modal,

<<ReturnResult,

cb = Combo Box( {"真", "偽"} ),

);

Dialog( Title( "Combo Box" ),

cb = Combo Box( "真", "偽" ),

);

List BoxとCheck Box

win = New Window( "H List Box",

<<Modal,

<<ReturnResult,

H List Box(

kb1 = Check Box( "a" ),

kb2 = Check Box( "b" ),

kb3 = Check Box( "c" )

),

);

dlg = Dialog( Title( "H List" ),

H List(

kb1 = Check Box( "a", 0 ),

kb2 = Check Box( "b", 0 ),

kb3 = Check Box( "c", 0 )

),

);

項目の整列

win = New Window( "Line Up Box",

<<Modal,

<<ReturnResult,

V List Box(

Line Up Box(NCol(2),

Text Box("この値を設定"), var1=Number Edit Box(42),

Text Box("別の値を設定"), var2=Number Edit Box(86),

),

),

H List Box(

Button Box( "OK" ),

Button Box( "キャンセル")

);

// この式は、次の値を戻します。{Button( 1 )}

dlg = Dialog(

V List(

Line Up(2,

"この値を設定", variable=Edit Number(42),

"別の値を設定", var2=Edit Number(86)),

H List(Button("OK"), Button("キャンセル"))));

// この式は、次の値を戻します。{variable = 42, var2 = 86, Button(1)}

Radio Box

win = New Window( "Radio Box",

<<Modal,

<<ReturnResult,

Panel Box( "選択",

rbox = Radio Box( {"a", "b", "c"} )

)

);

dlg = Dialog( Title("Radio Buttons"),

rb = Radio Buttons( {"a", "b", "c"} ),

);

Text Edit Box

win = New Window( "Text Edit Box",

<<Modal,

<<ReturnResult,

V List Box(

Text Box( "文字列" ),

str1 = Text Edit Box( "The" ),

str2 = Text Edit Box( "quick" ),

)

);

dlg = Dialog(

Title( "Edit Text" ),

V List(

"文字列",

str1 = Edit Text( "The" ),

str2 = Edit Text( "quick" ), )

);

Number Edit Box

win = New Window( "Number Edit Box",

<<Modal,

<<ReturnResult,

V List Box(

Text Box("乱数"),

num1 = Number Edit Box(

Random Uniform()),

num2 = Number Edit Box(

Random Uniform() * 10),

...);

dlg = Dialog(

Title( "Edit Number" ),

V List(

"乱数",

num1 = Edit Number(

Random Uniform() ),

num2 = Edit Number(

Random Uniform() * 10 ),

...);

文字列とリスト

New Window()関数とDialog()関数の主な違いは、リストと文字列を引数として指定する方法にあります。New Window()の場合、項目をリストに入れる必要があります。Dialog()では、項目は一般にカンマで区切られます。たとえば、Combo Boxの次のような例を比べてみましょう。

win = New Window( "Combo Box", // モーダルのNew Window
	<<Modal,
	<<Return Result,
	cb = Combo Box( {"真", "偽"} ), // 項目を中括弧で囲んだリストで指定する
);
 
Dialog( Title( "Combo Box" ),// モーダルのDialog
	cb = Combo Box( "真", "偽" ), // 項目をカンマで区切って指定する

);

注: スクリプトは明示的に[OK]ボタンを定義していません。モーダルウィンドウの場合、[OK]ボタンは自動的に追加されますが、その他のボタンは明示的に定義してください。

さらに、空のテキストを含めるとき、Dialog()では" "という形で指定できますが、 New Window()の場合はText Box (" ")と指定する必要があります。New Window()の場合はText Box (" ")と指定する必要があります。

List BoxとCheck Box

New Window()では、H List Box()を使ってボックスを横に並べ、V List Box()を使ってボックスを縦に並べます。Dialog()では、代わりにH ListV Listを使用します。

注: H List Box()またはV List Box()を省略した場合、ボックスはデフォルトで縦に並べられます。

次の例は、横に並んだ3つのチェックボックスと、1つの[OK]ボタンのあるウィンドウを作成します。

win = New Window( "H List Box",
	<<Modal,
	<<Return Result,
	H List Box(
		kb1 = Check Box( "a" ),
		kb2 = Check Box( "b" ),
		kb3 = Check Box( "c" )
	),
);

同じウィンドウを、Dialog()H List()を使って作成します。

dlg = Dialog( Title( "H List" ),
	H List(
			kb1 = Check Box( "a", 0 ),
			kb2 = Check Box( "b", 0 ),
			kb3 = Check Box( "c", 0 )
    ),
);

項目の整列

New Window()で、指定の列数に項目を整列させるには、Line Up Box()を使用します。Dialog()では、Line Upを使用していました。

次の例は、Text Boxを1列に配置し、Number Edit Boxをもう1列に配置します。

win = New Window( "Line Up Box",
	<<Modal,
	<<Return Result,
	V List Box(
		Lineup Box( N Col( 2 ),
			Text Box( "この値を指定" ),
			var1 = Number Edit Box( 42 ),
			Text Box( "別の値を設定" ),
			var2 = Number Edit Box( 86 ),
 
		),
	),
	H List Box( Button Box( "OK" ), Button Box( "キャンセル" ) ) )
);

[OK]をクリックすると、次の結果がログウィンドウに表示されます。

リスト( 3個の要素)が割り当てられました。

図11.39 Windows(左)とmacOS(右)のDialogによるデフォルトの配置 

Image shown here

次は、同じウィンドウをDialog()Line Upを使って作成します。

dlg = Dialog(
	V List(
		Line Up( 2,
			"この値を設定", variable = Edit Number( 42 ),
			"別の値を設定", var2 = Edit Number( 86 )
		),
		H List( Button( "OK" ), Button( "キャンセル" ) )
	)
);

[OK]をクリックすると、次の結果がログウィンドウに表示されます。

{variable = 42, var2 = 86, Button(1)}

注: [OK]と[キャンセル]のボタンの位置は、OSの種類に応じ、ダイアログボックスのスタイルに合わせて調整されます。場合によっては、Button( "OK" )Button( "キャンセル" )の配置のために、H List Box()V List Box()Line Up Box()の設定が無効になることがあります。このためダイアログボックスが想定していたものと少し異なる場合もあります。

Radio Box

New Window()Dialog()のもう一つの違いは、Radio Boxの使用にあります。

New Window()でパネルを示す枠の中にラジオボタンを配置したい場合、Panel Box()コンテナを定義しなければなりません。

win = New Window( "Radio Box",
	<<Modal,
	<<Return Result,
	Panel Box( "選択",
		rbox = Radio Box( {"a", "b", "c"} )
	)
);

Dialog()では、Radio Buttons()は自動的にパネルボックス内に表示されます。

dlg = Dialog( Title( "Radio Button" ),
	rb = Radio Buttons( {"a", "b", "c"} ),
);

Text Edit Box

New Window()で、指定の文字列を含む編集可能なボックスを作成するには、Text Edit Box()を使用します。Dialog()では、Edit Text()を使用していました。

win = New Window( "Text Edit Box",
	<<Modal,
	<<Return Result,
	V List Box(
		Text Box( "文字列" ),
		str1 = Text Edit Box( "The" ),
		str2 = Text Edit Box( "quick" ),
		str3 = Text Edit Box( "brown" ),
		str4 = Text Edit Box( "fox" ),
		str5 = Text Edit Box( "jumps" ),
		str6 = Text Edit Box( "over" ),
		str7 = Text Edit Box( "the" ),
		str8 = Text Edit Box( "lazy" ),
		str9 = Text Edit Box( "dog" ) 	) );

次は、同じウィンドウをDialog()Edit Text()を使って作成しているものです。

dlg = Dialog(
	Title( "Edit Text" ),
	V List(
		"文字列",
		str1 = Edit Text( "The" ),
		str2 = Edit Text( "quick" ),
		str3 = Edit Text( "brown" ),
		str4 = Edit Text( "fox" ),
		str5 = Edit Text( "jumps" ),
		str6 = Edit Text( "over" ),
		str7 = Edit Text( "the" ),
		str8 = Edit Text( "lazy" ),
		str9 = Edit Text( "dog" )
	)
);

指定の文字列を含む編集可能なボックスを作成するもう1つの方法は、String Col Edit Box()を使用する方法です。たとえば、次のスクリプトは「String Col Edit Box」という名前のウィンドウを作成します。このウィンドウには「文字列」という名前の編集可能なボックスの列があり、各ボックスに指定の文字列が挿入されます。

win = New Window( "String Col Edit Box",
	<<Modal,
	<<Return Result,
	steb = String Col Edit Box(
		"文字列",
		{"The", "quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"}
	)
);

注: 前述の例でNew Window()がリストに割り当てる要素は2つだけです(「文字列」および指定されたリスト項目)。New Window()と廃止されたDialog()の例では、Text Edit Box()が10の要素をリストに割り当てています。

Number Edit Box

New Window()で、指定の数値を含む編集可能なボックスを作成するには、Number Edit Box()を使用します。Dialog()ではEdit Number()を使用していました。

win = New Window( "Number Edit Box",
	<<Modal,
	<<ReturnResult,
	V List Box(
		Text Box( "乱数" ),
		num1 = Number Edit Box( Random Uniform() ),
		num2 = Number Edit Box( Random Uniform() * 10 ),
		num3 = Number Edit Box( Random Uniform() * 100 ),
		num4 = Number Edit Box( Random Uniform() * 1000 )
	),
);

次は、同じウィンドウをDialog()Edit Number()を使って作成しているものです。

dlg = Dialog(
	Title( "Edit Number" ),
	V List(
		"乱数",
		num1 = Edit Number( Random Uniform() ),
		num2 = Edit Number( Random Uniform() * 10 ),
		num3 = Edit Number( Random Uniform() * 100 ),
		num4 = Edit Number( Random Uniform() * 1000 )
	),
);

同じウィンドウを作成するもう1つの方法は、Number Col Edit Box()を使って指定の数値を含む編集可能なボックスを作成する方法です。たとえば、次のスクリプトは「Number Col Edit Box」という名前のウィンドウを作成します。このウィンドウには「乱数」という名前の編集可能なボックスの列があり、各ボックスに指定した種類の乱数から得られた値が表示されます。

win = New Window( "Number Col Edit Box",
	<<Modal,
	<<ReturnResult,
	nceb = Number Col Edit Box(
		"乱数",
		{num1 = Random Uniform(), num2 = Random Uniform() * 10, num3 =
		Random Uniform() * 100, num4 = Random Uniform() * 1000}
	),
);

注: 前述の例でNumber Col Edit Box()がリストに割り当てる要素は2つです。Number Col Edit Box()New Window()と廃止されたDialog()の例では、5つの要素をリストに割り当てています。

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