¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Tengo una GUI con múltiples cuadros de visualización, algunos de ellos son cuadros de lista de columnas que el usuario puede redimensionar.
Cuando lo hagan, la ventana creará barras de desplazamiento. No quiero barras de desplazamiento. Quiero que la ventana se redimensione automáticamente para que quepa todo, como cualquier plataforma (Fit Y by X, por ejemplo).
No puedo encontrar una combinación de mensajes que haga ese trabajo... ¿Puede alguien indicarme la dirección correcta?
Actualizar:
Aquí hay una ilustración.
Si ejecuta este script:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
bb = Border Box( Left( 10 ), Right( 10 ), Top( 5 ), Bottom( 10 ), Sides( 15 ),
clb = Col List Box( all, width( 250 ), maxSelected( 1 ) ),
);
nw = New Window( "Col List Box Example",
bb
);
Aparecerá una ventana con un cuadro de lista de columnas.
Si intenta cambiar el tamaño de este cuadro de lista de columnas más allá de la ventana, la ventana se expandirá.
Pero si intentas cambiar el tamaño de la ventana, aunque sea un poquito, no responderá a que el cuadro de lista de columnas cambie de tamaño más allá del tamaño de la ventana. Se generarán controles deslizantes.
En mi complemento, por alguna razón, mi contenido no cabe verticalmente en la ventana.
La única forma de solucionarlo que encontré fue cambiar el tamaño de la ventana. Pero ahora que hemos cambiado el tamaño de la ventana, no responde a los cambios en el tamaño del contenido.
¿Es un error? ¿O es un comportamiento esperado? ¿Hay alguna forma de solucionarlo?
Automatización y scriptingRe: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Es muy difícil decirlo, ya que no estoy seguro de qué problemas tienes (agregar cuadros de desplazamiento no es realmente un problema, tienen una razón para estar allí la mayor parte del tiempo). Tienes << Set Stretch (o << Set Auto Stretching) que podría funcionar en algunos casos, pero también dependerá de cómo hayas creado tu GUI.
No estoy seguro exactamente de lo que quieres decir con que la plataforma Fit Y by X (informe) se redimensiona automáticamente para que se ajuste a todo, ya que en mi opinión no lo hace. Agrega cuadros de desplazamiento cuando es necesario. Están allí por un propósito, si el contenido no cabe dentro de la ventana, permite que el usuario siga navegando por el contenido Y le avisa que algo no se muestra. Y si te refieres a los lanzadores y cómo el cambio de tamaño del cuadro de lista de columnas cambia el tamaño de la ventana, lo más probable es que esté relacionado con cómo has creado la GUI y también agregarán cuadros de desplazamiento si es necesario.
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Perdón por no ser muy claro. Me refería a la ventana de inicio de la plataforma Fit Y by X. Inicie la plataforma, la ventana donde se asignan roles a las columnas. Si cambia el tamaño de cualquiera de los cuadros de lista de columnas, la ventana se redimensionará en consecuencia sin agregar barras de desplazamiento.
Mi complemento tiene una plataforma de inicio muy similar, que agregaría barras de desplazamiento cuando cambio el tamaño de los cuadros de lista de columnas.
Además, consulte una actualización sobre la pregunta. El script que publiqué muestra un comportamiento similar.
Además de eso, descubrí que tiene algo que ver con el ocultamiento automático de la barra de tareas en Windows: si lo activo y mi barra de tareas está oculta, mi ventana de complementos se abre y se ajusta perfectamente a todo el contenido. Pero tan pronto como desactivo el ocultamiento automático, la ventana cambia de tamaño para ocultar la parte inferior del contenido y aparece una barra de desplazamiento vertical. Además de eso, la parte inferior de la ventana de complementos ni siquiera toca la barra de tareas. Esto es definitivamente un error.
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Aquí está la parte inferior de mi ventana con esta página como fondo. Tengo activada la función de ocultación automática de la barra de tareas. Todo está como esperaba.

