75

Visual Basic y Access - Crear Aplicaciones

Embed Size (px)

DESCRIPTION

introduccion al de visual basic con aplicaciones

Citation preview

Aprenda a programar en Visual Basic

1

Aprenda a programar en Visual Basic

2

Edición 1.0

Prohibida la reproducción total o parcialSin nuestro consentimiento

Derechos de copia reservadoswww.LibrosDigitales.NET

Aprenda a programar en Visual Basic

3

Introducción a la Programación Visual

Lenguajes procedurales frente a los dirigidos poreventos

Algunos años atrás la construccion de aplicaciones se realizaba usando lenguajesprocedurales, consistia en usar un editor para unir un conjunto de instruccionesbajo un orden determinado según la logica establecida por el Programador, aveces uno terminaba con un gran archivo de unas 2000 a 3000 lineas. Para otroprogramador hacer operaciones de actualizacion y/o depuracion, era toda una tareatitanica, pues si no estaba adecuadamente documentada no quedaba otra cosa quedarse tiempo y descubrir la logica usada por el otro programador. Por otra parte elprogramador no solo debia cuidar los procesos que debia realizar el programa sinoque tambien debia guiar al usuario en la Ejecución de su programa a traves de undialogo monotomo: desea continuar?, esta seguro de borrar?, realizar otratransaccion?.

En la actualidad, los lenguajes de programacion visuales, presentan una interfaz dedesarrollo gráfico la tarea de programación esta definida en dos fases, en laprimera el Desarrollador de aplicaciones diseña la interfaz que el usuario ha deusar. El siguiente paso consiste en dar funcionalidad a los elementos usados en eldiseño, es decir asociar un grupo de instrucciones (procedimiento) a los diversoscontroles según el tipo de acción que realice el usuario (evento).

Aprenda a programar en Visual Basic

4

Su tarea como desarrollador será la de identificar que posibles eventos podrianocurrir y en base a ellos definir los procedimientos.

Bajo esta modalidad de programacion interesa poco que inicie por un lado u otro,ademas debe tener en cuenta que el usuario que haga uso de su aplicación podranavegar (moverse) libremente con el mouse y hacer click donde le de la gana.

Aprenda a programar en Visual Basic

5

Definiciones básicas

Formulario

Ventana personalizable que sirve de interfaz entre el usuario y la aplicación. En ellase sitúa los controles.

Control

Representación gráfica de un objeto, como un cuadro de texto, una listadesplegable, un botón de comando, etc.

Objeto

Termino usado para describir al formulario y a los controles usados. En realidadtodo lo que observe incluyendo la pantalla es considerado como objeto.

Propiedad

Son las características del objeto, como el tamaño, la ubicación, el color.

Método

Acción que se puede definir para un objeto, esta acción esta asociada a un conjuntode instrucciones (procedimiento).

Evento

Acción provocada por el usuario, por el sistema operativo (un error por ejemplo) opor la aplicación. El evento esta asociado a un procedimiento.

Hay que tener en cuenta que los procedimientos de los eventos se ejecutanautomáticamente, en cambio los procedimientos de los métodos requieren de unainstrucción para ser ejecutadas.

Aprenda a programar en Visual Basic

6

La programación en Visual Basic

Ejecutando Visual Basic

Una vez instalado el producto, vaya al botón Inicio y ubique en la carpetaProgramas, Microsoft Visual Studio, luego Microsoft Visual Basic 6.0.

Este cuadro de dialogo muestra una lista de los tipos de archivo que puede crear (amedida que avance con la lectura del texto se verá cada uno de ellos), por lopronto se usará un EXE estándar.

A continuación le muestra una ventana vacía, al que llamaremos formulario, a laizquierda se muestra una caja de herramientas con controles, con ellosdiseñaremos la interfaz dentro del formulario, las propiedades de cada uno de estoscontroles se verá en la ventana de propiedades la cual se muestra en el gráfico allado derecho.

Aprenda a programar en Visual Basic

7

Para abandonar Visual Basic haga Alt-F4 o ubique la opcion Salir dentro del menuArchivo.

Aprenda a programar en Visual Basic

8

El Entorno Integrado de Desarrollo

Los elementos que componen la pantalla de Visual Basic son:

• Barra de menús• Barra de herramientas• Caja de herramientas• Ventana de proyecto• Ventana de formulario• Ventana de propiedades

Aprenda a programar en Visual Basic

9

Barra de titulo

Es la barra horizontal de la ventana mayor (de Visual Basic) en ella se muestra elnombre de la aplicación, al lado derecho de esta se muestra encerrado entreparentesis los estados: diseño, mientras este creando o editando su programa,Ejecución, si se encuentra ejecutando su aplicación y break si la aplicación hasido detenida.

Barra de menús.

Visualiza las órdenes que se utilizan para desarrollar, probar y archivar unaaplicación. Las opciones mas usada del menu son:

Archivo Contiene las órdenes para trabajar con archivos.Edición Contiene las herramientas que ayudan a escribir el código.Ver Da acceso rápido a todas las partes del programa.Ejecutar Permite verificar la aplicación mientras se desarrolla.Herramientas Controla el aspecto y propiedades del entorno.Complementos Contiene las utilidades para el manejo de bases de datos.Ayuda.

Barra de herramientas.

Facilita el uso a las órdenes más comunes.

De izquierda a derecha los iconos tienen la siguiente funcion:

Aprenda a programar en Visual Basic

10

Nombre FuncionAgregar proyecto EXEestandar

Al hacer click en la fecha se muestra los distintos tiposde ejecutables que Visual Basic puede crear.

Agregar formulario Abre un nuevo formulario. Al hacer click en la flechapuede elegir entre otras posibles partes de unaaplicación Visual Basic

Editor de menus Le permite diseñar menus. Equivale a seleccionar laopcion Editor de menus del menu Herramientas o hacerCtrl-E

Abrir proyecto Le permite abrir un proyecto existente, equivale a queelija la opcion Abrir del menu Archivo

Guardar proyecto Guarda el proyecto actual, equivale a seleccionar laopcion Guardar proyecto del menu Archivo

Cortar Corta el texto u objeto seleccionado, equivale a quepulse las teclas Ctrl-X

Copiar Copia en el portapapeles el texto u objeto seleccionado ,equivale a pulsar Ctrl-C

Pegar Pega el texto u objeto que se encuentra en elportapapeles, equivale a usar Ctrl-V

Buscar Abre el cuadro de dialogo Buscar

Deshacer Deshace la ultima accion hecha

Rehacer Rehace la ultima accion

Iniciar Ejecuta la aplicación, equivale a elegir la opcion Iniciardel menu Ejecutar o pulsar la tecla F5

Interrumpir Detiene la Ejecución de un programa, es lo mismo queelegir la opcion Interrumpir del menu Ejecutar o pulsarlas teclas Ctrl-Pausa.

Terminar Finaliza la Ejecución de un programa. Equivale a elegirTerminar del menu Ejecutar

Explorador deproyectos

Muestra el Explorador de Proyectos

Ventana depropiedades

Activa la ventana de propiedades

Ventana posicion delformulario

Activa la Ventana de posicion del formulario paradeterminar la posicion inicial del formulario en la pantalla.

Examinador de objetos Abre el cuadro de dialogo Examinador de Objetos,equivale a pulsar la tecla F2

Caja de herramientas Activa la caja de herramientas si esta oculta

Aprenda a programar en Visual Basic

11

Caja de herramientas.

Provee de un conjunto de herramientas que permiten colocar los controles en elformulario durante el diseño del proyecto. Para usarlo solo debe hacer click en elicono apropiado y sobre el formulario dibuje un rectangulo arrastrando el mouse,con esto el control se colocará en ese lugar. Luego lo puede redimensionar.

No todo los controles se puede cambiar de tamaño, es el caso de controlTemporizador que aparece como un pequeño cuadro.

Ventana de proyecto.

Esta ventana contiene una lista de los elementos que compone un Proyecto, loccuales pueden ser formularios (.FRM), archivos de módulo (.BAS) conprocedimientos que pueden ser accedidos desde cualquier otro procedimiento de laaplicación, módulos de clase (.CLS) y ficheros de recursos (.RES) que contienenbitmaps, cadenas de texto, o cualquier otra información que pueda ser cambiadasin tener que reeditar el código de la aplicación.

