このバージョンのヘルプはこれ以降更新されません。最新のヘルプは https://www.jmp.com/support/help/ja/15.2   からご覧いただけます。


On Validateは、[OK]ボタンがクリックされると、式を評価します。他のボタンをクリックしたり、他の操作を行ったりしても式は評価されません。式の評価が真の場合、ウィンドウは閉じます。式の評価が偽の場合、ウィンドウは閉じません。[OK]ボタン用のスクリプトは、On Validateの式とは無関係に、[OK]ボタンがクリックされると必ず実行されます。
On Closeは、ウィンドウが閉じる直前に式を評価します。On Closeで戻される値は、On Validateの戻り値と同様に、ウィンドウを開いたままにする場合があります。しかし、On Closeを使う際の最良の方法は、常に1を戻すようにすることです。そうすれば、閉じないウィンドウを作成してしまうことがありません。
ウィンドウが閉じるとき、On Closeが評価されます。On Validateの式が偽を戻した場合はウィンドウが閉じないので、On Closeは評価されません。
ヒント: 
On Closeは、モーダルウィンドウと非モーダルウィンドウのどちらでも機能します。On Validateは、モーダルウィンドウでのみ機能します。
On Closeは[OK]と[キャンセル]を区別しないので、検証に使うことはできません。On Closeは、ウィンドウが閉じるときに必ず実行されるので、リソース(非表示のデータテーブルなど)の整理に利用できます。
On Validateをリソースの整理に利用しないでください。On Validateは、[キャンセル]ボタンまたは赤色の[閉じる]ボタンでは実行されないため、代わりにOn Closeを使うか、On Validateに加えてOn Closeを使うようにしてください。
ノンモーダルウィンドウであるレポートウィンドウがあり、整理する必要のあるリソースとして非表示のデータテーブルがあるとしましょう。On Closeスクリプトが、そのデータテーブルを閉じます。ユーザはデータテーブルが開いていることに気づかない場合が多く、たとえ気づいたとしても簡単に閉じる方法はないため、この方法はおすすめです。
dt = New Table( "無題", << Invisible,
    New Column( "x", Set Values( [1, 2, 3, 4] ) ),
    New Column( "y", Set Values( [4, 2, 3, 1] ) )
);
 
dt << Bivariate(
    y( dt:y ), x( dt:x ), <<On Close( Close( dt, "nosave" ) )
);
win = New Window( "検証例",
	<<Modal,
	<<Return Result,
	<<On Validate(
		If( (!Is Missing( variablebox << Get ) & 40 <= variablebox << Get <= 50),
			Return( 1 ), // そうでない場合は、ユーザが正しくない回答を入力した
			tb << Set Text(
				Match( Random Integer( 1, 3 ),
					1, "本当にそう思いますか?",
					2, "もう一度考えてみましょう。",
					3, "質問を読んでください。"
				)
			);
			Return( 0 );
		)
	),
	Text Box( "私は40~ 50の数字のうち1つを思い浮かべました。当ててください。" ),
	variablebox = Number Edit Box( .),
	H List Box( Button Box( "OK" ), Button Box( "キャンセル" ) ),
	tb = Text Box( "" )
);
 
New Window( "モーダルウィンドウ",
	<<Modal,
	Text Box(
		If(
			win["Button"] == -1, "調子のいいときにもう一度挑戦してください。",
			// キャンセルボタンまたは赤色の閉じるボタンをクリックした場合
			win["variablebox"] == 42, "よくできました!", // 42を入力した場合
			"もう一度挑戦してください。" // 42以外の値を入力してOK をクリックした場合
		)
	)
);