aprende Visual Basic - www.ibercaja.es/~ib307182

FORMULARIOS

Los formularios son tratados como controles con sus propiedades, eventos y métodos. Aunque digamos que se trata de un control especial que utilizamos para contener los controles más usuales con los que construiremos nuestras aplicaciones: textbox, label, commandbutton, etc...

En este capítulo vamos a ver las propiedades y eventos más importantes de los formularios, como trabajar con múltiples formularios y como se establece la comunicación entre ellos.

 

Propiedades

Las propiedades más comunes de los formularios y que son similares al resto de los controles son las siguientes:

Name: Nombre del formulario, necesario para llamar al formulario desde el código.

Caption: Texto que aparece en el título del formulario

Backcolor: Color de fondo del formulario.

Forecolor: color del texto del formulario.

 

Otras propiedades que son prppias de los formularios y que es importante conocerlas para realizar una buena presentación en nuestras aplicaciones son las siguientes:

WindowState: Nos permite indicar el modo en el que aparecerá el formulario cuando sea llamado. Tiene tres posibles valores:

0 - Normal

1 - Minimizado.

2 - Maximizado.

MinButton y MaxButton: Son dos propiedades que admiten únicamente los valores True o False. Permiten que queden habilitados los botones minimizar y maximizar, respectivamente de un formulario.Nos sirven para controlar que el usuario no pueda cambiar el tamaño en que presentemos un formulario en pantalla.Si sólo desactivamos una de las propiedades, el botón correspondiente aparecerá desactivado, pero si desactivamos las dos propiedades, no aparecerá ninguno de los 2 botones, únicamente lo hará el botón con la "x" de cerrar.

MinButton = True MaxButton = True MinButton = False MaxButton = True MinButton = True MaxButton = False MinButton = False MaxButton = False

 

ShowInTaskbar: Mediante esta propiedad podremos controlar que determinado formulario aparezca o no en la barra de tareas de Windows. En una aplicación con múltiples formularios, si para cada uno de los que aparezca en pantalla, nos aparece también en la barra de tareas, al final la barra estará llena de aplicaciones. Podemos hacer que determinados formularios no aparezcan en ella colocando esta propiedad a False.

Icon: Nos permite modificar el icono que aparece a la izquierda de la barra del título de cualquier formulario, que es donde aparece el menú de control, para personalizarlo en nuestra aplicación

El icono que aparece por defecto en todos los formularios se puede cambiar por otro más simpático:

 

ControlBox: Controla la aparición del menú de control. Esta propiedad por defecto está activada, aunque si la ponemos a False, no sólo hacemos desaparecer el icono que simboliza al menú de control, sino que desaparecen también los botones de minimizar, maximizar y cerrar. Unicamente aparece la barra de titulo con el caption:

 

Si además de colocar ControlBox a False, colocamos MinButton y MaxButton a False y dejamos vacía la propiedad Caption, es decir sin nada en el título, nos aparecerá un formulario sin barra de titulo, es decir, únicamente un rectángulo gris que sí podremos cambiar de tamaño apuntando sobre el borde.

 

BorderStyle: Esta propiedad es la que más opciones tiene y la que más posibilidades ofrece para cambiar el aspecto de nuestros formularios. El cambiar el valor de esta propiedad afecta también a las propiedades MinButton, MaxButton y ShowInTaskbar que cambian automáticamente según la opción que hayamos seleccionado. En la siguiente tabla aparece una explicación de cada una de sus opciones y de que valor adoptan otras propiedades del formulario:

Opciones de BorderStyle Utilidad MinButton MaxButton ShowInTaskbar Muestra
0- None No aparecen bordes ni barra de titulo. No podemos modificar su tamaño de ninguna forma. Sirve para pantallas de presentación al principio de nuestra aplicación False False False
1 - Fixed Single No se puede cambiar su tamaño.Ni siquiera se puede maximizar haciendo doble click sobre la barra del título, algo que sí se puede hacer desactivando los botones MinButton y MaxButton en un formulario normal False False True
2 - Sizable (aparece por defecto) Formulario por defecto de VB.Contiene todos los botones de la barra del título, se puede cambiar su tamaño actuando sobre el borde y aparece en la barra de tareas. True True True
3 - Fixed Dialog No se puede cambiar su tamaño y no aparece en la barra de tareas False False False
4 - Fixed ToolWindow Aparece con la barra de titulo más pequeña, es el que utiliza VB para mostrar la caja de herramientas. No aparece el icono del menú de control ni aparece en la barra de tareas. False False False
5 - Sizable ToolWindow Igual que el anterior pero sí permite modificar su tamaño actuando sobre el borde. False False False

 

UTILIZACION DE MULTIPLES FORMULARIOS

Para utilizar varios formularios en nuestra aplicación tendremos que añadir cada uno de ellos mediante la opción de menú Insert / Form o pulsando sobre el botón .

Método Show

Para llamar a un formulario desde el código utilizaremos el método Show. Si el formulario 2 tiene en la propiedad Name form2, para llamarlo desde otro formulario pondremos:

Form2.Show

Si no ponemos ningún argumento se asume que el formulario aparece en modo no modal, es decir, se permitirá que se active cualquier otro formulario sin cerrar el formulario 2. La otra modalidad que existe es modal, lo que significa que no se permite el enfoque hacia ningún otro formulario hasta que no se cierre el actual. Este último modo puede servir para cuadros de diálogo que soliciten ciertos parámetros para que la aplicación siga funcionando: una contraseña.

Los argumentos del método Show son:

0 vbModeless No modal
1 vbModal Modal

Ejemplo:

Form2.Show vbModal

 

