Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsIch suche hier nach Hilfe. Ich kann das Anzeigefeld nicht richtig zum Laufen bringen, da es sich immer wieder in ein leeres Fenster verwandelt, wenn „Option 1“ erneut ausgewählt wird (einige Fotos als Referenz).
Ich schätze die Hilfe wirklich!
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;
)
);



Verbraucher- und MarktforschungBetreff: Dynamisches Anzeigefeld basierend auf der Auswahl des Kombinationsfelds@jthi Vielen Dank für die Erläuterung Ihres Debugging-Ansatzes!
Ich sehe das „Displaybox[]“ ziemlich oft im Protokoll, aber ich glaube, ich habe nicht wirklich verstanden, was das Protokoll bedeutet. Danke für die Hinweise!
Betreff: Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsSicher.Hoffentlich hilft das:
1. Protokollfenster öffnen
2. Führen Sie das Skript aus -> Läuft einwandfrei
3. Ändern Sie die Option von Option 1 zu Option 2 -> Funktioniert einwandfrei
4. Ändern Sie die Option von Option 2 zu Option 1 -> Anzeigefeld verschwindet
5. Ändern Sie die Option von Option 1 zurück zu Option 2 -> Anzeigefeld fehlt noch
An diesem Punkt begann ich mich zu fragen, ob mit HB1 und HB2 etwas nicht stimmt und ob sie gelöscht werden, wenn Sie 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 zu 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 schiefläuft und wie Sie es beheben können
Dies könnte Ihnen helfen herauszufinden, was los ist: Irgendwann werden die H-Listenfelder HB1 und HB2 gelöscht.
Betreff: Dynamisches Anzeigefeld basierend auf der Auswahl des KombinationsfeldsDanke @jthi 
Die Lösung funktioniert!
Könnten Sie im Nachgang jedoch die drei von Ihnen erwähnten Debugging-Schritte erläutern? Ich verstehe diesen Kommentar nicht ganz.
Problem und Fehlerbehebung:
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 KombinationsfeldsProblem und Fehlerbehebung:
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[]).
Eine schnelle (und schmutzige Lösung?), die möglicherweise helfen könnte. Sehen Sie, wie ich die Referenzpositionen von HB1 und HB2 geändert und sie zu Ausdrücken gemacht habe:
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;
)
);