JSL: restaurar el tamaño de PanelBox en el cuadro de visualización dinámica<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Los objetos Panel Box() adaptan automáticamente su tamaño a medida que se expande el contenido. Sin embargo, lo contrario parece no ser cierto. Al presionar el botón de opción derecho en el siguiente script de ejemplo, se expande la ventana a medida que se expanden los descriptores de las casillas de verificación. Al volver a seleccionar el botón de opción izquierdo se obtienen descriptores más cortos, pero el cuadro del panel (y la ventana) conserva su estado expandido.
¿Cómo puedo forzar que la caja del panel vuelva a su tamaño original? ¿O existe otro tipo de cuadro de presentación que sea "más inteligente" a este respecto?
Intenté guardar el tamaño original en una variable (usando pb1 << Obtener tamaño) y aplicarlo cuando se vuelve a seleccionar el botón de opción 1, pero Panel Box() parece no reconocer un mensaje Establecer tamaño().
cadena =
{ "caso 1: dosis baja descripción muy larga descripción muy larga descripción muy larga" ,
"caso 2: dosis alta descripción muy larga descripción muy larga descripción muy larga"
} ;
cadena_corta = Lista de evaluación ( { Izquierda ( cadena [ 1 ] , 6 ) , Izquierda ( cadena [ 2 ] , 6 )} ) ;
pb1 = exprés ( Caja de paneles ( ,
hlb1 = Cuadro de lista V ( tuberculosis = Caja de texto ( "Seleccione el caso" ) ,
cb = Casilla de verificación ( cadena_corta ) ,
vlb1 = Cuadro de lista V (
Caja espaciadora () ,
Cuadro de lista H (
rb2 = Caja de radio (
"Mostrar nombre" ,
cb << borrar ;
vlb1 << anteponer ( cb = Casilla de verificación ( cadena_corta ))) ,
rb1 = Caja de radio (
"Mostrar descripcion" ,
cb << borrar ;
vlb1 << anteponer ( cb = Casilla de verificación ( cadena )))))))
) ;
pb2 = Expr. (
Caja de paneles ( ,
Cuadro de lista V (
Caja de botones ( "Correr" ) ,
Caja de botones ( "Cancelar" , << Cerrar ventana ) ,
Caja espaciadora ()
))) ;
Nueva ventana ( "Ejemplo" ,
hlb = Cuadro de lista H ( pb1 , pb2 )
) ;
rb2 << grupo ( rb1 ) ;
JSL: restaurar el tamaño de PanelBox en el cuadro de visualización dinámicaGracias dave! Funciona. Exploré una solución similar usando establecer tamaño de contenido() en lugar de establecer tamaño de ventana(). Los comandos parecen intercambiables, al menos en este ejemplo.
Todavía hay una pequeña peculiaridad. Al alternar entre los dos botones de opción, la configuración de la ventana falla cada segunda o tercera vez. Entonces la ventana se vuelve más pequeña que su contenido. Este problema surge tanto en su solución como en la mía. Creo que resulta de cierta asincronía en la ejecución del código, por ejemplo, que el tamaño de la ventana se recupera antes de que se complete el prepend(). Sin embargo, insertar Wait(0.01) en el script del botón rb1 parece eliminar el comportamiento peculiar. Vea el extracto a continuación.
Tal vez esto sea específico de la máquina, por lo que es posible que la rareza no le ocurra a todos. Ejecuto JMP 9.02 en una Mac Pro bastante rápida.
...Si (NItems(ss_large)==0, Espere(0.01);
ss_large = nw << obtener tamaño de ventana
,
nw << establecer tamaño de ventana (ss_large[1],ss_large[2])
)...
¡Gracias de nuevo!
Re: JSL: Restaurar el tamaño del PanelBox en el cuadro de visualización dinámicoNo creo que el problema esté específicamente en la caja del panel; obtienes el mismo problema si quitas la caja del panel.
Es la propia ventana la que aumenta su tamaño para acomodar el contenido.
Por lo tanto, la solución que propone funciona si aplica el cambio de tamaño a la ventana.Sin embargo, una vez que se cambia el tamaño de una ventana, no cambiará de tamaño por sí misma, por lo que debe controlar el cambio de tamaño para hacerla más grande y más pequeña.
Este código parece funcionar...
str = {"caso 1: dosis baja descripción muy larga descripción muy larga descripción muy larga",
"caso 2: dosis alta descripción muy larga descripción muy larga descripción muy larga"};
short_str = Lista de evaluación ({Izquierda (cadena [1], 6), Izquierda (cadena [2], 6)});
ss_pequeño = {};
ss_grande = {};
pb1 = Expr(
Cuadro de borde( ,
hlb1 = V cuadro de lista(
tb = Cuadro de texto( "Seleccionar caso"),
cb = Casilla de verificación (short_str),
vlb1 = V cuadro de lista(
Caja espaciadora(),
H Cuadro de lista(
rb2 = Caja de radio(
"Mostrar nombre",
cb << eliminar;
vlb1 << anteponer(
cb = casilla de verificación (
cadena_corta
)
);
nw << establecer tamaño de ventana (ss_small[1],ss_small[2])
),
rb1 = caja de radio (
"Mostrar descripcion",
cb << eliminar;
vlb1 << anteponer (cb = casilla de verificación (cadena));
Si (NItems(ss_large)==0,
ss_large = nw << obtener tamaño de ventana
,
nw << establecer tamaño de ventana (ss_large[1],ss_large[2])
)
)
)
)
)
)
);
pb2 = Expr( Cuadro de panel( , Cuadro de lista V( Cuadro de botón( "Ejecutar"), Cuadro de botón( "Cancelar", <
nw = Nueva ventana( "Ejemplo", hlb = H Cuadro de lista( pb1, pb2 ) );
rb2 << grupo (rb1);
ss_small = nw <
dave