公開日: 09/19/2023

New WindowとDialogの違い

この節では、New Window()のディスプレイボックスと今後廃止されるDialog()スクリプトの違いを紹介します。Table 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 (" ")と指定します。

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によるデフォルトの配置 

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

次は、同じウィンドウを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つだけです(文字列リストとボタンの2つだけです)。

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).