El proyecto hace un seguimiento de dónde están los archivos, para esto crea unarchivo con la extensión .VBP, este es el archivo de proyecto.

La ventana de proyecto contiene dos botones: Ver Formulario que visualiza elformulario seleccionado y; Ver Código que visualiza el código del ficheroseleccionado.

Aprenda a programar en Visual Basic

12

Tenga cuidado de eliminar archivos fuera del entorno de VB, la aplicación que useeste archivo al no encontrarlo producirá un error en la ejecución del proyecto

Ventana del formulario.

Es la ventana que da lugar a la interfaz de usuario. Estas actuan comocontenedoras graficas de controles tales como botones, etiquetas, cuadroscombinados, etc. Existen tres tipos de formulario:

• Formulario de interfaz simple: SDI (Single document interface)• Formulario de interfaz padre para multiples documentos: MDI (Parent multiple

document interface)• Formulario hijo MDI (Child MDI)

La interfaz de documento simple SDI no tiene padre ni hijos, es una simple ventanadonde se colocan los controles. La interfaz de multiples documentos MDI necesitaun formulario padre y uno o mas formularios hijos. Los formularios MDI se usanpara crear aplicaciones que puedan abrir mas de un documento a la vez. Cualquierformulario MDI hijo puede ser contenida en un formulario MDI padre. Un ejemplode este tipo puede ser Word para Windows (se puede abrir varios documentos a lavez)

Para crear una aplicacion MDI primero deberá crear un formulario MDI padre,opcion Formulario MDI nuevo del menu Archivo. Los formularios hijo puede sercreadas como formularios normales y seleccionando luego la propiedad MDI Childcomo True.

Durante el diseño ayuda mucho la presencia de unos puntos horizontales yverticales que forman una rejilla la cual sera util para alinear los controles que sesitúan sobre el mismo. Esta rejilla desaparece en tiempo de ejecución. Paraeliminarla en tiempo de diseño se accederá a la opciónHerramientas/Opciones/Ficha Entorno/Mostrar Cuadrícula.

Aprenda a programar en Visual Basic

13

Ventana de propiedades.

Especifica las propiedades de cada uno de los objetos para ser cambiadas en modode diseño. En cada momento mostrará las propiedades del objeto seleccionado enel formulario. Está formada por dos partes: la lista desplegable de objetos quevisualiza el nombre del objeto seleccionado y, la lista de propiedades del objetoseleccionado.

Las propiedades puede variar según el tipo de control. Por ejemplo una etiquetatiene la propiedad Caption, la cual esta ausente para un cuadro de texto. No todaslas propiedades de un control pueden cambiarse en tiempo de diseño. Por ejemplola propiedad ActiveForm no es accesible en modo diseño y es de solo lectura entiempo de Ejecución. Asi mismo hay propiedades como Name que en tiempo deEjecución es de solo lectura y que puede variarse solo en tiempo de diseño.

Aprenda a programar en Visual Basic

14

Ventana de código

Se activa cuando se hace doble click sobre un control, esta ventana muestra doslistas en la parte superior, en una aparece el nombre del objeto y en la otra elnombre del evento. Debajo de estas se define el procedimiento, este editor verificaautomáticamente la sintaxis de cada instrucción.

Aprenda a programar en Visual Basic

15

Creando una Aplicación en VB

El desarrollo de una Aplicación se da en dos pasos:

1. En Tiempo de Diseño. Se crea un formulario, sobre ella se sitúa los controles uobjetos necesarios, cambiándolos de lugar y/o de tamaño. Esta será lapresentación de nuestra aplicación. Luego se procede a dar valores a laspropiedades de los objetos colocados en el formulario.

2. En Tiempo de Ejecución. Consiste en escribir el código en los objetos paraindicar que acciones o eventos se deberán realizar cuando el usuario interaccionecon estos objetos. Este paso es conocido también como "Dar funcionalidad a laaplicación".

☺ Antes de empezar a construir su programa, es necesario que primero lo tenga planeado. Deberáentender las características de los objetos contenidos en las diferentes pantallas, todo esto para que lainterfaz sea amigable y funcional.

Aprenda a programar en Visual Basic

16

Programación en tiempo de Diseño

Luego de indicar un nuevo proyecto, en un formulario colocamos un cuadro detexto y un botón de comando.

Los valores de las propiedades son cambiados o actualizados en la ventana depropiedades. Puede activar la ventana de Propiedades pulsando F4.

Ubique la propiedad Name, y asigne un nombre a cada objeto. El cuadro de textose llamara txtMensaje y el botón de comando cmdPulsame, para que el botónmuestre el titulo Pulsame, ubique la propiedad Caption y en ella anote el texto“Pulsame”.

La siguiente tabla muestra las teclas que se puede usar en la ventana dePropiedades:

Tecla AccionShift + Ctrl + Letra Se ubica el primer elemento que comience con la letra.Flecha abajo Ir al siguiente elementoFlecha arriba Ir al anterior elementoPgUp/End Ir al ultimo elementoPgDn/Home Ir al primer elementoF4 Activa la ventana de propiedades

Aprenda a programar en Visual Basic

17

Programación en tiempo de Ejecución

El paso final es escribir el código para que la aplicación se ejecute adecuadamente.En el ejemplo le vamos a dotar de funcionalidad al botón cmdPulsame. Para abrir laventana de código puede hacer doble click sobre el objeto o usar el botón derechodel mouse sobre el objeto y eligir la opcion Ver código.

Puede seleccionar el objeto al que se ha de asociar el código en la lista de laizquierda de la ventana de código.

Cualquier evento o procedimiento puede ser seleccionado usando la lista de laderecha.

Para afectar el estado de alguna propiedad de un objeto debe establecer unareferencia al objeto, según la sintaxis:

Control.Propiedad=Valor

Por ejemplo:

txtMensaje.Caption = “Hola amigos”

Cada control posee un subconjunto propio de eventos. La lista siguiente muestralos eventos disponibles:

Activate KeyUp PathChangeChange LinkClose PatternChangeClick LinkError QueryUnloadDblClick LinkExecute RepositionDeactivate LinkNotify ResizeDragDrop LinkOpen RowColChangeDragOver Load ScrollDropDown LostFocus SelChangeError MouseDown TimerGotFocus MouseMove UnloadKeyDown MouseUp UpdatedKeyPress Paint Validate

Aprenda a programar en Visual Basic

18

Para ejecutar la aplicación pulse F5 o haga click en el botón Ejecutar

Al hacer clic en el botón Púlsame, deberá aparecer el mensaje dentro del cuadro detexto.

Para detener la aplicación, pulse el botón Finalizar o, ubique la opciónTerminar en el Menú Ejecutar

Los procedimiento asociados a un evento comienzan:

Private Sub Objeto_Evento()

Y termina con:

End Sub

Ampliaremos este ejemplo, si luego de haber hecho click en el botón Púlsame semodifica el contenido del cuadro de texto, haremos que el botón muestre el titulo"Restaurar mensaje".

Cuando se modifica el contenido o valor de un objeto, en nuestro caso el cuadro detexto, se ejecuta o dispara el evento Change, entonces definimos:

Private Sub txtMensaje _Change()cmdPulsame.Caption = "Restaurar mensaje"

End Sub

Modificaremos la aplicación para que, una vez restaurado el mensaje, en el botónde comando vuelva a aparecer el texto "Púlsame".

Private Sub cmdPulsame _Click()txtMensaje.Text = “Hola amigos”cmdPulsame.Caption = "Pulsame"

End Sub

Aprenda a programar en Visual Basic

19

Finalmente puede crear un archivo ejecutable (.EXE), que sea independiente aVisual Basic. Para crear un ejecutable seleccione Generar Proyecto1.exe delmenú Archivo. Deberá escribir un nombre para el ejecutable.

Puede crea dos tipos de ejecutable, el autentico ejecutable esta disponible solo enlas versiones Profesional y Empresarial, el otro tipo de ejecutable no estáncompletamente en código de máquina, estos están en un Pseudo-código. De estaforma era necesario un archivo .DLL externo el cual traducía los comando P-Code acomandos que pueden ser entendidos por Windows.

