¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Esto puede parecer una pregunta muy simple, pero me preguntaba: ¿hay alguna manera de evitar que los usuarios cambien el tamaño de las ventanas/cuadros de diálogo usando JSL?
Hay un mensaje que puede enviar a un cuadro de visualización para el estiramiento automático, el tamaño mínimo y máximo, etc. ¿Hay algún indicador para desactivar la capacidad del usuario para cambiar el tamaño de las ventanas de forma predeterminada (es decir, el cursor del mouse no muestra las flechas de cambio de tamaño al pasar el cursor? en el borde de una ventana? Parece que debería haber algo, pero parece que no puedo encontrarlo.
Gracias.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?¡Grandes sugerencias Dave!Realmente me gusta tu diseño y buscaré hacer cosas similares.Normalmente uso la solución del cuadro de esquema que proporcionaste al final, que es simple y fácil de implementar, pero no siempre tiene el diseño más profesional.Creo que todo se reduce a quién es el usuario final.Para la mayoría de mis guiones, en realidad soy solo yo.
Respecto a: " Para cerrar el cuadro de diálogo, el tamaño del contenido se puede establecer en cero o el contenido se puede eliminar (los valores del cuadro de diálogo se pueden almacenar en caché en un espacio de nombres para recargarlos fácilmente)".
Creo que un 'If box()' sería una solución más sencilla.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Es difícil solucionar el problema del cambio de tamaño desde una perspectiva de programación porque el cambio de tamaño de los cuadros de visualización es inherente a la interfaz de usuario de JMP.En general, creo que es realmente útil, por ejemplo, ampliar un cuadro de lista cuando tiene una gran cantidad de elementos o elementos con nombres largos.Pero puede hacer la vida más difícil cuando intentas diseñar una interfaz estéticamente agradable.Las cajas divisorias pueden ayudar, aunque también tienden a animar a los usuarios a cambiar el tamaño de los componentes divididos.Si desea tener una única ventana que contenga tanto el diálogo del usuario como los elementos de salida, creo que debe pensar en el nivel de interacción. A menudo tengo este tipo de configuración donde el diálogo es para interacciones relativamente poco frecuentes.Mi enfoque preferido es tener un botón en la ventana que actúe como un interruptor para activar o desactivar el cuadro de diálogo:

(ventana de informe sin diálogo; el botón central izquierdo 'opciones' activará el diálogo)

(ventana de informe con diálogo activado)
En el nivel más básico, consta de dos piezas de contenido alineadas con un cuadro de lista H.
Para cerrar el cuadro de diálogo, el tamaño del contenido se puede establecer en cero o el contenido se puede eliminar (los valores del cuadro de diálogo se pueden almacenar en caché en un espacio de nombres para recargarlos fácilmente).
Una solución más sencilla es utilizar un cuadro de esquema alineado horizontalmente con su contenido:
dt = Abierto ( "$SAMPLE_DATA/Gran Clase.jmp" ) ;
diálogo = Cuadro de lista V (
Cuadro de esquema ( "Diálogo de demostración" ,
<< Orientación cercana del esquema ( "Vertical" ) ,
Cuadro de alineación ( NCol ( 2 ) , Espaciado ( 10 ) ,
Caja de texto ( "Etiqueta 1" ) ,
Cuadro de edición de texto ( "valor 1" ) ,
Caja de texto ( "Etiqueta 2" ) ,
Cuadro de edición de texto ( "valor 2" ) ,
)
)
) ;
contenido = Cuadro de lista V (
bivariado ( Y ( : peso ) , X ( : altura ) )
) ;
Nueva ventana ( "Informe con diálogo" ,
Cuadro de lista H (
diálogo ,
Caja espaciadora ( Tamaño ( 10 , 0 )) ,
contenido
)
) ;

El mensaje Orientación de cierre del esquema permite que el contenido se contraiga hacia el costado de la ventana:

- Sólo algunas ideas.
dave
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Palabra clave "lenguaje de programación", donde nuevamente jsl es un lenguaje de programación.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Gracias de nuevo msharp,
Para los cuadros de diálogo de informes, no tengo ningún problema con que el usuario pueda cambiar el tamaño de la ventana; era para los cuadros de diálogo en los que solicitaba la entrada del usuario. Estos tienen un número fijo de campos donde pueden ingresar información y, en mi opinión, no deberían tener necesidad de cambiar el tamaño, pero es puramente por estética y no es un problema importante en el gran esquema de las cosas. Es solo que en otros lenguajes de programación donde tienes widgets GUI, tienes la opción de evitar que el usuario cambie el tamaño de los cuadros de diálogo, como los cuadros de diálogo de advertencia y similares, ya que el cambio de tamaño no tiene ningún propósito real. Simplemente pensé que sería una opción útil.
En cualquier caso, gracias por tu ejemplo de una caja divisora H/V, es algo que definitivamente usaré en el futuro. Salud.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Si ese es el propósito, ¿hay alguna razón por la que no puedas poner todo el contenido en una ventana?Usar H Splitter Box/V Splitter Box es probablemente su mejor solución.El siguiente ejemplo mantiene visibles todos los cuadros de visualización en la ventana y evita los espacios grises al cambiar el tamaño de la ventana.Del índice de secuencias de comandos:
Nombres predeterminados aquí ( 1 ) ;
Nueva ventana ( "Disidente" ,
Caja divisora en V (
Tamaño ( 800 , 600 ) ,
Caja divisora H ( grafico = Cuadro de gráfico () , Cuadro de guión () , << Tallas ( { 0,6 , 0,4 } ) ) ,
Caja divisora H (
picto = Cuadro de imagen ( Abierto ( "$SAMPLE_IMAGES/tile.jpg" , jpg ) ) ,
espaciador = Caja espaciadora () ,
<< Tallas ( { 0,4 , 0,6 } )
)
)
) ;
grafico [ Cuadro de marco ( 1 )] << Establecer estiramiento automático ( 1 , 1 ) ;
picto << Establecer tamaño mínimo ( 100 , 100 ) ;
picto << Establecer tamaño máximo ( 500 , 500 ) ;
picto << Establecer estiramiento automático ( 1 , 1 ) ;
espaciador << Establecer relleno ( 1 ) ;
espaciador << Color ( "Rojo" ) ;
espaciador << Establecer estiramiento automático ( 1 , 1 ) ;
Esta será una mejor solución.Realmente terminará molestando a su usuario final si no le permite cambiar el tamaño de las ventanas.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Hola msharp,
Gracias por la respuesta. Parece que ese método funcionaría bien y probablemente existan algunas otras formas de "engañar" este comportamiento.
Mi razonamiento para querer esto es que estoy creando una aplicación personalizada que tiene ventanas de diálogo tanto para la entrada del usuario como para la generación de informes. No quiero que el usuario pueda hacer clic y cambiar el tamaño de la ventana para que termine ocultando algunos de los cuadros de visualización dentro de la ventana, o arrástrela más y termine con una carga de espacio gris feo. Lo admito, esto es por razones puramente estéticas, pero pensé que sería una opción útil para las personas que escriben aplicaciones en JSL para su distribución.
Saludos de nuevo.
Re: ¿Cómo evitar que los usuarios cambien el tamaño de las ventanas en JSL?Todas las funciones que describe son para cambiar el tamaño de los cuadros de visualización dentro de Windows.Pero parece que desea evitar que se cambie la ventana.No tengo idea de por qué querrías hacer esto, pero sería un problema que un usuario avanzado del sistema operativo podría resolver.Esta no es una funcionalidad que obtendrá en un lenguaje de programación.Necesitaría realizar cambios en Windows 7,8,10 o en Mac: Snow Leopard, Capitan, etc.
De todos modos, puedes hacer trampa.Quizás algo como esto:
noroeste = nueva ventana ( "No cambiar el tamaño para ti" ) ; //Crear ventana de ejemplo
tamaño = noroeste << Obtener tamaño de ventana ; // Obtener tamaño
//Función de cambio de tamaño
cambiar el tamaño = función ({} ,
noroeste << Establecer tamaño de ventana ( tamaño [ 1 ] , tamaño [ 2 ]) ; //Cambiar el tamaño de la ventana
cronograma ( 0.1 , cambiar el tamaño ()) ; //Cambiar el tamaño de la ventana cada 0,1 segundos
) ;
//llamar a la función
cambiar el tamaño () ;
//ocultar la ventana del programador para completar la ilusión
esperar ( 0 ) ;
ventana ( "Programador" ) << Mostrar ventana ( 0 ) ;
//alternativamente a << Establecer tamaño de ventana:
//nw << Ventana de zoom;