Dedicado a mis proyectos en Gambas ,un lenguaje de programación parecido al Visual Basic + Java pero ampliamente mejorado y...¡¡para gnu/linux!!.La potencia del gnu/linux sumada a la facilidad del Basic



Consultas, Desarrollo de programas y petición de presupuestos:



Mostrando entradas con la etiqueta contenedores. Mostrar todas las entradas
Mostrando entradas con la etiqueta contenedores. Mostrar todas las entradas

jueves, 12 de mayo de 2016

Videotutoriales: Controles Contenedores

Videotutoriales 

Controles Contenedores 




Aqui teneis unos video tutoriales dedicados a la ordenación de controles dentro de formularios y contenedores Panel.

El ultimo video explico como esta la aplicación de Shordi ( https://www.gambas-es.org/viewtopic.php?f=1&t=5209&highlight= )













Para más detalles: 

martes, 12 de agosto de 2014

Uso de avanzado de contenedores: Creando un entorno de controles parecido a Thunderbird

Uso de avanzado de  contenedores: 

Creando un entorno de controles parecido a Thunderbird

Cuando uno se inicia en crear los formularios y añadirles controles, se suele "arrastrar y soltar" los controles en el formulario, colocándolos de forma manual en él. 

Esto tiene una limitación, la cual  es que cuando el formulario cambie de tamaño (se aumente o disminuye de tamaño), los controles se quedan en el mismo sitio, dejando espacios vacíos sin rellenar o en el caso contrario (disminuir las dimensiones del formulario) se queden ocultos a la vista  del usuario.

Para evitar esto, se usan los "contenedores", y sus propiedades "expand" y "arrangement"

Con la propiedad "expand" establecida con valor True, se establece que si se cambia el tamaño donde esta incluido  el contenedor (ya sea un formulario u otro contenedor), este organizará su contenido (controles (label,textbox,buttón, etc) u otros contenedores) que estuvieran dentro de él.

Con la propiedad "arrangement" ( ver gambaswiki), se establece la forma de adaptar los controles o contenedores "hijos" (los que estén en su interior). Tiene varios valores, y según estos, los elementos que estén en su interior se ordenaran:

  • Column o TopBottom: Se ordenan en columnas
  • Fill: Ampliarán sus dimensiones al área que tenga el contenedor
  • Horizontal: Se ordenan a la altura (height) que tenga el contenedor
  • Row o LeftRight: Se ordena en filas
  • None: No se ordenan los elementos.
  • Vertical: Se ordenan por el ancho (width) que tenga el contenedor.

En este post, pondré de ejemplo como usar los contenedores de controles para conseguir un entorno parecido al programa Thunderbird.


Video introductorio:




Empezamos:
 El formulario inicial, tendrá dos contenedores:  un tabstrip (tendrá las pestañas)  y un panel (zona inferior)
Para que los contenedores, ocupen todo el formulario, tiene que tener la propiedad arrangement como Vertical. Asi tomarán en ancho del formulario.

Además el TabStrip, tendrá que expandirse (.expand=true) y el panel inferior, permanecer con el mismo alto.

En el TabStrip, su propiedad arrangement será "Fill", para que los controles hijos que contengan lo ocupen completamente. Y en panel inferior, tendra el arrangement igual a Horizontal para que se ordenen horizontalmente.


Luego continuaremos definiendo otros contenedores,Vsplit, para dividir el contenido mediante barras horizontales, Hsplit para hacer divisiones en vertical. Usando la propiedad .layout que tienes estos contenedores del tipo _split, se le  asigna un array de números enteros para definir como se reparte el espacio dentro de ellos..

Por ejemplo [1,3,3],  definiria 2 subdivisiones (barras que se pueden mover), asignadole el espacio a los contenedores o controles que contendría cada subdivisión el siguiente tamaño:
  • 1, sería 1/6 del espacio disponible (16,6%)
  • 3, seria 3/6 del espacio disponible (50%)
  • 2, seria  2/6 del espacio disponible (33,4%)


La organización de los controles la haremos según esta jerarquía de controles y contenedores:

Jerarquía de Controles
Quedando el formulario así:

Formulario con los controles y contenedores añadido

A la vez iremos definiendo las distintas propiedades, quedando como sigue:



De esta manera, el formulario se comportaría de una manera similar a como lo hace el formulario principal del programa Thunderbird, cuando cambiamos de tamaño el formulario, o desplazamos las distintas barras de separación, con el consiguiente adaptación al tamaño de los controles y/o contenedores  contenidos dentro de ellos.

Os podeis descargar el ejemplo aqui:

Descargar



Saludos

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