Versión de Visual Basic Archivo DLL Requerido1.0 VBRUN100.DLL2.0 VBRUN200.DLL3.0 VBRUN300.DLL4.0 (16-bit) VB16400.DLL4.0 (32-bit) VB32400.DLL5.0 (32 bit) VSVBVM50.DLL6.0 (32 bit) VSVBVM60.DLL

☺ Mas adelante se explicara con mas detalle una forma practica de distribuir las aplicaciones.

Aprenda a programar en Visual Basic

20

Nomenclatura a seguir

Un buen estilo para programar deberá tener una estructura de código fácil deentender, no solo para otros desarrolladores sino también para si mismo.

Asigne nombres a los Controles

Use Prefijos para cada tipo de control seguido de un nombre significativo.

Control Prefijo EjemploCheck box chk chkSoloEscrituraCombo box cbo cboLenguajeCommand button cmd cmdCancelarForm frm frmPrincipalGrid grd grdCantidadesHorizontal Scroll Bar hsb hsbColorImage img imgBitMapLabel lbl lblAyudaList Box lst lstCódigoColorMenu mnu mnuAbrirArchivoOption Button opt optNegritaBoldPicture Box pic picMemoriaText Box txt txtEntradaTimer tmr tmrIniciaAlarmaVertical Scroll Bar vsb vsbRango

Aprenda a programar en Visual Basic

21

Mantenga la identación

Cuando deba anidar un grupo de instrucciones dentro de otra, es bueno que lasinstrucciones anidadas se encuentren adistanciadas respecto a la primera orden, nole recomiendo usar la barra espaciadora sino en su lugar un espacio de tabulación,esto se llama identar.

La identación es usada para tener una mejor visibilidad en el diseño de unprograma. Observe el ejemplo siguiente:

For nDia = 1 To 7 Select Case nDia Case 1 Print "Domingo" Case 2 Print "Lunes" Case 3 Print "Martes" Case 4 Print "Miércoles" Case 5 Print "Jueves" Case 6 Print "Viernes" Case 7 Print "Sábado" End SelectNext nDia

Aprenda a programar en Visual Basic

22

Documente el Código

Coviene que documente aquellas zonas donde haya complejidad en el código.

Hay dos formas de documentar código en VB:

• Puede usar el comando REM la cual reserva toda la línea como comentario.Ejemplo:

Rem Centra el formulario.frmCurrent.Left = (Screen.Width / 2) - (frmCurrent.Width / 2)frmCurrent.Top = (Screen.Height / 2) - (frmCurrent.Height / 2)

