Cuadro de visualización dinámico basado en la selección del cuadro combinadoBuscando ayuda aquí, no puedo hacer que el cuadro de visualización funcione correctamente ya que cambiaba de nuevo a una ventana en blanco cuando se vuelve a seleccionar la "Opción 1" (algunas fotos como referencia).
¡Realmente aprecio la ayuda!
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;
)
);



GráficosScriptingRe: cuadro de visualización dinámico basado en la selección del cuadro combinadoProblema y cómo depurar:
1. Ejecute el script
2. Verifique el contenido de HB1 y HB2 (DisplayBox [ListBox])
3. Cambie a la Opción 2 y verifique el contenido de HB1 (DisplayBox [])
Solución rápida (¿y sucia?) Que posiblemente podría ayudar. Vea cómo cambié las ubicaciones de referencia de HB1 y HB2 y las hice Expresiones:
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;
)
);Re: cuadro de visualización dinámico basado en la selección del cuadro combinadoGracias @jthi
¡La solución funciona!
Sin embargo, como seguimiento, ¿podría aclarar los 3 pasos de depuración que mencionó? No entiendo ese comentario.
Problema y cómo depurar:
1. Ejecute el script
2. Verifique el contenido de HB1 y HB2 (DisplayBox [ListBox])
3. Cambie a la Opción 2 y verifique el contenido de HB1 (DisplayBox [])
Re: cuadro de visualización dinámico basado en la selección del cuadro combinadoPor supuesto.Ojalá esto ayude:
1. Abrir ventana de registro
2. Ejecute el script -> Funciona bien
3. Cambie la opción de la Opción 1 a la Opción 2 -> Funciona bien
4. Cambie la opción de la Opción 2 a la Opción 1 -> El cuadro de visualización desaparece
5. Cambie la opción de la Opción 1 a la Opción 2 -> Todavía falta el cuadro de visualización
En este punto, comencé a preguntarme si algo anda mal con HB1 y HB2, y si se eliminan cuando cambia las opciones.
6. Vuelva a ejecutar el script. Resalte HB1 desde la ventana de secuencia de comandos y ejecute la secuencia de comandos para obtener información sobre la variable en la ventana de registro (DisplayBox [ListBox])
7. Cambie la opción de la Opción 1 a la Opción 2.Resalte HB1 desde la ventana de secuencia de comandos y ejecute la secuencia de comandos para obtener información sobre la variable en la ventana de registro (DisplayBox [])
8. Observe que ListBox ha desaparecido.

9. Empiece a descubrir qué sale mal y cómo solucionarlo.
Esto podría ayudarlo a descubrir qué está sucediendo: en algún momento, los cuadros de lista HB1 y HB2 H se eliminan.