Módulo de control de presencia (2017): de la vcl a fmx.

Posted by on in Programming

Buen camino a todos:

Espero y deseo que estéis todos bien.

Esta entrada abre un nuevo año para el blog de Delphi Básico. Estoy feliz por ello. Y me parecía que hacerlo aquí, precisamente en este espacio reservado de la Comunidad de Embarcadero, le daba un simbolismo añadido: era retomar esta actividad que lamentablemente tuve que suspender por motivos personales y familiares ,durante buena parte del año anterior; era y es para mi, y supongo que siempre será algo especial. Y por ello, también fue muy meditada la elección del tema con el que abría este 2017, que me ha llevado a buscar nuevamente un formato taller, muy practico y cercano a la gente que lo lee, en forma de "serie" que va a tomar un numero indeterminado de artículos, que ahora mismo no soy con sinceridad capaz de concretar.

La idea es iniciar esta primera entrada comentando qué vamos a compartir, y proseguirán otras restantes ya desde el El blog de Delphi Básico, sin renunciar a continuar aquí cuando sea necesario, con motivo de comunicar eventos de la comunidad o lo que sea apropiado al momento. Y vamos a abrir un grupo para seguir los comentarios de la gente que se anime a participar del taller, simultáneo a la serie. De todo esto os iré informando mas adelante.

Sigamos. 

Con una mirada en el 2010...

¿Recordáis que recomendé en este mismo sitio, unas semanas antes de que finalizara el año, el evento Coderage XI en Español, en el que participaron buena parte de los MVPs hispanos? ¡Qué evento tan extraordinario vivimos!. Yo también asistí como oyente a casi todas las sesiones y reconozco que pusieron el listón alto.

Solo fueron dos días, pero las sesiones tocaban temas útiles, temas que vivimos en el día a día. Una parte del peso de esas sesiones, se aplicó para fomentar buenas prácticas de programación, técnicas y frameworks especializados y sobretodo nuevas metodologías, y todo cuanto nos ayude finalmente en la ardua tarea de modernizar nuestros desarrollos. Algunos puede que se fueran, tras el evento, motivados para introducir muchos de esos temas. Y eso es algo bueno para nuestra Comunidad. Sin duda.


En mi caso, y siguiendo esa linea que iniciaron mis compañeros, me pareció interesante abrir 2017, con una mirada puesta en el 2010. La excusa era retomar un código compilado con Delphi 2007, bajo la plataforma VCL y vivir con vosotros, el cambio a Firemonkey y Berlin. Eso nos daba la oportunidad de abordar algunos temas ligados a ese proceso de cambio. Permitía replantear la aplicación desde una nueva óptica y con nuevas ideas. Y nos abocaba también a tomar conciencia de algunos problemas, que seguro iban a aparecer. 

Y aunque lo de menos era el código concreto que pudiéramos elegir, había una entrada que por su naturaleza, me pareció que era apropiada para enfrentar esa metamorfosis. Sin saber a priori si iba de capullo a mariposa o viceversa. Me refiero a una entrada que pasó bastante desapercibida en su día, sin pena ni gloria, Módulo de control de presencia. En la entrada se abordaba la creación
de un reloj para fichar, o de control de pres
encia. Salvando las diferencias, se habían simplificado muchos conceptos para adaptarlos al blog y que fuera realmente didáctico, pero guardaba algunas ideas de un desarrollo original que años anteriores, compartí con mi buen amigo Juan J. Martinez. El original era un desarrollo amplio, con Delphi 7 y Firebird, que gestionaba temas de personal y cuyo reloj, que recogía los fichajes de los empleados en la empresa, era solo una parte. 

El código de aquella entrada se ajustaba bien a la idea que buscaba: compilado con delphi 2007 y VCL, permitía no solo a cambiar el interfaz, que era un poco lo de menos, sino introducir nuevas clases, como por ejemplo Genéricos,. Se podían encontrar también nuevos formato
s de intercambio de información como JSon y sobretodo, abría un espacio para reflexionar y discutir.

A mi izquierda, tenéis una imagen del proyecto en ejecución. Y mas abajo, rescatado del interior de la carpeta que contenía el código, y que todavía puede ser descargado de la entrada, uno de los diagramas de secuencia, que ayudaban a entender mejor qué hacía.


La verdad es que fue una buena idea seleccionar desde el IDE, los diagramas adecuados, que incluían casos de uso, de clases y de secuencia.

Un fichero de texto léeme cerraba toda la explicación a esa entrada y reconozco que nunca recibí una pregunta ni inquietud ni nada parecido.

 