• Puede usar un apóstrofe (') seguido por el texto de comentario. El apóstrofe le

dice a VB que ignore todas la palabras que están a continuación. Ejemplo:

Dim xyz As Integer ‘ la variable xyz será entera

Aprenda a programar en Visual Basic

23

Construya Procedimientos

Toda la complejidad de un proceso desdóblelo en pequeños procesos. A las finalescada proceso formará un procedimiento, Por tanto procure que sus procedimientosrealicen tareas simples. Si un procedimiento maneja muchas tareas, lo masprobable es que sea difícil de entender y que pueda provocar fácilmente un error.

Use Constantes

Algunas propiedades se especifican a través de valores numéricos, por ejemplo:

Check1.Value = 1

Si se trata de documentar, para un desarrollador principiante, el valor 1 no le dicemucho, tendrá que tomar un manual y averiguar su significado, pero si optamospor esta otra forma:

Check1.Value = vbChecked

será mas fácil interpretarla, vbChecked es una constante.

Otro ejemplo, la expresión 2*3.1416 puede parecer un tanto confuso, se veramejor como 2*Pi, donde Pi es una constante.

Aprenda a programar en Visual Basic

24

Respecto al valor de las propiedades

Puede guardar el estado de una propiedad en una variable, de la forma siguiente:

nPrecio = txtPrecio.Text

Aquí se guarda en la variable nPrecio, el valor de la propiedad Text del objetotxtPrecio.

El siguiente ejemplo, asigna el color actual del objeto txtPrecio a una variable:

nColor = txtPrecio.BackColor

luego, dicho color es asociado al objeto frmEjemplo

frmEjemplo.BackColor = nColor

Tambien se puede hacer cálculos con el valor de las propiedades:

txtPrecio.Text = txtPrecio.Text * 1.05

Se incrementa el valor de la propiedad Text en un 5% del objeto txtPrecio, luego elvalor es asignado a este mismo objeto.

Aprenda a programar en Visual Basic

25

El Formulario

El formulario es la ventana que sirve de interfaz entre la aplicación y el usuario.Presenta las características de cualquier ventana Windows.

Estas características son accesibles a través de propiedades. El tamaño delformulario y de otros objetos se mide en Twips. Donde 1 Twips es igual a 1/20punto1 o lo que es lo mismo, 567 twips equivale a un centímetro.

Las propiedades de un formulario son:

AutoRedraw

Si toma el valor True, vuelve a redibujar las imágenes en pantalla.

BackColor

Determina el color de fondo.

Visual Basic describe los códigos de color en hexadecimal, en la ventana depropiedades puede usar la paleta de colores.

BorderStyle

Permite definir el estilo de borde, esta propiedad es accesible solo en tiempo dediseño. Puede tomar los siguientes valores:

1 Los puntos se usan para medir el tamaño de las fuentes

Aprenda a programar en Visual Basic

26

Constante Valor DescripciónvbBSNone 0 - None Ventana del formulario sin borde

vbFixedSingle 1 - Fixed Single Tamaño fijo con borde no dimensionable. Puedeincluir menú de control, barra de título, botón demaximizar y minimizar.

VbSizable 2 - Sizeable Ventana dimensionable, esta es la opción pordefecto.

VbFixedDialog 3 - Fixed Dialog Tamaño fijo del borde, no dimensionable. Puedeincluir menú de control, barra de título. No puedeincluir botón de maximizar y botón de minimizar.

VbFixedToolWindow

4 - Fixed ToolWindow

En aplicaciones de 16 bits o Windows NT 3.51 oanteriores funciona como Fixed Single, sinvisualizar los botones de maximizar y minimizar.Con Windows 95/98 visualiza el botón de cerrar y,no aparece en la barra de tareas.

VbSizableToolWindow 5 - Sizeable ToolWindow

En aplicaciones de 16 bits o Windows NT 3.51 oanteriores funciona como Sizeable, sin visualizarlos botones de maximizar y minimizar. ConWindows 95 visualiza el botón de cerrar y, noaparece en la barra de tareas.

Caption

Asigna un título al formulario2, esta se muestra en el borde superior

ControlBox

En el estado True se muestra los botones de control, es accesible en tiempo deejecución.

Enabled

En el estado False el formulario queda deshabilitado, por consecuencia no podráresponder a eventos.

Font

Determina el tipo de letra, atributos, etc. para impresión. El texto ya escrito no severá afectado por un cambio en estas propiedades, pero sí el texto impresoposteriormente.

Height, Width

Determinan el ancho y el alto del formulario. Se miden en Twips Determinan eltamaño del formulario cuando se imprima, no cuando sea visualizado en pantalla. A

2 No confunda esta propiedad con Name

Aprenda a programar en Visual Basic

27

menos que el usuario modifique el borde cambiando la propiedad BordeStyle, elusuario podrá modificar el tamaño y la forma de los diversos formularios de laaplicación sin tener en cuenta esta propiedad.

Icon

Asigna un icono al formulario, esta se muestra cuando el formulario es minimizadoo cuando se convierta en una aplicación independiente en el escritorio de Windows.

Left, Top

Determinan la posición del formulario en la pantalla. Funcionan de manera idénticaa las propiedades Height y Width descritas anteriormente. Se miden en twips.

MaxButton, MinButton

Si estas propiedades están en el estado False, los botones de maximizar ominimizar no se harán visibles, estas propiedades serán ignoradas si la propiedadBorderStyle esta 0 - None.

MousePointer

Determina la forma en que se mostrará el puntero del ratón.

Name

Define el nombre del formulario, esta propiedad no es accesible en tiempo deejecución

Picture

Muestra una imagen en el formulario a manera de tapiz

Visible

En el estado False el formulario no se hará visible

WindowState

Establece el estado del formulario durante la ejecución.

Constante Valor DescripciónvbNormal 0 Tamaño normal (por defecto)vbMinimized 1 Minimizar hacia un iconovbMaximized 2 Expandir el formulario al tamaño de la ventana

Aprenda a programar en Visual Basic

28

Ejemplo

Vamos a crear un formulario que solicite el ingreso de una contraseña, en elformulario situe un cuadro de texto y dos botones de comando, luego proceda adefinir las propiedades siguientes:

Objeto Propiedad ValorForm1 Name frmClave

Caption Validando los datos del UsuarioLabel1 Name lblClave

Caption ContraseñaText1 Name txtClave

PassWordChar *Value (vacio)Enabled False

Command1 Name cmdAceptarDefault True

Command2 Name cmdCancelarCancel True

El formulario deberá tener el siguiente aspecto:

En las ventanas Windows habrá notado que la tecla Enter y Esc responden poromisión a la elección de los botones Aceptar y Cancelar o Iniciar y Salir. Podemoshacer lo mismo mediante las propiedades Default y Cancel de los botones decomando. Deberá asignar Default = True para el botón Aceptar y Cancel = Truepara el botón Cancelar en tiempo de diseño.

Veamos las especificaciones en tiempo de Ejecución:

El Botón cmdAceptar en un principio esta deshabilitado, ni bien se ingrese una letraen el cuadro de texto txtClave, se podrá habilitar, esta acción la hacemos medianteel evento Change de txtClave:

Aprenda a programar en Visual Basic

29

Private Sub txtClave_Change()If txtClave.Text <> "" Then

cmdAceptar.Enabled = TrueEnd If

End Sub

El botón Aceptar, sera quién se encargue de validar el ingreso de la palabra clave,vamos a suponer que que la llave de acceso es Cesar

Private Sub cmdAceptar_Click()If txtClave.Text = "Cesar" Then

MsgBox "Usuario autorizado", vbOKOnly Else MsgBox "Usuario no autorizado", vbOKOnly End IfEnd Sub

Ahora nos ocupamos del botón salir:

Private Sub cmdCancelar_Click() EndEnd Sub

Ejecutando el formulario se obtiene algo asi:

Aprenda a programar en Visual Basic

30

Intente estirar el borde derecho o inferior del formulario, notará que esredimensionable, si desea anular esta característica, establezca la propiedadBorderStyle en 1 – Fixed Single. También puede retirar los botones de controlestableciendo ControlBox en False.

Ahora la única forma de cerrar el formulario es a través del botón Cancelar

☺ No olvide dejar sus comentarios en www.LibrosDigitales.NET, son servirá para preparar la segundaedición.

Aprenda a programar en Visual Basic

31

Usando multiples formularios

La mayoría de las aplicaciones están basadas en el uso de multiples formularios,para acceder a los objetos ubicados en otro formulario, deberá usar la sintaxissiguiente:

Nombre_Formulario!Nombre_del_Control

Las propiedades que se usan con múltiples formularios son:

Show

Muestra en primer plano un formulario.

Hide

Oculta el formulario de la pantalla pero no lo descarga de memoria.

Load

Carga a memoria el formulario, pero no lo visualiza

Aprenda a programar en Visual Basic

32

Unload

Descarga de memoria el formulario, perdiéndose toda la información de susvariables.

Ejemplo:

Agregue un nuevo formulario a su proyecto.

La secuencia es ir al menú Proyecto y luego hacer click en la opción AgregarFormulario.

En el cuadro de diálogo elija el formulario tipo Acerca de

Aprenda a programar en Visual Basic

33

En este nuevo formulario complete los datos que se pide en las lineas punteadas

Le debe quedar algo asi:

Aprenda a programar en Visual Basic

34

A este formulario llamelo frmSplash, si hace doble click sobre el formulario,encontrara que ya hay un código predefinido:

Option Explicit

Private Sub Form_KeyPress(KeyAscii As Integer) Unload MeEnd Sub

Private Sub Form_Load() lblVersion.Caption = "Versión " & App.Major & "." & _

App.Minor & "." & App.Revision lblProductName.Caption = App.TitleEnd Sub

Private Sub Frame1_Click() Unload MeEnd Sub

El cual indica que cuando se haga click sobre el formulario, este se ha de cerrar.

Ahora nuestro proyecto ya tiene dos formularios: frmClave y frmSplash.

Si intenta ejecutar notará que se muestra primero frmClave.

Vamos a cambiar el orden primero deberá de mostrarse el formulario depresentacion, es decir frmSplash.

Vaya al menu Propiedades y elija la opcion Propiedades de Proyecto, en elcuadro de dialogo ubique la pagina General, en ella cambie a frmSplash en la listaObjeto Inicial:

Aprenda a programar en Visual Basic

35

Ahora para enlazar frmSplash con frmClave, añadimos la orden frmClave.Showluego de UnLoad me en el código autogenerado de frmSplash:

Option Explicit

Private Sub Form_KeyPress(KeyAscii As Integer) Unload Me FrmClave.ShowEnd Sub

Private Sub Form_Load() lblVersion.Caption = "Versión " & App.Major & "." &_

App.Minor & "." & App.Revision lblProductName.Caption = App.TitleEnd Sub

Private Sub Frame1_Click() Unload Me FrmClave.ShowEnd Sub

Seria mucho mas interesante, si la ventana de presentación se muestre digamospor dos segundos para luego cerrarse de manera automatica.

Aprenda a programar en Visual Basic

36

Es momento entonces de recurrir al control Cronometro (Timer)

Añada un control Cronometro y luego defina las propiedades:

Objeto Propiedad ValorTimer1 Name tmrVer

Enabled TrueInterval 2000

Luego haga doble click sobre este control y defina:

Private Sub tmrVer_Timer()Unload MefrmClave.Show

End Sub

Borre los procedimientos: Form_Keypress y Frame1_Click. Luego ejecute.

Agregue otro formulario al proyecto, sera un formulario normal, llamelo frmMagic,situe en ella un control OLE, una etiqueta y un Botón de Comando, luego defina laspropiedades siguientes:

Objeto Propiedad ValorForm1 Name frmMagic

Caption A King of magic...OLE1 Name oleMagicLabel1 Name lblMagic

Caption Haz doble click sobre la imagenCommand1 Name cmdCerrar

Caption CerrarCancel True

Al colocar el control OLE le mostrara el cuadro de dialogo Insertar Objeto, en ellaseñale Crear desde archivo y luego ubique el archivo de video magic.avi

Aprenda a programar en Visual Basic

37

El aspecto del formulario deberá ser el siguiente:

El botón Cerrar deberá incluir el siguiente código:

Private Sub cmdCerrar_Click()Unload frmMagic

End Sub

Aprenda a programar en Visual Basic

38

Para asociar los formularios frmClave y frmMagic, vamos a redefinir el evento Clickdel botón cmdAceptar en el formulario frmClave:

Private Sub cmdAceptar_Click() If txtClave.Text = "Cesar" Then frmMagic.Show vbModal Else MsgBox "No autorizado", vbOKOnly, "Advertencia" End IfEnd Sub

Al ejecutar obtenemos:

Aprenda a programar en Visual Basic

39

Impresion del formulario

Ahora que su programa corre perfectamente, seguro desea imprimirla paramostrarla a sus amigos.

Para obtener una copia impresa del formulario puede ir al menu Archivo, opcionImprimir y luego indicar si desea solo el código o ademas la imagen es decir elresultado.

Existe otra forma, es imprimiendo desde la aplicación, por ejemplo mientras se vareproduciendo el video de King of the Magic, quiza desee una instantanea deFreddy Mercury para el album de fotos. Puede asociar la instrucción PrintForm a unbotón de comando.

Suponiendo que el botón se llamara cmdImprimir anotariamos:

Private Sub cmdImprimir_Click()PrintForm

End Sub

Aprenda a programar en Visual Basic

40

Las funciones InputBox() y MsgBox()

InputBox()

Muestra una ventana para el ingreso de datos

cVariable = InputBox("Pregunta" [," Título", xPos, yPos])

xPos, yPos indica las coordenadas donde se mostrará esta ventana, los valoresdeben ser en twips

MsgBox()

Muestra una ventana para la visualizacion de algun resultado.

nValor = MsgBox("Mensaje ", Tipo, "Título")

Aquí tipo es un numero que indica el icono y los botones que aparecerán, latecnologia IntelliSense con la cual está dotada VB hace que mientras se anote lafuncion automaticamente aparezca las constantes de tipo.

nValor tomara un valor numerico según el tipo de botón que se haya definido paraMsgBox(), una forma facil de manejarlo es a traves de constantes

Constante nValor Botón pulsadovbOk 1 AceptarvbCancel 2 CancelarvbAbort 3 AnularvbRetry 4 ReintentarvbIgnore 5 IgnorarvbYes 6 SivbNo 7 No

Aprenda a programar en Visual Basic

41

Ejemplo

Iremos a crear una aplicación que pregunte al usuario su nombre y luego le dé labienvenida.

Coloque en un formulario un botón de comando y un control imagen, luego definalas propiedades:

Objeto Propiedad ValorForm1 Name frmSaludo

Caption (vacio)Image1 Name imgClaudia

Picture Claudia.GIFStretch True

Command1 Name cmdCerrarCaption CerrarCancel True

Al final le debe quedar algo asi:

Ahora haga doble click en el formulario y defina el evento Load. Aquí solicitamos elnombre del usuario a traves del comando InputBox y la guardamos en la variablecNombre, el cual luego lo pasamos como titulo del formulario.

Aprenda a programar en Visual Basic

42

Private Sub Form_Load()cNombre = InputBox("Hola!!!" + Chr(13) _

+ "Cual es tu nombre?", "Saludos", "Colega")frmSaludo.Caption = "Bienvenido " + cNombre

End Sub

Cuando se haga click sobre el botón Cerrar, mostraremos un mensaje dedespedida, aquí usaremos MsgBox:

Private Sub Command1_Click()nRpta = MsgBox("Gracias por tu visita" + Chr(13) _

+ "Larga vida...", vbOKOnly, "Hasta pronto...")End

End Sub

Al ejecutar se obtiene:

Aprenda a programar en Visual Basic

43

Variables

Podriamos representar una variable como una posicion en memoria a la cualpodemos llegar mediante un identificador y donde podemos guardar un dato por undeterminado tiempo, cuando se requiera podrá tomarse, modificarse y volverse aguardar.

Resumiendo diremos que las variables son estructura de datos usados paraalmacenar información. Hay dos tipos de información que puede ser almacenada:números y texto, antes de usar una variable, deberá primero definirla

Dim nombre_de_variable As Tipo

Ejemplo:

Dim numPrecio , numCant As IntegerDim strNombreArticulo As StringnumTotal = numPrecio*numCantPrint strNombreArticulo & “Total = ” & numTotal

A continuación exponemos los tipos de variables disponibles, luego los criterios atener cuando se usen y el alcance que estas tienen dentro de una aplicacion

Aprenda a programar en Visual Basic

44

Tipos de variable

Se dispone de los siguientes tipos de variable:

Tipo DescripcionInteger(Entero)

Guardan valores numéricos enteros relativamentepequeños, el espacio que ocupa cada variable es de 2bytes

Long(Entero largo)

Permite el uso de valores relativamente grandes, ocupa 4bytes en memoria

Single(Simple precision)

Numeros de simple precision, estas variables guardanaproximaciones de los numeros, el tamaño de estosnumeros es de hasta 38 digitos, pueden ser fraccionarios,pero solo tienen una precision de siete digitos, estasvariables ocupan 4 bytes en memoria.

Double(Doble precision)

Estas variables guardan numeros con una precision de 16digitos y permiten mas de 300 digitos, use estas variablespara cálculos cientificos, el espacio que ocupa 8 bytes

Currency(Monetario)

Este tipo de variable mantiene 4 cifras decimasles deprecision y puede tener hasta 14 digitos en la parteentera. Ocupa 8 bytes

String(Cadena)

Para el almacenamiento de caracteres, la variable puedeguaradr hasta 2 billones de caracteres (estaria restringidopor la capacidad de su computadora)

Date(Fecha)

Permite almacenar una fecha y una hora. Si incluye solo lafecha se asumira por hora la medianoche. Ocupa 8 bytes

Byte Puede contener un valor entero entre 0 y 255, aparente sise desea economizar espacio. Ocupa 1 byte

Boolean Permite almacenar un valor logico, puede ser True o False.Ocupa 2 bytes

Variant Este tipo de variable puede guardar cualquier tipo de dato,VB hace las conversiones automaticamente de modo queel Desarrollador no tendrá que preocuparse por ellas.

Aprenda a programar en Visual Basic

45

Para cada tipo de variable hay un rango de valores permitidos:

Tipo Rango permitidoByte De 0 a 255

Integer -32,768 a 32,767

Long -2,147,483,648 a 2,147,483,647

Single -3.402823E38 a -1.401298E-45

1.401298E-45 a 3.402823E38

Double -1.79769313486232D308 a -4.94065645841247D-324

4.94065645841247D-324 a 1.79769313486232D308

Currency -922337203685477.5808 a 922337203685477.5807String Con tamaño variable 10 bytes + 1 byte/char

Con tamaño fijo, 1 byte/char(0 hasta 65400 caracteres)

Date De 1 de Enero del 100 al 31 de Dic de 9999

Variant Con número, 16 bytesCon caracteres, 22 bytes + 1 byte/charValores de fechas: 1/1/0000 a 12/32/9999

Una vez definida la variable, le puede asignar un valor. Para esto se usa el operador' = '.

Ejemplo:

Dim numPrecio , numCant As IntegerDim strNombreArticulo As StringnumPrecio = 17numCant = 5strNombreArticulo = “Teclados”

Las operaciones que se efectuan con variables, se deben hacer entre variables delmismo tipo, por ejemplo:

Print numCant * strNombreArticulo

Presentaria un error indicando que los tipos no coinciden “Type Mismatch”

Aprenda a programar en Visual Basic

46

Si no define la variable por defecto asumirá el tipo Variant (evite usar este tipo devariable), analice el siguiente caso:

var1 = “8”var2 = var1 + 6Print var2

Espera el error “Type Mismatch”?, pues no la respuesta es 14, hay un hecho curiosoen las variables del tipo Variant, antes de realizar la suma, VB evalua el contenidode var1, a pesar de estar entre comillas lo convierte a numérico.

var1 = 8var2 = var1 & “6”Print var2

El simbolo & se usa para unir dos cadenas, en la secuencia anterior var1 es unavariable numérica, al igual que en el ejemplo anterior se esperaria un error del tipo“Type Mismatch”, pero termina arrojando el resultado 86, es decir var1 lo haconvertido a cadena.

Dim var1 As IntegerDim var2 As Integervar1 = 8var2 = 6var2 = var1 & var2Print var2

En teoria la secuencia anterior deberia arrojar un mensaje de error ya que var1 yvar2 son variables numéricas, el hecho de usar el operador de concatenacion los haunido como si fueran datos del tipo carácter. La gran pregunta es: cual es el tipo dela variable var2 luego de haberse hecho el cálculo? Y que sucederá si a eseresultado le multiplicamos o sumamos un numero?.

En resumen: el operador '+' suma los operandos, mientras que '&' los une:

X = "ABC" + "DE" X="ABCDE" X = "ABC" & "DE" X="ABCDE" X = 12 + 3 X=15 Y = 12 & 3 X="123"

Aprenda a programar en Visual Basic

47

Option Explicit

Para evitar posibles errores a consecuencia de variables no declaradas (es decirVariant), podemos obligarnos a definirlas. Vaya al menu Herramientas, luego aOpciones y marque la casilla Requerir declaracion de variables.

Ahora en cada modulo, (FRM, BAS o CLS) se añadirá al principio la instrucciónOption Explicit.

Procure usar siempre Option Explicit en cada módulo. Option Explicit localiza losnombres de variables incorrectos de forma automática.

En cuanto a la definicion de las variables, se mencionó que se debía usar lainstrucción DIM, pero no es la unica forma, tambien puede usar:

Aprenda a programar en Visual Basic

48

Dim var1 As VariantDim var2 As IntegerDim var3 As LongDim var4 As SingleDim var5 As DoubleDim var6 As StringDim var7 As Currency

Dim var1Dim var2%Dim var3&Dim var4!Dim var5#Dim var6$Dim var7@

Puede declarar mas de una variable con una sola instrucción Dim, por ejemplo:

Dim numPrecio As Currency, strNombre As StringDim numCant%, strTelefono$

De que tipo son las variables valor1, valor2 y valor3, en la siguiente linea?

Dim valor1, valor2, valor3 As Integer

Si afirma que todas son de tipo Integer, está en un error, pues las dos primerasvariables son de tipo Variant y la ultima Integer, asi que hay que tener muchocuidado. Finalmente si elige un tipo de variable incorrecto y luego almacena unvalor que excede el rango permitido, se presentará un error de desbordamiento,por ejemplo:

Dim nPoblacion As IntegernPoblacion = 90000

Aprenda a programar en Visual Basic

49

Usando DefXXX en la definicion de variables

Si definimos:

Dim nPoblacion, nVarones, nMujeres

ya se sabe que estas variables por omision son del tipo Variant, para simplificar elcódigo, se puede indicar al principio del modulo (en Declaraciones Generales) quetodas las variables que se definan sin tipo, pertenezcan a uno por defecto3, esto sehace a traves de la instrucción DefXXX.

Los formatos de las distintas instrucciones DefXXX son:

DefIntDefLngDefSngDefDblDefCurDefStrDefValDefBoolDefByteDefDate

rango de letrarango de letrarango de letrarango de letrarango de letrarango de letrarango de letrarango de letrarango de letrarango de letra

EnterosEnteros largosReales de simple precisionReales de doble precisionMonedaCadenasVariantesBooleanasByteFecha

Por ejemplo las variables nPoblacion, nVarones y nMujeres tienen algo en comun,todas empiezan con la letra n, entonces en Declaraciones Generales anote:

DefLng NDefStr A-D

Ahora cuando se defina:

Dim nPoblacion, nVarones, nMujeres, nSalario As Currency

Se asumirá por defecto que todas las variables que empiezan con la letra “n” serandel tipo Entero largo, excepto nSalario que es Monetario.

3 Excepto el Variant

Aprenda a programar en Visual Basic

50

Tambien se puede indicar un rango, por ejemplo:

DefStr A-D

Indica que todas las variable que empiezan con las letras A, B, C o D seran del tipoCadena.

A continuacion se muestra la estructura completa del ejemplo:

Aprenda a programar en Visual Basic

51

Alcance de las variables

En muchas ocasiones se necesita que el valor de una variable se conserve mientrasse ejecuta la aplicación, en otras que el valor solo exista por un determinadomomento.

El ambito de la variable va a depender del lugar donde la defina, si la variable ladefine en Declaraciones Generales, la variable será visible en todos losprocedimientos relacionados al formulario, cualquier cambio que haga en estavariable desde un procedimiento de evento persistirá.

Veamos un ejemplo: En un formulario disponga de dos botones de comando:Command1 y Command2, haga doble click en el formulario, en la ventana decódigo ubiquese al principio en la zona denominada Declaraciones Generales, enella defina la variable x. Luego asigne el código siguiente a los botones decomando:

Las variables que se declaran a nivel de formulario (en Declaraciones Generales),mantienen su valor y son accesibles desde cualquier procedimiento del formulario.Si ejecuta el formulario y hace click en Command1, la primera vez se imprima 0, sivuelve a pulsarlo imprimirá 1 y asi sucesivamente.

Para Command2 aparentemente se redefine la variable, al asociarle un nuevo valor,en este caso la cadena “Cesar”, y luego hacer click sobre el botón se espera comoresultado “Cesar”, hasta alli va bien pero que sucederá si ahora hacemos click enCommand1?… si cree que se imprimirá “Cesar”, estamos mal… se imprimirá elnúmero siguiente.

Aprenda a programar en Visual Basic

52

La variable definida en Command2 existe solo cuando se ingresa a dichoprocedimiento, al abandonarla, dicha variable deja de existir.

Hay tres tipos de alcance en una variable:

Local La variable solo puede ser usada en el procedimiento actual (useDim dentro del procedimiento).

Módulo La variables pueden ser accesadas desde cualquier procedimientodel formulario actual (use Dim dentro de la sección deDeclaraciones Generales del modulo).

Global Pueden ser accesados desde cualquier procedimiento y desdecualquier formulario. (usa Global dentro de la sección deDeclaraciones Generales del formulario).

El declarar variables y arreglos como local en un procedimiento o función esmuy usado, porque esto minimíza los efectos extraños que pueden ocurrir cuandose usan variables globales. Sin embargo, cuando usamos una variable local en unprocedimiento, crea un espacio de memoria para mantener el valor de esta variable, esto sucede cuando lee la definicion Dim, pero cuando llega al final delprocedimiento (End Sub) libera el espacio asigndo para el valor de la variable local.

Agrega el siguiente código a un botón de comando y observa que valores sonimpresos:

Aprenda a programar en Visual Basic

53

Después de dar clic varias veces al botón el valor nunca será arriba de uno a pesarde que el valor de la variable se incrementa en uno cada vez. Esto es porque cadavez que el procedimiento es llamado, la variable se define, existe y al finalizar laEjecución del prodimiento muere. Para que ésto no suceda así, podemos sustituirStatic en lugar de Dim:

Ahora en vez de que el valor de la variable se pierda cuando el procedimientotermina, con este cambio (static) su valor permanecerá hasta que todo el programatermine. De esta manera, podemos ver una lista de números que se incrementanen uno cada vez que se haga click en el botón de comando4. 4 La nueva variable estática es una variable de alcance local, si algun procedimiento trata de acceder esta variable no

prodrá hacerlo

Aprenda a programar en Visual Basic

54

Constantes

Hay ciertos valores que no necesariamente cambian en una aplicación como elcontenido de las variables, datos como por ejemplo el IGV, el tipo de cambio, elvalor de PI. En lugar de anotar:

nRadio = 10Print “Perimetro circulo ” ; 2*nRadio*3.1416

Resulta mas claro:

Const PI = 3.1416nRadio = 10Print “Perimetro circulo ” ; 2*nRadio*PI

Mas aun si el valor PI se utiliza en diferentes partes de la aplicación.

Las constantes mantiene un valor en toda la ejecución del programa. Se definenusando la instrucción Const.

Veamos otro ejemplo:

Const IGV = 1.18 ‘ Declara y asigna un valor a laconstanteConst TipoCambio = 5.2 ‘ Tipo de cambioDim Precio As CurrencyPrecio = 120Print “Precio ”; Precio * IGVPrint “Al cambio ” ; Precio * IGV*TipoCambio

Como las variables las constantes también tiene reglas de alcance. Hay constantesglobales que pueden ser accesadas por cualquier módulo o cualquier formulario delproyecto, las constantes de módulo solo son accesadas por el formulario que loscontiene, y las contantes locales son accesadas solamente por el objeto actual o porel procedimiento o función.

Aprenda a programar en Visual Basic

55

Local Utilice “Const” dentro del procedimiento

Módulo Utilice “Const” dentro de la sección de Declaraciones Generales deun formulario o módulo

Global Utilice “Global Const” dentro de la sección de DeclaracionesGenerales de un módulo

Hay un gran número de constantes predefinidas, muchas de ellas son accesiblesmediante la tecnologia IntelliSense. Puede acceder a la lista de constantespulsando la tecla F2 o mediante el menu Ver opcion Examinador de Objetos (ObjectBrowser)

Para trasladar una constante a la ventana de código, ubique la constante en laventana Examinador de Objetos, luego haga uso del botón Copiar al Portapapeles.Ahora en la ventana de código solo tiene que pegar: Ctrl-V.

Aprenda a programar en Visual Basic

56

Arreglos (arrays)

Un arreglo, representa un conjunto de posiciones consecutivas en memoriaidentificadas con un mismo nombre a las que se puede acceder a traves de unsubindice, cada posicion cumple la misma funcion que una variable: almacenar undato.

Podriamos decir tambien que un arreglo si es unidimensional es la representacionde un vector y si es bidimensional la de una matriz.

En VB los elementos de un arreglo deben almacenar datos del mismo tipo. Undetalle mas, el primer elemento de una matriz posee como subindice 0, el siguiente1 y asi sucesivamente. El rango máximo va desde -32.769 hasta 32.767

Para definir un arreglo se usará la instrucción:

Dim/Static/Private/Public Arreglo ([Rango1[,Rango2[,...]]]) As Tipo

Ejemplo:

Dim aAmigos(3) As String

En el ejemplo se crea el arreglo aAmigos con 3 elementos, para asignar valores alarreglo use el signo “=”:

aAmigos(0) = “Guino”aAmigos(1)= “Dario”aAmigos(2) = “Cesar”

Si deseamos imprimir uno de los nombres basta señalarlo con el indice:

Print aAmigos(1) ‘ Imprime Dario

Aprenda a programar en Visual Basic

57

Si el valor debe asignarse como titulo de un botón de comando (a Command1 porejemplo), basta referenciar y asignar:

Command1.Caption = aAmigos(1)

Para quienes estamos acostumbrados a iniciar la cuenta a partir del número uno,puede que nos desencaje el cero como inicial, para corregirlo podemos usar lainstrucción “Option Base 1”, de esa forma forzamos a empezar con 1. Asi

Print aAmigos(1) ‘ Imprimirá “Guino”

Si deseáramos agregar mas elementos, no podríamos ya que este tipo de arreglono lo permite (arreglo estático), la solucion está en usar un arreglo dinamico.

Un alcance mas, tambien puede crear arreglos indicando un rango de subindices,por ejemplo:

Dim Lista(2 To 5) As Integer

Crea un arreglo de 4 elementos, del 2 al 5.

Aprenda a programar en Visual Basic

58

Arreglos Dinámicos

Podemos crear arreglos tantas veces lo necesitemos, pero en ciertos momentos esnecesario cambiar el tamaño del arreglo en una aplicación. Para hacer estopodemos usar un arreglo 'dínamico'. Primero el arreglo puede ser declarado en lamisma forma, pero sin el número de elementos.

Como ejemplo vamos a crear un arreglo que contenga los distritos de Lima:

Dim aDistritos() As String

Para cambiar el tamaño de este arreglo use el comando 'ReDim' y especifique elnúmero de elementos :

ReDim aDistritos(5)aDistritos(0) = “Lince”aDistritos(1) = “San Borja”aDistritos(2) = “Miraflores”aDistritos(3) = “Barraco”aDistritos(4) = “Surco”

Si intentamos redimensionar el arreglo se perderá, para que esto no sucedapodemos usar:

ReDim Preserve aDistritos(7)aDistritos(5) = “Rimac”aDistritos(6) = “San Martin de Porres”

Aprenda a programar en Visual Basic

59

Funciones para el tratamiento de arreglos

Hay dos funciones que se usa con cierta frecuencia en el tratamiento de arreglos setrata de:

LBound Retorna el menor valor de un arreglo

UBound Devuelve el mayor valor de un arreglo

Por ejemplo

Dim aPrecios(3) As IntegeraPrecios(0) = 300aPrecios(1) = 190aPrecios(2) = 200Print “Lo mas barato”; LBound(aPrecios)Print “Lo mas caro”; UBound(aPrecios)

☺ No olvide visitar siempre www.LibrosDigitales.NET, recomiende a sus amistades nuestros libros, sonGRATIS

Aprenda a programar en Visual Basic

60

Arreglo de Controles

Un Arreglo de Controles es un grupo de controles que comparten el mismo nombrey tipo. A su vez, comparten los mismos procedimientos de eventos, pero soncontroles físicamente separados y cada uno posee su propio conjunto depropiedades. Un arreglo de controles tiene al menos un elemento y no puedeexceder de 254. Para crear un arreglo de controles es suficiente con asignar elmismo nombre a los controles (propiedad Name) en la fase de diseño, o bienasignar un valor a la propiedad Index de un control. En el último caso se genera unarreglo de un solo elemento, lo cual es útil cuando se quieren crear controles entiempo de ejecución. Cuando Visual Basic crea un arreglo de controles, asigna pordefecto los índices 0, 1, ..., los cuales pueden modificarse a voluntad del usuariocambiando el valor de la propiedad Index. Esta operación sólo puede hacersedurante el diseño.

Un pequeño ejemplo: en un formulario se situará tres botones de comandos, a lostres póngale de nombre cmdBotones, claro con títulos diferentes: Aceptar,.Cancelar y Ayuda.

Si hace doble click sobre uno de ellos, se abrirá la ventana de código, debemosusar el parámetro Index5, para averiguar cual de los tres botones de pulsó. Debetener presente que el código creado es compartido por cada uno de los elementosdel arreglo de controles.

Un elemento del arreglo de controles puede referenciarse escribiendoNombreArreglo(Index)

5 Que por defecto aparecerá

Aprenda a programar en Visual Basic

61

Control del flujo en un Programa

El flujo de control de la lógica de un programa es una de las facetas másimportantes de cualquier lenguaje de programación. Las instrucciones condicionalesque cambian la dirección del flujo de control, las instrucciones iterativas (los bucles)que repiten una determinada acción un cierto número de veces, y las instruccionesde selección que escogen una posible línea de acción de entre varias posiblesbasándose en un valor de control, son herramientas que permiten escribirprogramas útiles en Visual Basic.

Estructura condicional simple

La estructura condicional simple dirige el flujo de un programa basandose en unacondición, la veracidad o falsedad de la condición dirigirá el flujo en una dirección,de entre dos posibles.

La sintaxis de esta instrucción es la siguiente:

Forma simple:

IF <Condición> THEN <instrucción>

La forma en que trabaja esta instrucción resulta casi evidente: si (IF) la condiciónresulta cierta (True), entonces (THEN) la instrucción se ejecuta. Si la condiciónresulta falsa (False), el control pasa a la siguiente (en orden descendente)instrucción del programa.

Forma completa:

IF <Condición> THEN <instrucción1> ELSE <instrucción2>

Aprenda a programar en Visual Basic

62

Aquí, si la condición resulta cierta, entonces se ejecuta la <instrucción 1>. Si porel contrario (ELSE) la expresión resulta falsa, entonces se ejecuta la <instrucción2>.

La forma de usar esta orden condicional con bloques de instrucciones esdesdoblándolas de la forma siguiente:

Forma simple:

IF <Condición> THEN<instrucciones>

ENDIF

Forma completa:

IF <Condición> THEN<instrucciones 1>

ELSE<instrucciones 2>

ENDIF

Por ejemplo:

If k < 0 ThenNegativo = True ‘Actualiza el indicador de negativok = Abs(k) ‘Toma el valor absoluto de k

ElseNegativo = False ‘Borra el indicador de negativo

End If

Aprenda a programar en Visual Basic

63

Hay una forma más sofisticada de la instrucción IF, donde se establece múltiplescondiciones, el bloque de instrucciones que se ejecutará será aquella donde lacondición sea verdadera:

IF Condicion1 THEN [Instrucciones1][ELSEIF Condicion2 [Instrucciones2]][ELSEIF Condicion3 [Instrucciones3]]...[ELSE [InstruccionesN]]END IF

Finalmente tenemos la función IIF() que guarda cierto parecido al comando IF, sóloque la función en este caso retorna un valor, además debe estar expresada en unasola línea:

Valor = IIF(Condicion, ExpVerdadera, ExpFalsa)

Aprenda a programar en Visual Basic

64

Instrucciones IF anidadas

Es posible anidar tantas instrucciones IF como se quiera, pero conviene recordarque si alguien al leer un programa necesita profundizar en demasiados niveles deIF antes de llegar al nivel más elemental, podría perder la pista del funcionamientodel programa y abandonarlo antes de tener la oportunidad de tener la oportunidadde volver hacia los niveles superiores. Si la única razón del anidamiento múltiple deinstrucciones IF es elegir una alternativa de entre varias, sería mucho mejor utilizarla instrucción SELECT CASE. La forma de una estructura de este tipo sería algocomo:

IF <condición 1> THEN IF <condición 2> THEN IF <condición 3> THEN IF <condición 4> THEN <instrucción> ENDIF ENDIF ENDIFENDIF

Aquí tenemos otro caso de anidación:

IF <condición 1> THEN <instrucción 1>ELSE IF <condición 2> THEN <instrucción 2> ELSE IF <condición 3> THEN <instrucción 3> ELSE <instrucción 4> ENDIF ENDIFENDIF

Aprenda a programar en Visual Basic

65

Respecto a la condición

Los operadores que puede usar para elaborar la condición son:

> Mayor que< Menor que= Igual a<= Inferior o igual a>= Superior o igual a<> Distinto aLike Como el modelo de cadena propuesto

Con Like se pueden usar los siguientes comodines:

* Para cero, uno o más caracteres cualesquiera

? Para un carácter único cualquiera

# Para una cifra única cualquiera

[ListaChars] Para todo carácter único que se encuentre en la lista

[!ListaChars] Para todo carácter único que no se encuentre en la lista

Ejemplos:

Si el código es de 7 caracteres, de los cuales el primero es “S”, luego doscaracteres cualesquiera, luego los caracteres IQT más un número:

IF IdProducto LIKE "S??IQT#" THEN

El primer carácter no puede ser ni una K ni una R:

IF IdProducto LIKE "[!KR]*" THEN

No está comprendido entre la K y la R inclusive.

IF IdProducto LIKE "[!K-R]*" THEN

Aprenda a programar en Visual Basic

66

En VB las cadenas “Clave”, “clave” y “CLAVE” son diferentes, si en una variabletiene un valor y la quiere comparar con una de estas palabras, tendría que usar lasfunciones UCase() o LCase():

IF UCase(var) = “CLAVE” THEN

o

IF LCase(var) = “clave” THEN

Pero, hay una forma con la que ya no tiene que preocuparse de como se ingrese eldato, es indicando: Option Compare Text al principio del módulo en DeclaracionesGenerales.

De modo que:

IF var = “Clave” THEN

la condicion será verdadera si se ingresó “CLAVE” o “clave”.

Aprenda a programar en Visual Basic

67

Instrucción repetitiva multiple

La instrucción SELECT CASE es una forma abreviada para referirse al anidamientoELSE/IF. La sintaxis es la siguiente:

SELECT CASE Condición_de_testeoCASE valor1

Instrucciones 1[CASE valor2

instrucciones 2]...[CASE ELSE

instrucciones n]END SELECT

La siguiente estructura de instrucciones If anidadas:

IF nota < 11 Thenestado=”desaprobado”

ElseIf nota < 13 Then

Estado=”sustitutorio”Else

Estado = “aprobado”End If

End If

Puede ser reemplazada por:

Select Case notaCase < 11

estado=”desaprobado”Case < 13

estado=”sustitutorio”Case Else

estado = “aprobado”End Select

Es importante que tenga en cuenta que sólo se activa la primera clausula Casecuya condición se haga verdadera.

Aprenda a programar en Visual Basic

68

Casos especiales:

Podemos usar la palabra Is , por ejemplo para averiguar si el valor de la variable esuna letra:

Case Is < “A”Print “El carácter no es una letra”

La palabra To permite especificar un cojunto de valores, por ejemplo para validaruna edad:

Case 18 To 60Print “Bienvenido al club”

Por último la estructura de control Select Case permite combinar en una lineavarias comprobaciones, por ejemplo

Case “Iquitos”, “Pucallpa”Print “Se encuentra en la selva”

Aprenda a programar en Visual Basic

69

Instrucción iterativa FOR

En muchas ocasiones hay necesidad de realizar una misma operación, múltiplesveces sobre un determinado rango de valores.

Esta estructura recibe el nombre de instrucción FOR:

FOR var = Inicio TO Final [STEP Incremento][Instrucciones][EXIT FOR][Instrucciones]

NEXT[Variable]

La <var>iable determina la iteración que inicia en valor <inicial> y finaliza envalor <final>. Cuando se ejecuta una instrucción FOR, se realizan las siguientesacciones: la variable de control toma el valor inicial si este valor es diferente alvalor final entonces, se ejecuta las instrucciones. Después de que la instrucción hasido ejecutada, se asigna a la variable de control un valor siguiente de acuerdo alincremento. Si este llega a tomar el valor final, la ejecución de la instrucción FOR sedetendrá. En caso contrario, las instrucciones se ejecutan de nuevo.

Aprenda a programar en Visual Basic

70

Ejemplo:

La impresión de raíces cuadradas de los números pares entre el 20 al 100 usando lainstrucción FOR, sería:

For i = 20 To 100 Step 2j = Sqrt(i) ;Print “La raíz cuadrada de “& i &” es “ & j

Next

Veamos algunas restricciones de esta orden:

For k = 1 To 10If k > 3

k = 1End If? k

Next

La secuencia anterior generaría un error al intentar reasignar el valor de la variablede control, recuerde la variable de control es solo de lectura. ¡El valor de la variablede control dentro de un bucle FOR no se puede cambiar! Las estructurasREPEAT/UNTIL y DO/WHILE sí permiten redefinir la condicion de iteración. Encambio los bucles FOR se ejecutan un número de veces predeterminado, ymientras dura la ejecución, el valor de la variable de control queda bajo el controlexclusivo del propio bucle FOR.

Procure no hacer cálculos dentro del bucle, de valores que no van a cambiar.

Hay una instrucción vetada, es decir que no se debe usar, o al menos evitarla en loposible, se trata de GOTO, la cual sirve para variar el rumbo de la ejecución de unprograma hacia alguna otra parte, rompiendo con los canones de la programaciónestructurada.

Veamos:

For k = 1 To 10If k > 3

GoTo SalirEnd If? k

NextSalir:

Aprenda a programar en Visual Basic

71

Esta otra estructura arrojaría un error, cuando k tome el valor 4, no debeabandonar un lazo mediante GOTO, resultaría mejor si usará:

For k = 1 To 10If k > 3

Exit ForEndIf? k

Next

Aprenda a programar en Visual Basic

72

Instrucción iterativa WHILE

Las tareas que deban repetirse cierta cantidad podemos contrarla facilmentemediante la orden WHILE.

Visual Basic ofrece tres posibilidades para realizar este tipo de estructura.

Aprenda a programar en Visual Basic

73

El caso While… Wend:

WHILE Condicion[Instrucciones]

WEND

La forma en que trabaja este bucle es la siguiente:

• Inicialmente se evalúa la condición. Si el valor de esta expresión es True,entonces se ejecuta <instrucción>. Por el contrario, si el resultado de laevaluación es False, <sentencia> no llega a ejecutarse, y el control pasa a lasiguiente instrucción del programa.

• Suponiendo que la <condición> sea True la primera vez, después de ejecutar<instrucciones> el código vuelve al principio y evalúa <condición> de nuevo.Si su resultado continúa siendo verdadero, <instrucciones>se vuelve aejecutar. En el momento en el que el resultado de la evaluación pase a serFalse, el bucle WHILE pasará el control a la siguiente instrucción del programa.

En resumen, mientras <condición> es True, <instrucciones> se ejecutará unay otra vez, solamente cuando la expresión se vuelve falsa termina de ejecutarse elbucle.

El caso de la lista de raíces cuadradas de los números comprendidos entre el 20 yel 100 sería:

k = 20While K <= 100

j = Sqrt(k) ;Print “La raíz cuadrada de “& k &” es “ & jk = k + 2

Wend

Aprenda a programar en Visual Basic

74

El caso Do While … Loop:

DO [{WHILE/UNTIL} Condicion][Instrucciones][EXIT DO][Instrucciones]

LOOP

La salvedad es que en esta estructura se puede usar Exit Do, para forzar a terminarel lazo y continuar con la ejecución del resto del programa. Por ejemplo:

Num = 0Do While Num < 5

Num = Num + 1If Num = 3 Exit Do

LoopPrint Num 'Resultado=5

El caso Do … Loop While:

DO[Instrucciones][EXIT DO][Instrucciones]

DO [{WHILE/UNTIL} Condicion]

La diferencia entre poner las claúsulas While/Until con el Do o con el Loop es queen el primer caso puede que no se ejecuten nunca las instrucciones del bucle y enel segundo caso se ejecutan al menos una vez. Una lista de las raíces de los 4primeros números:

Num = 1Do

Print Sqrt(Num)Num = Num + 1

Loop While Num < 5

☺ Estamos preparando la siguiente edición, donde incluiremos el tratamiento de Base de Datos,recuerde que su participación para nosotros es muy importante.

Aprenda a programar en Visual Basic

75

Próxima Entrega

Edición 1.1Dentro de una semana

Prohibida la reproducción total o parcialSin nuestro consentimiento

Derechos de copia reservadoswww.LibrosDigitales.NET