Manual Visual Basic - Introduccion a Visual Basic-ByReparaciondepc.cl
PROGRAMACIÓN EN VISUAL BASIC personalizado
-
Upload
jonathan-arriagada -
Category
Documents
-
view
335 -
download
1
Transcript of PROGRAMACIÓN EN VISUAL BASIC personalizado
Universidad Tecnológica de Chile Sede Valdivia
PROGRAMACIÓN EN VISUAL BASIC
Sintaxis General y Procedimientos de Evento:
En términos generales la sintaxis del lenguaje Visual Basic se reduce a :
OBJETO . propiedad = valor
y
OBJETO . método {argumentos}
Aspectos importantes de esta sintaxis son que se debe poner atención al
punto que separa el objeto de la propiedad o método y, al signo igual que
sigue sólo a la propiedad.
El valor, o mejor dicho el tipo de valor indicará el tipo de propiedad. (Si el
valor es entero entonces la propiedad es de tipo entero, si el valor es string
la propiedad es de tipo string etc.).
Note que el signo igual no se usa en los métodos. Para ellos se debe tener en
cuenta si necesitan de argumentos para funcionar correctamente. Por otro
lado, no todos los métodos necesitan de argumentos.
Argumentos
En el caso de los métodos son variables de entrada o valores que deben
conocerse previamente para que el método pueda ejecutarse correctamente.
La cantidad y el tipo de argumentos dependerá del método.
Página 1 de 31
Nuevamente, la práctica y el conocimiento de Visual Basic permitirán
discriminar de aquellos métodos que requieren argumentos de los que no los
necesitan.
Nota
Un argumento puede ser un valor de tipo entero, objeto, carácter, booleano,
etc.
Para poder entender el funcionamiento de un programa escrito en Visual
Basic se debe volver a la definición de Evento.
EventoAcción reconocida por un objeto. Estas acciones pueden ser producidas por otros objetos, el usuario y/o el Sistema Operativo. Dentro de la categoría otros objetos se encuentran la aplicación que posee el objeto que es capaz de reconocer acciones, así como también, objetos de otras aplicaciones.
No todos los objetos son capaces de reconocer todos los eventos. Por ejemplo, el objeto TextBox (cuadro de texto) es capaz de reconocer el evento de un Click del mouse sobre él. El objeto CommandButton también es capaz de hacerlo, pero el CommanButton no es capaz de reconocer el evento de cambio del texto escrito sobre él. El TextBox si lo puede hacer.
NotaVisual Basic provee herramientas para crear un nuevo CommandButton, que sea capaz de reconocer el cambio del texto escrito sobre él. Esto se verá más adelante ya que son materias que involucran el manejo de los Controles ActiveX.
Como ya se mencionó antes, Visual Basic es un lenguaje orientado a eventos (y no a objetos). De hecho, la programación en este lenguaje se hace en los eventos de los objetos, en los que se conocen como Procedimientos de Evento.
En el capítulo anterior a los Procedimientos de Evento se les llamó segmentos o bloques de código. Estos segmentos de código tenían eventos asociados. (Imagen N° 2, Capítulo 1).
Página 2 de 31
Procedimientos de Evento:
Sintaxis General
Private/Public Sub OBJETO _ EVENTO ( {argumentos} )<CODIGO>
End Sub
EjemploSupongamos que se desea crear un aplicación Visual Basic que reciba el nombre del usuario en un cuadro de texto y al presionar un botón tanto el botón como el cuadro de texto desaparezcan. Luego, el nombre del usuario debe aparecer en letras grandes en el Form.
SoluciónPrimero se deben poner en el Form los controles que se usarán. Usted ya sabe hacer eso. Ponga además una etiqueta (Label).
Luego, se debe dar a las propiedades de los controles los valores adecuados. La propiedad Visible del Label debe ser False. La propiedad Text del TextBox debe ser borrada (por defecto dice Text1, el nombre dado por Visual Basic al TextBox). La propiedad Caption del CommandButton debe decir Escriba su Nombre.
Ahora cuidado acá. . .aquí hay que poner atención :
Es necesario, dadas las exigencias de esta aplicación, escribir código Visual Basic.
Al hacer Doble Click con el mouse sobre el CommandButton se abre la Ventana Editora de Código. Esta ventana permite ver el contenido del Módulo de Código del Form que se encuentra asociado a todo Form. Es decir, cada Form posee uno.
Página 3 de 31
Imagen N° 7 : Vista de la Ventana Editora de Código. Al hacer dobleclick sobre el botón aparece la ventana mostrando el Procedimiento de Evento por defecto del botón.
Esta ventana muestra el Módulo de Código del Form1. Es en este módulo en donde se escribe la mayoría del código de un programa Visual Basic.Si se agregan más Form al proyecto, más módulos de código se agregarán.
NotaMás tarde se verán otros tipos de módulos de código. Los Módulos Estándar y los Módulos de Clase. Como avance, estos módulos hacen lo mismo, la diferencia es la forma en que lo hacen. El primero trabaja en base a, exclusivamente, código Visual
Página 4 de 31
Basic El segundo trabaja en base a los objetos definidos en él y que prestan alguna función específica.
En este módulo de código del Form van apareciendo los procedimientos de evento de cada objeto que se encuentre sobre el Form, según se hace doble click sobre ellos.Cuando se hizo doble click sobre el CommandButton apareció en el módulo del Form el procedimiento de evento click del Command1. (Command1 es el nombre dado por Visual Basic al CommandButton cuando fue puesto en el Form. Si se pusiera otro CommandButton, sin cambiar el nombre del primero, Visual Basic llamaría a este segundo CommandButton, Command2).
Luego, en la ventana editora de código del Form apareció :
Private Sub Command1 _ Click ( )
End Sub
En el espacio en blanco es donde se debe escribir código Visual Basic. Haga la comparación con la sintaxis general de un procedimiento de evento.
Volviendo al ejemplo. La idea es que al presionar el botón, tanto el textbox como el botón desaparezcan y el nombre del usuario, que había sido escrito en el textbox, aparezca escrito sobre el Form en letra grande.
El código a escribir debe ser más o menos el siguiente :
1 Text1 . Visible = False2 Command1 . Visible = False
3 Label1 . Top = 04 Label1 . Left = 0
5 Label1 . Caption = Text1 . Text
6 Label1 . Height = Form1 . Height7 Label1 . Width = Form1 . Width
8 Label1 . Alignment = 29 Label1 . Font . Size = 22
10 Label1 . Visible = True
Los números escritos para cada línea no pertenecen a Visual Basic, no los escriba en el código.
Las líneas 1 y 2 hacen que los objetos Text1 y Command1 no puedan ser vistos sobre el Form.
Página 5 de 31
Las líneas 3 y 4 ubican el Label1 en una coordenada precisa dentro del Form1. Esquina superior izquierda.
La línea 5 es una de las más importantes. Esta línea es una asignación (así como se hacen asignaciones en otros lenguajes, como por ejemplo el lenguaje C). Específicamente, se asigna a la propiedad Caption del Label1 el contenido actual de la propiedad Text del Text1. (En el momento en que se hace la asignación, es decir, cuando se presiona el botón, el contenido de la propiedad Text del Text1 debe ser el nombre del usuario).Si suponemos que ya se está ejecutando la aplicación, note que el Label1 aun está invisible a estas alturas de la ejecución de la aplicación.
Las líneas 6 y 7 son también asignaciones. Se asigna a las propiedades Height y Width del Label1 los respectivos valores guardados en las propiedades Height y Width del Form1. Es decir, se da al Label1 las mismas dimensiones del Form1.
La línea 8 permite dar alineación centrada al texto guardado en la propiedad Caption del Label1.
NotaPor si no lo ha notado aun, la propiedad Alignment y otras propiedades, tienen un número entero asociado a sus posibles valores. Más tarde se verá lo que se llaman Constantes Visual Basic que solucionan el pequeño inconveniente de recordar qué número es el que sirve en un momento determinado.
La línea 9 permite dimensionar el tamaño de las letras del texto escrito en la propiedad Caption del Label1.
NotaEsta notación parece romper la sintaxis general del lenguaje Visual Basic indicada al principio del capítulo, pero no es así. La propiedad Font es de tipo Objeto (si. . .Objeto también es un tipo de dato, como lo es Entero, Booleano, String, etc.). Por consiguiente, Font, como todo objeto también tiene sus propiedades. Size es entonces una propiedad de Font y Font es a su vez propiedad de Label1. La sintaxis sigue siendo válida.
La línea 10 permite mostrar finalmente el Label1 y su contenido en el Form1.
En el módulo de código del Form1 se debe ver lo siguiente :
Página 6 de 31
Imagen Nº8 : Vista del módulo de código del ejemplo.
NotaVea que todo el código está dentro del procedimiento de evento Click del Command1. Es decir, cuando el usuario presione el botón con el mouse, todo ese código se ejecutará. Y si el usuario no presiona el botón nada del código será ejecutado.
Por lo anterior es que se dice que Visual Basic es orientado a eventos. Todo depende de la ocurrencia de un evento, sea este el click sobre un botón, el cambio en el texto de un textbox, el cambio de dimensiones de un Form, etc.
Ya debe haber notado que Visual Basic proporciona algunas ayudas al programador. De hecho, al escribir el nombre del objeto y el punto aparecen opciones de propiedades y métodos pertenecientes a ese objeto.
Página 7 de 31
Imagen Nº 9 : Listado de opciones de propiedades y métodos de un objeto, como ayuda de Visual Basic. (en este caso, de un label llamado label1).
Propiedad Name (NOMBRE) de objetos:
Cómo se había mencionado, la propiedad Nombre (o Name) de un objeto juega un papel muy importante dentro de la programación Visual Basic. Tan importante es, que el dar un nombre determinado a un objeto se considera un muy buen hábito de programación.
En realidad, lo anterior no sólo es válido en Visual Basic.
Si bien es cierto que Visual Basic da un nombre a todos los objetos que se ponen en un Form, esto lo hace de forma automática. En el caso de TextBox, los llama Text1, Text2, Text3, etc. Para Label, los llama Label1, Label2, etc.
Si bien este proceso es bastante cómodo pues permite desligarse de la obligación de establecer esta propiedad de los objetos, puede convertirse en un inconveniente a mediano y largo plazo.
EjemploSuponga que implementa un Form con 15 Label, 25 TextBox, 5 CommandButton y 3 Image (Image es un control que ofrece Visual Basic, así como un TextBox o un Label, pero para el manejo de imágenes). En general, suponga un Form con muchos controles.
Cuando ya ha escrito el código respectivo de la mayoría de estos controles suponga que por algún motivo debe dejar este proyecto de lado, por ejemplo, por otro que en ese momento es más urgente (cosa no muy alejada de la realidad de un desarrollador).
Luego de un tiempo (que podrían ser semanas o meses) retoma su proyecto. Usted mismo se preguntará ¿Qué hace el text15? ¿Qué hace el Command3? ¿Qué texto tiene el Label8?
Por esto se acostumbra dar un nombre a todos los controles que se usan en un Form, incluso se da un nombre al mismo Form o Forms de la aplicación. Aun más, existe un listado de prefijos que, si bien no es un acuerdo mundial sobre el tema, es una opción bastante buena y útil.
Página 8 de 31
De aquí en adelante (y hasta el final del curso) se hará uso de los prefijos y se incentivará su utilización así como el hábito de dar un nombre descriptivo a los objetos según su uso o función dentro de la aplicación Visual Basic. Lista de Prefijos
OBJETO PREFIJO EJEMPLOForm frm frmMenuTextBox txt txtApellidoCommandButton cmd cmdGuardarImage img imgFoto1ComboBox cbo cboAreasListBox lst lstMunicipalidadesShape shp shpCirculoOptionButton opt optArea1CheckBox chk chkArea1Label lbl lblTitulo
A medida que se avance en el curso irán apareciendo más prefijos, pero los mostrados son los que con mayor frecuencia se usan en aplicaciones Visual Basic.
Variables y Constantes: La definición de variable siempre trae algún conflicto al tratar de explicar un concepto que, en realidad se explica por sí mismo. O por lo menos eso parece.o:p>
Variable es una porción de memoria que se ha destinado para guardar datos que van a cambiar dentro de la ejecución de una aplicación.
La variable que se maneja mentalmente y en el código de un lenguaje de programación es en realidad la misma, sólo que esta “variable mental” es simbólica. De ahí que el intento de definir algo simbólico no sea tan fácil. En todo caso, la definición dada representa perfectamente lo que se debe entender por variable.
Visual Basic, como un lenguaje de programación, necesita que las variables a usar en una aplicación sean declaradas.
Declaración de Variables:
En Visual Basic las variables pueden ser declaradas de dos maneras, como Públicas (Public) o Privadas (Private). Esta declaración tiene asociado otro concepto que es muy importante, el alcance (Scope).
El alcance (o Scope) de una variable indica si dicha variable es visible sólo en un Módulo de Código de un Form o es visible en toda la aplicación. El que sea visible
Página 9 de 31
significa que puede ser usada en un entorno determinado. Es decir, sólo será posible de usar en ese entorno, donde es visible.
Recuerde que un Módulo de Código es un módulo que está asociado a todo Form, es decir, todo Form posee uno.La importancia de un Módulo de Código radica en que es en este Módulo de Código donde se escribe gran parte del código del programa Visual Basic.
Sintaxis
Private <nombre de variable> As <tipo de variable>
Public <nombre de variable> As <tipo de variable>
EjemploDeclarar la variable CONTADOR como una variable de tipo entero, pero sólo visible para el Form.
SoluciónPrivate CONTADOR As Integer
Imagen N° 13 : Vista de la Declaración de una variable. La variable CONTADOR es declarada sólo para el Módulo de Código del Form como una variable de tipo entero.
Algunas consideraciones:
Ya que se pidió que la declaración de la variable fuera sólo para el Form, la variable se declara en la parte superior del Módulo de Código. De hecho esta parte del Módulo de código del Form se llama Sección de Declaraciones Generales. Nótese que una línea separa esta sección del resto del módulo
Página 10 de 31
Nótese también que el ListBox de Objetos indica (General) y el ListBox de Eventos indica (Declaraciones)..NotaLa línea de separación entre la Sección de Declaraciones Generales y el resto del Módulo de Código podría no aparecer. Eso depende de algunas opciones de configuración del ambiente de desarrollo de Visual Basic.
En realidad Visual Basic no obliga a hacer una declaración explícita de las variables que se usan en un programa. Siempre es aconsejable declarar las variables que se usen, por una cuestión de orden y buen hábito de programación.
Si no se declaran las variables, Visual Basic asume que son de tipo Variant. Variant es un tipo de dato general, aun más general que el tipo de dato Object. Eso significa que la porción de memoria asignada a las variables no declaradas es mucho mayor, ya que eventualmente se podría asignar a estas variables elementos tan grandes como objetos o tan pequeños como enteros simples. También se puede declara una variable como Variant en forma explícita.
EjemploDim strNombre As Variant
Lo mismo sería si la variable strNombre fuera usada sin declararla. Dada la falta de la declaración, Visual Basic asumiría que es de tipo Variant.
La verdad es que es atrayente no declarar las variables ya que Visual Basic lo hará por uno, se puede pensar que es un problema menos, pero no es así.
Primero, se usan más recursos de los necesarios.
Segundo, se dificulta la administración del contenido de las variables (ya que se puede guardar cualquier tipo de valor).
Tercero, se aumenta la posibilidad de errores al asignar un valor de un tipo de dato a una variable de otro tipo de dato.
Desde la versión 4 de Visual Basic, es posible asignar objetos a variables.
EjemploPublic X As FormSet X = Form1
Página 11 de 31
Primero se hizo la declaración de la variable X como un objeto de tipo Form y luego se asigna a esta variable el Form1.De aquí en adelante para referirse al Form1 se hará a través de la variable X.
EjemploX . BackColor = vbRed
Si una variable debe ser declarada a nivel de Módulo o nivel de formulario, debe ser declarada en este lugar específicamente. En la Sección de Declaraciones Generales.
Al ser declarada como Private, sólo es visible desde este Módulo de Código. No puede ser usada desde otro Módulo de Código perteneciente a otro Form.Por otro lado, el código escrito en los procedimientos de evento de este módulo pueden usar esta variable como si fuera propia.
Imagen N° 14 : Alcance de Variable definida a nivel de Form. La variable X es de tipo Double y es definida en la Sección de Declaraciones Generales del Form como Private, es decir, sólo es posible de usar por los Procedimientos de Evento definidos dentro del Módulo de Código del Form. No es necesario volver a definir la variable dentro de los Procedimientos de Evento, estos la usan como si fuera propia.
Para hacer posible su uso desde otro Form debe ser declarada como Public. De hecho esto haría que esta variable sea posible de usar desde cualquier otro Form perteneciente al proyecto (o aplicación).
Ejemplo
Página 12 de 31
Declarar la variable X como una variable de tipo String. Esta variable debe ser posible de usar en toda la aplicación.
SoluciónPublic X As String
Imagen N° 15 : Declaración de una variable Pública a nivel de Form. Desde un Módulo de Código de otro Form (Form2) es posible usar la variable del Form1, pero es necesario indicar el origen de la variable. Un ejemplo de esto se muestra en el evento Click de un botón ubicado en el Form2. Más consideraciones
Ya habrá notado que luego de escribir el operador As y dejar un espacio, Visual Basic provee un pequeño listado de opciones de tipos de dato. Esta es otra opción de ayuda del ambiente de desarrollo de Visual Basic. Más tarde se verá donde es posible modificar estas, y otras opciones del ambiente de desarrollo.
EjemploDeclarar una variable. Esta variable sólo debe existir en un Procedimiento de Evento. La variable debe ser de tipo entero.
SoluciónDim intCuenta As Integer
Página 13 de 31
Algunas consideraciones:
Sí. Se había indicado que existían dos formas de declarar una variable (Public y Private), pero, a modo de permitir la compatibilidad de versiones de Visual Basic (Visual Basic 6 con las anteriores) la palabra clave Dim es usada dentro de los procedimientos de evento en vez de usar Private.
De hecho, no es posible usar Private (ni Public) para declarar variables dentro de un procedimiento de evento. Se genera un error aun antes de la ejecución de la aplicación.
Las variables declaradas dentro de un procedimiento de evento se llaman Variables Locales. Por lo tanto, para definir variables locales o variables dentro de un Procedimiento de Evento se debe usar la palabra clave Dim.
Nótese que al nombre de la variable se le ha agregado un prefijo para indicar el tipo de variable (en este caso entero, int). Al lado del tipo de dato, en la declaración de la variable, parece estar de más, pero piense en el uso de esta variable dentro del código. Si existiera mucho código escrito no sería tan fácil determinar rápidamente el tipo de la variable si no tuviera este prefijo tan descriptivo.
De aquí en adelante se usará la notación de prefijos tanto para las variables como para los objetos.
EjemploAsigne a la variable intCuenta el valor guardado en la propiedad Text de un TextBox llamado txtEdad.
SoluciónintCuenta = txtEdad . Text
Algunas consideraciones:
Se está asignando un dato de tipo string a una variable de tipo entero. Esto no representa problema. Visual Basic hace uso de la Conversión Automática. Pero hay que tener esto en cuenta y tomar las precauciones del caso.
EjemploDeclare la variable strNombre como de tipo String pero sólo para el Form donde será usada y haga que este valor string aparezca en un label llamado lblName.
SoluciónPrimero hay que declarar la variable a nivel de Form. En la Seción de Declaraciones Generales se debe hacer la declaración:
Página 14 de 31
Dim strNombre As String
Luego, en algún Procedimiento de Evento: lblName . Caption = strNombre
Algunas consideraciones:
En la Sección de Declaraciones Generales de un Módulo es posible usar tanto la palabra clave Dim como Private. En este caso, y sólo en este caso, es indiferente su uso.
Si la variable perteneciera sólo a un procedimiento de evento, obligatoriamente se debería usar Dim.
La asignación de la variable a la propiedad Caption de la etiqueta (o Label) se supone que fue hecha en algún procedimiento de evento.
A decir verdad no es posible escribir código Visual Basic fuera de un procedimiento de evento.Posteriormente, se verán otros tipos de procedimiento. Pero, fuera de estos y de la Sección de Declaraciones Generales, no hay otro lugar donde sea aceptable escribir código Visual Basic.
EjemploDeclarar una variable para contar las veces que un usuario presiona un botón.
SoluciónDebe ser más o menos claro que la variable debe ser declarada dentro de un Procedimiento de Evento, específicamente en el evento Click de un botón. Es decir, la variable debe ser una Variable Local.
Luego, según las indicaciones anteriores el código debe ser el siguiente:
Private Sub cmdBoton _ Click ( )Dim intContador as Integer
intContador=intContador + 1Print intContador
End Sub
El problema es que cada vez que el usuario presione el botón se ejecutará el código dentro del procedimiento de evento, es decir, cada vez que se presione el botón la variable se volverá a definir (o declarar) lo que hará que cada vez retome su valor inicial, el valor cero ( 0 ).
Página 15 de 31
Para resolver este problema se usa otra palabra clave Static en la definición de variables. Al definir la variable con la palabra clave Static el código debe quedar así:
Private Sub cmdBoton _ Click ( )Static intContador as Integer
intContador = intContador + 1
Print intContadorEnd Sub
El efecto de esta palabra clave es retener el valor de la variable. Ahora si, cada vez que el usuario presione el botón el valor de la variable será retenido y resguardado hasta el momento que se use su valor.
Justamente este tipo de declaraciones se usa cuando se desean definir variables usadas como contador.
Constantes
La definición de una constante parece un poco más sencilla luego de haber establecido la de una variable.
Una Constante es una porción de memoria destinada para guardar datos que no van sufrir cambios durante la ejecución de una aplicación. Es decir, al momento de ejecutar la aplicación estos valores son fijados y no son cambiados.
Sintaxis
Private Const <variable> As <tipo> = <valor>
Algunas consideraciones:
Las constantes sólo pueden ser declaradas como Private en un Módulo de Código de un Form y sólo en la Sección de Declaraciones Generales de un Módulo de Código de un Form.
Como convenio se suelen escribir en mayúsculas.
Para declara una constante que pueda ser usada en toda la aplicación debería ser declarada como Public, pero en otro tipo de Módulo de Cödigo. Este se verá más adelante en el curso.
Ejemplo
Página 16 de 31
Declarar una constante strEmpresa. Esta sólo será usada en los procedimientos de evento de un Form.
SoluciónPrivate Const STREMPRESA As String = “LADECO”
EjemploUse la constante del ejemplo anterior para asignar a un TextBox el nombre de la Línea Aérea guardada en la constante.
SolucióntxtEmpresa = STREMPRESA
Algunas consideraciones:
Una vez definida la constante no es necesario volver a hacerlo. La constante puede ser usada como un valor más.
Instrucciones Condicionales y de Iteración: Estructuras Condicionales (If . . . Then . . .End if)o:p>
La sintaxis de una estuctura condicional en Visual Basic no es muy diferente de otros lenguajes. A decir verdad, el concepto es el mismo, sólo la manera de escribirlo es diferente.
Sintaxis:
If <Condicion> Then<código a ejecutar si la condición es verdadera>
Else<código a ejecutar si la condición es falsa>
End if
La condición puede ser de tipo Booleana o matemática (que es casi lo mismo).
Por ejemplo, la expresión 3 < 4 (3 menor que 4) es Verdadera. La expresión 5 = 8 es Falsa.
EjemploImplemente una aplicación Visual Basic que permita determinar si la clave ingresada a un TextBox es la clave que corresponde. Luego de escribir la clave, el usuario debe presionar un botón. Si la clave es la correcta debe aparecer “Bienvenido” en el TextBox. Si no es la correcta, debe aparecer “No Bienvenido”.
Página 17 de 31
SoluciónComo siempre, lo primero es la interfaz de usuario. Ponga un TextBox y un botón. Cambie las propiedades de los controles para hacer una mejor interfaz de usuario.
Luego de construida la interfaz de usuario, es obvio donde se debe escribir código…¿o no?...sí, debe ser en el evento Click del botón (según las especificaciones del problema).
El código a escribir en este procedimiento de evento debe ser :
Private Sub cmdBoton _ Click ( )Dim strClave as StringstrClave = txtClave . Text
If strClave = “CLAVE” ThentxtClave = “Bienvenido”
ElsetxtClave = “No Bienvenido”
End ifEnd Sub
Algunas consideraciones:
A modo de simplificar el ejercicio se ha considerado que la clave a verificar es el string “CLAVE”. Por supuesto, esta no es la manera de usar las claves de acceso a un sistema.
NUNCA ponga la clave del sistema en el código.
Por lo general la clave está en una Base de Datos. Pero el acceso a Base de Datos viene más tarde en el curso.
Parece algo extraño que se haga el traspaso desde el TextBox a la variable y luego se use la variable para verificar la clave. ¿Por qué no hacerlo directamente? Es decir:
If txtClave = “CLAVE” ThentxtClave = “Bienvenido”
ElsetxtClave = “No Bienvenido”
End if
La cuestión es que esto implica un paso extra antes de hacer la verificación de clave. Visual Basic debe ratificar si el TextBox existe y luego ver el contenido de la propiedad Text del TextBox para finalmente hacer la verificación de clave. Si este código se repite muchas veces podría afectar la rapidez con que la aplicación verifica la clave (que es precisamente su función y utilidad). Claro, se habla de repetir el proceso muchas veces, tanto como para hacer que el funcionamiento de la aplicación se vea comprometido.
Página 18 de 31
Por lo anterior, el uso de variables es mucho más rápido que usar las propiedades de un objeto.
Otras formas de las Estructuras Condicionales:
Algunas formas derivadas de estas estructuras se adaptan mejor a las exigencias de algunas aplicaciones. A fin de cuentas, lo importante es usar las mejores herramientas en cada caso puntual. Salvo que explícitamente se pida el uso de una herramienta en particular o las condiciones dadas de un problema no permitan una libre elección. Por lo general, lo segundo es lo habitual.
Estructura If . . .Then . . . ElseIf . . . End if
If <condición> Then<código a ejecutar si condición es verdadera>
ElseIf <condición2> Then<código a ejecutar si condición2 es verdadera>
Else<código a ejecutar si las condiciones anteriores son falsas>
End If
Ejemplo
Private Sub cmdBoton _ Click ( )Dim strClave as StringstrClave = txtClave . TextIf strClave = “CLAVE” Then
txtClave = “Bienvenido”ElseIf strClave = ”clave” Then
txtClave = “Debe escribir con mayúsculas”ElseIf strClave = “Clave” Then
txtClave = “Todos los caracteres deben ser mayúsculas”Else
txtClave = “No es la Clave Correcta”End If
End Sub
En general, si se tiene varias condiciones se debería usar esta estructura condicional. Pero, sólo si son pocas. Si las condiciones son muchas (más de tres) se debe usar otro tipo de estructura condicional.
Otra alternativa a la estructura condicional If . . . Then . . . End If es la estructura Select Case. Esta estructura se usa cuando hay muchas opciones diferentes de condición.
Página 19 de 31
Estructura Select Case
Select Case <expresión de prueba>Case <expresión1>
<código a ejecutar si la expresión1 es igual a la expresión de prueba>Case <expresión2>
<código a ejecutar si la expresión2 es igual a la expresión de prueba>Case <expresión3>
<código a ejecutar si la expresión3 es igual a la expresión de prueba>. . .Case Else <código a ejecutar si ninguna expresión anterior es igual a la expresión de prueba>End SelectEjemploEn un Form llamado frmRegiones se ha ubicado dos label, llamados lblTexto y lblCiudad, y un TextBox, llamado txtOpcion. En el label lblTexto se indica al usuario que debe escribir en el TextBox el número correspondiente de la región, dado el nombre de la capital regional que aparece en el label lblCiudad.
Imagen N° 16 : Posible vista inicial del ejercicio. Se debe dar los valores a las propiedades para conformar la interfaz de usuario de la aplicación.
SoluciónUna vez construida la interfaz de usuario, la pregunta es en qué evento se debe escribir el código.
Para simplificar, una vez que el usuario escriba la opción de número de región, presionar la tecla Enter es una buena opción para iniciar el proceso de verificación de la región.
Luego, el evento debe pertenecer al textBox, ya que el cursor del mouse estará en el TextBox cuando la tecla Enter sea presionada.
Página 20 de 31
En Visual Basic, que el cursor del mouse esté en un objeto u otro se describe como tener el foco. Por lo tanto, mientras se escribe en el TextBox txtOpcion, este objeto tiene el foco.
Entonces, el evento a usar se llama KeyPress y debe pertenecer al TextBox txtOpcion. Este evento se inicia cada vez que una tecla es presionada, siempre y cuando el cursor del mouse este en el TextBox.
El Procedimiento de Evento de este evento es:
Private Sub txtOpcion_KeyPress(KeyAscii As Integer)
End Sub
Nótese que este evento posee un argumento llamado KeyAscii y es de tipo entero. Este argumento es absolutamente necesario para resolver el problema de discriminar entre las teclas presionadas por el usuario.
Es decir, la cuestión es cómo responder a la siguiente pregunta: ¿Cómo se va a saber si el usuario presiona la tecla Enter?
Toda tecla alfanumérica (números y letras) y algunas otras teclas como la Enter poseen un código que las identifica. Este código es el Código Ascii.
Luego, al presionar una tecla, KeyAscii contendrá el Código Ascii de la tecla presionada.
El código Ascii de la tecla Enter es 13. Así que usando un simple bloque If se resuelve ese problema.
El código debe ser:
Private Sub txtOpcion_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
End IfEnd Sub
Ahora falta resolver el problema de las ciudades, regiones y opciones.
El código debería ser:
intOpcion = txtOpcionSelect case intOpcionCase 1
lblCiudad . Caption = “Anda lejos”Case 2
lblCiudad . Caption = “Anda lejos”
Página 21 de 31
Case 3lblCiudad . Caption = “Anda lejos”
Case 4lblCiudad . Caption = “Se acerca”
Case 5lblCiudad . Caption = “Se acerca”
Case 6lblCiudad . Caption = “Se acerca”
Case 7lblCiudad . Caption = “Casi llega”
Case 8lblCiudad . Caption = “Correcto”
Case 9lblCiudad . Caption = “Se pasó”
Case 10lblCiudad . Caption = “Se aleja”
Case 11lblCiudad . Caption = “Se aleja”
Case 12lblCiudad . Caption = “Anda lejos”
Case 13lblCiudad . Caption = “Anda lejos”
End Select
Con este código se resuelve el problema. Pero ya que existen opciones que se repiten es posible deshacerse de algunas líneas que, en realidad están de más.
El código debería ser:
intOpcion = txtOpcionSelect case intOpcionCase 1, 2, 3, 12, 13
lblTexto . Caption = “Anda lejos”Case 4, 5, 6, 10, 11
lblTexto . Caption = “Anda cerca”Case 7
lblTexto . Caption = “Casi llega”Case 8
lblTexto . Caption = “Correcto”Case 9
lblTexto . Caption = “Se pasó”End Select
Aun más, si el usuario escribe un número que no está entre 1 y 13 sería bueno darle un mensaje correspondiente.
Agregando lo anterior, el código final debe ser:
Página 22 de 31
Private Sub txtOpcion_KeyPress(KeyAscii As Integer)If KeyAscii = 13 Then
intOpcion = txtOpcionSelect case intOpcionCase 1, 2, 3, 12, 13
lblTexto . Caption = “Anda lejos”Case 4, 5, 6, 10, 11
lblTexto . Caption = “Anda cerca”Case 7
lblTexto . Caption = “Casi llega”Case 8
lblTexto . Caption = “Correcto”Case 9
lblTexto . Caption = “Se pasó”Case Else
lblTexto . Caption = “Sólo existen 13 regiones”End Select
End IfEnd Sub
Sólo el tratar de imaginar el código necesario usando sólo la estructura If … Then … End if hace ver las bondades de la estructura Select Case.
Tenga en mente el evento KeyPress, es un evento muy útil y muy usado en muchas aplicaciones Visual Basic, sobre todo cuando se desea que la aplicación pueda discriminar entre teclas presionadas.
Estructuras de Control de Repeticiones
Basta con pensar en que se desea repetir una operación o un proceso una cierta cantidad de veces para ver que es necesaria alguna estructura de repetición dentro del lenguaje. Visual Basic posee Estructuras de Control de Repeticiones así como existen en otros lenguajes.
En Visual Basic existen esencialmente dos estructuras de control de repeticiones. La estructura Do . . . Loop y la estructura For . . . Next.
Estructura Do … Loop
Esta estructura se divide en cuatro opciones para el programador:
a) Do … Loop Whileb) Do … Loop Untilc) Do While … Loopd) Do Until … Loop
Página 23 de 31
En realidad estas estructuras son muy similares a las de otros lenguajes ya conocidos por el lector.
Las estructuras Do … Loop While y Do While … st1:place>Loop funcionan de manera similar.
Do<código que se repetirá mientras la condición sea verdadera>
Loop While <condición>
Nótese que la primera vez el código se ejecutará, independiente de la condición, de ahí en adelante la repetición dependerá exclusivamente de la condición.
Do While <condición><código que se repetirá mientras la condición sea verdadera>
Loop
Nótese que el código se repetirá mientras la condición sea verdadera, incluyendo la primera vez.
Las otras estructuras tienen una sutil pero importante diferencia.
Do<código que se repetirá hasta que la condición sea verdadera>
Loop Until <condición>
Igual que antes, la primera vez no es dependiente de la condición.
Do Until <condición><código que se repetirá hasta que la condición sea verdadera>
Loop
Se sugiere revisar estas estructuras con la palabra clave Until y asegurarse que se ha comprendido su funcionamiento.
Ejemplo
En la Sección de Declaraciones GeneralesDim x As BooleanDim y As Integer
En el evento Click de un botónDo While x = True
<código que puede cambiar el valor de x a False (Falso)>
Página 24 de 31
y = y +1LoopPrint “y = ” & y
Algunas consideraciones:
¿Cuántas veces se repitió el incremento de x?...Respuesta: depende de si x cambió su valor a True (Verdadero).
Ejemplo
En la Sección de Declaraciones GeneralesDim x As Integer
En el evento Click de un botónDo
x = x +1Loop While x < 5Print “x = ” & x
¿Ahora cuántas veces se repitió el incremento de x?...Respuesta: 4 veces.
El comando Print permite imprimir en el Form lo que se indique. A través del uso de los caracteres de concatenación de string (recuerde que tanto el & como el carácter + son caracteres de concatenación) es posible armar frases completas e imprimir una serie de valores de variables de una aplicación.
Estructura For … Next
Esta estructura de repetición se usa cuando, a diferencia de los casos anteriores, se sabe la cantidad de repeticiones (o iteraciones) que es necesario realizar.En las estructuras anteriores la cantidad de repeticiones dependía de una condición, pero no se podía especificar cuantas veces se haría la repetición.
For <contador> = <inicio> To <final><código que se repetirá mientras no se llegue al final>
Next <contador>
Ejemplo
For i = 1 To 10Print i
Página 25 de 31
Next i
Algunas consideraciones:
Este código puede ser puesto en el evento Click de un botón. La variable i puede ser declarada dentro del procedimiento de evento o en la Sección de Declaraciones Generales del Form.
El comando Print imprimirá los valores de la variable i en el Form.
¿Cuál es valor de i al terminar la repetición?...Respuesta: 11. Verifíquelo.
Tenga en cuenta que el contador de una repetición For…Next siempre terminará con uno más que el valor indicado como final.
Hay una excepción a lo indicado anteriormente. Puede darse el caso en que bajo ciertas circunstancias sea necesario salir de la repetición (o quebrar el ciclo). Para hacer esto se usa el comando Exit For.
Ejemplo
For i = 1 To 10If i = 5 Then
Exit ForElse
Print iEnd if
Next i
Algunas consideraciones:
Cuando i tenga el valor 5 el ciclo será quebrado.
¿Hasta dónde llegará la cuenta en el Form?…Respuesta: Se imprimió hasta 4.Verifíquelo.
Las estructuras de repetición anteriormente vistas también poseen su comando para quebrar el ciclo. En estos casos el comando es Exit Loop.
Página 26 de 31
Ejemplo
En la Sección de Declaraciones Generales
Dim x As BooleanDim y As Integer
En el evento Click de un botón
Do While x = True<código que puede cambiar el valor de x a False (Falso)>If x = False Then
y = 0Exit Loop
End Ify = y +1
LoopPrint “y = ” & y
Si en un momento determinado x cambia de Verdadero a Falso, la condición del bloque If será verdadera y el ciclo se quebrará. Antes de esto, a la variable y se le asignará el valor 0 (cero).
Cuadros de Mensaje y Cuadros de Entrada de Datos:
Antes de iniciar los ejercicios serán presentadas dos funciones de Visual Basic que se encuentran entre las más ampliamente usadas en cualquier aplicación Visual Basic.
Función MsgBox
Esta función permite mostrar al usuario avisos o mensajes en pantalla. Es posible supeditar estos mensajes a ciertas circunstancias o valores determinados de variables.
Sintaxis
MsgBox Prompt, Button, Title
Algunas consideraciones:
Página 27 de 31
Prompt corresponde al mensaje que el usuario verá en pantalla.
Button indica tanto la imagen como el botón que aparecerá en el Cuadro de Mensaje (o MsgBox). En el ejemplo, sólo se indica una imagen, la de información. Al no indicar un botón en particular Visual basic asume que debe aparecer sólo el botón por defecto, el de Aceptar (u OK).
Title corresponde al string que aparece en la barra de título del Cuadro de Mensaje (o MsgBox)
Ejemplo
Imagen N° 17 : Uso de la función MsgBox dentro de un trozo de código.
Si se hace una revisión rápida de los ejemplos expuestos con anterioridad se podrá ver que cada vez que se quería dar un mensaje al usuario se usaban Label o TextBox, incluso en algunas ocasiones hasta CommandButton. Si bien no es un error hacer esto, lo mejor, dado que fueron diseñados para eso, es usar unos MsgBox.Función InputBox
Esta función de Visual Basic permite poner en pantalla un cuadro de mensaje con un TextBox incluido. Así se da la ocasión al usuario para ingresar valores a la aplicación.
Sintaxis
X = InputBox ( Prompt, Title, Default, XPos, YPos )
Prompt es el mensaje que acompaña al TextBox y que, generalmente, da las indicaciones sobre el valor que se debe poner en el TextBox.
Title es el string de texto que aparece en la Barra de Título del Cuadro de Entrada de Datos.
Página 28 de 31
Default es el valor que aparece en el TextBox para que el usuario tenga algún conocimiento sobre el valor que debe poner en el TextBox (formato, rango, tipo, etc.)
XPos e YPos indican la posición que se desea para este Cuadro de Entrada de Datos
Ejemplo
En un Procedimiento de Evento Click de un botón:
variable = InputBox (“Hola”, “Titulo del InputBox”, “Valorpordefecto”)
Algunas consideraciones:
El único argumento obligatorio es el Prompt (el mensaje)
Comparando con el MsgBox se verá que en este caso se deben usar los paréntesis y además se hace uso de una variable. Esto es obligatorio.
Ya que el InputBox recibirá un valor de parte del usuario, este valor debe ser guardado en algún lugar durante la ejecución de la aplicación. De ahí el uso de la variable.Los paréntesis son, sencillamente, por reglas del lenguaje.
Imagen N° 18 : Ejemplo de InputBox. El Prompt es el string “Hola”, el Title es el string “Titulo del InputBox” y Default es el string “Valorpordefecto”.
Lo usual es que cuando se necesita que el usuario ingrese un valor a la aplicación se use el InputBox. Y cuando se deba dar un aviso al usuario se use en MsgBox.
En realidad, el MsgBox también puede capturar decisiones del usuario, y dadas éstas, la aplicación seguirá un curso de acción según su programación. Para esto la sintaxis del MsgBox cambia un poco y se asemeja a la de un InputBox.
Sintaxis
W = MsgBox ( Prompt, Button, Title)
Página 29 de 31
Aquí el argumento Button juega un papel muy importante. Las opciones posibles para este argumento son variadas:
Imagen N° 19 : Opciones para el argumento de la función MsgBox usada para rescatar una opción del usuario.
Luego, al seleccionar una opción, por ejemplo la opción vbYesNo, tendrá el efecto que el MsgBox mostrará dos botones, uno con un Yes (Si) y otro con un No.
La variable, que en este ejemplo se llama W, guardará la elección que el usuario haga entre estas dos opciones.
EjemploPoner un botón en un Form. Al presionar este botón se debe consultar al usuario si desea continuar con la aplicación o si desea terminar la ejecución.
SoluciónLuego de hacer la interfaz de usuario, el evento click del botón debe alojar el siguiente código Visual Basic.
W = MsgBox ( “¿Desea terminar la aplicación?”, vbYesNo, “Consulta” )If W = vbYes Then
EndEnd If
NotaAparece vbYes en el código, que es lo que se conoce en términos generales como Constante Visual Basic. También son constantes Visual Basic las opciones vbNo, vbCancel, etc. Cada una de las constantes Visual Basic tiene un valor numérico asociado.
En la ayuda de Visual Basic que viene con el MSDN puede encontrarse un completo listado de las constantes Visual Basic para ámbitos diferentes.
Página 30 de 31
Su importancia se manifiesta cuando no es posible recordar el valor númerico asociado a una constante Visual Basic específica. A medida que sea necesario para el desarrollo del curso se irán mostrando más opciones para este importante elemento del lenguaje.
El tema del texto.
Que tiene ejemplos y soluciones.
Las imágenes.
Página 31 de 31
NOMBRE JONATTAN ALEJANDRO ARRIAGADA IMIGO
CARRERA INGENIERIA EN INFORMÁTICA