ユーザーに範囲内の入力を強制するこんにちは。私は JMP をあまり使用したことがないので、ユーザーが無効な数値を入力できないようにエラーをスローするスクリプトの書き方がわかりません。 最終的に変数に保存される数値をユーザーに入力してもらいたいのですが、その数値が 1 ~ 4 の範囲外の場合は入力を再度求めるプロンプトが表示されます。
これは、エラーチェックを行わずにこれまでのところ持っているものです:
Names Default To Here (1);
num = 0;
w = New Window( "Prompt",
<<MODAL></MODAL>
これを達成するための助けや提案をいただければ幸いです。
品質およびプロセスエンジニアリングRe: ユーザーに範囲内の入力を強制する関数呼び出しの後に閉じるウィンドウを追加するだけです。
b1 = button box("First Program",
program1();
nw << close window();
),
Re: ユーザーに範囲内の入力を強制するそれは完璧に機能します! 再度、感謝します!
Re: ユーザーに範囲内の入力を強制する新しいウィンドウの後に追加のコードがある場合は、<< モーダルを使用して新しいウィンドウをモーダル ウィンドウに変更できます (その他の小さな変更が必要になる場合があります)。 この例では、<
nw = new window("Test Options", << modal,
panel box("Click the button to run the desired program",
lineup box(ncol(1),
b1 = button box("First Program",
program1();
okBtn << Click();
),
b2 = button box("Second Program",
program2();
okBtn << Click();
),
b3 = button box("Third Program",
program3();
okBtn << Click();
),
b4 = button box("Fourth Program",
program4();
okBtn << Click();
),
),
),
h list box(okbtn = Button Box("OK"), cancelBtn=ButtonBox("Cancel"))
);
Show("shouldnt execute before window is closed");Re: ユーザーに範囲内の入力を強制する再編集: 実際には、新しいウィンドウ内でボタンの実行後に来るコードは、何らかの理由でボタンにリンクされているプログラムより前に実行されているようです。 なぜこれが起こっているのか知っている人はいますか?
Re: ユーザーに範囲内の入力を強制するそれは素晴らしいことです! それは私の目的にはうまくいくと思います。共有してくれてありがとう! 最後に、これはそれほど重要な機能ではありませんが、プログラムを実行するボタンを押すと、ユーザーが「終了」を押さなくてもウィンドウが自動的に閉じる方法があるかどうかご存知ですか?
Re: ユーザーに範囲内の入力を強制するすべてのユーザーがアクセスできるファイル共有上のファイルを参照する場合は、機能します。
実行するプログラムをメインの JSL コード自体に別個の関数として含めることもできます。以下に例を示します。
// First program
program1 = function({},
show("Running program1");
// JSL code for first program
);
// Second program
program2 = function({},
show("Running program2");
// JSL code for second program
);
// Third program
program3 = function({},
show("Running program3");
// JSL code for third program
);
// Fourth program
program4 = function({},
show("Running program4");
// JSL code for fourth program
);
nw = new window("Test Options",
panel box("Click the button to run the desired program",
lineup box(ncol(1),
b1 = button box("First Program",
program1();
),
b2 = button box("Second Program",
program2();
),
b3 = button box("Third Program",
program3();
),
b4 = button box("Fourth Program",
program4();
),
),
),
bexit = button box("Exit",
nw << close window();
),
);
関数の詳細については、JSL ドキュメントを参照してください。
Re: ユーザーに範囲内の入力を強制するやあ! それは問題に対する素晴らしいアプローチです。 ただし、すべてのプログラム スクリプトを共有して、コードを持っている人がボタンにリンクされた同じプログラムを実行できるようにすることはできるでしょうか? それとも、ファイル ディレクトリ パスが .jsl スクリプトをダウンロードする人にとって固有のものである場合、それは不可能でしょうか?
Re: ユーザーに範囲内の入力を強制するユーザーが選択した内容 (1 ~ 4) に応じて異なるプログラムを実行したい場合は、代わりにボタンを使用します。これは次のようになります。

コードは次のとおりです。ボタンを囲むためにパネル ボックスを使用し、ボタン ボックスの両側を揃えるためにラインナップ ボックスを使用していることに注意してください。実行するプログラムは c:\myfiles に保存され、program1.jsl、program2.jsl などと呼ばれます。フォルダー名と JSL プログラム名は状況に応じて変更してください。
nw = new window("Test Options",
panel box("Click the button to run the desired program",
lineup box(ncol(1),
b1 = button box("First Program",
include("c:\myfiles\program1.jsl");
nw << close window();
),
b2 = button box("Second Program",
include("c:\myfiles\program2.jsl");
nw << close window();
),
b3 = button box("Third Program",
include("c:\myfiles\program3.jsl");
nw << close window();
),
b4 = button box("Fourth Program",
include("c:\myfiles\program4.jsl");
nw << close window();
),
),
),
bexit = button box("Exit",
nw << close window();
),
);Re: ユーザーに範囲内の入力を強制する改めて本当にありがとうございます、とても助かりました!
Re: ユーザーに範囲内の入力を強制するそれは同じはずですが、少し奇妙に見えます。 Scripting Index のモーダル例を使用すると、次のようになります。
この部分は基本的に if の条件 1 です。
ex = New Window("Dialog() example",
<<MODAL></MODAL>そしてこれが結果です1
ex["variable"]
そして returnElse:
"CANCEL"
これらの結果と、基本的に if 条件の結果に応じて実行される最後の行は、ログに出力されます。 これは、次の 2 つの短いスクリプトでテストできます。
a = 1; //will print 1 to Log as this is the only and last row in script
a = 1;
Write(); //will print this as it is the last row of code
ex 変数がどのように機能するかを知りたい場合は、スクリプト インデックスで例を実行し、最後に Show(ex) を追加することで、かなり簡単に確認できます。
以下は、括弧とコメントを追加することで if ステートメントをもう少し明確にし、ex 変数に Show() を追加した例です。
Names Default To Here(1);
If(
( //condition1 starts
ex = New Window("Dialog() example",
<<MODAL></MODAL>(Show() により、「キャンセル」が押されたとき「CANCEL」はコードの最後の行ではないため、出力されないことに注意してください。これにより、キャンセルが押された場合でも変数値が更新されることもわかります)
すべてを正しく説明できれば幸いです。 詳細については、JMP ヘルプとスクリプト ガイドを参照してください。モーダルウィンドウを構築する
Re: ユーザーに範囲内の入力を強制するそれは最高です! どうもありがとうございます! :^)
学習目的で、コードの終わりは何を意味しますか? 私は通常、その If(条件 1, 結果 1, 条件 2, 結果 2, ..... resultElse); を知っています。しかし、私はこれに精通していません:
ex["button"] == 1;
,
ex["variable"],
"CANCEL
Re: ユーザーに範囲内の入力を強制するそのためには << On Validate() を使用できると思います。
Names Default To Here(1);
If(
ex = New Window("Dialog() example",
<<MODAL></MODAL>
編集:
それともボタンをグレー表示/無効にするという意味ですか?
Names Default To Here(1);
If(
ex = New Window("Dialog() example",
<<MODAL></MODAL>Re: ユーザーに範囲内の入力を強制するそれは良いアイデアです! 残念ながら、これでは、ユーザーが誤って 6 を入力したが、本当は 3 を入力したかった場合、その入力は自動的に 4 として選択されてしまいます。 問題が少し複雑だったらごめんなさい。
Re: ユーザーに範囲内の入力を強制する値が 1 ~ 4 でない限り、ユーザーが [OK] ボタンを押してウィンドウを終了できないようにする方法はありますか? このままでは、ユーザーはウィンドウを終了でき、入力は 0 に設定されると思います。
Re: ユーザーに範囲内の入力を強制する以前はこれを見ていませんでした(または、見たことがあり、忘れていました)。 << Set Minimum と << Set Maximum の使用:
Names Default To Here (1);
num = 1;
w = New Window( "Prompt",
<<MODAL></MODAL>
Re: ユーザーに範囲内の入力を強制するこのような実装には Radio Box を使用する方が簡単ではないでしょうか。
Names Default To Here(1);
New Window("Example", rb = Radio Box({"True", "False", "None of the above"}, Print("Selection Changed")));Re: ユーザーに範囲内の入力を強制するこんにちは、ご返信ありがとうございます! ユーザーの間違いに合わせてコードを調整するのではなく、ユーザーが範囲内の数値を選択するように強制したいと考えています。 たとえば、各数値が実行されるコードに関連付けられると考えています。
Names Default To Here (1);<BR />num = 0;<BR />w = New Window( "Prompt",
<<MODAL></MODAL>
その後、input == 1 の場合はこのコードを実行し、input == 2 の場合は別のコードを実行するという if ステートメントをコーディングします。 したがって、私の状況では、範囲外の場合に数値が 1 または 4 に自動修正されることは望ましくありません。 わかりにくかったらごめんなさい!
Re: ユーザーに範囲内の入力を強制する数値編集ボックスを使用して、入力の下限と上限を設定したり、境界が有効かどうかを宣言したりすることもできます。 チェックするために式や関数を記述する必要はありません。 このディスプレイボックスにはすでに組み込まれています。
Re: ユーザーに範囲内の入力を強制するこれは、値 1 ~ 4 のみを許可する要件を処理するコードの変更です。
Names Default To Here( 1 );
num = 0;
input = 0;
w = New Window( "Prompt",
<<MODAL> 4 | str1 << get < 1,
str1 << set( 0 )
)
)
)
),
H List Box( Button Box( "Cancel" ), Button Box( "OK" ) )
),
);
If( w["button"] == 1,
input = w["str1"]
);
Show( input );</MODAL>Re: ユーザーに範囲内の入力を強制する何らかの方法で set 関数を使用できます。
以下は、ユーザーが 1 未満の値を入力しようとすると値が 1 に設定され、ユーザーが 4 を超える値を入力すると値が 4 に設定される例です。
Names Default To Here (1);
num = 1;
w = New Window( "Prompt",
<<MODAL> 4, this << set(4)
);
))
)
),
);
input = w["str1"];
show(input);</MODAL>