ユーザーに範囲内での入力を強制するこんにちは、私は 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: ユーザーに範囲内での入力を強制する新しいウィンドウの後に追加のコードがある場合は、新しいウィンドウを << modal でモーダル ウィンドウに変更できます (その他の小さな変更が必要になる場合があります)。 この例では、<
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 の condition1 です。
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(condition 1, result 1, condition 2, result 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>
その後、if ステートメントをコーディングします。ここで、入力 == 1 の場合はこのコードを実行し、入力 == 2 の場合は別のコードを実行します。 したがって、私の状況では、範囲外の場合に数値を 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>