Sentencia Load

La sentencia Load seguida del nombre de un formulario provoca que se cargue el formulario en memoria pero sin visualizarse, ya que la propiedad Visible se coloca a False.

Ejemplo

Load Form2

Realmente el método Show realiza la carga del formulario en memoria, si no estaba cargado antes, y coloca la propiedad Visible del formulario a True. Durante este proceso se provoca la activación de los eventos Load y Activate del formulario en ese orden. En dichos eventos se puede colocar el código necesario que haga que el formulario se inicie siempre con los valores que queramos.

Si el formulario ya estaba cargado en memoria, mediante una sentencia Load o porque se haya ocultado con el método Hide, al llamarlo con el método Show, únicamente se realizará la modificación de la propiedad Visible a True, y no se volverá a efectuar el proceso de carga del formulario a memoria.Por tanto el formulario aparecerá con los mismos datos que tenía cuando se ocultó. Ahora el único evento que se activará es el Activate que se actuva cada vez que un formulario recibe el enfoque o pasa a ser el formulario activo.

 

Sentencia Unload

Nos permite descargar un formulario de la memoria. Se introduce junto al nombre del formulario que vayamos a descargar:

Unload Form2

Si nos encontramos dentro del mismo formulario para descargarlo no hace falta colocar el nombre sino únicamente:

Unload me

En una aplicación con varios formularios debemos usar esta sentencia para los métodos que terminamos de utilizar, de esta forma liberaremos espacio en memoria para que los otros formularios puedan aprovecharla mejor.

La sentencia unload provoca la activación de los eventos:

Deactivate: Al contrario que el evento Activate, este se activa cada vez que un formulario pierde el enfoque. También se activa este evento al utilizar el método Hide.

Unload: Este evento recibe el parámetro Cancel, y modificando su valor podemos hacer que se suspenda (cancele) el proceso de descarga de un formulario. Mediante 2 líneas de código podemos hacer una pregunta al usuario cada vez que se cierra un formulario para que nos confirme la operación:

Este código provocará que cada vez que se cierre el formulario de cualquier forma, (no sólo mediante la sentencia Unload sino tambien haciendo click sobre la "x", el menú de control o con ALT + F4) aparezca un mensaje preguntándonos si realmente queremos salir:

Este tipo de mensajes los veremos en el capítulo siguiente dedicado a los cuadros de diálogo.

Query_Unload: Este evento se produce realmente antes que el evento Unload, aunque por las posibilidades que tiene quería dejarlo para el final.

En este evento además de recoger el parámetro Cancel, también nos proporciona el parámetro UnloadMode que según el valor que tenga podremos saber desde donde se produce la posible descarga del formulario. Los valores que puede tener son los siguientes:

0 - vbFormControlMenu: Significa que el cierre del formulario se ha producido:

Pulsando sobre la "x"

Mediante la opción cerrar del Menú de Control.

Pulsando ALT + F4.

Cerrando el formulario desde la Barra de Tareas.

1 - vbFormCode: Indica que se ha cerrado el formulario utilizando la sentencia Unload.

2 - vbAppWindows: Se cierra el formulario porque se apaga el sistema desde Inicio / Apagar Sistema.

3 - vbAppTaskManager: Desde el administrador de tareas de windows (CTRL + ALT + DEL) se cierra la aplicación que contiene el formulario

4 - vbFormMDIForm: Se produce cuando se cierra un formulario hijo porque se está cerrando el formulario MDI que lo contiene.

Mediante unas líneas de código vamos a probar las posibilidades de este evento. Según desde donde se cierre el formulario del que consta la aplicación aparecerá un mensaje distinto pidiéndonos confirmación en el proceso de descarga.

Nota: Para el correcto funcionamiento de este ejemplo se debe compilar la aplicación mediante File / Make EXE File... y ejecutar la aplicación desde fuera del entorno de trabajo de VB.Esto es así para que se pueda cerrar la aplicación apagando el sistema y desde el administardor de tareas.

El código asociado al evento Query_Unload es el siguiente:

 

COMUNICACION ENTRE FORMULARIOS

Desde un formulario se puede tener acceso a los controles y propiedades de otro formulario.

En lugar de realizar el paso de parámetros cuando se llama a otro formulario que queremos que aparezca con unos determinados valores iniciales, lo que se hace es acceder a los controles del otro formulario y después mostrarlo mediante el método Show.

Para acceder a los controles de otro formulario se sigue la siguiente sintaxis:

Formulario!Control.Propiedad = valor

Se debe colocar una admiración "!" entre el formulario y el control y un punto entre el control y la propiedad

Ejemplo:

Form2!Label1.Caption = "Número de Clientes"

Al acceder a las propiedades de otro formulario automáticamente se carga éste en memoria, si no lo estaba ya antes. Una vez que hayamos modificado sus propiedades los visualizaremos con el método Show.

No se puede acceder a las variables declaradas en otro formulario, de modo que si queremos trabajar con variables generales, las cuales sean accesibles desde cualquier formulario de la aplicación, tendremos que declararlas como Públicas desde un módulo de código.

Para insertar un módulo en nuestro proyecto de Visual Basic tendremos que marcar en Insert / Module o pulsar sobre el botón de la barra de herramientas. Nos aparecerá una ventana en la que únicamente podremos colocar las variables y procedimientos o funciones que queramos que sean públicas para toda la aplicación.

En el siguiente ejemplo se declara la variable Gen_var de tipo Integer que será accesible desde cualquier formulario de la aplicación:

Ahora la ventana de proyecto tiene una línea más con un icono distinto indicando que se trata de un módulo de código: