¿pensaban que me iba a quedar en la versión 3? Pues no, todavía hay más!
En la versión 4 vamos a ver lo fácil que es usar IEventsHandler, la clase manejadora de eventos, y vamos a dividir aun más nuestro software.
Salir de la aplicación
En el formulario, vamos a incluir un botón de “Salir”, y también vamos a controlar cuando el usuario cierra el formulario pulsando en la “X” de la ventana. En concreto, es el evento Form_QueryUnload.
En ambos casos, el código será el mismo, y es una llamada a salir de la aplicación (la hemos puesto en una subrutina aparte, por si tuvieramos que controlar algo adicional antes de salir, hacerlo desde un mismo sitio, una sola vez):
En la clase, vamos a incluir una subrutina para cuando se termina de trabajar con la clase, para que cierre todos los objetos abiertos.
Por otro lado, vamos a bEvent_RaisedEvent para controlar el evento “salir“, haciendo una llamada a una subrutina en el módulo de inicio:
Facil, ¿no?
Nueva clase Coutas2Porc
La actual clase cCalculaCuotas se caracteriza por 2 cosas:
- Controla el formulario y sus eventos
- Controla los cálculos
Sin embargo, es hora de separar ambas cuestiones. ¿el motivo? Cada objeto o clase debería controlar una sola de esas acciones.
Creamos la clase Cuotas2Porcentajes, mediante Agregar nuevo módulo de clase. Lo primero es agregar 6 propiedades públicas: CuotaLocal, CuotaEmpate, CuotaVisit, PorcLocal, PorcEmpate, PorcVisit. En realidad, los porcentajes sólo nos interesa que sean propiedades de lectura, por tanto, eliminaremos (o mejor, comentaremos) las opciones de escritura. Para el almacenamiento interno, usamos las matrices dValor y dPorc, que trasladamos desde cCalculaCuotas. Hacemos también el traslado de la función interna LeeValor.
Vamos a controlar si se efectúa o no el cálculo, es decir, control de errores. Vamos a poner 2 propiedades, ambas de sólo lectura:
- Calculado, de tipo boleano
- Error, de tipo texto
Con Calculado, podemos controlar si se ha efectuado el cálculo o ha habido errores, mientras que con Error enviaremos un mensaje de texto con el error. La mejora es importante, pues ahora podemos mostrar errores al usuario.
La función de Calcular es también trasladada a Coutas2Porcentajes, con los ajustes oportunos, eliminando llamadas a rutinas de la clase cCalculaCuotas.
Haciendo uso de la nueva clase Coutas2Porcentajes
Volvemos a la clase cCalculaCuotas, y creamos una variable que llama a Coutas2Porcentajes, y lo hacemos como privada para usarla en cualquier sitio de la clase, y la iniciamos al arrancar la clase (la cerramos al terminar de trabajar con la clase):
Private oC2P as Cuotas2Porcentajes
Para utilizar la clase oC2P, tenemos que actualizar varias rutinas, empezando por MuestraResultados, y también en Coutas, donde además, empleamos la detección de errores.
Comprobamos que funciona la detección de errores.
Corrección de errores
Seguramente, ninguno lector (ni siquiera yo mismo, hasta hace unos minutos) ha caído en que los resultados mostrados NO son correctos. ¿es que no está bien calculado? Pues la verdad es que no. ¿Cómo? Llevamos 4 entradas haciendo un programa que tiene errores? La respuesta es sí.
El error es que los porcentajes presentados al usuario están en tantos por 1, y no en tantos por 100.
Para corregir el error, sólo es necesario modificar una sóla línea:
Y ahora comprobamos de que todo está correcto:
Gracias por leerme, y espero que os sirva!