TplFmxClock, un orologio multiuso per Delphi

TplFmxClock è il nuovo componente per Delphi rilasciato come open source da morandotti.it. Si tratta di un flessibile e versatile orologio analogico, digitale o misto che può trovare innumerevoli applicazioni.

Morandotti.it annuncia il rilascio della prima versione pubblica di TplFmxClock, componente per la libreria FMX di Delphi nato dalla necessità di usare un orologio che si prestasse a soddisfare diverse esigenze. Ci serviva, infatti, un componente utilizzabile come un semplice orologio digitale o come un più sofisticato cronometro per eventi sportivi. Un’approfondita ricerca ha rilevato l’assenza di prodotti simili, per cui è stato implementato questo nuovo orologio. In esso sono presenti due motori indipendenti: uno controlla la parte analogica e l’altro quella digitale. Usandoli in alternativa o accoppiando le loro funzioni è possibile ottenere effetti gradevoli ed efficaci.

TplFmxClock discende da TCircle; ciò consente di sfruttarne tutte le capacità grafiche anche per creare immagini di sfondo che possono rendere l’orologio analogico o digitale più accattivante. In questa presentazione, però, ci concentreremo solo su una breve descrizione tecnica delle interfacce.

TplAnalogClock

TplAnalogClock è la classe che implementa il motore dell’orologio analogico. Espone tre proprietà:

  • Active: boolean, abilita o disabilità l’aggiornamento automatico dell’orologio analogico con l’ora esatta.
  • Dots: TplDots, permette di gestire i puntini luminosi dei minuti.
  • Hands: TplHands, permette di gestire le lancette dell’orologio.

TplDots

E’ la classe che implementa la gestione dei puntini luminosi che si trovano al posto dei minuti. Poiché il componente è stato progettato per dare informazioni sul tempo trascorso durante una gara sportiva, sono divisi in quattro casi:

  • PastTime: il tempo trascorso dall’inizio della gara (o da uno dei tempi in cui è divisa);
  • PresentTime: il minuto in corso dall’avvio del cronometraggio;
  • FutureTime: il tempo che manca alla fine del tempo regolamentare
  • ExtraTime: eventuali minuti di recupero.

Per ciascuno di questi periodi si può definire la durata e il colore dei punti. Ci sono anche proprietà per impostare il colore di default (Color), la visibilità (Visible) e la larghezza dei punti (DotsScale).

TplHands

La gestione delle lancette, al momento, è meno sofisticata; essa consente di gestire separatamente, per la lancetta delle ore, dei minuti e dei secondi le proprietà published seguenti:

  • Color: TAlphaColor, è il colore con cui sarà disegnata la lancetta;
  • HScale: Single, è lo spessore della lancetta in rapporto alla larghezza dell’orologio;
  • MinWidth: integer, definisce lo spessore minimo in pixel della lancetta;
  • Visible: boolean, indica la visibilità della lancetta
  • VScale: Single, è l’altezza della lancetta in rapporto all’altezza dell’orologio.

Per accedere alle singole lancette in runtime, si può usare la proprietà public Hand. Altri metodi e proprietà pubbliche hanno un uso essenzialmente interno e nelle prossime release potrebbero non essere più disponibili.

Per il momento, non è possibile sostituire il disegno delle lancette con un’immagine, né elaborarlo in altra maniera.

La demo che accompagna il componente mostra, nella parte analogica, come impostare le diverse proprietà per avere effetti differenti.

TplDigitalClock

L’orologio digitale è gestito attraverso un secondo motore che, in ultima analisi, si limita a gestire un’etichetta TLabel con l’ora formattata secondo l’impostazione data dall’utente.

Le proprietà che l’interfaccia dell’oggetto espone sono:

  • Active: boolean, abilita o disabilità l’aggiornamento automatico dell’orologio analogico con l’ora esatta;
  • StyledSettings: TStyledSettings, è un wrapper all’analoga proprietà dell’etichetta;
  • TextSettings: TTextSettings, è un wrapper all’analoga proprietà dell’etichetta;
  • TimeFormat: string, contiene la stringa di formattazione dell’orario.
  • Visible: boolean, permette di mostrare o nascondere l’etichetta.

Oltre a queste proprietà published, è possibile accedere direttamente all’etichetta attraverso la proprietà public ClockLabel: TLabel; va da sé che si dovrebbe limitare l’accesso solo ai casi strettamente necessari e in una futura versione la proprietà potrebbe non essere più disponibile.

Problemi noti

A seguito di lunghi test precedenti il rilascio, TplFmxClock è abbastanza stabile. L’unico problema noto è che l’etichetta dell’orologio digitale non è disegnata correttamente in design mode; tuttavia, funziona perfettamente in runtime.

Demo di TplFmxClock

Il codice, come detto sopra, è accompagnato da una piccola demo che mette in luce gli aspetti principali del componente. Volutamente spartana, si compone di due schermate; la prima, sulla parte analogica, completamente configurabile, mentre la seconda mostra l’orologio digitale integrato dai puntini che rappresentano i secondi trascorsi dall’inizio del minuto.

TplFmxClock è disponibile su Github e può essere usato liberamente nel rispetto della licenza MIT.

Foto di copertina di SplitShire da Pixabay.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *