VISUAL BASIC 6
.0ENTORNO DE PROGRAMACIÓN VISUAL BASIC 6.0
INTRODUCCIÓN: ¿QUÉ ES VISUAL BASIC 6.0?
Visual Basic 6.0
es una excelente herramienta de programación que permite crear aplicaciones propias (programas) para Windows 95/98 o Windows NT. Con ella se puede crear desde una simple calculadora hasta una hoja de cálculo de la talla de Excel (en sus primeras versiones...), pasando por un procesador de textos o cualquier otra aplicación que se le ocurra al programador. Sus aplicaciones en Ingeniería son casi ilimitadas: representación de movimientos mecánicos o de funciones matemáticas, gráficas termodinámica, simulación de circuitos, etc.Este programa permite crear ventanas, botones, menús y cualquier otro elemento de Windows de una forma fácil e intuitiva. El lenguaje de programación que se utilizará será el Basic, que se describirá en el siguiente capítulo.
A continuación se presentarán algunos aspectos del entorno de trabajo de Visual Basic 6.0:
menús, opciones, herramientas, propiedades, etc.
EL ENTORNO DE PROGRAMACIÓN VISUAL BASIC 6.0
Cuando se arranca Visual Basic 6.0 aparece en la pantalla una configuración
similar a la mostrada en la pantalla de visual. En ella se pueden distinguir los siguientes elementos:
1. La barra de títulos, la barra de menús y la barra de herramientas de Visual
Basic 6.0 en modo Diseño (parte superior de la pantalla).
2. Caja de herramientas (toolbox) con los controles disponibles (a la izquierda de la ventana).
3. Formulario (form) en gris, en que se pueden ir situando los controles (en el
centro). Está dotado de una rejilla (grid) para facilitar la alineación de los controles.
4. Ventana de proyecto, que muestra los formularios y otros módulos de programas que forman
parte de la aplicación (arriba a la derecha).
5. Ventana de Propiedades, en la que se pueden ver las propiedades del objeto seleccionado o del propio formulario (en el centro a la derecha). Si esta ventana no aparece, se puede hacer visible con la tecla <F4>.
6. Ventana FormLayout, que permite determinar la forma en que se abrirá la aplicación cuando comience a ejecutarse (abajo a la derecha).
Tipos de datos
Al igual que C y otros lenguajes de programación, Visual Basic dispone de distintos tipos de datos, aplicables tanto para constantes como para variables. La Tabla 3.2 muestra los tipos de datos disponibles en Visual Basic.
Tipo Descripción Carácter de declaración
TIPO |
COMENTARIO |
BOOLEAN |
Sólo admite 2 valores TRUE o FALSE |
BYTE |
admite valores entre 0 y 255 |
INTEGER |
admite valores entre -32768 y 32767 |
LONG |
admite valores entre -2.147.483.648 y 2.147.483.647 |
SINGLE |
admite valores decimales con precisión simple |
DOUBLE |
admite valores decimales de doble precisión |
CURRENCY |
válido para valores de tipo moneda |
STRING |
cadenas de caracteres |
Variant |
Admite cualquier tipo de datos |
DATE |
fechas, permite operar con ellas |
Tipos de datos en Visual Basic 6.0.
En el lenguaje Visual Basic 6.0 existen dos formas de agrupar varios valores bajo un mismo nombre. La primera de ellas son los arrays (vectores y matrices), que agrupan datos de tipo homogéneo. La segunda son las estructuras, que agrupan información heterogénea o de distinto tipo. En Visual Basic 6.0 las estructuras son verdaderos tipos de datos definibles por el usuario.
Para declarar las variables se utiliza la sentencia siguiente:
Dim NombreVariable As TipoVariable cuyo empleo se muestra en los ejemplos siguientes:
Dim Radio As Double, Superficie as Single
Dim Nombre As String
Dim Etiqueta As String * 10
Dim Francos As Currency
Dim Longitud As Long, X As Currency
Es importante evitar declaraciones del tipo:
Dim i, j As Integer
pues contra lo que podría parecer a simple vista no se crean dos variables Integer, sino una Integer
(j) y otra Variant (i).
En Visual Basic 6.0 no es estrictamente necesario declarar todas las variables que se van a utilizar (a no ser que se elija la opción Option Explicit que hace obligatorio el declararlas), y hay otra forma de declarar las variables
TIPOS, DECLARACIONES Y ALCANCES DE LAS VARIABLES
Que son las variables
En cualquier programa necesitamos hacer cálculos, usar información, procesarla y mostrarla. En la mayoría de los casos, necesitamos un lugar temporal en el cual guardar parte de esa información, incluso toda.
Es aquí donde entran en juego las variables, las que nos permite guardar datos en memoria, para que cuando los necesitemos, podamos tomarlos, modificarlos y volverlos a guardar para usar mas tarde.
La memoria es el lugar donde el ordenador almacena de forma temporal los programas y parte de la información que necesita o utiliza. Esas posiciones o lugares de la memoria donde los programas pueden almacenar información son las variables.
Es una ubicación de almacenamiento temporal con nombre que se encuentra en memoria, siendo capaz de contener cierto tipo de datos que pueden modificarse durante la ejecución del programa.
En VB los nombres de las variables deben limitarse a 255 caracteres, empezar con un carácter alfabético y no pueden obtener un punto
Utilización temporal de almacenamiento de datos dentro de un programa. Permiten asignar nombres cortos y fácil de recordar. Son para manejar cualquier tipo de información.
Tipos de Variables
Dim:
Al declarar una variable con esta palabra estamos diciendo que la variable sea local al ámbito en que se declara. Puede ser dentro de un procedimiento o dentro de un formulario, de esta forma no sería accesible desde los demás procedimientos o formularios.Ej: Dim suma
Public
: Las variables declaradas serán publicas y podrán estar accesibles desde todos los formularios de la aplicación. Para conseguirlo tendremos que declararlas en un módulo de código, no en la sección declarations de cualquier formulario de los que conste la aplicación.Ej: Public suma
Static
: Con esta forma de declarar variables conseguiremos que las variables locales no se creen y se destruyan al entrar y salir de los procedimientos donde fueron declaradas sino que se mantenga su valor durante todo el periodo de ejecución de la aplicación. De esta forma a entrar en algún procedimiento las variables recuerdan el valor que tenían cuando se salió de él.
Ej: Static suma
Declaracion de las variables
DIM: Es la abreviatura de Dimensión, esto reserva espacio en memoria para la variable cuando se ejecute el programa y permitirá a VB que tipo de datos deberá guardar en dicha variable.
EJ : Dim nombre
Declaración Implícita: Declarar variables sin uso del Dim. No obliga a organizar y listar las variables de antemano.
Si se va a herramientas, opciones y en editor se elige "Requerir Declaración de Variables". Con esto VB genera un mensaje de error siempre que encuentre una variable mal escrita o declarada.
Pero hay otra forma que sólo es utilizable para 6 tipos. Esta forma de identificar a una variable nos permite ahorrar tiempo a la hora de escribir código, además de tratar de hacer compatible las primeras formas de asignar variables en Visual Basic (desde Visual Basic 1.0).
Estas formas son extensibles para las variables tipo Integer, Long, Single, Double, String y Currency.
Integer %
Long &
Single !
Double #
String $
Currency @
De esta forma, podemos escribir el siguiente código:
Private Sub
Command1_Click()Sum% = 3 + 4
Num# = 32 / Sum%
Label1 = Num#
End Sub
En este ejemplo, puede utilizarse, pero es preciso tener un ligero conocimiento de este tipo de variables para no confundir una variable de tipo Long por otra de tipo Integer por ejemplo.
Establecimiento del alcance de la variable
El alcance de las variables se refiere al área del programa en las cuales es visible la variable. Hay cuatro niveles diferentes de alcances:
Nivel de Procedimiento: Para declarar variables, ya sea implícitas o con el enunciado DIM, es en el nivel de procedimiento. En VB, existen dos tipos de procedimientos: los procedimientos SUB y los FUCNTION. Las variables declaradas en los procedimientos son locales para ese procedimiento. Siendo accesibles solamente por los procedimientos en los cuales están declaradas, las variables locales tienen la visibilidad mas baja y el alcance mas estrecho. Las variables locales de un procedimiento son reinicializada cada vez que llama el procedimiento.
También se pueden declarar variables Estáticas: es decir que las variables locales sean permanentes: EJ static nombre.
Nivel de Formulario: Si se declara una variable a nivel de forma esta disponible en cada procedimiento en esta forma.
Nivel de Modulo: Se crean mediante la selección de la opción Agregar Modulo del menú Proyecto de VB. Los módulos de códigos se utilizan para conservar los subprocedimientos y funciones generales que no están relacionados con eventos, así como sus variables locales(publicas) y sus constantes. Variables Publicas: para identificar una variable global, se declara con
la palabra Public. Ej:
Public nompreapellido As String
Matrices
Para declarar matrices debemos colocar entre paréntesis el número de elementos de los que constará a continuación del nombre de la variable:
Dim
De esta forma tenemos una matriz de 10 elementos identificados del 0 al 9
Podemos obligar a que el primer elemento de una matriz tenga el índice con valor 1.
Esto se hace colocaara 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 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 |
option base 1 en la sección declarations de nuestro formulario. También podemos indicar los límites inferior y superior de la matriz: Dim medidas(5 to 14) as integer Es una matriz de 10 elementos cuyos índices van del 5 al 14. Las matrices multidimensionales se declaran de la siguiente forma: Dim medidas(1 to 10, 1 to 10) as integer Tipos de Datos Definidos por el Usuario
El usuario puede definir los datos en VB en la sección General de Declaraciones de un modulo de código, usando la palabra clave Type y End Type. Ej: Type tipoempleado ‘ Crear tipo definido por el usuario. ID As Long Nombre As String *15 Salario As Currency End Type Por que son Indispensables las Variables El poder y la flexibilidad añadidos a sus programas de computadoras por un uso juicioso y bien informado de variables están más allá de cualquier discusión y no pude sobre estimarse. De hecho, cualesquiera programas, a excepción d los más triviales harán un uso cuidadoso de una amplia diversidad de variables, abarcando todo el expectro de tipos disponibles. Los tipos de datos personalizados son útiles en los programas de Bases de Datos, donde ayuda a considerar varios elementos diferentes de datos como una sola entidad, tal como un registro de un empleado por ejemplo, o una factura de un cliente. Por lo general el establecimiento de variables del tipo y alcance adecuado asegurara el uso más eficiente de la memoria en sus programas.
Declaración de Constantes Como su palabra lo dice es Información que no varía hace más fácil la comprensión del código y permite modificar un valor en un solo lugar no ocupa espacio extra, Ejemplo: Const Mínimo = 1, Máximo = 10
ENTRADAS Y SALIDAS SENCILLAS CON MSGBOX() E INPUTBOX() Que son Inputbox(), Msgbox()
InputBox() Despliega un Mensaje en un cuadro de dialogo, espera que el usuario introduzca el texto o seleccione un botón y luego devuelve el contenido del cuadro de texto.
MsgBox() y MsgBox Despliega un mensaje en un cuadro de dialogo y espera que el usuario seleccione un botón.
ESTRUCTURAS DE DECISIONES: RAMIFICACIONES Y CICLOS Que son las estructuras de Decisiones? Estas estructura caen en dos amplias categorías: Ramificaciones y Ciclos. Los dispositivos como If..Then y Select Case hacen que el programa continúe en una dirección cuando se encuentra una condición particular, sin mirar nunca atrás. Las construcciones en ciclos como Do.. Loop y While..Wend, se usan para repetir un cierto bloque limitado de instrucciones hasta que las condiciones especificadas son True(cierta) o False(Falsa).
Sentencia If Then Else La primera es la sentencia If Then Else que no debe tener secretos puesto que es muy similar en todos los lenguajes. La estructura general es la siguiente: If condición then bloque de sentencias Else bloque de sentencias End If Se pueden colocar todas las sentencias de código que queramos en cada uno de los bloques de sentencias, siempre que cada sentencia vaya en una línea distinta. Si los bloques de sentencias están formados por una sola instrucción podemos utilizar la versión reducida que ocupa una sola línea: If condición then sentencia else sentencia Ejemplo: If isnumeric(numero) then la variable numero es numérica else no es numerica. También podemos anidar varias sentencias If then Else cuando una de las 2 opciones iniciales contiene a su vez 2 bifurcaciones dependiendo del estado de otra condición: if dato<10 then la variable dato contiene un solo dígito Else If dato<100 then la variable dato contiene 2 dígitos Else la variable dato contiene más de 2 dígitos end If End If En el ejemplo anterior se quiere saber si la variable dato contiene uno, dos o más dígitos. Para calcularlo no es suficiente con una sola sentencia If Then Else, por tanto se recurre a anidar 2 sentencias de este tipo. La segunda sentencia If se ejecutará si la condición de la primera sentencia If no se cumple, es decir, si dato>=10. Una vez que se ha llegado a este punto sabemos que la variable dato contiene 2 o más dígitos, mediante una nueva sentencia If sabremos exactamente el número de dígitos de la variable dato. Este último ejemplo podría haberse escrito de otra forma utilizando la cláusula ElseIf: If dato<10 then la variable dato contiene un dígito ElseIf dato<100 then la variable dato contiene dos digitos Else la variable dato contiene más de 2 digitos End If Esta segunda opción es perfectamente válida cuando queremos evaluar varias condiciones, aunque tiene más limitaciones que la estructura anterior ya que enlaza directamente el Else con el If siguiente, sin dejarnos introducir sentencias entre medias que algunas veces podríamos necesitar. Podemos introducir tantas líneas ElseIF como queramos siempre antes del último Else, si es que lo necesitamos. Para múltiples decisiones en los que dependiendo del valor de una variable queremos que se realice una acción distinta, parecido a los menús de los programas de MS DOS, no conviene utilizar la estructura IF Then, sino que el código queda más claro y resulta más fácil de modificar utilizando la sentencia Select Algunas veces se puede condensar la construcción If..Then..Else..Endif dentro de una línea de código. Esto se logra con la función IIF(Si inmediato). Ej: Color = IIF(elcolor < 15, elcolor, 1) Sentencia Select CASE
Esta sentencia permite realizar operaciones diferentes dependiendo del valor de una variable: Estructura General: Select Case dato Case valor1 bloque de sentencias case valor2 bloque de sentencias Case valor3 bloque de sentencias case else bloque de sentencias, se ejecutan si no se cumple ninguno de los valores anteriores End Select En esta construcción, dependiendo del valor de la variable dato se ejecutará un bloque de sentencias diferente. Los valores que podemos colocar en lugar de valor1, valor2, valor3 no sólo se limitan a valores constantes como números y cadenas de texto, sino que podemos comparar con un número como podemos ver en el siguiente ejemplo: Select Case NotaFinal Case Is < 5 Suspendido Case 5 to 6.99 Aprobado Case 7 to 8.99 Notable Case Else Sobresaliente End Select Como se puede observar si utilizamos los operadores lógicos como >, <, =, <=, >= debemos anteponer el operador Is. Si lo que hacemos es comparar con un intervalo de valores colocaremos el operador to entre los limites del intervalo. También podemos realizar comparaciones con un conjunto de valores separados por comas: Case 1, 3, 5. El numero es impar. Para terminar con el tema de las sentencias de selección vamos a ver un ejemplo completo en el que probaremos el uso de este tipo de instrucciones. Se trata del típico ejemplo de resolución de una ecuación de 2º grado. Sabemos que la estructura de una ecuación de este tipo es la siguiente: ax2+ bx + c = 0 La fórmula que resuelve el valor de x es: Esta fórmula tiene 2 soluciones, una o ninguna dependiendo del contenido de la raíz, de modo que esa es la comparación que realizaremos: Trabajaremos con variables de tipo double que permiten decimales con la mayor precisión: También podría haberse utilizado la estructura If then Else, aunque de esta forma no hay que repetir tantas veces la condición a evaluar. El código anterior es sólo una muestra de como llegar a la solución de un problema utilizando sentencias de Visual Basic, no hemos entrado todavía en como introducir este codigo en el entorno de desarrollo de VB para crear una aplicación. Eso lo veremos en el capítulo siguiente, donde hablaremos de controles que son los elementos necesarios para construir el interfaz de usuario y poder asociar el código necesario para realizar nuestras aplicaciones Sentencia de Control While Wend
Ejecuta repetidamente una o mas instrucciones mientras una condición dada es cierta. Sintaxis: While condición [ instrucciones] Wend Sentencia de Control Do Until proporciona una forma mas estructurada y flexible para ejecutar ciclos. Esta repite un bloque de codigo mientras una condicion es True o a partir de que la condicion sea True. Sintaxis: Do Unitil cliente.EOF Print cliente("nombre") Cliente.movenext
Loop Exit Do transfiere el control a la instrucción que sigue inmediatamente al ciclo. Sentencia de Control For Next
Esta sentencia repite un grupo de instrucciones, un numero especificado de veces. Sintaxis: For contador = 1 To 10 Print cliente("nombre") Cliente.Movenext Next contador Se puede especificar también el intervalo Step, la cantidad que cambiar el contador cada vez que se ejecuta el ciclo. Si no se especifica, el incremento toma un valor por omisión de 1. Ej: For porcentaje = 0 To 100 Step 5 Print porcentaje & "%" Next porcentaje
Exit For se usa frecuentemente con la evaluación de algunas condicionantes If..Then y transfiere el control a la instrucción que se encuentra a continuación de Next.
ROBERTO Que es un Procedimiento de Evento? Permanece inactivo hasta que se llama para responder a los eventos causados por el usuario. Que es un Procedimiento Sub?
Cualquier procedimiento es una secuencia nombrada de instrucciones que ejecutan como una unidad. El procedimiento Sub es una unidad de código que realiza una tarea especifica dentro de un programa, pero que no devuelve un valor explícito. Un procedimiento sub comienza con una instrucción Sub y termina con una instrucción End Sub. Esto no significa que el procedimiento Sub sea el único, existen una serie de procedimientos que VB trae incluido ej: Sub DiskCleanup() Kill "*.Dat" Kill "*.txt" Beep Msgbox " La unidad esta Limpia", vbinformation, "Procedimiento completo" End Sub Para mandarlo a llamar solamente se escribe el nombre del procedimiento sin necesidad de usar los paréntesis DiskCleanup. También existen procedimientos a los que se le pasan argumentos: Sub multiplicar(primero As integer, segundo As integer) Resultado = primero * segundo End Sub
Para mandarlo a llamar seria de la siguiente forma: Dim i As Integer, y As Integer I = 3 Y = 4 Multiplicar i, y
***********************************************************************************************************************************************************************
Que es un Procedimiento de Funcion?
Es un procedimiento que realiza una tarea especifica dentro de un programa y devuelve un valor. Una función se define en un modulo que inicia con la instrucción Function y termina con la instrucción End Function. Funciones Utiles en VB
Para convertir un titulo de una manera mas presentable tal como muestra el ejemplo anterior: "el mundo es una ostra" en "El Mundo Es Una Ostra" se escribe el siguiente codigo: Function titulo(introcadena As String) As String Dim fueracadena As String Dim espacio As Integer Introcadena = Trim(Lcase(introcadena)) + " " Espacio = instr(introcadena, " ") While espacio > 0 Fueracadena = fueracadena + Ucase(Mid(introcadena, 1, 1)) + Mid(introcadena, 2, espacio –1) Introcadena = Ltrim(Mid(introcadena, espacio +1)) Espacio = instr(introcadena, " ") Wend Titulo = fueracadena End function
INTRODUCCION A LOS CONTROLES, METODOS, PROPIEDADES Y FORMULARIOS Una vez que ya hemos visto algunas de las sentencias básicas: declaración de variables, sentencias de selección, que son muy parecidos a las sentencias utilizadas en MSDOS. Vamos a empezar a programar en windows y veremos en que se diferencia de la programación clásica en MS DOS, para vamos a introducir el uso de los controles. Pero ¿Qué son los controles? Realmente son objetos que disponen de sus propias propiedades y métodos, y cuya utilidad es la de facilitarnos el desarrollo de nuestras aplicaciones. En cualquier aplicación con la que trabajamos estamos rodeados de controles. Quien no ha visto en multitud de programas los botones ACEPTAR y CANCELAR, un cuadro para introducir texto, una lista con datos, por mencionar algunos. Pues todos ellos son controles y no tendremos que preocuparnos por crearlos para nuestras aplicaciones sino que ya vienen con el paquete de VB, lo único que tendremos que hacer es modificar sus propiedades: tamaño, color, entre otros. Para incorporarlos en nuestras aplicaciones y asociarles el código necesario para que se comporten como esperamos al ejecutar la aplicación. Antes de empezar a conocer los controles básicos veamos cuales son sus características generales: Propiedades : Todos los controles disponen de una serie de propiedades las cuales podemos cambiar al incluirlos en nuestras aplicaciones. Ejemplos de propiedades son el color, el tipo de letra, el nombre, el texto, entre otros. La sintaxis para asignar una propiedad de un objeto es:Objeto.Propiedad = Valor Metodos: Son procedimientos asociados a los controles, es decir, rutinas ya establecidas que podemos invocar desde nuestras aplicaciones para que se realice alguna operación sobre el control. Por ejemplo el control ListView (la lista de archivos que aparece en el explorador de windows) dispone del método order que te ordena los datos aparecidos en la lista. Son procedimientos conectados o integrados, un bloque de código que puede llamarse para impartir alguna acción a un objeto particular. Los metodos pueden requerir informacion adicional en forma de argumento. Su sintaxis es la siguiente:Objeto.Metodo Arg1, Arg2... Argn `ej: pictierra.Move 0,0
Eventos: Son acciones que pueden ser motivadas por el propio usuario o por el mismo sistema operativo. Ejemplos pueden ser el movimiento del ratón o hacer click sobre su botón. En Visual Basic digamos que se utiliza la programación orientada a eventos, lo cual es una de las diferencias más importantes respecto a la programación lineal de MS DOS. No necesitamos detectar cuando se ha producido un evento determinado, Windows lo detecta automáticamente. Los eventos ya están definidos, son bastantes y cada control cuenta con los suyos propios, aunque son muy parecidos. Lo único que tendremos que hacer es asociar el código necesario al evento que necesitemos tratar.Para mostrar la ventana donde aparecen los controles que Visual Basic carga por defecto nada más arrancar la aplicación tendremos que marcar en Ver del menú principal y activar la opción Cuadro de Herramientas. Obtendremos una ventana como esta en la pantalla Realmente existen muchos más controles, aunque estos son los más utilizados y por eso aparecen por defecto. Para tener acceso a los demás controles tanto de Visual Basic como los controles que incorporan otras aplicaciones marcaremos en proyecto y luego la opción componentes del menú principal. Moviendo el ratón por encima de cualquier control aparecerá una pista indicándonos el control de que se trata.
TextBox
Mediante este control podremos realizar tanto la entrada como la salida de datos en nuestras aplicaciones. No hace falta que indiquemos las coordenadas de la situación del formulario en pantalla, simplemente tendremos que marcar sobre el control de la caja de herramientas y dibujarlo con el tamaño que queramos en nuestro formulario. Se puede almacenar el contenido actual de este control en una variable, ej: Dim viejotext, nuevotexto As String Nuevotexto = "Texto Nuevo" Viejotexto = introtexto.text Lee el texto Actual introtexto.text = nuevotexto Pone el nuevo texto
PROPIEDADES Text: Aquí indicamos el texto que aparecerá en el control. Podemos asignarle cualquier texto en tiempo de diseño o ejecución. También podemos tomar el texto que haya introducido el usuario para tratarlo durante la ejecución.Name: Esta propiedad la tienen todos los controles, el nombre que viene por defecto en este caso Text1 y es el nombre con el que se conocerá el control cuando lo utilicemos en el código. En un mismo formulario no puede haber 2 controles con el mismo nombre. Conviene poner un nombre que represente la función que tiene el control en la aplicación para que el código quede más claro. Ejemplo, si en el textbox vamos a introducir la dirección de una persona podemos asignarle a esta propiedad el valor Dirección.MultiLine: Permite que introduzcamos varias líneas de texto en el control en lugar de sólo una.Alignment: Alineación que tendrá el texto dentro del control: izquierda, centro o derecha. Para que funcione la propiedad MultiLine debe estar con el valor true.Locked: Si esta con valor true bloquea el control, es decir, el usuario no puede introducir ni modificar el texto que contenga. Nos puede servir para utilizar el control como salida de datos sin que el usuario pueda modificarlos por error.BorderStyle: Determina el tipo de borde.PasswordChar: Oculta un texto con un carácter simple. Tag: Almacena información adicional(cualquier expresión decadena), ej: almacenar la contraseña de su sistema.
Otras propiedades que son comunes a la mayoría de los controles: Backcolor: color de fondo.Forecolor: color de letra.Font: tipo y tamaño de letra.Para personalizar las combinaciones de la barra de desplazamiento en un cuadro de texto, se puede establecer la propiedad ScrollBars en Horizontal, Vertical, Both o None. Cuando la propiedad MultiLine esta en True se puede usar la propiedad Alignment para ajustar el texto. EVENTOS Los eventos son acciones que se pueden realizar en cualquier control: click, doble click, movimiento del ratón. A estos eventos se les puede asociar código para que se ejecute al producir el evento. MouseMove : al mover el raton por encima del control.Mousedown: al pulsar cualquier boton del ratonChange: al cambiar el contenido del controlClick: al hacer click con el botón izquierdo del ratón sobre el controlDoubleclick: al hacer doble click con el con el botón izquierdo del ratónsobre el control. Getfocus: este evento se activa cuando el control recibe el enfoque, esdecir, cuando se activa el control en tiempo de ejecución para introducir datos en él o realizar alguna operación. Lostfocus: Es el contrario del anterior evento, se activa cuando el controlpierde el enfoque, es decir, se pasa a otro control para seguir introduciendo datos.
Label
Este control es también uno de los más utilizados, aunque su utilidad queda restringida a la visualización de datos en el mismo, no permitiendo la introducción de datos por parte del usuario. La forma de utilizarlo es similar a la del control anterior, dibujar el control en el formulario con el tamaño que queramos y asignarle un texto en tiempo de diseño o de ejecución esta vez sin utilizar la propiedad text puesto que no la incorpora, sino utilizando la propiedad caption. Este control sirve para mostrar mensajes en nuestro formulario que orienten al usuario sobre la utilidad de los demás controles que tengamos en la aplicación o para indicarnos acciones que podemos realizar. En el ejemplo anterior donde aparecía un textbox en el formulario, hubiera quedado mejor con un mensaje aclaratorio contenido en un control label Si se desea que se despliegue adecuadamente varias líneas de diversas longitudes, puede establecer las propiedades Autosize y WordWrap en True. PROPIEDADES Caption: Es el texto que contendrá el control.Alignment: Alineación del texto contenido en el control, no necesita queesté activada ninguna otra propiedad. BorderStyle : Si queremos que aparezca un borde alrededor del controlactivaremos esta propiedad. Para este control no se suelen utilizar los eventos ya que su contenido suele cambiar poco a lo largo de la ejecución de la aplicación. De todas formas los eventos son casi los mismos del control textbox excepto que no dispone de los eventos GetFocus y LostFocus ya que a este control no se le puede dar el enfoque. CommandButton
Se usa un control de botón de comando para iniciar, interrumpir o terminar un proceso en particular. Este control es el típico botón que aparece en todas las aplicaciones y que al hacer click sobre él nos permite realizar alguna operación concreta, normalmente Aceptar o Cancelar. Aunque según el código que le asociemos podremos realizar las operaciones que queramos. En el ejemplo anterior podemos añadir un control de este tipo para salir de la aplicación sin tener que pulsar sobre la equis de la esquina superior derecha. Pero sólo con introducir un control de este tipo con el texto salir que se introduce a través de la propiedad caption no basta. Habrá que asociarle un código que nos permita salir de la aplicación en el evento adecuado. Y el evento por excelencia de este control es click. Así pues accederemos al código del control y la sentencia nos permitirá salir de la aplicación es End, simplemente tecleamos esa palabra en el evento click y comprobar que realmente finalizaremos nuestra aplicación al pulsar sobre dicho botón. PROPIEDADES Caption: Aquí pondremos el letrero que queremos que aparezca en el botón:aceptar, cancelar, salir, entre otros. Enabled: Esta es una nueva propiedad, cuando su valor es true el botónfunciona normalmente, cuando su valor es false el botón se encuentra desactivado, no responde a los eventos producidos sobre él y el texto aparece en un gris claro advirtiéndonos de su estado. Podemos utilizar esta propiedad para activar o desactivar un botón dependiendo del estado de otros controles. Por ejemplo, en un botón Aceptar, no activarlo hasta que se haya introducido una cantidad en un control textbox, ya que ese botón nos calculará el IVA de la cantidad. Appearance: Selecciona 3-D o apariencia plana.Cancel: Permite la selección con Esc True, False Default: Permite la selección con enter True, False.
EVENTOS Click: Es el evento tipico de este control y el que más se utiliza.MouseMove : Como sabemos detecta el movimiento del ratón sobre elcontrol. Puede servir para que aparezca un mensaje en un control Label que nos aporte información sobre la utilidad del control ampliando el texto que hayamos colocado como caption del commandbutton.
Cuando los datos de campos se ven a través de un formulario, esto son usualmente almacenados(o relacionados) en varios controles TextBox, los que a su vez se identifican por etiquetas. Es probable que el mismo formulario tenga algunos botones para navegar a través de los registros de base de datos.
Que son los botones de Opción? Es el que despliega una opción que puede encenderse a pagarse, con la propiedad Value del botón puesta en True o False, según el caso. Para agrupar los controles OptionButton en un marco o cuadro de dibujo, trace el marco o cuadro de dibujo primero y luego trace los controles OptionButton adentro. Esto se hace para asegurarse que sean mutuamente excluyentes y crear una jerarquía de contenedores validas. Si traza los controles fuera del marco y los arrastra adentro, los copia dentro del marco o traza el marco alrededor de los controles existentes, no producirá los resultados deseados.
OptionButton Este control nos permite elegir una opción entre varias de las que se nos plantean. Cada opción será un control optionbutton diferente. Facilita la introducción de datos por parte del usuario: De todas las opciones que se nos ofrece, en este caso los 4 colores, sólo podremos activar una. Si activamos cualquier otra opción, se desactivará automáticamente la última que teníamos activada . El marco que está alrededor de los 4 controles optionbutton se trata del control Frame Del control Frame la única propiedad que nos interesará es caption, que es el texto que aparecerá en el encabezado, en el ejemplo anterior: colores. PROPIEDADES DE OPTIONBUTTON Caption: El texto que aparecerá al lado del control: Rojo, verde...Value: Es el valor que tendrá el control: True si se encuentra activado yFalse si no lo está. Para comprobar que opción ha activado el usuario comprobaremos el estado de esta propiedad. Alignment: Alineación del texto respecto al control: Left Justify: el controlaparece a la izquierda del texto. Es el ejemplo anterior. el control aparece a la derecha del texto. Los eventos del control son los mismos que en anteriores controles, aunque no se suele asociar código a los eventos de este tipo de controles, sino únicamente conocer el valor que tienen: true o false.
Que son las casillas de verificación? Un CheckBox muestra una marca cuando esta seleccionado, y la marca desaparece cuando se borra el cuadro. Este control se usa para dar al usuario las opciones True/False , Si/No y Activado/Desactivado. Se puede desplegar texto junto a las casillas de verificacion, estableciendo la propiedad Caption. Use la propiedad Value para determinar el estado del control: 1 = Marcado 0 = Sin marcar 2 = No disponible(desactivado, aparece atenuado). Ej: Select Case chksound Case 0 Msg = "No Seleccionado" Case 1 Msg = "Seleccionado" Case 2 Msg = "No Disponible" End Select MsgBox Msg Que son los Marcos? Proporciona una forma atractiva de agrupar controles relacionados. Se puede usar un marco para subdividir un formulario en otros. Primero se traza el control Frame y luego los controles dentro del Frame.
****************************************************** Jose Luis CUADROS DE LISTA Y CUADROS COMBINADOS Que son los cuadros de lista? Los cuadros ListBox despliegan una lista de elementos en la que el usuario puede seleccionar uno o más de estos. Si el numero de elementos excede el numero que puede desplegarse a la vista, una barra de desplazamiento se anexa automáticamente al control ListBox. Los eventos Clic o Ddclic del cuadro de lista se utilizan habitualmente para procesar la selección. Una propiedad Listcount de una lista devuelve el numero de elementos de la lista, mientras que la propiedad ListIndex se una para seguir la pista del elemento actualmente seleccionado. La propiedad MultiSelect devuelve(en tiempo de ejecución) o establece(en tiempo de diseño) un valor que indica si un usuario puede o no hacer una selección múltiple, y como usted hacerse tal selección. Para seleccionar mas de un elemento de una lista, la propiedad MultiSelect del control ListBox puede ponerse en 1 o 2. Descripción y Ajuste de MultiSelect
******************************************************************************************************************* Que son los cuadros combinados? La diferencia entre cuadros combinados (ComboBoxes) y cuadros de lista(ListBox) es que un control ComboBox combina las características de un control Textbox y un control Listbox. Si el usuario no desea seleccionar alguna de las opciones ofrecidas, puede teclear información en la parte del cuadro de texto del control. Un cuadro combinado tiene tres estilos diferentes, determinados por sus valores en la propiedad Style. Esta propiedad devuelve o establece un valor indicando el tipo de control ComboBox y el comportamiento en el cuadro de lista. Los valores de la propiedad Style del comboBox resumen a continuación:
Descripción y Ajuste de MultiSelect
Propiedades y Métodos Comunes de lista Estas se resumen en le siguiente cuadro
Es importante en la manera en que trabajan los métodos Additem y Removeitem. Ambos requieren un solo argumento, pero Additem espera una expresión de cadena, mientras que Removeitem requiere un índice numérico.
CAPITULO III FORMULARIOS, CONTROLES Y MENU 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. ¿Qué es un Formulario de Arranque? Es el primer formulario que se despliega en la Aplicación por lo general es el primer formulario que se crea en el Ambiente de desarrollo. No necesariamente una Aplicación tiene que arrancar con el primer formulario del Proyecto ya que esto se puede modificar. Pasos para especificar un Formulario de Arranque:
Cómo se utilizan los Formularios? En Visual Basic el uso de Formularios es una Actividad realmente flexible. Puede hacer que todos los Formularios de un programa sean visibles de forma simultanea o podrá cargar y descargar formularios a medida que el Programa los valla necesitando. Un formulario que tenga que ser utilizado cuando se muestre por pantalla se denomina formulario modal (el Formulario acaparara la atención del Programa hasta que el usuario pulse Aceptar, Cancelar o sea eliminado por otros medios). Un formulario que el usuario puede seleccionar o ignorar en pantalla recibe el nombre de Formulario No Modal. La mayoría de aplicaciones desarrolladas por Microsoft utilizan formularios no Modales para mostrar Información, ya que proporcionan más flexibilidad de empleo del usuario. Propiedades de los Formularios. 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 formularioBackcolor: Color de fondo del formulario.Forecolor: color del texto del formulario.Otras propiedades que son propias 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.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ónEl 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 captionSi 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
Utilización de Múltiples 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 se utiliza el método Show. Si el formulario 2 tiene en la propiedad Name form2, para llamarlo desde otro formulario se escribe: Form2.Show Si no se pone 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:
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 deseados.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. Permite descargar un formulario de la memoria. Se introduce junto al nombre del formulario que se va a descargar: Unload Form2 Si se esta dentro del mismo formulario para descargarlo no hace falta colocar el nombre sino únicamente: Unload me En una aplicación con varios formularios se debe usar esta sentencia para los métodos que se terminan de utilizar, de esta forma se libera 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 al modificar su valor se puede hacer que se suspenda (cancele) el proceso de descarga de un formulario. Mediante 2 líneas de código se puede hacer una pregunta al usuario cada vez que se cierra un formulario para que 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 que pregunta si realmente se desea 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 proporciona el parámetro UnloadMode que según el valor que tenga se podrá 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 se va 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 que pide 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 administrador 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
Al acceder a las propiedades de otro formulario automáticamente se carga éste en memoria, si no lo estaba ya antes. Una vez que se hayan 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 se quiere trabajar con variables generales, las cuales sean accesibles desde cualquier formulario de la aplicación, se tendrán que declararlas como Públicas desde un módulo de código Para insertar un módulo en un proyecto de Visual Basic se tendrá que marcar en Proyecto y dentro de la opción proyecto Agregar Modulo o pulsar sobre el botón |
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 |
Utilización de Múltiples 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 se utiliza el método Show. Si el formulario 2 tiene en la propiedad Name form2, para llamarlo desde otro formulario se escribe:
Form2.Show
Si no se pone 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 propiedadEn el siguiente ejemplo se declara la variable Gen_var de tipo Integer que será accesible desde cualquier formulario de la aplicación:
Caption: Se teclea el nombre del Menú o del comando que aparecerá en la Barra de Menú. Para permitir el acceso por teclado al elemento de Menú se inserta un Ampersand (&) antes de una letra. También puede crear una barra separadora tecleando un guión (-).
Name: Se usa para teclear el nombre del Control para el elemento del Menú. Es un identificador que se usa solamente para accesar el elemento del menú en código y no aparecerá en un Menú.
Index: Se usa para asignar un valor numérico que determina la posición del elemento del menu dentro de un arreglo de control. Shortcut: Presenta una lista desde la que puede seleccionar una tecla de atajo para el elemento del menú. HelpContextId: Se usa para asignar un valor numérico para el Id de contexto. Este valor se usa para encontrar el tema de ayuda apropiado en al archivo de ayuda identificado por la propiedad HelpFile.
Checked: Es una casilla de verificación que se selecciona si desea que aparezca una >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 deseados.
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.
Permite descargar un formulario de la memoria. Se introduce junto al nombre del formulario que se va a descargar:
Unload Form2
Si se esta dentro del mismo formulario para descargarlo no hace falta colocar el nombre sino únicamente:
Unload me
En una aplicación con varios formularios se debe usar esta sentencia para los métodos que se terminan de utilizar, de esta forma se libera 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 al modificar su valor se puede hacer que se suspenda (cancele) el proceso de descarga de un formulario. Mediante 2 líneas de código se puede hacer una pregunta al usuario cada vez que se cierra un formulario para que 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 que pregunta si realmente se desea 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 proporciona el parámetro UnloadMode que según el valor que tenga se podrá 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 se va 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 que pide 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 administrador 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
Al acceder a las propiedades de otro formulario automáticamente se carga éste en memoria, si no lo estaba ya antes. Una vez que se hayan 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 se quiere trabajar con variables generales, las cuales sean accesibles desde cualquier formulario de la aplicación, se tendrán que declararlas como Públicas desde un módulo de código
Para insertar un módulo en un proyecto de Visual Basic se tendrá que marcar en Proyecto y dentro de la opción proyecto Agregar Modulo o pulsar sobre el botón de la barra de herramientas. Aparecerá una ventana en la que únicamente se podrán colocar las variables y procedimientos o funciones que se deseen 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:
Caption: Se teclea el nombre del Menú o del comando que aparecerá en la Barra de Menú. Para permitir el acceso por teclado al elemento de Menú se inserta un Ampersand (&) antes de una letra. También puede crear una barra separadora tecleando un guión (-).
Name: Se usa para teclear el nombre del Control para el elemento del Menú. Es un identificador que se usa solamente para accesar el elemento del menú en código y no aparecerá en un Menú.
Index: Se usa para asignar un valor numérico que determina la posición del elemento del menu dentro de un arreglo de control. Shortcut: Presenta una lista desde la que puede seleccionar una tecla de atajo para el elemento del menú. HelpContextId: Se usa para asignar un valor numérico para el Id de contexto. Este valor se usa para encontrar el tema de ayuda apropiado en al archivo de ayuda identificado por la propiedad HelpFile.
Checked: Es una casilla de verificación que se selecciona si desea que aparezca una marca de verificación a la izquierda.
Enable: Es una casilla de verificación que se selecciona si desea que el elemento del menú aparezca en el menú.