jueves, 29 de septiembre de 2016
viernes, 23 de septiembre de 2016
visual basic
Mas actividades en Visual Basic
La aplicación más simple
En primer lugar, construiremos una
aplicación en Visual Basic muy simple, que permita introducir un número y
muestre el doble de ese número cuando hagamos clic en un botón. Primero, crea
una carpeta (que se llame por ejemplo prueba1)
en la que ubicaremos todos los ficheros que se generen en esta práctica. Pon después
en marcha el Visual Basic y pídele que cree un proyecto de tipo EXE estándar.
Entonces aparece la siguiente imagen.
En la imagen podemos identificar 4 zonas
principales. En la zona 1 vemos los
elementos que tiene nuestro proyecto. Inicialmente, solo tenemos el objeto Form1. Se trata de un formulario (un
objeto básico en Visual Basic). El formulario podemos verlo en la zona 2. En la zona 3 podemos ver las propiedades del formulario. En concreto, una
de las propiedades es Caption (la
que aparece señalada en azul). Esa propiedad corresponde al nombre que
aparecerá en el formulario, en la banda superior azul (ver zona 2). Finalmente, en la zona
4 se muestran diversos objetos que pueden añadirse al formulario.
Las propiedades del formulario pueden cambiarse manipulando
directamente la zona 3. Prueba, por
ejemplo, a cambiar la propiedad Caption,
y la propiedad BackColor, y observa
los cambios que se producen en el aspecto del formulario.
Un objeto de Visual Basic (por
ejemplo, el formulario) no sólo tiene asociadas unas propiedades, sino unas
acciones que se llevan a cabo en determinadas circunstancias (eventos). Si
hacemos doble clic sobre el formulario aparecerá una ventana en la que podemos
escribir el código correspondiente a las acciones que queremos que se lleven a
cabo en función del evento que se produzca. Esa ventana es como la mostrada en
la figura.
Vemos un procedimiento vacío que se llama Form_Load (). El
código de este procedimiento se ejecutará cada vez que se active el formulario.
En este caso, al ser el formulario principal del proyecto, se activará
automáticamente al iniciar la ejecución de la aplicación. Añade el siguiente
código al procedimiento:
caption
= “mi formulario”
Con esto, al ejecutar la aplicación, automáticamente cambiará el
nombre del formulario. Para ejecutar la aplicación, basta clicar en el botón
con el triángulo azul que hay en la barra superior de herramientas (como el
botón play de los equipos de música).
Para parar la ejecución hay que clicar en el botón con el cuadrado azul.
¡Enhorabuena! Ya tienes tu primera aplicación en marcha. Sálvala
usando la opción Archivo->Guardar
proyecto. El sistema te mostrará el típico navegador de carpetas. Localiza
la que habías creado para esta práctica (la carpeta prueba1) y salva en ella los ficheros del proyecto. Comprueba que
se han salvado dos ficheros, uno correspondiente al proyecto y otro
correspondiente al único formulario del proyecto.
Además del evento Form_Load (activar el formulario) hay otros
eventos que pueden producirse. Desplega la lista que hay en la parte superior
derecha de la ventana del código (en la que aparece inicialmente la palabra Load), y selecciona en esa lista la
palabra Click. Aparece en la ventana
de código el procedimiento vacío Form_Click() en el que
podemos escribir lo que queremos hacer cuando se haga clic sobre el formulario.
Escribe el siguiente código para cambiar el color del formulario al hacer clic.
BackColor =
&HFF
Ejecuta la aplicación y comprueba que funciona.
Selecciona ahora el evento KeyDown.
En el procedimiento vacío que aparece escribiremos la acción que queremos
realizar cuando se pulse una tecla. El procedimiento tiene dos parámetros que
nos permiten consultar la tecla que ha sido pulsada. Añade el código:
Caption =
KeyCode
Si ejecutamos la aplicación veremos que al pulsar una tecla, en el
nombre del formulario aparece el código numérico de la tecla pulsada (que se ha
recibido automáticamente como parámetro del procedimiento Form_KeyDown).
Vamos ahora a añadir diferentes objetos al formulario. Primero
añadimos un objeto de tipo Label,
que seleccionaremos en la zona 4,
marcando después sobre la imagen del formulario el sitio en el que queremos
colocar ese objeto. En la figura se ve cómo queda la pantalla.
Aparece un objeto nuevo de tipo Label,
que simplemente permite etiquetar una zona del formulario. En la zona 3 aparecen ahora las propiedades
del objeto. Modifica la propiedad adecuada para que el texto que aparece en la
etiqueta sea “Entrada”.
Ahora añadiremos un objeto de tipo TextBox, que seleccionaremos de la zona 4 y colocaremos bajo la etiqueta. El objeto de tipo TextBox permite introducir datos en la
aplicación, y también mostrar datos al exterior. El formulario queda como
muestra la figura.
Busca entre las propiedades del objeto TextBox la que nos permite cambiar el nombre del objeto (que
llamaremos entrada) y
la que permite cambiar el texto que ha puesto por defecto (Text1) de manera que la casilla aparezca en blanco.
Repite ahora las operaciones anteriores para añadir la etiqueta “Salida” y un objeto de tipo TextBox, que llamaremos salida. En este
momento, en el formulario tenemos 4 objetos (dos de tipo Label
y dos de tipo TextBox). Podemos
verlos desplegando la lista que hay en la parte superior de la ventana de
propiedades.
Fíjate que no hay que confundir el nombre que tienen los objetos con
el texto que aparece en el objeto. Tenemos, por ejemplo, un objeto de tipo Label que se llama Label1 y que muestra el
texto entrada
(propiedad Caption). Por otra parte,
tenemos un objeto de tipo TextBox
que se llama entrada y
que no muestra ningún texto (propiedad Text
en blanco).
Finalmente, vamos a añadir un objeto de tipo CommandButton. Haremos que el objeto se llame Boton y que el nombre con el que aparece
el boton en el formulario sea “Calcular”.
Si hacemos ahora doble click sobre el botón nos aparecerá de nuevo la
ventana de código, mostrándonos el procedimiento boton_Click (), que
debemos rellenar con las operaciones que queremos que se hagan cuando el
usuario clique sobre el botón. Escribir en ese procedimiento el siguiente
código:
salida.Text
= entrada.Text * 2
De esta manera, cuando ejecutemos la aplicación, podremos escribir un
número en la casilla de entrada y clicar el botón. Entonces se ejecutará el
procedimiento que acabamos de hacer, y que tomará el texto del objeto entrada
(el número introducido), lo multiplicará por 2 y mostrará el resultado en el objeto
salida (observa que Visual Basic ya hace las conversiones necesarias de texto a
números y viceversa). Ejecuta la aplicación para ver que funciona bien.
Finalmente, añadiremos al formulario un objeto de tipo Timer. Este objeto nos permite realizar
acciones cuando se cumpla un cierto tiempo. Si clicamos sobre el objeto se
mostrará la ventana de código con el procedimiento Timer1_Timer(), que
hay que rellenar con lo que queramos hacer al cumplirse el tiempo establecido (Timer1 es
el nombre del objeto por defecto, puesto que no lo hemos cambiado). Como
ejemplo, vamos a hacer que después de que se haya multiplicado por 2 el dato de
entrada, 5 segundos más tarde se multiplique automáticamente por 4. Las
operaciones que hay que hacer son las siguientes:
1 Añadir al
procedimiento Form_Load() la línea de código
Timer1.Enabled = False
De esta forma, en el momento de
iniciar la aplicación se indica que el contador de tiempo está parado.
2 Añadir al
procedimiento boton_Click() el siguiente código:
Timer1.Interval = 5000
Timer1.Enabled = True
Es decir, cuando se clique el
botón para mostrar el resultado en la salida, se pone en marcha el contador de
tiempo, y le decimos que nos avise cada 5 segundos (5000 milisegundos).
3 Añadir al
procedimiento Timer1_Timer() la línea siguiente:
salida.Text = salida.Text * 2
Esto hará que cada 5 segundos el
número que hay en la salida se multiplique por 2.
Realiza todas las operaciones anteriores y verifica que la aplicación
funciona correctamente.
Añade ahora el código necesario para que, además de hacer todo lo
anterior, la aplicación cambie el color del fondo de las casillas de entrada y
salida cuando hayan pasado 15 segundos desde el momento en que se hace clic en
el botón.
4 Una aplicación con matrices de casillas
En la segunda aplicación vamos a aprender a usar el objeto MSFlexGrid, que es muy útil para trabajar
con matrices de casillas. En primer lugar, crea una nueva carpeta (que se
llamará prueba2) para este segundo
ejercicio.
El objeto MSFlexGrid no
aparece por defecto en la zona 4.
Para añadir el objeto hay que seleccionar la pestaña Proyecto->Componentes. Entonces aparecerá una lista amplia de
componentes, entre los que hay que seleccionar el que se llama Microsoft FlexGrid Control 6.0.
Entonces aparecerá el objeto en la zona
4, y podremos añadirlo al formulario. Realiza estas operaciones con un
proyecto nuevo. Después de añadir el objeto al formulario, la pantalla se verá
como muestra la figura.
Lo primero que haremos es ponerle el nombre matriz al objeto, y
añadir el siguiente código en el procedimiento Form_Load() que
se ejecutará al iniciar la aplicación (los comentarios indican qué hace cada
parte del código):
Private Sub Form_Load()
’ los
comentarios se ponen asi
’ numero
de columnas de la matriz
matriz.Cols = 10
’ numero de columnas de la matriz
matriz.Rows = 10
’ las siguientes propiedades tienen que ver
’ con el aspecto de la matriz
matriz.ScrollBars = 0
matriz.HighLight = 0
matriz.FocusRect = 0
’ ahora indicamos que las filas y las columnas
’ se numeran desde la 0
matriz.FixedCols = 0
matriz.FixedRows = 0
’ declaramos una variable entera
Dim I As Long
’ los dos bucles siguientes son para establecer
’ la altura y la anchura de las celdas de la casilla
For I = 0 To matriz.Rows - 1
matriz.RowHeight(I) = 250
Next
For I = 0 To matriz.Cols - 1
matriz.ColWidth(I) = 250
Next
End Sub
Al ejecutar la aplicación aparecerá una matriz tal y como muestra la
figura. Prueba diferentes ejecuciones eliminando alguna de las líneas de código
que modifican las propiedades relativas al aspecto de la matriz.
Ahora vamos a añadir el código necesario para que cuando se clique en
una casilla de la matriz cambie de color todas las casillas de la misma fila y
la misma columna. Para ello, hacemos doble clic sobre el objeto matriz para que
se abra la ventana de código. Aparecerá el procedimiento llamado matriz_Click() que
se ejecutará cuando se haga clic sobre la matriz. Añadiremos el siguiente
código a ese procedimiento:
Dim fila As Long
Dim columna As Long
Dim i As Long
Dim j As Long
’ tomamos nota de la fila,columna de la casilla
’ sobre la que se ha clicado
fila = matriz.Row
columna = matriz.Col
’ vamos a recorrer la columna
For i = 0 To matriz.Rows - 1
’
establecemos las coordenadas de la casilla
’ que vamos
a cambiar de color
matriz.Row
= i
matriz.Col
= columna
’ esta es
la operación para cambiar el color de la casilla
matriz.CellBackColor
= &HFF&
Next
’ Ahora cambiamos el color de la fila
For i = 0 To matriz.Cols - 1
matriz.Row =
fila
matriz.Col = i
matriz.CellBackColor
= &HFF&
Next
Ejecuta la aplicación y verifica que
funciona correctamente.
Vamos a modificar ahora la aplicación para que al clicar sobre una
casilla de la matriz se abra un formulario nuevo que nos permita introducir el
valor numérico que queremos que aparezca en la casilla sobre la que se ha
clicado.
El primer paso para conseguir esto es añadir al proyecto un nuevo
formulario (pestaña Proyecto->agregar
formulario), En este nuevo formulario añadiremos un objeto de tipo Label, un objeto de tipo TextBox (que llamaremos entrada) para introducir
el valor, y un objeto de tipo CommandButton
(que llamaremos aceptar)
para dar la orden de aceptar el dato. El nuevo formulario puede tener el
aspecto mostrado en la figura.
En el procedimiento aceptar_Click (), que se
ejecutará al clicar sobre el botón del nuevo formulario, debes escribir la
siguiente instrucción (la única del procedimiento)
Hide
Por otra parte, el código del procedimiento matriz_Click()
(que se encargaba de cambiar de color la fila y la columna de la casilla
clicada) debe substituirse por el código siguiente:
Form2.Show 1
matriz.TextMatrix(matriz.Row, matriz.Col) =
Form2.entrada
Unload Form2
Ejecuta la aplicación y verifica que
funciona como se ha descrito. Al clicar sobre la matriz se ejecuta matriz_Click (). La primera
instrucción del procedimiento activa el segundo formulario (cuyo nombre por
defecto es Form2, porque no
le hemos cambiado el nombre). Esto hace que aparezca el segundo formulario en
el que podemos escribir un número y clicar en el botón de aceptar. Esto provoca
que se ejecute el procedimiento aceptar_Click() que ejecuta la sentencia Hide. Esta
sentencia hace que el formulario se esconda, y regresamos al procedimiento matriz_Click (), cuya segunda
instrucción toma el contenido del objeto entrada, que pertenece al segundo
formulario (ese contenido es precisamente el número que hemos escrito) y lo
coloca en la casilla sobre la que hemos clicado, identificada por las
coordenadas (matriz.Row,
matriz.Col).
La última instrucción del procedimiento elimina definitivamente el segundo
formulario (que solamente habíamos ocultado).
Salva la aplicación que has creado en la
carpeta prueba2. Observa ahora que se
salvan tres ficheros: el fichero correspondiente al proyecto y los dos ficheros
correspondientes a los dos formularios que contiene el proyecto.
5 Más sobre formularios
Los formularios en Visual Basic son objetos que pueden ser creados,
manipulados y destruidos a conveniencia. Esto puede resultar muy útil para
crear aplicaciones que van abriendo o cerrando ventanas según sea necesario.
Veamos cómo construir, paso a paso, una aplicación que tiene un
formulario principal desde el cual se pueden ir creando y destruyendo otros a
petición del usuario. Crea una carpeta llamada prueba3 para trabajar en este nuevo proyecto.
Crea una aplicación nueva en Visual Basic.
Llama Principal al formulario
principal. Añade a ese formulario un objeto de tipo TextBox que llamarás nombre,
y dos objetos de tipo CommandButton,
uno se llamará llamarás crear y el
otro se llamará eliminar.
Crea ahora un nuevo formulario que se
llamará NuevoF. No necesitas añadir
ningún objeto a ese formulario.
La aplicación va a funcionar de la siguiente manera: el usuario
escribirá un nombre en el TextBox
del formulario principal. Entonces hará un clic en el botón crear, y aparecerá un formulario de tipo
NuevoF, que tendrá, en el atributo Caption, el nombre que el usuario ha
puesto en el TextBox. Además, en el
momento de aparecer el nuevo formulario, se verá un mensaje avisando de su
creación. De esta forma, el usuario podrá crear tantos formularios de tipo NuevoF como quiera. Por otra parte,
cuando el usuario escriba el nombre de un formulario que ya existe y clique el
botón eliminar entonces el formulario
correspondiente desaparecerá, y se mostrará un mensaje advirtiendo al usuario
de esa circunstancia.
Para que la aplicación funcione de esta
forma, el formulario de tipo NuevoF
debe tener el código siguiente:
‘nom es una variable pública del forumlario que puede accederse
‘desde cualquier otro formulario
Public nom As String
‘cuando se carga el formulario simplemente se informa al usuario
Private Sub Form_Load()
MsgBox "Me acaban de crear. Soy: " & nom
End Sub
El código que debe tener el formulario principal es el
siguiente:
‘cuando se clica el botón crear se crea un formulario de tipo nuevoF
‘se pone el nombre del TextBox en la variable pública nom, y en el ´
‘atributo caption
Private Sub crear_Click()
Dim F As New nuevoF
F.nom = nombre
F.Caption = nombre
F.Show
End Sub
‘cuando se
clica el botón eliminar se elimina el formulario cuyo ‘nombre ha tecleado el
usuario
Private Sub eliminar_Click()
Dim F As Form
´avisamos al usuario de
la eliminacion
MsgBox "Has eliminado a
" & nombre
´recorremos todos los formularios
de la aplicación
´buscando el que tiene el
nombre tecleado en el atributo caption
´cuando lo encontrados lo
eliminamos
For Each F In Forms
If F.Caption = nombre Then
Unload F
Exit Sub
End If
Next
End Sub
Ejecuta ahora la aplicación y
verifica que funciona correctamente. Salva ahora el proyecto que has creado en
la carpeta prueba3.
Suscribirse a:
Entradas (Atom)