2.1.- CONCEPTO DE PROYECTO.
Dado que es muy común en aplicaciones Visual Basic compartir código o formularios personalizados, Visual Basic organiza las aplicaciones en lo que denomina proyectos. Cada proyecto puede tener varios formularios y, el código que activa los controles de un formulario es archivado con el formulario en archivos separados. El código general compartido por todos los formularios de una aplicación puede ser dividido en varios módulos, que también se archivan separadamente. En Visual Basic 4.0 un proyecto puede tener, además, módulos de clase y ficheros de recursos.
Aunque Visual Basic almacena separadamente los archivos que forman un proyecto, hace un seguimiento de dónde están los archivos. Crea un archivo con la extensión .VBP de Visual Basic Program/Project. Visual Basic permite tener un solo proyecto abierto en un momento determinado.
Los formularios se archivan con la extensión .FRM y contienen una imagen del formulario y, de todos los controles que pertenecen a él, incluidas sus propiedades. También pueden contener subrutinas de manejo de eventos, procedimientos generales, declaraciones de variables y de constantes a nivel de formulario y, procedimientos externos.
Un módulo estándar contiene código Visual Basic que no está asociado a ningún formulario en particular. Los procedimientos que se encuentran en el módulo, pueden ser accedidos desde cualquier otro procedimiento de la aplicación. Se almacenan con la extensión .BAS. Los módulos de clase tienen la extensión .CLS y contienen código, incluido subrutinas, funciones, métodos y procedimientos para crear descripciones genéricas de objetos. Estos módulos contienen propiedades que describen el comportamiento de una clase, así como el código que define las propiedades y los métodos de la clase.
Los archivos de recursos se almacenan con la extensión .RES y contienen bitmaps, cadenas de texto, o cualquier otra información que pueda ser cambiada sin tener que reeditar el código de la aplicación. Un proyecto solo puede contener un archivo de recursos.
2.2.- FORMULARIOS Y CONTROLES. PROPIEDADES COMUNES
Después de arrancar Visual Basic, aparece un proyecto y un formulario por defecto. Si se quiere iniciar un nuevo proyecto, se accederá a Archivo/Nuevo Proyecto, o bien se abrirá un proyecto existente.
EJEMPLO:
Realizaremos el primer programa en Visual Basic. Para ello, una vez arrancado Visual Basic mostraremos la ventana de código, para lo que se hará doble clic en cualquier parte del formulario. En la ventana que aparece se escribirá el código Visual Basic. Esta ventana está formada por las siguientes partes:
Private Sub Form_Load()
End Sub
Supongamos que queremos escribir un mensaje cada vez que se haga clic en el formulario. Para ello cambiaremos el procedimiento seleccionando, para el objeto Form, el suceso Clic. Una vez seleccionado, se escribirá:
Private Sub Form_Click()
Print "Has hecho un clic con el ratón"
End Sub
Para ejecutar la aplicación pulsaremos F5 y, cuando se haga clic sobre el formulario, aparecerá el mensaje. Para detener la aplicación, pulsaremos el botón de Parada o, Ejecutar/Terminar.
Por lo general, los procedimientos de suceso asociados a un formulario empiezan por:
Private Sub Form_NombreDelSuceso()
Para situar un control en el formulario tenemos dos formas:
EJEMPLO:
La aplicación que vamos a realizar estará formada por una caja de texto y un botón de comando. Para ello los pasos a seguir son:
Supongamos que queremos escribir en la caja de texto un mensaje de bienvenida. Para ello cambiaremos el procedimiento seleccionando, para el objeto cmdPrimerBoton, el suceso Clic. Una vez seleccionado, se escribirá:
Private Sub cmdPrimerBoton _Click()
txtPrimeraCaja.Text = "Bienvenido a Visual Basic"
End Sub
GUARDAR FORMULARIOS, MÓDULOS Y PROYECTOS
En el menú Archivo tenemos 4 opciones para guardar:
EJEMPLO:
Modificaremos la aplicación para que, cuando el usuario escriba en la caja de texto, en el botón aparezca el mensaje "Restaurar mensaje". Para ello mostraremos la ventana de código asociada a la caja de texto haciendo doble clic sobre ella. El evento que se produce cuando el usuario escribe en una caja de texto es Change, por lo que el código a escribir será:
Private Sub txtPrimeraCaja _Change()
cmdPrimerBoton.Caption = "Restaurar mensaje"
End Sub
EJERCICIO:
Modificaremos la aplicación para que, una vez restaurado el mensaje, en el botón de comando vuelva a aparecer el texto "Presióname".
Como se ha podido apreciar, la forma de referirse a una propiedad es Objeto.Propiedad, donde Objeto es el nombre del formulario o del control (valor de la propiedad Name) y Propiedad es el nombre de la propiedad a la que se quiere acceder.
PROPIEDADES MÁS COMUNES DE LOS FORMULARIOS
AutoRedraw (Redibujado automático)
Gestiona la manera de redibujar las imágenes en pantalla. Puede tomar los valores True/False.
BackColor (Color de fondo)
Determina el color de fondo.
BorderStyle (Estilo del borde)
Solo se puede determinar en modo de diseño. Modifica el borde del formulario en el momento de ejecución. Puede tomar los siguientes valores:
Caption (Leyenda)
Establece el texto de la barra de título de la ventana del formulario. Esta propiedad indica lo que el usuario visualiza. No confundir con la propiedad Name. Propiedad común a muchos controles.
ControlBox (Cuadro de control)
Tiene efecto en tiempo de ejecución. Puede tomar los valores True/False. Permite visualizar o no tanto el menú de control como el botón de cerrar en Windows 95.
Enabled (Habilitado)
El valor False hace que el formulario no responda a eventos.
Font (Fuente)
Determina el tipo de letra, atributos, etc. para impresión. El texto ya escrito no se verá afectado por un cambio en estas propiedades, pero sí el texto impreso posteriormente.
Height, Width (Ancho y Alto)
Determinan la anchura y altura del formulario. Se miden en Twips (1/20 punto o lo que es lo mismo, 567 twips en 1 centímetro) Determinan el tamaño del formulario cuando se imprima, no cuando sea visualizado en pantalla. A menos que el usuario modifique el borde cambiando la propiedad BordeStyle, el usuario podrá modificar el tamaño y la forma de los diversos formularios de la aplicación sin tener en cuenta esta propiedad.
Icon (Icono)
Representa al formulario cuando esté minimizado o cuando se convierta en una aplicación independiente en el escritorio de Windows.
Left, Top (Izquierda, Arriba)
Determinan la posición del formulario dentro de la pantalla. Funcionan de manera idéntica a las propiedades Height y Width descritas anteriormente. Se miden en twips.
MaxButton, MinButton (Botones de maximizar y minimizar respectivamente)
El valor de esta propiedad (True/False) será ignorado si se ha establecido la propiedad BorderStyle a 0 - None. Solo es visible en tiempo de ejecución.
MousePointer (Puntero del ratón)
Determina la forma en que se mostrará el puntero del ratón.
Name (Nombre)
Propiedad MUY importante y común a todos los objetos de Visual Basic. Define el nombre del objeto en el código del programa. Para poder acceder a un control habrá que hacerlo a partir de su nombre. No disponible en tiempo de ejecución.
Picture (Dibujo)
Dibuja una imagen en el formulario (bitmap)
Visible
Determina si un formulario estará visible o no en tiempo de ejecución.
WindowState (Estado de la ventana)
Determina la forma en la que aparece el formulario durante la ejecución.
ScaleMode (Modo de la escala)
Permite cambiar las unidades de medida empleadas en el sistema de coordenadas interno del formulario.
ScaleHeight, ScaleWidth (Escala de la Altura y la Anchura)
Sirven para establecer una escala propia para la altura y anchura del formulario. Tiene efecto colateral sobre la propiedad ScaleMode, que se establece a 0.
ScaleLeft, ScaleRight (Escala de Izquierda y Derecha)
Sirven para establecer una escala propia para los márgenes izquierdo y superior del formulario. El valor original de estas propiedades es 0.
PROPIEDADES COMUNES DE LOS CONTROLES
Los controles que se pueden incluir en el formulario aparecen en la caja de herramientas. No es necesario recordar la posición o forma de cada control. En Visual Basic 4.0, cuando el cursor se sitúa sobre un control de la caja de herramientas, aparece una pista recordando el control que permite crear. Todos los controles tienen algunas propiedades comunes como pueden ser:
Caption (Leyenda)
Establece el texto que el usuario visualizará. No confundir con la propiedad Name.
Text (Texto)
Actúa igual que la propiedad Caption para aquellos controles que no dispongan de dicha propiedad, p.e. las cajas de texto. Muestra el contenido del control y, por tanto, también contiene los caracteres introducidos por el usuario. No confundir con la propiedad Name.
Name (Nombre)
Propiedad MUY importante. Define el nombre del control en el código del programa. No confundir con las propiedades Caption o Text que es lo que el usuario visualiza.
TabStop (Punto de Tabulación)
Si el valor es True, el control será susceptible de recibir el foco durante la ejecución de la aplicación.
TabIndex (Índice de tabulación)
Indica el número de orden en el que el control recibirá el foco cuando el usuario, en tiempo de ejecución, pulse la tecla Tab para recorrer los controles. A medida que se van situando controles en el formulario, Visual Basic incrementa en una unidad, el valor de esta propiedad para el nuevo control y, lo decrementa en caso de eliminar algún control. El valor para el primer control es 0.
PROPIEDADES DE LOS BOTONES DE COMANDO
Command Button (2ª fila, icono de la derecha). Se utiliza para ejecutar la acción asociada a la pulsación de dicho botón.
Enabled (Habilitado)
El valor False hace que el botón aparezca atenuado y, no responda a eventos.
Cancel (Cancelar)
Establecer el valor de esta propiedad a True, hace que el botón responda a la pulsación de la tecla ESC como si se hubiera hecho clic sobre él. En un formulario solo puede haber un botón con esta propiedad establecida a True.
Default (Defecto)
Establecer el valor de esta propiedad a True, hace que el botón responda a la pulsación de la tecla INTRO como si se hubiera hecho clic sobre él. Al igual como antes, en un formulario solo puede haber un botón con esta propiedad establecida a True.
PROPIEDADES DE LAS CAJAS DE TEXTO
Text Box (2ª fila, icono de la izquierda). Es un área dentro del formulario donde el usuario puede escribir texto o visualizarlo.
MaxLength (Tamaño máximo)
Determina el número máximo de caracteres que puede aceptar la caja de texto.
MultiLine (Líneas Múltiples)
Permite que la caja de texto admita varias líneas con la pulsación de la tecla INTRO. Normalmente se combina con la propiedad ScrollBars.
ScrollBars (Barras de desplazamiento)
Controla si en la caja de texto aparecerán las barras de desplazamiento o no.
PasswordChar (Carácter clave)
Permite mostrar un carácter clave en vez de los introducidos por el usuario.
Locked (Bloqueada)
Permite bloquear la caja de texto para que el usuario en tiempo de ejecución, no modifique el contenido de la caja. Esta propiedad es nueva en Visual Basic 4.0
SelLength (Longitud del texto seleccionado)
Número de caracteres seleccionado actualmente. Accesible durante la ejecución.
SelStart (Comienzo de la selección)
Indica dónde comienza el texto seleccionado (la posición del cursor). Si el valor es 0, el texto seleccionado empieza delante del primer carácter de la caja de texto. Si es igual a la longitud del texto de la caja, indica la posición detrás del último carácter del texto. Accesible en tiempo de ejecución.
SelText (Texto seleccionado)
Contiene el texto seleccionado. Accesible en tiempo de ejecución.
PROPIEDADES DE LAS ETIQUETAS
Label (1ª fila, icono de la derecha). Es un área dentro del formulario donde el usuario puede visualizar texto sin modificarlo.
Alignment (Alineación)
Determina la situación del texto dentro de la etiqueta.
AutoSize, WordWrap (Tamaño automático y enlace de textos)
La primera propiedad permite que la etiqueta crezca horizontalmente en función de su contenido. La segunda propiedad permite que el crecimiento sea vertical.
EJERCICIOS:
INTERACCIÓN CON EL USUARIO
Para permitir al usuario introducir valores, se utilizan las cajas de texto, pero en un momento determinado, puede interesar la detención momentánea de la ejecución y, mostrar un cuadro de diálogo para que el usuario introduzca algún dato. Del mismo modo, se puede mostrar un cuadro de mensaje al usuario para advertirle de cualquier circunstancia. Para ambos casos tenemos respuesta en Visual Basic.
Variable_de_cadena = InputBox("Pregunta_a_realizar" [," Título_Caja", Valor_por_Defecto])
MsgBox("Mensaje_a_mostrar", Tipo_Caja, "Título_Caja")
donde el parámetro Tipo_Caja permite controlar el icono y los botones que aparecerán en el cuadro de mensajes.
EJERCICIO:
Crear una aplicación que pregunte al usuario su nombre y, una vez contestado, le dé la bienvenida.
PROPIEDADES DE LOS CUADROS DE IMAGEN
Image (1ª fila, icono central). Se utiliza cuando se quiere visualizar una imagen que el programador dibuja con código o que importa de algún fichero.
Picture (Imagen)
Establece la imagen que el usuario verá en el cuadro de imagen.
Stretch (Extensión)
Determina si el control de imágenes se ajusta a la imagen o, es la imagen la que se ajusta al tamaño del control. El valor True hace que el cuadro de imágenes se ajuste al tamaño de la imagen, mientras que el valor False, hace que sea la imagen la que se ajuste.
PROPIEDADES DEL CONTROL IMAGEN
Picture Box (7ª fila, icono de la izquierda). Se utiliza cuando se quiere visualizar una imagen que el programador dibuja con código o que importa de algún fichero. Se diferencia de la caja de imágenes en la forma de presentación.
Picture (Imagen)
Establece la imagen que el usuario verá en el cuadro de imagen.
AutoSize (Extensión)
Determina si el control de imágenes se ajusta a la imagen o, es la imagen la que se ajusta al tamaño del control. El valor True hace que el control imagen se ajuste al tamaño de la imagen, mientras que el valor False (valor por defecto), hace que sea la imagen la que se ajuste.
PROPIEDADES DEL CONTROL DE FORMAS O FIGURAS
Shape (6ª fila, icono central). Se utiliza para añadir rectángulos, cuadrados, elipses o círculos a un formulario.
Shape (Forma)
Determina el tipo de formas que se dibujará.
BackStyle (Color de fondo)
Determina si el fondo será transparente o no.
BorderColor (Color del borde)
Determina el color del contorno del objeto a dibujar.
BorderWidth (Ancho del borde)
Determina el grosor del contorno del objeto a dibujar.
BorderStyle (Estilo del borde)
Determina la forma del contorno del objeto a dibujar. Si el valor de la propiedad BorderWidth es mayor que uno, no tendrá efecto el valor de esta propiedad.
FillColor, FillStyle (Color de fondo y estilo de relleno)
El valor por defecto de la propiedad FillStyle es 1 - Transparent, por lo que si no se cambia, el valor de la propiedad FillColor no tendrá efecto.
EJEMPLO:
Crearemos una aplicación que encienda y apague una bombilla al mismo tiempo que en un botón de comando el mensaje que aparece cambia a ON y OFF. Se debe añadir un botón con el mensaje Salir.
El formulario a diseñar deberá tener los siguientes controles con las propiedades:
CONTROL |
PROPIEDAD |
VALOR |
Command Button |
Caption |
Salir |
Name |
cmdSalir |
|
Command Button |
Caption |
ON |
Name |
cmdOnOff |
|
Picture Box |
BorderStyle |
0-None |
Name |
picOff |
|
Picture |
vbiconsmiscLightoff.ico |
|
Picture Box |
BorderStyle |
0-None |
Name |
PicOn |
|
Picture |
vbiconsmiscLighton.ico |
El código a escribir será:
Private Sub Form_Initialize()
‘Centrar el formulario
Left = (Screen.Width - F.Width) / 2
Top = (Screen.Height - F.Height) / 2
‘Posicionar las linternas en la misma posición
picOn.Left = 1200
picOn.Top = 600
picOff.Left = 1200
picOff.Top = 600
‘Asegurarse que el programa empieza con la linterna apagada
picOff.Zorder 0
End Sub
Private Sub cmdClose_Click()
‘Finalizar la aplicación
Unload cmdClose.Parent
End Sub
Private Sub cmdOnOff_Click()
‘Cambiar la linterna de ON a OFF o viceversa
If cmdOnOff.Caption = "ON" Then
cmdOnOff.Caption = "OFF"
‘Traer la linterna encendida delante
picOn.ZOrder 0
Else
cmdOnOff.Caption = "ON"
‘Traer la linterna apagada delante
picOff.ZOrder 0
End If
End Sub
PROPIEDADES DE LOS CUADROS DE LISTA
List Box (4ª fila, icono izquierdo) Permite ofrecer al usuario una serie de opciones para que elija. Visual Basic añadirá barras de desplazamiento al cuadro de lista si la lista completa es demasiado larga para ser vista toda a la vez. El contenido de un cuadro de lista no se puede definir durante el diseño. En su lugar se utilizará el método AddItem para introducir elementos en la lista.
List (lista)
Esta propiedad no se puede modificar en fase de diseño, contiene la matriz de todos los valores almacenados en el cuadro de lista. Para acceder a un elemento de la lista se seguirá la sintaxis: Objeto.List(índice).
ListCount (contar lista)
No puede modificarse directamente. Contiene el número de elementos del cuadro de lista.
ListIndex (índice de la lista)
Indica el número de la lista más recientemente seleccionado. El valor del primer elemento es 0, el del segundo, 1, y así sucesivamente. Si no hay ningún elemento seleccionado, la propiedad tendrá un valor de -1.
Sorted (ordenada)
Para mantener la lista ordenada alfabéticamente.
Text (texto)
No se puede modificar directamente, contiene el texto del elemento más recientemente seleccionado.
Los métodos utilizados con los cuadros de lista son: AddItem (añadir elemento) permite insertar una línea de texto en el cuadro de lista. Su sintaxis es objeto.AddItem texto[, índice] . Clear (borrar) sirve para eliminar todos los elementos del cuadro de lista. Su sintaxis es: objeto.Clear. RemoveItem (eliminar elemento) permite eliminar una línea del cuadro de lista. Su sintaxis es: objeto.RemoveItem índice.
PROPIEDADES DE LOS CUADROS COMBINADOS
Combo Box (3ª fila, icono derecho) Puede combinar un cuadro de texto y un cuadro de lista en un solo control.
Style (estilo)
Determina el tipo de cuadro combinado y cómo se comporta. Puede tomar los siguientes valores: 0 - Dropdown Combo; 1 - Simple Combo; 2 - Dropdown List.
Text (texto)
Contiene el texto del elemento seleccionado o introducido por el usuario en el área de edición.
Los procedimientos descritos en el apartado anterior sirven para este tipo de control. Ambos tipos de control permiten asociar a los elementos del listado un número entero. Para ello se debe utilizar la matriz ItemData, que es una propiedad de estos controles. Para añadir los datos numéricos a esta matriz, se debe conocer el índice matriz del elemento, para lo que se utilizará la propiedad NewIndex del control. Es decir, se necesitará escribir código parecido a:
Listado1.AddItem Elemento_A_Añadir
Listado1.ItemData(Listado1.NewIndex) = Datos_Del_Entero
2.3.- PROCEDIMIENTOS DE EVENTO
En Visual Basic existen dos clases de procedimientos: procedimientos generales o procedimientos de evento. Un procedimiento de evento es invocado cuando un objeto en la aplicación reconoce que el evento ha tenido lugar. Los procedimientos de eventos para un control combinan el nombre del objeto con un subrayado y, el nombre del evento. P.e. cmdOK_Click. Los procedimientos de eventos para un formulario combinan la palabra reservada Form con un subrayado y, el nombre del evento. P.e. Form_Load. Los procedimientos de eventos para un formulario MDI combinan la palabra reservada MDIForm con un subrayado y, el nombre del evento. P.e. MDIForm_Unload.
Un procedimiento general indica cómo realizar una tarea determinada. Se ejecutará solo si es invocado específicamente en la aplicación.