モーダルウィンドウで以前の選択に基づいてチェックボックスを変更する(または表示またはアクティブにする)にはどうすればよいですか?次のスクリプトでは、次のことを実行したいと思います。
TestTech の選択に基づいて、適切な TestStage チェック ボックス リストが表示されるようにします (現れるそうでない場合は優先されます活発になるすべてのオプションを表示する必要がある場合)。それで、
- Tech1 が選択されている場合、_Tech1 を持つすべての TestSages がユーザーに選択可能になるはずです
- Tech2 が選択されている場合、_Tech2 を持つすべての TestSages がユーザーに選択可能になるはずです。 このリストは以下にコメントされています
- Tech3 が選択されている場合、_Tech3 を持つすべての TestSages がユーザーに選択可能になるはずです。 このリストには以下のコメントが付けられます。
また、各リストの下で「すべて選択」オプションを使用できるようにしたいと考えています。
これを行う方法?
Names Default To Here( 1 );
Clear Log ();
listInd = {};
returned2 = {};
win = New Window( "Select Tech & TestStage", << modal,
V List Box (
tb1=Text Box("Select Tech", << set font style("bold")),
cb1 = List Box(
{"Tech1", "Tech2", "Tech3"},
returned1 = (cb1 << Get Selected());
listInd= cb1 << Get Selected Indices;
),
tb1=Text Box("Select one or more TestStage", << set font style("bold")),
cb2 = Check Box(
{"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1"},
//{"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2"},
//{"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"},
returned2 = (cb2 << Get Selected());
),
tb3=Text Box("Query TestDate (last 6 months selected by default)", << set font style("bold")),
end_date = Today();
start_date = Date Increment(end_date, "month", -6, "actual");
cb3 = H List Box(
Text Box("From:"),
scal = Number Edit Box(
start_date,
<<SET format=""></SET>
自動化とスクリプト作成ウィンドウズRe: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?これにより、何ができるかアイデアが得られるかもしれません
Names Default To Here(1);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel),
cur_cb_values = Filter Each({val}, cb_values,
cur_tech = Word(2, val, "_");
Contains(cur_sel, cur_tech);
);
,
cur_cb_values = cb_values;
);
cb2 << Set items(cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiありがとう。 スクリプトの実行は、すべてを表示することから始まります。テストステージ下テストステージデフォルトでは (下に貼り付けられています)、その後 1 回だけ技術が選択されている場合は、必要に応じて動作します。
最初に何も表示されないようにスクリプトを変更できますか?テストステージ選択テキストを選択してから、技術が選択されている場合、適切な/利用可能な TestStages を表示しますか?

Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?cb_values の代わりに空のリストを使用してチェック ボックスを初期化できます。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi私はすでに試しました
cb_values = {};しかし、私はこれを正しく配置していないと思います。 このステートメントはどこに行けばよいでしょうか?
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?ここは、これらの値を初めて設定する場所です

また、選択が行われていないときに常に空にしたい場合は、 expr_update_cb に小さな変更を加える必要があります。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi 。 その場合、私は
cb_values = {};正しくは行われていますが、小さな変更は行われていませんexpr_update_cb。上記の行を cb2= Check Box(... の前に置くだけでは、一度必要な処理は実行されません技術が選択されます。 考え.......
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?チェック ボックスを cb_values ではなく空のリストで初期化します (これらは別のものです)。
式の中で、これは考慮する必要がある (そして理解する必要がある) 部分です。

ここで if 文が使用されているのはなぜですか? 他のところに行ったらどうなるでしょうか? それがなく、空のリストがあり、[Filter Each] に進むとどうなるでしょうか?
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiご指摘ありがとうございます。昨夜試しましたが、今のところ成功していません。
以下で項目が何も選択されていない場合、これが要件を理解する方法です。ポンドそれからcb2見せるべきではない。 cb2 は N Items(cur_sel) の場合にのみ表示されます。 ≧1。
しかし、 expr_update_cbで 1 つ以上の項目が選択されている場合にのみ起動します。ポンド。
修正方法がわかりませんexpr_update_cb何も選択されていない場合に実行されますポンド。
以下に何も表示しないという要件は必要ですかcb2 if/else ステートメントを使用して処理するポンドつまり、lb で何も選択されていない場合は表示されませんCB2?
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?Names Default To Here(1);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel),
cur_cb_values = Filter Each({val}, cb_values,
cur_tech = Word(2, val, "_");
Contains(cur_sel, cur_tech);
);
,
cur_cb_values = cb_values;
);
cb2 << Set items(cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiなぜ元のスクリプトを繰り返し投稿するのかわかりませんが、これが私がしなければならないところです、まだ必要に応じて機能していません、おそらく終わりが近づいています:) ?
Names Default To Here(1);
clear log ();
listInd = {}; p = N Items (listInd);
lb_values = {"Tech1", "Tech2", "Tech3"};
cb_values = {"Sage1_Tech1", "Sage2_Tech1", "Sage3_Tech1", "Sage4_Tech1", "Sage5_Tech1", "Sage6_Tech1",
"Sage1_Tech2", "Sage2_Tech2", "Sage3_Tech2", "Sage4_Tech2", "Sage5_Tech2", "Sage6_Tech2",
"Sage1_Tech3", "Sage2_Tech3", "Sage3_Tech3", "Sage4_Tech3", "Sage5_Tech3", "Sage6_Tech3"
};
expr_update_cb = Expr(
cur_sel = lb << get selected;
If(N Items(cur_sel), cur_cb_values = Filter Each({val}, cb_values, cur_tech = Word(2, val, "_"); Contains(cur_sel, cur_tech))
,
cur_cb_values = cb_values;
);
p = N Items(cur_sel);
cb2 << Set items(cur_cb_values); show (cur_cb_values);
);
win = New Window("Select Tech & TestStage", <<MODAL></MODAL>
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?おそらく私の壊れた Ctrl キーのせいで正しいスクリプトをコピーできず、投稿するのが早すぎたのでしょう。 今すぐ修正する必要があります。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiありがとう。 今日更新したスクリプトは機能しています。 私が今日行った方法 (今日のスクリプト) が間違ったアプローチであるかどうかを知りたいと思っています。
また、次のようにすると日付クエリが表示されないのはなぜですかTB3そしてcb3上部、つまり上のセクションTB1?
(アイデアは、他の何よりも前にユーザーに日付を選択させることです)
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?私の推測では、「,」が足りないか、「;」があると思います。間違った場所で
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi私の「,」の配置は正しいようですが、上部に配置しても日付クエリを機能させることができません。
また、「」で選択した値を返す方法もすべて選択「? 私の本来の配置返されました2手動選択の場合にのみ機能するようです。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?ユーザーが選択を変更したときではなく、ユーザーがOKを押したときにすべての値を変数に取得します。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiありがとう、しかし、私の配置に合わせて手動で選択したものしか返されません返されました2の中でcb2=チェックボックス (.. .
どこに置くか教えてくださいcb2 << Get Selected();ユーザーが押したときにのみ起動するにはわかりました。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?スクリプトガイド > ツリーの表示 > JSL のモーダル ウィンドウ > モーダル ウィンドウの構築モーダルを使用した新しいウィンドウの説明を示します。 これは、変数に値を取得するコマンドを配置する場所の例を示しています。
Names Default To Here(1);
nw = New Window("Example", <<MODAL></MODAL>
これを << On Validate または << On Close (例と説明を参照) に配置することもできますが、私は通常それらを [OK] ボタン内に配置します。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi 、 ありがとう。
show(cb_sel);
動作します。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi私がこのトピックに取り組んでいる間(新しいが関連する質問をする新しいスレッドを作成しているわけではありません)、ユーザーがテストステージを選択したときに各テストステージが何をしたかを示すテキストをユーザーに表示できるかどうか疑問に思っています。 以下に例を貼り付けます。テキストは選択が行われた場合にのみ表示され、チェックが外されるまで表示されません。

Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?それは間違いなく可能ですが、それを堅牢かつ使いやすくする方法は別のことになる可能性があります。 以下は私の頭に浮かんだ簡単なオプションの 1 つです (おそらく、より良いオプションがあるでしょう)
Names Default To Here(1);
cb_sel = {};
nw = New Window("Example", <<MODAL></MODAL>Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthiありがとう。 これはまさに必要なものですが、これをこのスレッドの元の例 (Tech および TestStage スクリプトを使用した最初の投稿) に適応させるのは困難です。 1~2選択だけ見せていただければ、残りはできるはずです。
各テスト段階のテキストを事前に定義する必要があることがわかります。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?1 つまたは 2 つの選択用にそれを書く場合、考慮する必要があるものが非常に多いため、基本的にスクリプト全体を書き直すことになります。 また、他の方法で定義すべき内容を決定できる場合は、事前に定義する必要はありません。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?@jthi問題ない。 このトピックに関してこれまでご協力いただきありがとうございました。 デモに使用したスクリプトでは、追加テキストについては各チェック ボックスを個別に処理する必要があるようですが、私の元のケースではすべてのオプションが 1 つのリストにまとめられています。
この投稿でオリジナル/最初のスクリプトを始めるためのヒントをいくつか教えていただけますか?
自分でやってみてから、具体的な質問をして戻ってくるつもりです。
また、私の場合、選択した各テスト ステージのテキストは、事前定義されたテスト済みパラメータのリストになります。 たとえば、最初のテスト段階では {A, B}、2 番目のテスト段階では {A, B, C, L,M} です。
Re: モーダル ウィンドウで以前の選択に基づいてチェック ボックスを変更する (または表示またはアクティブにする) にはどうすればよいですか?連想配列を使用してさまざまなリストを保存し、式/関数を作成してチェックボックスと ifbox のコレクターを作成します。
これはモーダル ウィンドウを使用しません。モーダル ウィンドウを使用しない場合は、スクリプト エディターからさまざまな取得などを簡単にテストできるため、開発がはるかに簡単になります。
Names Default To Here(1);
tech_options = {"Tech1", "Tech2"};
stages_tech1 = {"Sage1_Tech1", "Sage2_Tech1"};
stages_tech1_text = {"First Level Tech1", "Second Level Tech1"};
stages_tech2 = {"Sage1_Tech2", "Sage2_Tech2"};
stages_tech2_text = {"First Level Tech2", "Second Level Tech2"};
aa_tech = Associative Array();
aa_tech["Tech1"] = Associative Array(stages_tech1, stages_tech1_text);
aa_tech["Tech2"] = Associative Array(stages_tech2, stages_tech2_text);
get_cbs = Expr(
cbs = cb_lub << XPath("//CheckBoxBox");
);
update_checkboxes = Expr(
tech_selections = lb << get selected;
cb_lub = Lineup Box(N Col(2));
For Each({tech_selection}, tech_selections,
For Each({{stage, text}}, aa_tech[tech_selection],
cb_lub << Append(Check Box(stage, << Set Function(function({this},
(this << sib) << Set(this << get);
))));
cb_lub << Append(IfBox(0, Text Box(text)))
);
);
Try((cb_collector << child) << Delete Box());
cb_collector << Append(cb_lub);
);
win = New Window("Select Tech & TestStage",
V List Box(
H List Box(
Spacer Box(Size(0, 300)), // to force height
V List Box(
Spacer Box(Size(300, 0)), // to force width
tb1 = Text Box("Select Tech", <<SET font="" style=""></SET>
