Gli script trigger: Annullare un evento

Una delle più importanti novità della versione 10 di FileMaker Pro sono stati gli Script Trigger. Uno script trigger è uno script che viene eseguito allo scatenarsi di un evento. Fino alla versione 10 gli unici eventi che si potevano gestire erano: il click di un pulsante, l’apertura e la chiusura di un file. Ora il programmatore tramite il meccanismo degli script trigger può rispondere ad eventi tipo: il caricamento di un formato, la pressione di un tasto, l’uscita da un campo…sicuramente un bel miglioramento atteso da molti sviluppatori.

Alcuni eventi sono cancellabili, cioè lo script trigger scatenato da un evento può annullare l’evento stesso che lo ha generato. Per spiegare questo concetto mi farò aiutare da un semplicissimo esempio:

Quando un utente “esce” da un campo, si scatena l’evento SuUscitaOggetto. Programmando questo evento  è possibile annullare l’evento Uscita dal campo. Per esempio se non è stato correttamente compilato un campo l’utente non potrà spostarsi dal campo stesso…un pò drastica come soluzione ma perfetta per capire come annullare un evento.

Tutti gli eventi “annullabili” sono chiamati Pre-Event, cioè sono eventi il cui script generato viene eseguito prima dell’evento stesso. In questo modo l’evento potrà ancora essere annullato. Fanno parte di questa categoria i seguenti eventi:

SuSalvataggioOggetto, SuSalvataggioRecord, SuRipristinoRecord, SuUscitaModo.

Gli altri eventi si chiamano invece Post-Event, lo script si scatena dopo che l’evento è terminato. Questi eventi non sono annullabili. Quando infatti lo script viene eseguito l’evento è già concluso. Ecco alcuni post-event:

SuCaricamentoRecord, SuEntraraOggetto, SuEntrataModo

Come è possibile capire se un evento è annullabile? Selezionate l’evento nella finestra “Imposta Script Trigger”, se l’evento si può annullare nel parametro risultato vedrete la scritta:

“Se lo script restituisce vero, l’evento originale procede normalmente, altrimenti viene annullato”

Ma torniamo al nostro esempio: voglio implementare un meccanismo per cui un utente non potrà uscire da un campo se non l’avrà compilato. Se il campo risulterà vuoto annullerò l’evento SuUscitaOggetto del campo in questione.

Creiamo prima di tutto lo script. Per comodità userò il DB di esempio Fatture (soluzione pronta per l’uso di FileMaker 11). Utilizzo per l’esempio il campo Cognome

Lego al campo cognome uno script trigger che farà due semplici cose: verificherà la presenza di un valore nel campo, se il campo è compilato non farà nulla, se il campo non è compilato avvertirà l’utente con una finestra di dialogo e annullerà l’evento Uscita dal campo.

Come è possibile annullare un evento?

Per annullare un evento bisogna ritornare al chiamante un risultato FALSO. In FileMaker il valore FALSO equivale al valore zero. Per fare un modo che uno script ritorni un valore si utilizza l’istruzione “Esci dallo script”. Questa istruzione ha un unico parametro: il valore di ritorno.

Ecco quindi lo script:

Niente di più semplice: se lo script ritorna un valore FALSO (=0) l’evento che ha scatenato lo script,  se annullabile, verrà annullato, se invece lo script ritorna un valore VERO (diverso da 0) l’evento si concluderà normalmente.

Come spiegato prima solo gli eventi di tipo Pre-Event sono annullabili come è possibile scoprire nella finestra di FileMaker in cui si impostano gli script trigger:

In modalità struttura del nostro formato selezioniamo il campo Cognome e accediamo alla finestra Imposta Script Trigger:

Assegnamo il nostro script trigger all’evento “SuUscitaOggetto”

E ora proviamo ad uscire dal campo lasciandolo vuoto…non riusciamo!!! L’evento Uscita è stato ANNULLATO

un po’ drastica come soluzione ma rende l’idea di quello che volevo spiegarvi con questo semplice esempio.

Share