Páginas

miércoles, 27 de noviembre de 2013

Gambas3: Colocar los controles proporcionalmente cuando se redimensiona un formulario

Gambas3: Colocar los controles proporcionalmente cuando se redimensiona un formulario



Gambas3 tiene  controles de layout (HBox, Vbox, etc.), que permiten ordenar los contrones de manera automática en el formulario, cuando se redimensiona el formulario.


Bien, algunas veces, lo que necesitamos es que los controles se organicen proporcionalmente cuando se redimensione el formulario.

Por ejemplo, estoy realizando un juego de tablero, basandome en imágenes de tableros reales, donde van a colocarse botones, imágenes, etc... Como la disposicion es irregular, lo suyo es usar algún método que organice los controles proporcionalmente cuando se redimensione.


 Os dejo aqui una clase que es capaz de realizar esta tarea, y que se puede usar en cualquier formulario con diversos objetos, y al final del articulo encontrareis pantallazoas y el codigo fuente para la descarga.

->
-
Y su uso en el programa principal:
->




El programa de ejemplo en funcionamiento:

Cuando se inicia la aplicación

Se ha cambiado el tamaño del formulario,
 las posiciones y dimensiones de los controles se han modificado proporcionalmente

La clase lo que hace, es:
1) Cuando se inicia  se guarda la posicion X,Y,Ancho y Largo, del formulario y del los controles que contenga. Para ello se guarda en el archivo de configuración usando la clase settings.
2) Cuando se modifica las dimensiones del formulario, redefine la posición de los controles proporcionalmente con los valores guardados.


Enlace de descarga del ejemplo: descarga


Saludos

Nota:
Mejora añadida: 1 de diciembre de 2013
A partir de un hilo del foro de gambas, Tanteador de Tenis de Mesa, he añadido una nueva forma de ordenarse proporcionalmente los controles, dependiendo de una nueva propiedad:
orden.FormaAdaptacion = 0 'se ordenan, sin deformación de la imagen de fondo (como inicialmente la programé, vease pantallazos del juego "Lobo Grises en el Atlántico"
orden.FormaAdaptacion = 1 'se ordenan, con las dimensiones del formulario, pudiendose deformarse la imagen de fondo.
Dependiendo de tipo de orden queremos que se realice, nos interesará uno u otro.
Aqui teneis un ejemplo de como se ordenaría los controles en el programa "Tanteador de Tenis"
Tanteador de Tenis de Mesa