En un primer ejemplo hemos desarrollado una pequeña aplicación en VB6 para convertir las cuotas de las casas de apuestas a porcentajes.
En la entrada de hoy y en las dos siguientes vamos a modificar totalmente la estructura del programa, haciéndolo más “profesional“, a pesar de que el resultado ni el formulario cambian para el usuario.
El ejercicio propuesto consiste en transformar el código insertado en el formulario a nuevo código en objetos (clases) que permitan su reutilización.
Public Sub Main
El primer cambio es iniciar el software desde un módulo, cuya rutina se llama Main.
El segundo cambio es modificar las propiedades del proyecto para que se inicie desde Sub Main:
Reconstrucción del software
El tercer cambio es agregar una Clase, a la que llamaremos CalculaCuotas.cls
Si ejecutamos la aplicación tal y como está en este momento, no veremos nada! Se ejecuta Sub Main pero como no tenemos código … no sucede nada! También hemos puesto un nombre al formulario, que pasa de Form1 a frmCoutas.
En el módulo mInicio, creamos un objeto privado bForm para llamar al formulario frmCoutas. Dentro de Sub Main, inicializamos la variable bForm, cargamos el objeto y lo mostramos. Con estos mismos cambios, de nuevo, la aplicación está nuevamente operativa.
Option Explicit
Private bForm As frmCoutas
Public Sub Main()
Set bForm = New frmCoutas
Load bForm
bForm.Show
End Sub
Usando la clase CalculaCoutas
Sin embargo, la versión definitiva no es esta. Este mismo código lo pondremos, en lugar de en el módulo mInicio, en la clase cCalculaCoutas. Mientras que en código de Sub Main quedará simplificado a crear una variable que llame a la clase CalculaCuotas.
Todo sigue funcionando tal y cómo lo hacía en la versión 1, a pesar de haber introducido tanto cambio y muchos más archivos. Este hecho no es “gratuito” y en breve comprobareis el porqué de tanto cambio y tanta modificación tan drástica para un programa que en su versión inicial era muy simple.
Para controlar la visualización del formulario, creamos en la clase los eventos Show y Hide:
Public Sub Show()
bForm.Show
End Sub
Public Sub Hide()
bForm.Hide
End Sub
Creamos un método público Coutas para introducirle valores, y eliminar DatosIniciales del formulario. Los datos lo hemos puesto tipo cadena para poder aplicarle la función LeeValor, que me permite controlar si son numéricos o no.
Public Sub Cuotas(cL As String, cE As String, cV As String)
' cL, cE y cV para cuotas Locales, Empate y Visitantes
dValor(0) = LeeValor(cL)
dValor(1) = LeeValor(cE)
dValor(2) = LeeValor(cV)
MuestraResultados
End Sub
Además, ya no necesitamos ningún evento en Form_load de frmCoutas, sino que queda (casi) todo controlado desde la clase.
y de momento, hasta aquí hemos llegado. En la versión 3 introduciremos el control de eventos del formulario para que sea controlado por la clase cCalculaCoutas, de forma que sea la clase la que tenga en control absoluto del formulario, y no al revés (caso de la primera versión).