Written by nomorelogic Settembre 04, 2014, 03:29:00 pm15546 ViewsRating: 0 (0 Rates)Print
Con questo articolo vedremo come implementare una semplice animazione di attesa. Come per gli altri articoli della serie, anche questa caratteristica sarà implementata nella classe TBaseForm in modo da avere un progetto incrementale. Potete però prendere tranquillamente spunto per implementare l'animazione nei vostri progetti.
implementare l'animazione in un thread L'animazione entra in ballo quando l'utente deve attendere che l'applicazione porti a termine un certo compito - per il quale ci vuole del tempo - ma non è possibile determinarne la durata (altrimenti avremmo usato una progress bar). Visto che il mainthread è occupato a svolgere il suo compito è bene che l'animazione venga gestita in un thread separato, in questo modo l'animazione procederà per conto suo e dovremo solo ricordarci di stoppare il thread al termine. L'integrazione in uno scheletro di applicazione già esistente è utile per fare delle considerazioni su come dovrà essere implementata questa applicazione:
l'animazione verrà gestita da un thread a parte
l'applicazione permetterà di istanziare più form di più classi: ogni form dovrà avere la possibilità di gestire il suo thread a prescindere da cosa stiano facendo le altre form
dove mettere le immagini: ogni form avrà la sua animazione ma la lista delle immagini sarà unica per tutta l'applicazione; allo scopo verrà utilizzata una istanza di TImageList che sarà posizionata nella form principale e -tramite la toolbox - verrà fornito il puntatore all'istanza a tutte le form
verrà implementato un meccanismo per cui il lancio dell'animazione sarà a discrezione del programmatore ma lo stop sarà automatico al termine del lavoro (questa funzionalità verrà implementata in un secondo momento in quanto "fuori tema" rispetto all'articolo
procurarsi una animazione Non descriverò come mi sono procurato le immagini, ma il risultato finale. Nella sottocartella res trovate nr. 6 immagini png 16x16 (ed altrettanti xcf, il formato grafico di The Gimp) che rappresentano i 6 momenti dell'animazione. Queste immagini le ho poi caricate in un TImageList della form principale e ho assegnato il puntatore alla "toolbox" di modo da facilitare l'acquisizione di queste immagini per tutte le istanze delle form che verranno create.
il thread Il thread lo potete trovare nel file ubaseform.pas