Lógica imperativa

Nota

O Microsoft Power Fx é o novo nome da linguagem de fórmula para aplicativos de tela. Estes artigos são um trabalho em andamento à medida que extraímos a linguagem de aplicativos de tela, a integramos a outros produtos do Microsoft Power Platform e a disponibilizamos como software livre. Comece com Visão geral do Microsoft Power Fx para obter uma introdução à linguagem.

A maioria das fórmulas do Microsoft Power Fx calcula um valor. Como uma planilha do Excel, o recálculo ocorre automaticamente à medida que os valores são alterados. Por exemplo, talvez você queira mostrar o valor em um controle Label em vermelho se o valor for menor do que zero ou em preto, se for maior. Você pode definir a propriedade Color desse controle como esta fórmula:

If( Value(TextBox1.Text) >= 0, Color.Black, Color.Red )

Nesse contexto, o que significa quando o usuário seleciona um controle Button? Nenhum valor foi alterado, portanto, não há nada de novo para calcular. O Excel não tem nenhum equivalente para um controle Button.

Ao selecionar um controle Button, o usuário inicia uma sequência de ações ou comportamentos, que alterarão o estado do aplicativo:

  • Alterar a tela que é exibida: funções Back.
  • Controlar um sina somente (Power Apps only)l: funções Enable e Disable.
  • Renovar, atualizar ou remover itens em uma fonte de dados: funções Refresh, Update, UpdateIf, Patch, Remove, RemoveIf.
  • Atualizar uma variável de contexto (somente tela do Power Apps): função UpdateContext.
  • Criar, atualizar ou remover itens em uma coleção: funções Collect, Clear, ClearCollect.

Como essas funções alteram o estado do aplicativo, elas não podem ser recalculadas automaticamente. Você pode usá-las nas fórmulas para as propriedades OnSelect, OnVisible, OnHidden e outras propriedades On..., que são chamadas de fórmulas de comportamento.

Mais de uma ação

Use ponto e vírgula para criar uma lista de ações a serem executadas. Por exemplo, é possível atualizar uma variável de contexto e, em seguida, retornar para a tela anterior:

UpdateContext( { x: 1 } ); Back()

As ações são executadas na ordem em que aparecem na fórmula. A próxima função não será iniciada até que a função atual seja concluída. Se ocorrer um erro, as funções subsequentes poderão não ser iniciadas.