Otra mirada y nuevos puntos de vista

Os cuento así por encima, algunos de los cambios que he ido haciendo en ese código fuente.  

  • Se ha movido el proyecto a la plataforma Firemonkey (esto ya supone algunos cambios en la interfaz de usuario pero eso es quizás un poco lo de menos. Lo importante es tomar conciencia de que tu dirección apunta a un entorno multiplataforma y lo que esto supone.)
  • Se ha reestructurado el código: nuevas clases y nuevas relaciones, cambian algunos papeles. La clase TEmpleado pierde peso delegando ahora gran parte de sus métodos.
  • He introducido una interfaz que nos permitirá comentar ideas sobre el acoplamiento entre clases.
  • Se han sustituido algunas clases que representaban listas y colecciones, por clases genéricas. Esta cambio ahora nos permite eliminar toda la parte que se incluyo para la iteración de la lista de movimientos.
  • También podemos introducir JSON, y conocer algunos métodos de  serializacion/deserializacion desde REST.
  • He ampliado la via en la que el usuario introduce sus datos, antes representada en una sencilla ventana modal. Ahora podríamos validar su acceso con la lectura de un código de barras.
  • También hemos complementado el display digital de la hora, con un reloj analógico, que será nuestro primer punto de parada, en la próxima entrada de Delphi Básico, lo cual nos lleva a la parte de componentes.
  • Y algunas cosas que seguro me dejo en el tintero.  

Eso en cuanto a lo que ya tengo adelantado, para poder iniciar la serie, siempre con la vista puesta en que pueda ser seguida desde la versión Starter de Berlin, que sabes que no tiene acceso a datos amen de algunas limitaciones lógicas. 

No obstante, una vez cubiertas esas etapas, y ya en una versión superior, podríamos introducir una base de datos local. O conectar nuestra aplicación a otros dispositivos mediante Tethering para validar al usuario. También podríamos subir nuestra aplicación al store de Windows, algo que aprendimos en una de las sesiones de Coderage, con nuestro amigo Eliseo.

Sobre la marcha se nos ocurrirán cosas, sin duda.

Nuestro siguiente paso... 

 Nos vamos a entretener en los próximos días creando un reloj analógico que luego utilizaremos.

Esta es una imagen del componente sobre un formulario sobre el que testaba algunas propiedades.  

Componente reloj analogico

 Y aquí podeis ver un pequeño video, a modo de introducción, que os muestra tanto el reloj como el resultado de algunos cambios en el Modulo de control de presencia.

 

Hay un dicho que nos dice que lo realmente importante es disfrutar de ese camino; no es a donde llegas sino como recorres ese trecho. 

Espero que os guste. 

 

 

 

 



About
Gold User, Rank: 78, Points: 16
Programador independiente español, ligado a la Comunidad de Delphi y a esta herramienta, desde Delphi 1 hasta la actualidad. MVP de Embarcadero de 2012. Desde el 2003, mantengo mi propio espacio de comunicación: Delphi Básico (www.delphibasico.com), habiendo colaborado anteriormente en boletines y publicaciones electrónicas y otras iniciativas no lucrativas en favor de nuestra comunidad.

Comments

  • Eliseo GN
    Eliseo GN Thursday, 26 January 2017

    Excelente módulo amigo Salva, 2017 un nuevo año con nuevas ideas y nuevos retos. Go ahead!! :)

  • mario alberto G10890
    mario alberto G10890 Thursday, 26 January 2017

    Salvador como estas. Pues yo también espero aprender y espero con ansias esa serie de artículos que sin lugar a dudas parecen muy interesantes.

    Saludos desde Argentina

  • Salvador JC
    Salvador JC Thursday, 26 January 2017

    Gracias Mario.
    Es reciproco. Yo también aprendo cosas nuevas cada vez que abro la aventura de una nueva entrada. Te enriquecen muchos comentarios y el deseo de compartir ideas.
    ;-)

  • Germán Estévez
    Germán Estévez Thursday, 26 January 2017

    Tiene muy buena pinta Salvador.
    Estoy ansioso por que inicies esa serie.

  • Salvador JC
    Salvador JC Thursday, 26 January 2017

    Gracias Germán.
    +1
    Cuando acabe la serie tengo que hacer propósito de sacar tiempo para volver a salir a entrenar. Necesito mejorar mi pinta también... ;-) jajaja

  • Please login first in order for you to submit comments
  • Page :
  • 1

Check out more tips and tricks in this development video: