Ejemplo de programación en VB6. Convertir cuotas en porcentajes

Posted by in Visual Basic y VBA

Uno de los principales “atranques” cuando alguien quiere experimentar programando es …. ¿y que programo?

Pues bien, iniciamos una serie de entradas donde vamos a hacer el mismo programa.

Objetivo

El objetivo de nuestro programa es realizar la conversión de las cuotas que ofrecen las casas de apuestas a porcentajes para los partidos de futbol.

En el partido entre EquipoA – EquipoB tiene las cuotas A, B, C y queremos saber que porcentajes tienen %a, %b y %c. Para conocer %, se calculan primero los inversas de las cuotas (1/A, 1/B y 1/C), y luego se calculan los % en función de la suma de las inversas. Simple, ¿no?

Iniciando en VB6

seleccionamos “Nuevo proyecto” y elegimos “EXE estándar“, es decir, vamos a crear un archivo ejecutable .exe.

Crear nuevo proyecto en VB6

Crear nuevo proyecto en VB6

Nos aparece directamente un formulario, al que vamos a agregar un título, y las 3 correspondientes cajas, además de un botón de “Calcular”, y otras 3 etiquetas donde aparecerán los resultados. Lo ponemos un poco bonito, para hacerlo más atractivo:

Preparando formulario en VB6

Preparando formulario en VB6

Todavía no hemos generado una sola línea de código y ya va tomando forma el formulario que se le va a presentar al usuario. Si guardamos lo que llevamos hecho y ejecutamos, vemos lo siguiente (evidentemente, no hemos programado ninguna acción ante alguna acción del usuario):

Formulario inicial

Formulario inicial

Tiene buena pinta, pero todavía se puede mejorar mucho. Ahora sí que comenzamos a teclear código.

En lugar de limpiar las etiquetas y las cajas directamente desde el modo edición del formulario, vamos a hacerlo con una subrutina de código, LimpiaDatos. Aquí el código:

Private Sub LimpiaDatos()
Dim i As Integer
Me.Text1.Text = ""
Me.Text2.Text = ""
Me.Text3.Text = ""
' Tenemos un Array de Etiquetas
For i = 0 To 2
Me.Label3(i).Caption = ""
Next
End Sub

¿Por qué se hace en una rutina, y además independiente? El principal motivo es que pueda ser llamada más de una vez. En nuestro caso, no hemos previsto un botón de “Limpiar Datos”, pero el código a ejecutar por dicho botón sería llamar a LimpiaDatos. De esta forma, optimizamos mucho cada línea de código que escribimos! Así que, cuando se inicia el formulario, llamaremos a LimpiaDatos. La segunda razón para aislar en una subrutina el código que limpia el formulario es por si en un futuro añado más características, que sólo tenga que añadir código en un solo sitio. La rutina LimpiaDatos también será llamada cada vez que ejecuto los cálculos.

Si volvemos a ejecutar nuestro software ahora, el resultado es el siguiente:

Formulario inicial mejorado

Formulario inicial mejorado

El siguiente paso es darle vida al botón de cálculo, haciendo que lea el contenido de las cajas de texto, y escribiendo su correspondiente valor en las etiquetas correspondientes. Esto también lo haremos en una subrutina independiente, por las mismas razones por las que generamos LimpiaDatos. Por ejemplo, si queremos que se calcule conforme insertamos números. Por tanto, la única línea de código asociada al evento clic del ratón es llamar a la rutina de cálculo.

Además, necesitamos una rutina que compruebe una cadena de caracteres (lectura de valor de caja de texto) y nos devuelva un número, aunque sea cero. El código siempre devuelve un valor, pues se inicializa a 0. Si la cadena no es numérico, dará un error, y por tanto, devolverá el valor por defecto. Si la cadena de texto fuera numérica, se devolvería en valor: El código es el siguiente:
Private Function LeeValor(valor As String)
Dim dV As Double
On Error GoTo Ending
dV = 0
dV = Replace(valor, ".", ",") ' Este reemplazo permite corregir los decimales
Ending:
LeeValor = dV
End Function

Ahora, escribimos el código para la rutina de cálculo:

Private Sub Calcular()
Dim dValor(2) As Double, tmp As String, i As Integer, dSum As Double
dValor(0) = LeeValor(Me.Text1.Text)
dValor(1) = LeeValor(Me.Text2.Text)
dValor(2) = LeeValor(Me.Text3.Text)
' Comprobamos que todos los valores son distintos de cero
For i = 0 To 2
If dValor(i) = 0 Then GoTo Ending
dValor(i) = 1 / dValor(i) ' calculo sus inversos
'Me.Label3(i).Caption = dValor(i)
Next
dSum = dValor(0) + dValor(1) + dValor(2)
For i = 0 To 2
Me.Label3(i).Caption = Round(dValor(i) / dSum, 2) & " %"
Next
Ending:
End Sub

Y con estas pocas líneas, ya tenemos terminada nuestra aplicación en VB6. Ahora toca compilar y se nos genera nuestro ejecutable, al que vemos en acción:

Cambio de cuotas en acción

Cambio de cuotas en acción

El código fuente de este pequeño ejemplo lo teneis aquí para descargar.

Conclusión

El desarrollo de este software no ha supuesto mucha complicación, sino tan solo aplicar las correspondientes fórmulas de cálculo para conseguir el objetivo propuesto, y además con un formulario agradable para el usuario.

El usuario habrá podido comprobar cómo en a penas unos minutos es capaz de fabricarse su propio software conversor de cuotas.

Espero que os haya gustado!

Google+ Comments - Comentarios Google+