Variabili contestuali
Le variabili contestuali sono simili alle variabili globali, tranne che sono riferite solo sullo schermo in cui vengono create. Anche se è possibile impostare il nome dell'utente su una variabile a cui fare riferimento in tutta l'app, esistono comunque vantaggi per il fatto che le variabili contestuali non possono essere usate in altre schermate.
Può capitare di avere una funzionalità che si vuole usare in più schermate e che è basata su una variabile. Molte app, ad esempio, usano le finestre di dialogo popup per chiedere conferma di operazioni come l'eliminazione di un record. Un modo comune per l'implementazione è impostare una variabile contestuale su True quando l'utente seleziona il pulsante Elimina. A tale scopo, impostare la proprietà OnSelect del pulsante come segue.
UpdateContext({varShowPopUp: true})
Impostare quindi la proprietà Visible dei controlli popup su varShowPopUp. Questo esempio è simile a quello relativo alle variabili globali. La differenza principale è la riusabilità. Se si copiano i controlli (usando CTRL+C) in un'altra schermata, sono presenti due istanze di varShowPopUp. Queste due istanze usano lo stesso nome, ma possono avere valori diversi. Il valore di varShowPopUp in screen1 non influisce sul valore di varShowPopUp su screen2 perché ogni variabile contestuale, anche se ha lo stesso nome, ha lo stesso ambito sullo schermo in cui si trovano.
In genere, non è consigliabile riutilizzare i nomi delle variabili perché può creare confusione, ma è utile riutilizzare le funzionalità in modo indipendente su schermi diversi.
Se si è incerti nella scelta tra variabili globali o contestuali, in genere è preferibile scegliere le variabili globali. Le variabili globali sono disponibili ovunque e quindi sono più flessibili.
Un comportamento esclusivo della funzione UpdateContext consiste nella possibilità di dichiarare più di una variabile per volta. Questa operazione non è possibile con la funzione Set . Per creare più di una variabile di contesto con un'unica formula, usare una virgola tra le variabili.
UpdateContext({varCount: 1, varActive: true, varName: User().FullName})
Annotazioni
Nel modulo precedente si è accennato al fatto che l'uso della funzione User() in linea rallenta inutilmente l'app. Per questo motivo, si dovrebbe usare una variabile globale OnStart. Sebbene l'uso di una variabile contestuale per archiviare le informazioni utente migliori le prestazioni rispetto all'uso inline della funzione User(), in definitiva è meno performative di una variabile globale, perché si continuerà a chiamare sull'origine dati ogni volta che si apre la pagina. Di conseguenza, è consigliabile archiviare le informazioni utente in una variabile globale.
Per eseguire la stessa operazione con le variabili globali, è necessario procedere nel modo seguente.
Set(varCount, 1);Set(varActive, true);Set(varName, User().FullName)
Nell'unità successiva verranno fornite informazioni sull'archiviazione di tabelle di dati in una variabile di raccolta.