Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Im folgenden Skript möchte ich Folgendes tun:
Basierend auf der Auswahl von TestTech möchte ich, dass die entsprechende TestStage-Kontrollkästchenliste angezeigt wird ( erscheinen wird bevorzugt, wenn nicht aktiv werden wenn alle Optionen sichtbar sein müssen).Also,
- Wenn Tech1 ausgewählt ist, sollten alle TestSages mit _Tech1 für den Benutzer zur Auswahl verfügbar sein
- Wenn Tech2 ausgewählt ist, sollten alle TestSages mit _Tech2 für den Benutzer zur Auswahl verfügbar sein. Diese Liste wird unten kommentiert
- Wenn Tech3 ausgewählt ist, sollten alle TestSages mit _Tech3 für den Benutzer zur Auswahl verfügbar sein. Diese Liste wird unten kommentiert und so weiter.
Ich möchte auch, dass die Option „Alle auswählen“ unter jeder Liste verfügbar ist.
Wie macht man das?
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>
Automatisierung und SkripterstellungWindowsBetreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Dies könnte Ihnen einige Ideen geben, was Sie tun könnten
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>Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Danke. Die Ausführung Ihres Skripts beginnt mit der Anzeige aller Testphasen unter Testphase standardmäßig (unten eingefügt) und dann einmal a Technik ausgewählt ist, verhält es sich wie erforderlich.
Könnte das Skript so geändert werden, dass zunächst nichts angezeigt wird? Testphase Auswahltext und dann einmal die Technik ausgewählt ist, werden die entsprechenden/verfügbaren TestStages angezeigt?

Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Sie könnten das Kontrollkästchen mit einer leeren Liste anstelle von cb_values initialisieren.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Ich habe es bereits mit probiert
cb_values = {};aber ich glaube, ich platziere das nicht richtig. Wohin soll diese Aussage gehen?
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Dies ist der Ort, an dem Sie diese Werte zum ersten Mal festlegen

