Variáveis contextuais
As variáveis contextuais são semelhantes às variáveis globais, exceto que só são referenciadas na tela em que são criadas. Embora seja possível definir o nome do usuário como uma variável para referência em todo o aplicativo, ainda há vantagens no fato de que as variáveis contextuais não podem ser usadas em outras telas.
Às vezes, você tem uma funcionalidade que deseja usar em várias telas e que é controlada por variável. Por exemplo, muitos aplicativos usam caixas de diálogo pop-up para confirmar tarefas, como a exclusão de um registro. Uma maneira comum de implementar é definir uma variável contextual como verdadeira quando o usuário seleciona o botão excluir. Para isso, defina a propriedade OnSelect do botão como o seguinte.
UpdateContext({varShowPopUp: true})
Em seguida, defina a propriedade Visible dos controles pop-up como varShowPopUp. Isso é semelhante ao exemplo das variáveis globais. A principal diferença é a capacidade de reutilização. Se você copiar os controles (usando Ctrl+C) para outra tela, terá duas instâncias de varShowPopUp. Essas duas instâncias usam o mesmo nome, mas podem ter valores diferentes. O valor de varShowPopUp na screen1 não afeta o valor de varShowPopUp na screen2, porque cada variável contextual, mesmo quando elas têm o mesmo nome, tem o escopo definido para a tela em que ela está localizada.
Normalmente, reutilizar nomes de variáveis não é recomendado porque pode ser confuso, mas é ótimo se você quiser reutilizar a funcionalidade de forma independente em telas diferentes.
Caso você esteja em dúvida sobre se deve usar variáveis globais ou contextuais, normalmente as variáveis globais são a resposta padrão. Variáveis globais estão disponíveis em todos os lugares, tornando-as as mais flexíveis.
Um comportamento exclusivo da função UpdateContext é que você pode declarar mais de uma variável por vez. Isso não é possível com a função Definir. Para criar mais de uma variável de contexto com uma única fórmula, use uma vírgula entre as variáveis.
UpdateContext({varCount: 1, varActive: true, varName: User().FullName})
Observação
No módulo anterior, mencionamos que o uso da função User() embutida tornará seu aplicativo desnecessariamente lento e, por esse motivo, uma variável global deve ser usada: OnStart. Embora o uso de uma variável contextual para armazenar informações do usuário melhore o desempenho em relação ao uso embutido da função User(), em última análise, ela é menos performativa do que uma variável global, pois você ainda chamará a fonte de dados sempre que a página for aberta. Assim, é recomendável armazenar as informações do usuário em uma variável global.
Para fazer a mesma coisa com variáveis globais, use a fórmula mostrada a seguir.
Set(varCount, 1);Set(varActive, true);Set(varName, User().FullName)
Na próxima unidade, você aprenderá sobre o armazenamento de tabelas de dados em uma variável de coleção.