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 activa 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, éste 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
también haciendo click sobre la "x", el menú
de control o con ALT + F4)
aparezca un mensaje preguntándonos si realmente queremos salir:
· Query_Unload: Este
evento se produce realmente antes que el evento Unload.
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:

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.
A V I
S O : 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 tendremos que ejecutar el menú ”Proyecto/Agregar
Módulo” 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.
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: