Ejemplos de programación.
Antes de empezar creamos en el servidor, dentro de la
carpeta “ 4AVbasic
”, una carpeta con nuestro-os números.
Ejemplo
1: Sencillo programa de colores y posiciones
En
|
Control |
Propiedad |
Valor |
Control |
Propiedad |
Valor |
|
frmColores0 |
Nombre |
frmColores0 |
optVerde |
Nombre |
optVerde |
|
|
Caption |
Colores |
|
Caption |
Verde |
|
fraColores |
Nombre |
fraColor |
fraPosicion |
Nombre |
fraPosicion |
|
|
Caption |
Colores |
|
Caption |
Posición |
|
optAzul |
Nombre |
optAzul |
optArriba |
Nombre |
optArriba |
|
|
Caption |
Azul |
|
Caption |
Arriba |
|
optRojo |
Nombre |
optRojo |
optAbajo |
Nombre |
optAbajo |
|
|
Caption |
Rojo |
|
Caption |
Abajo |
|
optAmarillo |
Nombre |
optAmarillo |
txtCaja |
Nombre |
txtCaja |
|
|
Caption |
Amarillo |
|
Text |
“” |
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:
1. 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, y en casi todo lo que hagamos este
curso, 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.
2. 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 lacaja 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 en Visual Basic 6.0: vbRed,
vbGreen y vbBlue .
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 ( ).
3. Las propiedades ScaleHeight y Height
fijan la altura de un objeto.
4. 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.
Puedes
crear un ejecutable : desplegando
Archivo en la barra de herramientas , y haciendo clic en “ generar colores0.exe”
Ejemplo
2: Minicalculadora elemental
En este ejemplo se muestra una
calculadora elementalque permite hacer las cuatro operaciones aritméticas. Los
ficheros de este proyecto se pueden llamar minicalc.vbp y minicalc.frm. y el ejecutable correspondiente. 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.
|
Control |
Propiedad |
Valor |
Control |
Propiedad |
Valor |
|
frmMinicalc |
Nombre |
frmMinicalc |
lblEqual |
Nombre |
lblEqual |
|
|
Caption |
Minicalculadora
|
|
Caption |
= |
|
txtOper1 |
Nombre |
txtOper1 |
cmdSuma |
Nombre |
cmdSuma |
|
|
Text |
|
|
Caption |
+ |
|
txtOper2 |
Nombre |
txtOper2 |
cmdResta |
Nombre |
cmdResta |
|
|
Text |
|
|
Caption |
- |
|
txtResult |
Nombre |
txtResult |
cmdMulti |
Nombre |
cmdProd |
|
|
Text |
|
|
Caption |
* |
|
lblOp |
Nombre |
lblOp |
cmdDivi |
Nombre |
cmdDiv |
|
|
Caption |
|
|
Caption |
/ |
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
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 (une), y como resultado, por ejemplo, “3+
Ahora añade al código anterior lo
siguiente y prueba a ver lo que pasa:
Private Sub Txtoper1_Change()
If lblop.Caption = "+" Then
Txtresult.Text = Val(Txtoper1.Text) +
Val(Txtoper2.Text)
End If
If lblop.Caption = "-" Then
Txtresult.Text = Val(Txtoper1.Text) -
Val(Txtoper2.Text)
End If
If lblop.Caption = "*" Then
Txtresult.Text = Val(Txtoper1.Text) *
Val(Txtoper2.Text)
End If
If lblop.Caption = "/" Then
Txtresult.Text = Val(Txtoper1.Text) /
Val(Txtoper2.Text)
End If
End Sub
Private Sub Txtoper2_Change()
If lblop.Caption = "+" Then
Txtresult.Text = Val(Txtoper1.Text) +
Val(Txtoper2.Text)
End If
If lblop.Caption = "-" Then
Txtresult.Text = Val(Txtoper1.Text) -
Val(Txtoper2.Text)
End If
If lblop.Caption = "*" Then
Txtresult.Text = Val(Txtoper1.Text) *
Val(Txtoper2.Text)
End If
If lblop.Caption = "/" Then
Txtresult.Text = Val(Txtoper1.Text) /
Val(Txtoper2.Text)
End If
End Sub
Intenta entender cómo funciona una de la
instrucciones más utilizadas en Basic (y prácticamente en todos los lenguajes
de programación). “ if…..then”. La hemos utilizado
recurrentemente “a propósito” pero ya os adelanto que más adelante veremos cómo
podemos simplificar, y mucho, esta situación.
¿Cómo funciona change()?
Ejemplo
3.- Una bromilla.
Este es un ejemplo en el que utilizando
las propiedades top y left podemos gastar una pequeña broma.
Vamos a crear los archivos broma.vbp y broma.frm. Posteriormente
crearemos el ejecutable broma.exe que puedes llevarte en un
disquete o mandártelo por correo, y así enseñar en casa todo lo que aprendes en
clase de Informática. En la tabla tienes
los objetos y las propiedades correspondientes.
|
Control |
Propiedad |
Valor |
Control |
Propiedad |
Valor |
|
Form1 |
Nombre |
Form1 |
cmdno |
Nombre |
cmdno |
|
|
Caption |
Una preguntilla |
|
Caption |
No |
|
|
controlbox |
False |
cmdexit |
Nombre |
cmdexit |
|
|
ShowinTaskbar |
False |
|
Caption |
Ahora puedes
salir |
|
Lbl2 |
Nombre |
Lbl2 |
|
Visible |
False |
|
|
Caption |
Así me gusta… |
|
|
|
|
|
Visible |
False |
|
|
|
|
cmdsi |
Nombre |
cmdsi |
|
|
|
|
|
Caption |
Si |
|
|
|
|
|
|
|
|
|
|
Y aquí tienes
el código:
Private Sub
Cmdsi_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Lbl2.Visible =
False
cmdexit.Visible
= False
Form1.Top = Int(4500
* Rnd)
Form1.Left =
Int(5000 * Rnd)
End Sub
Private Sub
Cmdno_Click()
Lbl2.Visible =
True
cmdexit.Visible
= True
End Sub
Private Sub
Cmdexit_Click()
End
End Sub
1.- Al
establecer las propiedades de
controlbox y showintaskbar
como False, el formulario no tiene los botones minimizar, maximizar y cerrar,
ni aparece en la barra de herramientas, con lo cual dificultamos el cierre del
programa.
2.- El botón salir tampoco está visible hasta que tecleemos “No”
3.- Rnd es un
número aleatorio que toma valores reales en el intervalo cerrado [0,
1]( suponemos que con los maravillosos profesores que tienes de
matemáticas sabes de que estamos hablando) , Int ( número) convierte a
número en entero
Ejemplo 3: Transformación de unidades de
temperatura
temperaturas en grados centígrados y
grados Fahrenheit. Los ficheros de este proyecto se pueden
llamar Temperat.vbp y Temperat.frm
y si quieres temperat.exe.
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.
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ú Archivo con
la única opción Salir, que termina asimismo la
ejecución del programa.
|
Control |
Propiedad |
Valor |
Control |
Propiedad |
Valor |
|
frmTemp |
Nombre |
frmTemp |
vsbTemp |
Nombre |
vsbTemp |
|
|
Caption |
Conversor de |
|
Min |
100 |
|
|
|
temperaturas |
|
|
|
|
mnuarchivo |
Nombre |
mnuarchivo |
|
Max |
-100 |
|
|
Caption |
Archivo |
|
SmallChange |
1 |
|
mnuFileExit |
Nombre |
mnuFileExit |
|
LargeChange |
10 |
|
|
Caption |
Salir |
|
Value |
0 |
|
cmdSalir |
Nombre |
cmdSalir |
lblCent |
Nombre |
lblCent |
|
|
Caption |
Salir |
|
Caption |
Grados Centígrados |
|
|
Font |
MS Sans Serif, Bold, 14 |
|
Font |
MS Sans Serif, 10 |
|
txtCent |
Nombre |
txtCent |
lblFahr |
Nombre |
lblFahr |
|
|
text |
0 |
|
Caption |
Grados Fahrenheit |
|
txtFahr |
Nombre |
txtFahr |
|
Font |
MS Sans Serif, 10 |
|
|
text |
32 |
|
|
|
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:
1. 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). 2. 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. 3. La función mnuFileExit_Click()
y activa desde el menú y termina la ejecución sin emitir ningún sonido.
4. 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.