Tan pronto como voy a la configuración de la barra de tareas de Windows y desactivo la ocultación automática, mi ventana cambia de tamaño y aparece una barra de desplazamiento vertical:

Las posiciones de las capturas de pantalla son idénticas a los píxeles. Lo único que hice entre ellas fue desmarcar la opción "Ocultar automáticamente la barra de tareas" en la configuración de Windows. Si la vuelvo a marcar, volverá a la primera captura de pantalla. No obstante, esa ventana ni siquiera toca la barra de tareas.
Entonces, para resolver este problema, tuve que configurar explícitamente el tamaño de la ventana. Y esto interrumpió el estiramiento automático de la ventana al cambiar el cuadro de lista de columnas, tal como en el script anterior.
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Este script tiene exactamente el mismo problema que mi pequeño script en la actualización del primer mensaje.

Cuando lo ejecutas e intentas cambiar los cuadros de lista de columnas más allá del tamaño de la ventana, la ventana se estira perfectamente. Pero tan pronto como intentas cambiar el tamaño de la ventana misma agarrando esa esquina con puntos marcados con un círculo rojo en la captura de pantalla y la mueves incluso un par de píxeles, la ventana deja de responder al cambio de tamaño de los cuadros de lista de columnas y deja de estirarse, creando barras de desplazamiento en su lugar.
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Como ahora está cambiando el tamaño de la ventana y no del cuadro de lista de columnas, simplifique su demostración.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
Ahora empieza a descubrir qué está pasando y por qué ajustar el estiramiento aquí y allá no funciona y, con suerte (por accidente, probablemente, como me pasó a mí), te darás cuenta de que debes recordar ajustar el tamaño máximo (y potencialmente el mínimo).
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt
, << Set N Lines(2)
)
)
)
)
)
);
show(clb << Get Stretch, clb << Get Min Size, clb << Get Max Size);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
¿Quizás esto es lo que estás buscando? ¿Combinación de Establecer estiramiento con Relleno/Ventana y Establecer tamaño máximo/mínimo?
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Bueno, parece que funciona en este caso sencillo.
Sin embargo, intenté exactamente eso y no funcionó en mi GUI más compleja.
En cualquier caso esta parece ser la solución, y como tal la marcaré, sólo me falta descubrir cómo aplicarla a mi caso.
Re: ¿Qué propiedad haría que la ventana se estire automáticamente si cambio el tamaño de los cuadros de visualización dentro de la ventana?Puede omitir el caso simple si cree que puede resolver un problema masivo sin resolver primero varios problemas más pequeños; la mayoría de las veces es imposible o tomará una cantidad de tiempo innecesaria en comparación con resolver algunos problemas pequeños/simples que lo ayuden a comprender el problema.
La forma en que funciona el estiramiento depende en gran medida de la estructura con la que hayas creado tu interfaz gráfica de usuario. De nuevo, un ejemplo sencillo, aunque no estoy seguro de cuánto valor crees que tienen:
Ambos cuadros de lista de columnas se escalarán al mismo tiempo cuando se use el cuadro Alineación y solo se configure el estiramiento en uno de ellos:
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
No ocurrirá lo mismo al utilizar V List Box + H List Box
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
V List Box(
H List Box(
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
)
),
H List Box(
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
)
);
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)
Si hubiera modificado el cuadro de visualización principal (cuadro de panel en este ejemplo) para que no se estire, los elementos secundarios tampoco se estirarán.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
nw = New Window("",
vlb = V List Box(
tb = Text Box("Text"),
hlb1 = H List Box(
pb = Panel Box("Cast LUB",
lub = Lineup Box(N Col(2),
Button Box("Responses"),
clb = Col List Box(dt,
, << Set N Lines(2)
),
Button Box("Responses"),
Col List Box(dt,
, << Set N Lines(2)
)
)
)
)
)
);
pb << Set Max Size(100, 10);
pb << Set Stretch("Off", "Off");
clb << Set Stretch("Window", "Neutral");
clb << Set Max Size(10000, 100)