Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsWenn Sie hier nach Hilfe suchen, kann das Anzeigefeld nicht ordnungsgemäß funktionieren, da es bei erneuter Auswahl von "Option 1" immer wieder in ein leeres Fenster zurückkehrt (einige Fotos als Referenz).
Wirklich dankbar für die Hilfe!
names default to here(1);
Buttons = {"Button 1", "Button 2", "Button3"};
Boxes = {"Box 1", "Box 2", "Box 3"};
LB_Input_1 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons),i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_1 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_1 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes),i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_1 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_1 << append(^neblabel1^ = Number edit box())]\")));
);
HB1 = hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_1
);
LB_Input_2 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons)-1,i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_2 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_2 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes)-1,i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_2 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_2 << append(^neblabel1^ = Number edit box())]\")));
);
HB2 = hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_2
);
dt1 = current data table();
new window("Test",
vb1 = vlistbox(Text box(""),
Panel Box("Selection Option",H list box(text box("Select: "),
combo1 = combobox({"Option 1","Option 2"},
<< set function(function({this,index},
match(index,
1,
vb1 << append (try(view << delete);
view = HB1;
),
2,
vb1 << append (try(view << delete);
view = HB2;
)
)
))
)
)
),
text box (""),
view = HB1;
)
);



GrafikSkriptingBetreff: Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsProblem und wie man debuggt:
1. Führen Sie das Skript aus
2. Überprüfen Sie den Inhalt von HB1 und HB2 (DisplayBox [ListBox])
3. Wechseln Sie zu Option 2 und überprüfen Sie den Inhalt von HB1 (DisplayBox []).
Schnelle (und schmutzige Lösung?), Die möglicherweise helfen könnte. Sehen Sie, wie ich die HB1- und HB2-Referenzpositionen geändert und sie ausgedrückt habe. Ausdrücke:
names default to here(1);
Buttons = {"Button 1", "Button 2", "Button3"};
Boxes = {"Box 1", "Box 2", "Box 3"};
HB1 = Expr(
LB_Input_1 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons),i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_1 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_1 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes),i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_1 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_1 << append(^neblabel1^ = Number edit box())]\")));
);
hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_1
);
);
HB2 = Expr(
LB_Input_2 = lineupbox(ncol(2),spacing(5));
for(i=1,i<=nitems(Buttons)-1,i++,
label1 = char(Buttons[i]);
bblabel1 = "clb_" || char(i);
eval(parse(evalinsert("\[LB_Input_2 << append(buttonbox("^label1^", ^bblabel1^ << append(clb2 << get selected)))]\")));
eval(parse(evalinsert("\[LB_Input_2 << append(^bblabel1^ = col list box("Numeric",minitems(1),maxitems(1),nlines(1)))]\")));
);
for(i=1,i<=nitems(Boxes)-1,i++,
label1 = char(Boxes[i]);
neblabel1 = "neb_"||char(i);
eval(parse(evalinsert("\[LB_input_2 << append(Text box("^label1^"))]\")));
eval(parse(evalinsert("\[LB_input_2 << append(^neblabel1^ = Number edit box())]\")));
);
hlistbox(
clb2 = filter col selector(dt1,all),
LB_input_2
);
);
dt1 = current data table();
new window("Test",
vb1 = vlistbox(Text box(""),
Panel Box("Selection Option",H list box(text box("Select: "),
combo1 = combobox({"Option 1","Option 2"},
<< set function(function({this,index},
try(view << delete);
match(index,
1,
vb1 << append (
view = HB1;
),
2,
vb1 << append (
view = HB2;
)
)
))
)
)
),
text box (""),
view = HB1;
)
);Betreff: Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsVielen Dank @jthi:)Die Lösung funktioniert!
Könnten Sie im Anschluss die von Ihnen erwähnten 3-Debugging-Schritte klären? Ich verstehe diesen Kommentar nicht ganz.
Problem und wie man debuggt:
1. Führen Sie das Skript aus
2. Überprüfen Sie den Inhalt von HB1 und HB2 (DisplayBox [ListBox])
3. Wechseln Sie zu Option 2 und überprüfen Sie den Inhalt von HB1 (DisplayBox []).
Betreff: Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsSicher.Hoffentlich hilft das:
1. Öffnen Sie das Protokollfenster
2. Führen Sie das Skript aus -> Läuft einwandfrei
3. Ändern Sie die Option von Option 1 in Option 2 -> Funktioniert einwandfrei
4. Ändern Sie die Option von Option 2 in Option 1 -> Anzeigefeld verschwindet
5. Ändern Sie die Option von Option 1 zurück zu Option 2 -> Anzeigefeld fehlt noch
Zu diesem Zeitpunkt habe ich mich gefragt, ob etwas mit HB1 und HB2 nicht stimmt und ob sie gelöscht werden, wenn Sie die Optionen ändern.
6. Führen Sie das Skript erneut aus. Markieren Sie HB1 im Skriptfenster und führen Sie das Skript aus, um Informationen zur Variablen im Protokollfenster (DisplayBox [ListBox]) abzurufen.
7. Ändern Sie die Option von Option 1 in Option 2.Markieren Sie HB1 im Skriptfenster und führen Sie das Skript aus, um Informationen zur Variablen im Protokollfenster (DisplayBox []) abzurufen.
8. Beachten Sie, dass ListBox verschwunden ist

9. Finden Sie heraus, was schief geht und wie Sie das Problem beheben können
Dies könnte Ihnen helfen, herauszufinden, was los ist: Irgendwann werden die Listenfelder HB1 und HB2 H gelöscht.
Betreff: Dynamische Anzeigebox basierend auf Kombinationsbox-Auswahl@jthi Vielen Dank für die Erläuterung Ihres Debugging-Ansatzes!
Ich sehe die "Displaybox[]" ziemlich oft im Protokoll, aber ich glaube, ich habe nicht wirklich verstanden, was das Protokoll bedeutet. Danke für die Hinweise!