INICIO EN VISUAL BASIC
A WEB 100% MEXICANA
________________________________________________
________________________________________________
INTRO
Modo de Diseño y Modo de Ejecución
La aplicación Visual Basic de Microsoft puede trabajar de dos modos distintos: en modo de diseño y en modo de ejecución. En modo de diseño el usuario construye interactivamente la aplicación, colocando controles en el formulario, definiendo sus propiedades, y desarrollando funciones para gestionar los eventos.
La aplicación se prueba en modo de ejecución . En ese caso el usuario actúa sobre el programa (introduce eventos) y prueba cómo responde el programa. Hay algunas propiedades de los controles que deben establecerse en modo de diseño, pero muchas otras pueden cambiarse en tiempo de ejecución desde el programa escrito en Visual Basic en la forma en que más adelante se verá. También haypropiedades que sólo pueden establecerse en modo de ejecución y que no son visibles en modo de diseño.
Todos estos conceptos – controles, propiedades, eventos, etc.- se explican en los apartados siguientes.
Formularios y Controles Cada uno de los elementos gráficos que pueden formar parte de una aplicación típica de Windows 95/98/NT es un tipo de control: los botones, las cajas de diálogo y de texto, las cajas de selección desplegables, los botones de opción y de selección, las barras de desplazamiento horizontales y verticales, los gráficos, los menús, y muchos otros tipos de elementos son controles para Visual Basic Cada control debe tener un nombre a través del cual se puede hacer referencia a él en el programa. Visual Basic proporciona nombres por defecto que el usuario puede modificar.
En la terminología de Visual Basic se llama formulario (form) a una ventana. Un formulario puede ser considerado como una especie de contenedor para los controles. Una aplicación puede tener varios formularios, pero un único formulario puede ser suficiente para las aplicaciones más sencillas. Los formularios deben también tener un nombre, que puede crearse siguiendo las mismas reglas que para los controles.
Objetos y Propiedades
Los formularios y los distintos tipos de controles son entidades genéricas de las que puede haber varios ejemplares concretos en cada programa. En programación orientada a objetos (más bien basada en objetos, habría que decir) se llama clase a estas entidades genéricas, mientras que se llama objeto a cada ejemplar de una clase determinada. Por ejemplo, en un programa puede haber
varios botones, cada uno de los cuales es un objeto del tipo de control command button, que sería la clase.
Cada formulario y cada tipo de control tienen un conjunto de propiedades que definen su aspecto gráfico (tamaño, color, posición en la ventana, tipo y tamaño de letra, etc.) y su forma de responder a las acciones del usuario (si está activo o no, por ejemplo). Cada propiedad tiene un nombre que viene ya definido por el lenguaje.
Por lo general, las propiedades de un objeto son datos que tienen valores lógicos ( True, False) o numéricos concretos, propios de ese objeto y distintos de las de otros objetos de su clase. Así pues, cada clase, tipo de objeto o control tiene su conjunto de propiedades, y cada objeto o control concreto tiene unos valores determinados para las propiedades de su clase.
Casi todas las propiedades de los objetos pueden establecerse en tiempo de diseño y también -casi siempre- en tiempo de ejecución. En este segundo caso se accede a sus valores por medio de las sentencias del programa, en forma análoga a como se accede a cualquier variable en un lenguaje de programación. Para ciertas propiedades ésta es la única forma de acceder a ellas. Por supuesto Visual Basic 6.0 permite crear distintos tipos de variables, como más adelante se verá.
Se puede acceder a una propiedad de un objeto por medio del nombre del objeto a que pertenece, seguido de un punto y el nombre de la propiedad, como por ejemplo optColor.objName. En el siguiente apartado se estudiarán las reglas para dar nombres a los objetos.
Nombres de objetos
En principio cada objeto de debe tener un nombre, por medio del cual se hace referencia a dicho objeto. El nombre puede ser el que el usuario desee, e incluso proporciona nombres por defecto para los diversos controles. Estos nombres por defecto hacen referencia al tipo de control y van seguidos de un número que se incrementa a medida que se van introduciendo más controles de ese tipo en el formulario (por ejemploVScroll1, para una barra de desplazamiento -scroll bar- vertical, HScroll1, para una barra horizontal, etc.).
Los nombres por defecto no son adecuados porque hacen referencia al tipo de control, pero no al uso que de dicho control está haciendo el programador. Por ejemplo, si se utiliza una barra de desplazamiento para introducir una temperatura, conviene que su nombre haga referencia a la palabra temperatura, y así cuando haya que utilizar ese nombre se sabrá exactamente a qué control corresponde. Un nombre adecuado sería por ejemplo hsbTemp, donde las tres primeras letras indican que se trata de una horizontal scroll bar, y las restantes (empezando por una mayúscula) que servirá para definir unatemperatura.
Existe una convención ampliamente aceptada que es la siguiente: se utilizan siempre tres letras minúsculas que indican el tipo de control, seguidas por otras letras (la primera mayúscula, a modo de separación) libremente escogidas por el usuario, que tienen que hacer referencia al uso que se va a dar a ese control. La Tabla muestra las abreviaturas de los controles más usuales.
Eventos
Ya se ha dicho que las acciones del usuario sobre el programa se llaman eventos. Son eventos típicos el clicar sobre un botón, el hacer doble clic sobre el nombre de un fichero para abrirlo, el arrastrar un icono, el pulsar una tecla o combinación de teclas, el elegir una opción de un menú, el escribir en una caja de texto, o simplemente mover el ratón. Más adelante se verán los distintos tipos de eventos reconocidos por Windows y por Cada vez que se produce un evento sobre un determinado tipo de control, Visual Basic arranca una determinada función o procedimiento que realiza la acción programada por el usuario para ese evento concreto. Estos procedimientos se llaman con un nombre que se forma a partir del nombre del objeto y el nombre del evento, separados por el carácter (_), como por ejemplo txtBox_click, que es el nombre del procedimiento que se ocupará de responder al eventoclick en el objeto txtBox.
Métodos
Los métodos son funciones que también son llamadas desde programa, pero a diferencia de los procedimientos no son programadas por el usuario, sino que vienen ya pre-programadas con el lenguaje. Los métodos realizan tareas típicas, previsibles y comunes para todas las aplicaciones. De ahí que vengan con el lenguaje y que se libere al usuario de la tarea de programarlos. Cada tipo de objeto o de control tiene sus propios métodos.
Por ejemplo, los controles gráficos tienen un método llamadoLine que se encarga de dibujar líneas rectas. De la misma forma existe un método llamado Circle que dibuja circunferencias y arcos de circunferencia Es obvio que el dibujar líneas rectas o circunferencias es una tarea común para todos los programadores y queda ya resuelta.
Proyectos y ficheros
Cada aplicación que se empieza a desarrollar en es un nuevo proyecto. Un proyecto comprende otras componentes más sencillas, como por ejemplo losformularios (que son las ventanas de la interface de usuario de la nueva aplicación) y los módulos (que son conjuntos de funciones y procedimientos sin interface gráfica de usuario).
¿Cómo se guarda un proyecto en el disco? Un proyecto se compone siempre de varios ficheros (al menos de dos) y hay que preocuparse de guardar cada uno de ellos en el directorio
Existe siempre un fichero con extensión *.vbp (Visual Basic Project) que se crea con el comando File/Save Project As. El fichero del proyecto contiene toda la información de conjunto. Además hay que crearun fichero por cada formulario y por cada módulo que tenga el proyecto. Los ficheros de los formularios se crean con File/Save Filename As teniendo como extensión *.frm. Los ficheros de código o módulos se guardan también con el comando
File/Save Filename As y tienen como extensión *.bas si se trata de un módulo estándar o *.cls si se trata de un módulo de clase (class module).
Clicando en el botón Save en la barra de herramientas se actualizan todos los ficheros del proyecto. Si no se habían guardado todavía en el disco, abre cajas de diálogoSave As por cada uno de los ficheros que hay que guardar.
Cuando se arranca Visual Basic aparece en la pantalla una configuración similar a la mostrada en la Figura 1.1. En ella se pueden distinguir los siguientes elementos:
1. La barra de títulos, la barra de menús y la barra de herramientas 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).
Existen otras ventanas para edición de código ( Code Editor) y para ver variables en tiempo de ejecución con el depurador o Debugger (ventanas Immediate, Locals y Watch). Todo este conjunto de herramientas y de ventanas es lo que se llama un entorno integrado de desarrollo o IDE (Integrated Development Environment).
Construir aplicaciones con Visual Basic es muy sencillo: basta crear los controles en el formulario con ayuda de la toolbox y del ratón, establecer sus propiedades con ayuda de la ventana de propiedades y programar el código que realice las acciones adecuadas en respuesta a los eventos o acciones que realice el usuario. A continuación, tras explicar brevemente cómo se utiliza el Help de Visual Basic, se presentan algunos ejemplos
El Help de Visual Basic es de los mejores que existen. Además de que se puede buscar cualquier tipo de información con la función Index, basta seleccionar una propiedad cualquiera en la ventana de propiedades o un control cualquiera en el formulario (o el propio formulario), para que pulsando la tecla <F1> aparezca una ventana de ayuda muy completa. De cada control de muestran las propiedades, métodos y eventos que soporta, así como ejemplos de aplicación. También se muestra información similar o relacionada.
Existe además un curso introductorio sobre Visual Basic que se activa con la opción Help/Contents, seleccionando luego MSDN Contents/Visual Basic Documen-tation/Visual Basic Start Page/Getting Started.
EJEMPLOS
El entorno de programación de Visual Basic ofrece muchas posibilidades de adaptación a los gustos, deseos y preferencias del usuario. Los usuarios expertos tienen siempre una forma propia de hacer las cosas, pero para los usuarios noveles conviene ofrecer unas ciertas orientaciones al respecto. Por eso, antes de realizar los ejemplos que siguen se recomienda modificar la configuración de Visual Basic de la siguiente forma:
1. En el menú Tools elegir el comando Options; se abre un cuadro de diálogo con 6 solapas.
2. En la solapa Environment elegir “ Promp to Save Changes” en “ When a Program Starts” para que pregunte antes de cada ejecución si se desean guardar los cambios realizados. En la solada
Editor elegir también “Require Variable Declaration” en “ Code Settings” para evitar errores al teclear los nombres de las variables.
3. En la solapa Editor, en Code Settings, dar a “ Tab Width” un valor de 4 y elegir la opción “ Auto Indent” (para que ayude a mantener el código legible y ordenado). En Windows Settings elegir “ Default to Full Module View” (para ver todo el código de un formulario en una misma ventana) y “ Procedure Separator” (para que separe cada función de las demás mediante una línea horizontal).
Sencillo programa de colores y posiciones
En la Figura se muestra el formulario y los controles de un ejemplo muy sencillo que permite mover una caja de texto por la pantalla, permitiendo a su vez representarla con cuatro colores diferentes.
En que se describen los controles
utilizados, así como algunas de sus propiedades más
importantes (sobre todo las que se separan de los
valores por defecto). Los ficheros de este proyecto
se llamaránColores0.vbp y Colores0.frm.
Objetos y propiedades del ejemplo Colores0.
A continuación se muestra el código correspondiente a los procedimientos de este ejemplo.
Option Explicit
Private Sub Form_Load()
txtCaja.Top = 0
End Sub
Private Sub optArriba_Click() txtCaja.Top = 0
End Sub
Private Sub optAbajo_Click()
txtCaja.Top = frmColores0.ScaleHeight - txtCaja.Height End Sub
Private Sub optAzul_Click() txtCaja.BackColor = vbBlue
End Sub
Private Sub optRojo_Click() txtCaja.BackColor = vbRed
End Sub
Private Sub optVerde_Click() txtCaja.BackColor = vbGreen
End Sub
Private Sub optAmarillo_Click() txtCaja.BackColor = vbYellow
End Sub
Sobre este primer programa en Visual Basic 6.0 se pueden hacer algunos comentarios:
El comando Option Explicit sirve para obligar a declarar todas las variables que se utilicen. Esto impide el cometer errores en los nombres de las variables (confundir masa con mesa, por ejemplo). En este ejemplo esto no tiene ninguna importancia, pero es conveniente acostumbrarse a incluir esta opción. Declarar una variable es crearla con un nombre y de un tipo determinado antes de utilizarla.
Cada una de las partes de código que empieza con un Private Sub y termina con un End Sub es un procedimiento, esto es, una parte de código independiente y reutilizable. El nombre de uno de estos procedimientos, por ejemplo optAzul_Click(), es típico de Visual Basic. La primera parte es el nombre de un objeto (control); después va un separador que es el carácter de subrayado (_); a continuación el nombre de un evento - click, en este caso-, y finalmente unos paréntesis entre los que irían los argumentos, en caso de que los hubiera
Es también interesante ver cómo se accede desde programa a la propiedad backColor de la caja de texto que se llama txtCaja: se hace utilizando el punto en la forma txtCaja.BackColor. Los colores se podrían también introducir con notación hexadecimal (comenzando con &H, seguidos por dos dígitos entre 00 y FF (es decir, entre 0 y 255 en base 10) para los tres colores fundamentales, es decir para el Red, Green y Blue (RGB), de derecha a izquierda. Aquí se han utilizado las constantes simbólicas predefinidas: vbRed, vbGreen y vbBlue (ver Tabla 6.1, en la # 69).
Recuérdese que si se desea que el código de todos los eventos aparezca en una misma ventana hay que activar la opción Default to Full Module View en la solapa Editor del comando Tools/Options. También puede hacerse directamente en la ventana de código con uno de los botones que aparecen en la parte inferior izquierda
Es muy importante crear primero el control frame y después, estando seleccionado, colocar los botones de opción en su interior. No sirve hacerlo a la inversa. Visual Basic supone que todos los botones de opción que están dentro del mismo frame forman parte del mismo grupo y sólo permite que uno esté seleccionado.
Minicalculadora
En este ejemplo se muestra una calculadora elemental que permite hacer las cuatro operaciones aritméticas Los ficheros de este proyecto se pueden llamar minicalc.vbp y minicalc.frm.
El usuario introduce los datos y clica sobre el botón correspondiente a la operación que desea realizar, apareciendo inmediatamente el resultado en la caja de texto de la derecha,muestra los objetos y las propie-dades más importantes.
Objetos y propiedades del ejemplo Minicalculadora.
A continuación se muestra el código correspondiente a los procedimientos que gestionan los eventos de este ejemplo.
Option Explicit
Private Sub cmdDiv_Click()
txtResult.Text = Val(txtOper1.Text) / Val(txtOper2.Text) lblOp.Caption = "/"
End Sub
, Equivalencia de temperaturas.
Private Sub cmdProd_Click()
txtResult.Text = Val(txtOper1.Text) * Val(txtOper2.Text) lblOp.Caption = "*"
End Sub
Private Sub cmdResta_Click()
txtResult.Text = Val(txtOper1.Text) - Val(txtOper2.Text) lblOp.Caption = "-"
End Sub
Private Sub cmdSuma_Click()
txtResult.Text = Val(txtOper1.Text) + Val(txtOper2.Text) lblOp.Caption = "+"
End Sub
En este ejemplo se ha utilizado repetidamente la función Val() de Visual Basic. Esta función convierte una serie de caracteres numéricos (un texto formado por cifras) en el número entero o de punto flotante correspondiente. Sin la llamada a la función Val() el operador + aplicado a cadenas de caracteres las concatena, y como resultado, por ejemplo, “3+4” daría “34”. No es lo mismo los caracteres “1” y “2” formando la cadena o string “12” que el número 12; la función val() convierte cadenas de caracteres numéricos –con los que no se pueden realizar operaciones aritméticas- en los números correspondientes –con los que sí se puede operar matemáticamente-. Visual Basic transforma de modo automático números en cadenas de caracteres y viceversa, pero este es un caso en el que dicha transformación no funciona porque el operador “+” tiene sentido tanto con números como con cadenas.
Transformación de unidades de temperatura
nos permite ver la equivalencia entre las escalas de temperaturas en grados centígrados y grados Fahrenheit. Los ficheros de este proyecto se pueden llamar Temperat.vbp y Temperat.frm.
En el centro del formulario aparece una barra de desplazamiento vertical que permite desplazarse con incrementos pequeños de 1º C y grandes de 10º C. Como es habitual, también puede cambiarse el valor arrastrando con el ratón el cursor de la barra. Los valores máximos y mínimo de la barra son 100º C y -100º C.
temperatura
A ambos lados de la barra aparecen dos cuadros de texto (color de fondo blanco) donde
aparecen los grados correspondientes a la barra en ambas escalas. Encima aparecen dos rótulos (labels) que indican la escala de temperaturas correspondiente. Completan la aplicación un botón Salir que termina la ejecución y un menú File con la única opción Exit, que termina asimismo la ejecución del programa.
La Tabla que indica los controles utilizados en este ejemplo junto con las propiedades y los valores correspondientes.
Controles y propiedades .
Por otra parte, el código con el que este programa responde a los eventos es el contenido en los siguientes procedimientos:
Option Explicit
Private Sub cmbSalir_Click()
Beep
End
End Sub
Private Sub mnuFileExit_Click()
End
End Sub
Private Sub vsbTemp_Change() txtCent.Text = vsbTemp.Value
txtFahr.Text = 32 + 1.8 * vsbTemp.Value End Sub
Sobre este tercer ejemplo se puede comentar lo siguiente:
Se ha utilizado la propiedad Value de la barra de desplazamiento, la cual da el valor actual de la misma con respecto a los límites inferior y superior, previamente establecidos (-100 y 100).
Mediante el procedimiento cmdSalir_Click, se cierra el programa, gracias a la instrucción End. El cometido de Beep no es otro que el de emitir un pitido a través del altavoz del ordenador, que indicará que en efecto se ha salido del programa.
La función mnuFileExit_Click() y activa desde el menú y termina la ejecución sin emitir ningún sonido.
Finalmente, la función vsbTemp_Change() se activa al cambiar el valor de la barra de desplazamiento; su efecto es modificar el valor de la propiedad text en las cajas de texto que muestran la temperatura en cada una de las dos escalas.