Ejemplo.4:
Colores RGB
En este ejemplo se dispone de tres
barras de desplazamiento con las que pueden controlarse las componentes RGB del
color del fondo y del color del texto de un control label. Dos
botones de opción permiten determinar si los valores de las barras se aplican
al fondo o al texto. Cuando
se cambia del texto al fondo o viceversa
los valores de las barras de desplazamiento (y la posición de los cursores)
cambian de modo acorde.
A la dcha. de las barras de
desplazamiento tres cajas de texto contienen los valores numéricos de los tres
colores (entre 0 y 255). A la izda. Tres labels indican los
colores de las tres barras.
|
Control |
Propiedad |
Valor |
Control |
Propiedad |
Valor |
|
frmColores |
Nombre |
frmColores |
hsbColor |
Nombre |
hsbColor |
|
|
Caption |
Colores |
|
Min |
0 |
|
lblCuadro |
Nombre |
lblCuadro |
|
Max |
255 |
|
|
Caption |
INFORMÁTICA 1 |
|
SmallChange |
1 |
|
|
Font |
MS Sans Serif, Bold, 24 |
|
LargeChange |
16 |
|
cmdSalir |
Nombre |
cmdSalir |
|
Index |
0,1,2 |
|
|
Caption |
Salir |
|
Value |
0 |
|
|
Font |
MS Sans Serif, Bold, 10 |
txtColor |
Nombre |
txtColor |
|
optColor |
Nombre |
optColor |
|
Text |
0 |
|
|
Index |
0,1 |
|
Locked |
True |
|
|
Caption |
Fondo, Texto |
|
Index |
0,1,2 |
|
|
Font |
MS Sans Serif, Bold, 10 |
lblColor |
Nombre |
lblColor |
|
|
|
|
|
Caption |
Rojo,Verde,Azul |
|
|
|
|
|
Index |
0,1,2 |
|
|
|
|
|
Font |
MS Sans Serif, 10 |
Una característica importante de este
ejemplo es que se han utilizado vectores (arrays) de controles.
Las tres barras se llaman hsbColor y se diferencian por la
propiedad Index, que toma los valores 0, 1 y 2. También las tres
cajas de texto, las tres labels y los dos botones de opción son
arrays de controles. Para crear un array de controles basta
crear el primero de ellos y luego hacer Copy y Paste tantas
veces como se desee, respondiendo afirmativamente al cuadro de diálogo que
pregunta si desea crear un array. El procedimiento Sub que
contiene el código que gestiona un evento de un array es único
para todo el array, y recibe como argumento la propiedad Index.
De este modo que se puede saber exactamente en qué control del array se ha
producido el evento. Así pues, una ventaja de los arrays de controles es
que pueden compartir el código de los eventos y permitir un tratamiento
conjunto
por medio de bucles for. A
continuación se muestra el código correspondiente a los procedimientos que
tratan los eventos de este ejemplo.
Option Explicit
Public Brojo, Bverde, Bazul As Integer
Public Frojo, Fverde, Fazul As Integer
Private Sub cmdSalir_Click()
End
End Sub
Private Sub Form_Load()
Brojo = 0
Bverde = 0
Bazul = 0
Frojo = 255
Fverde = 255
Fazul = 255
lblCuadro.BackColor = RGB(Brojo, Bverde,
Bazul)
lblCuadro.ForeColor = RGB(Frojo, Fverde,
Fazul)
End Sub
Private Sub hsbColor_Change(Index As
Integer)
If optColor(0).Value = True Then
lblCuadro.BackColor =
RGB(hsbColor(0).Value, hsbColor(1).Value, _
hsbColor(2).Value)
Dim i As Integer
For i = 0 To 2
txtColor(i).Text = hsbColor(i).Value
Next i
Else
lblCuadro.ForeColor =
RGB(hsbColor(0).Value, hsbColor(1).Value, _
hsbColor(2).Value)
For i = 0 To 2
txtColor(i).Text = hsbColor(i).Value
Next i
End If
End Sub
Private Sub optColor_Click(Index As
Integer)
If Index = 0 Then ’Se pasa a cambiar el
fondo
Frojo = hsbColor(0).Value
Fverde = hsbColor(1).Value
Fazul = hsbColor(2).Value
hsbColor(0).Value = Brojo
hsbColor(1).Value = Bverde
hsbColor(2).Value = Bazul
Else ’Se pasa a cambiar el texto
Brojo = hsbColor(0).Value
Bverde = hsbColor(1).Value
Bazul = hsbColor(2).Value
hsbColor(0).Value = Frojo
hsbColor(1).Value = Fverde
hsbColor(2).Value = Fazul
End If
End Sub
El código de este ejemplo es un poco más
complicado que el de los ejemplos anteriores y requiere unas ciertas
explicaciones adicionales adelantando cuestiones que se verán posteriormente:
1. La función RGB() crea
un código de color a partir de sus argumentos: las componentes
RGB (Red, Green and Blue). Estas componentes, cuyo valor
se almacena en un byte y puede oscilar entre 0 y 255, se determinan por medio
de las tres barras de desplazamiento.
2. El color blanco se
obtiene con los tres colores fundamentales a su máxima intensidad. El color negro
se obtiene con los tres colores RGB a cero. También se pueden
introducir con las constantes predefinidas vbWhite y vbBlack,
respectivamente.
3. Es importante disponer de unas variables
globales que almacenen los colores del fondo y del texto, y que
permitan tanto guardar los valores anteriores de las barras como cambiar éstas
a sus nuevos valores cuando se clica en los botones de opción. Las variables
globales, definidas en la parte de definiciones generales del código, fuera de
cualquier procedimiento, son visibles desde cualquier parte del programa. Las
variables definidas dentro de una función o
procedimiento sólo son visibles desde
dentro de dicha función o procedimiento (variables locales).
4. La función hsbColor_Change(Index
As Integer) se activa cada vez que se cambia el valor en una cualquiera
de las barras de desplazamiento. El argumento Index, que Visual
Basic define automáticamente, indica cuál de las barras del array es la
que ha cambiado de valor (la 0, la 1 ó la 2). En este ejemplo dicho argumento
no se ha utilizado, pero está disponible por si se hubiera querido utilizar en
el código.
Ejemplo
5: Ecuación de 2º grado.
En la imagen de
la derecha tenemos el formulario correspondiente al siguiente ejemplo, … ( me
parece que ahora tenéis que seguir solitas y solitos)