Wenn Sie außerdem möchten, dass es immer leer ist, wenn keine Auswahl getroffen wird, müssen Sie auch kleine Änderungen an expr_update_cb vornehmen
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi . In diesem Fall habe ich das platziert
cb_values = {};richtig, habe aber die kleine Änderung nicht vorgenommen expr_update_cb.Wenn Sie einfach die obige Zeile vor cb2= Check Box(... platzieren, wird nicht einmal ausgeführt, was erforderlich ist Technik ist ausgewählt. Denken.......
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Kontrollkästchen mit leerer Liste initialisieren, nicht mit cb_values (das sind verschiedene Dinge).
Innerhalb des Ausdrucks ist dies der Teil, den Sie berücksichtigen (und verstehen) müssen.

Warum wird hier die if-Anweisung verwendet? Was würde passieren, wenn wir woanders hingehen würden? Was würde passieren, wenn wir es nicht hätten, eine leere Liste hätten und zu „Alle filtern“ gehen würden?
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Danke für die Hinweise, ich habe es gestern Abend versucht, aber bisher ohne Erfolg.
So verstehe ich die Anforderung, wenn unten keiner der Artikel ausgewählt ist Pfund Dann cb2 sollte nicht angezeigt werden. cb2 sollte nur angezeigt werden, wenn N Items(cur_sel) ≥1.
Jedoch, expr_update_cb Wird nur ausgelöst, wenn ein oder mehrere Elemente ausgewählt sind Pfund.
Mir ist nicht klar, wie ich ändern soll expr_update_cb Wird ausgeführt, wenn unter nichts ausgewählt ist Pfund.
Sollte die Anforderung, nichts anzuzeigen, unter cb2 mit einer if/else-Anweisung behandelt werden Pfund dh wenn unter lb nichts ausgewählt ist, nicht anzeigen cb2?
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?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>Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Ich bin mir nicht sicher, warum Sie Ihr ursprüngliches Skript noch einmal gepostet haben, aber hier bin ich angekommen, es funktioniert immer noch nicht wie nötig, vielleicht sieht das Ende bald aus
?
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>
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Höchstwahrscheinlich konnte ich aufgrund meiner defekten Strg-Taste nicht das richtige Skript kopieren und ich habe zu schnell gepostet. Es sollte jetzt behoben sein.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Danke. Ihr aktualisiertes Skript von heute funktioniert. Mich würde interessieren, ob die Art und Weise, wie ich es heute gemacht habe (mein Skript von heute), ein falscher Ansatz ist.
Warum wird die Datumsabfrage auch nicht angezeigt, wenn ich Folgendes eingebe? tb3 Und cb3 Abschnitte oben, also oben tb1?
(Die Idee besteht darin, den Benutzer dazu zu bringen, vor allem anderen die Daten auszuwählen.)
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Ich vermute, dass Ihnen „,“ fehlt oder „;“ vorhanden ist. am falschen Ort
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Mein "," Die Platzierung scheint korrekt zu sein, aber ich kann die Datumsabfrage immer noch nicht zum Laufen bringen, wenn sie oben platziert wird.
Außerdem erfahren Sie, wie Sie den von „ Wählen Sie Alle „? Meine ursprüngliche Platzierung für zurückgegeben2 Scheint nur bei manueller Auswahl zu funktionieren.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Ich würde einfach alle Werte in Variablen übernehmen, wenn der Benutzer auf OK drückt, und nicht, wenn der Benutzer seine Auswahl ändert.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Danke, aber ich kann die manuelle Auswahl nur mit meiner Platzierung neu anpassen zurückgegeben2 im Inneren cb2=Kontrollkästchen (.. .
Könnten Sie mir bitte zeigen, wo ich es platzieren soll? cb2 << Get Selected(); nur auszulösen, wenn der Benutzer drückt OK.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Skripthandbuch > Bäume anzeigen > Modale Fenster in JSL > Ein modales Fenster erstellen gibt Erklärungen zu neuen Fenstern mit Modal. Und dies sollte ein Beispiel dafür sein, wo Befehle platziert werden können, um Werte in Variablen zu übertragen
Names Default To Here(1);
nw = New Window("Example", <<MODAL></MODAL>
Sie könnten dies auch auf „<< On Validate“ oder „<< On Close“ setzen (siehe Scripting Index zum Beispiel und einige Erklärungen), aber normalerweise platziere ich sie innerhalb der Schaltfläche „OK“.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi , Danke.
show(cb_sel);
funktioniert.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Während ich mich mit diesem Thema beschäftige (und keinen neuen Thread erstelle, der eine neue, aber verwandte Frage stellt), frage ich mich, ob es möglich ist, einen Text anzuzeigen, der dem Benutzer zeigt, was jede Testphase getan hat, wenn der Benutzer sie auswählt. Beispiel unten eingefügt.Der Text wird nur angezeigt, wenn eine Auswahl getroffen wird, und bleibt bestehen, bis er nicht mehr aktiviert wird.

Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Es ist definitiv möglich, aber wie man es robust und benutzerfreundlich macht, kann eine andere Sache sein. Unten ist eine schnelle Option, die mir in den Sinn kam (höchstwahrscheinlich gibt es bessere Optionen).
Names Default To Here(1);
cb_sel = {};
nw = New Window("Example", <<MODAL></MODAL>Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Danke. Das ist genau das, was benötigt wird, aber es würde mir schwerfallen, dies an mein ursprüngliches Beispiel in diesem Thread (mein erster Beitrag mit Tech- und TestStage-Skript) anzupassen. Wenn Sie es bitte für eine oder zwei Auswahlen zeigen könnten, sollte ich den Rest erledigen können.
Ich sehe, dass der Text für jede Testphase vordefiniert werden muss.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Wenn ich es für eine oder zwei Auswahlen schreibe, würde ich im Grunde das gesamte Drehbuch neu schreiben, da es ziemlich viel zu berücksichtigen gibt. Außerdem müssen Sie sie nicht vorab definieren, wenn Sie auf andere Weise bestimmen können, wie sie aussehen sollen.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?@jthi Kein Problem. Vielen Dank für Ihre bisherige Hilfe zu diesem Thema. Das Skript, das Sie für die Demo verwendet haben, erfordert offenbar, dass jedes Kontrollkästchen für zusätzlichen Text einzeln bearbeitet werden muss, während in meinem ursprünglichen Fall alle Optionen in einer einzigen Liste enthalten sind.
Könnten Sie mir bitte einige Hinweise geben, damit ich in diesem Beitrag mit meinem ursprünglichen/ersten Skript beginnen kann?
Ich werde versuchen, es selbst zu tun und dann mit konkreten Fragen darauf zurückkommen.
In meinem Fall wäre der Text für jede ausgewählte Testphase außerdem eine Liste vordefinierter getesteter Parameter. Beispielsweise für die erste Teststufe {A, B}, für die zweite {A, B, C, L,M}.
Betreff: Wie können Kontrollkästchen basierend auf einer vorherigen Auswahl in einem modalen Fenster geändert (oder sichtbar oder aktiv) werden?Verwenden Sie ein assoziatives Array, um Ihre verschiedenen Listen zu speichern, und erstellen Sie Ausdrücke/Funktionen, um einen Kollektor für Kontrollkästchen und Ifboxen zu erstellen.
Hierbei wird kein modales Fenster verwendet, da es viel einfacher zu entwickeln ist, wenn man kein modales Fenster verwendet, da man problemlos verschiedene Gets und Ähnliches vom Skripteditor aus testen kann
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>
