Partilhar via


Compreender as variáveis em aplicações de tela

Se você usou outra ferramenta de programação, como Visual Basic ou JavaScript, você pode perguntar: Onde estão as variáveis? O Power Apps funciona de forma diferente e precisa de uma abordagem diferente. Em vez de olhar para as variáveis ao criar uma aplicação de tela, pergunte-se a si próprio: O que faria no Excel?

Em outras ferramentas, você pode executar explicitamente um cálculo e armazenar o resultado em uma variável. Mas as Power Apps e o Excel recalculam automaticamente as fórmulas à medida que os dados de entrada mudam, pelo que normalmente não precisa de criar ou atualizar variáveis. Usando essa abordagem, você cria, entende e mantém seu aplicativo com mais facilidade.

Às vezes, você precisa usar variáveis no Power Apps, que estende o modelo do Excel adicionando fórmulas de comportamento. Estas fórmulas são executadas quando, por exemplo, um utilizador seleciona um botão. Dentro de uma fórmula de comportamento, geralmente é útil definir uma variável para uso em outras fórmulas.

Em geral, evite utilizar variáveis. Mas, às vezes, apenas uma variável permite que você crie a experiência desejada. As variáveis são criadas implicitamente e digitadas quando aparecem em funções que definem os respetivos valores.

Traduzir o Excel no Power Apps

Excel

Vamos rever o funcionamento do Excel. Uma célula pode ter um valor, como um número ou uma cadeia de caracteres, ou uma fórmula baseada nos valores de outras células. Quando introduz um valor diferente numa célula, o Excel recalcula automaticamente quaisquer fórmulas que dependam do novo valor. Não é necessário fazer nenhuma programação para habilitar esse comportamento.

No exemplo a seguir, a célula A3 usa a fórmula A1+A2. Se A1 ou A2 mudar, A3 será recalculado automaticamente para mostrar a alteração. Esse comportamento não requer nenhuma codificação fora da fórmula em si.

Animação recalculando a soma de dois números no Excel.

O Excel não tem variáveis. O valor de uma célula com uma fórmula muda com base em sua entrada, mas não há como lembrar o resultado de uma fórmula e armazená-lo em uma célula ou em qualquer outro lugar. Se você alterar o valor de uma célula, toda a planilha poderá ser alterada e todos os valores calculados anteriormente serão perdidos. Você pode copiar e colar células, mas isso é manual e não é possível com fórmulas.

Power Apps

As aplicações que cria nas Power Apps funcionam muito como o Excel. Em vez de atualizar células, você adiciona controles em qualquer lugar de uma tela e os nomeia para uso em fórmulas.

Por exemplo, você pode copiar o comportamento do Excel em um aplicativo adicionando um controle Label chamado Label1 e dois controles de entrada Text chamados TextInput1 e TextInput2. Se você definir a propriedade Text de Label1 como TextInput1 + TextInput2, ela sempre mostrará a soma dos números em TextInput1 e TextInput2 automaticamente.

Calcular a soma de dois números no Power Apps.

Repare que o controlo Label1 está selecionado e que mostra a respetiva fórmula Text na barra de fórmulas, na parte superior do ecrã. A fórmula TextInput1 + TextInput2 cria uma dependência entre esses controles, assim como dependências entre células em uma pasta de trabalho do Excel. Vamos alterar o valor de TextInput1:

Animação do cálculo da soma de dois números no Power Apps.

A fórmula para Label1 recalcula automaticamente e mostra o novo valor.

No Power Apps, você usa fórmulas para definir não apenas o valor principal de um controle, mas também propriedades como formatação. No exemplo seguinte, uma fórmula para a propriedade Color do rótulo mostra automaticamente valores negativos em vermelho. A função If parece familiar do Excel:

If( Value(Label1.Text) < 0, Red, Black )

Animação de formatação condicional.

Você usa fórmulas para muitos cenários:

  • Quando o GPS do dispositivo está ativado, um controlo de mapa mostra a sua localização atual com uma fórmula que utiliza Location.Latitude e Location.Longitude. À medida que se move, o mapa regista automaticamente a sua localização.
  • Outros usuários atualizam fontes de dados. Por exemplo, outras pessoas da sua equipa poderão atualizar itens numa lista. Quando você atualiza uma fonte de dados, todas as fórmulas dependentes são recalculadas automaticamente para mostrar os dados atualizados. Por exemplo, você pode definir a propriedade Items de uma galeria como a fórmula Filter( SharePointList ), que mostra automaticamente o conjunto de registros recém-filtrado.

Benefícios

A utilização de fórmulas na criação de aplicações tem muitas vantagens:

  • Se conhece o Excel, também conhece o Power Apps. Os modelos e a linguagem das fórmulas são iguais.
  • Se você já usou outras ferramentas de programação, pense em quanto código você precisaria para fazer esses exemplos. No Visual Basic, você escreveria um manipulador de eventos para o evento change em cada controle de entrada de texto. O código para fazer o cálculo em cada um é redundante e pode ficar fora de sincronia, ou você precisaria escrever uma sub-rotina comum. No Power Apps, faz tudo isto com uma única fórmula de uma só linha.
  • Para ver de onde vem o texto de Label1, você sabe exatamente onde procurar: a fórmula na propriedade Text . Não há outra maneira de alterar o texto desse controle. Em uma ferramenta de programação tradicional, qualquer manipulador de eventos ou sub-rotina pode alterar o valor do rótulo, de qualquer lugar do programa. Isso torna difícil rastrear quando e onde uma variável mudou.
  • Se você alterar um controle deslizante e, em seguida, mudar de ideia, poderá alterá-lo de volta ao seu valor original. É como se nada tivesse mudado: o aplicativo mostra os mesmos valores de controle de antes. Não há consequências para experimentar e perguntar "e se", assim como no Excel.

Em geral, se você pode fazer algo com uma fórmula, você está melhor. Ponha o motor de fórmulas do Power Apps a trabalhar por si.

Saber quando utilizar variáveis

Vamos modificar a nossa calculadora simples para que funcione como uma antiga máquina de somar, com um total corrente. Ao selecionar o botão Adicionar , você adiciona um número ao total em execução. Ao selecionar o botão Limpar , você redefine o total de execução para zero.

Apresentar Descrição
Aplicação com um controlo de entrada de Texto, uma etiqueta e dois botões. Quando a aplicação é iniciada, o total em execução é 0.

O ponto vermelho representa o dedo do utilizador na caixa de entrada de texto, em que o utilizador introduz 77.
O controlo de introdução de texto contém 77 e o botão Adicionar está a ser pressionado. O utilizador seleciona o botão Adicionar.
O total é 77 e outro 77 é adicionado ao mesmo. 77 é adicionado ao total em execução.

O utilizador seleciona novamente o botão Adicionar.
O total é 154 antes de ser apagado. 77 é adicionado novamente ao total em execução, resultando em 154.

O utilizador seleciona o botão Limpar.
O total está desmarcado. O total em execução é reposto para 0.

A nossa máquina de somar utiliza uma coisa que não existe no Excel - botões. Nesta aplicação, não pode utilizar apenas fórmulas para calcular o total corrente, porque o valor deste depende de uma série de ações realizadas pelo utilizador. Em vez disso, você registra e atualiza o total em execução manualmente. A maioria das ferramentas de programação armazenam estas informações numa variável.

Às vezes, você precisa de uma variável para que seu aplicativo se comporte da maneira desejada, mas essa abordagem vem com ressalvas:

  • Atualiza o total corrente manualmente. O recálculo automático não faz isso por você.
  • O total em execução não é calculado com base nos valores de outros controles. Depende de quantas vezes o usuário seleciona o botão Adicionar e qual valor está no controle de entrada de texto de cada vez. O usuário digitou 77 e selecionou Adicionar duas vezes, ou inseriu 24 e 130 para cada adição? Não dá para perceber a diferença depois que o total chega a 154.
  • As alterações ao total podem resultar de diferentes ações. Neste exemplo, os botões Adicionar e Limpar atualizam o total. Se o aplicativo não se comportar da maneira esperada, qual botão causa o problema?

Utilize uma variável global

Para criar uma máquina de somar, precisa de uma variável que vai conter o total corrente. As variáveis mais simples de usar no Power Apps são variáveis globais.

Como funcionam as variáveis globais:

  • Defina o valor de uma variável global com a função set . Set( MyVar, 1 ) define a variável global MyVar como o valor 1.
  • Use a variável global fazendo referência ao nome usado com a função set . Neste caso, MyVar retorna 1.
  • As variáveis globais podem conter qualquer valor, incluindo cadeias, números, registos e tabelas.

Reconstrua a máquina de adição usando uma variável global:

  1. Adicione um controle de entrada de texto chamado TextInput1 e dois botões chamados Button1 e Button2.

  2. Defina a propriedade Text de Button1 como "Add" e defina a propriedade Text de Button2 como "Clear".

  3. Para atualizar o total em execução quando um usuário seleciona o botão Adicionar , defina sua propriedade OnSelect para esta fórmula:

    Set( RunningTotal, RunningTotal + TextInput1 )

    Esta fórmula cria RunningTotal como uma variável global que contém um número devido ao + operador. Referência RunningTotal em qualquer parte da aplicação. Quando o utilizador abre a aplicação, RunningTotal tem um valor inicial em branco.

    Na primeira vez que um usuário seleciona o botão Adicionar e set é executado, RunningTotal é definido como o valor RunningTotal + TextInput1.

    Captura de tela da propriedade OnSelect do botão Adicionar definida para a função Set.

  4. Para definir o total de execução como 0 quando o usuário seleciona o botão Limpar , defina sua propriedade OnSelect para esta fórmula:

    Set( RunningTotal, 0 )

    Captura de tela da propriedade OnSelect do botão Limpar definida para a função Set.

  5. Adicione um controlo de Etiqueta e defina a respetiva propriedade Text como RunningTotal.

    Esta fórmula recalcula automaticamente e mostra ao utilizador o valor de RunningTotal à medida que muda com base nos botões que o utilizador seleciona.

    Captura de ecrã da propriedade Text da etiqueta definida com o nome da variável.

  6. Pré-visualização da aplicação. Insira um número na caixa de texto e selecione o botão Adicionar algumas vezes. Quando estiver pronto, retorne à experiência de criação usando a chave Esc .

    Captura de tela do controle de entrada de texto com um valor e o rótulo com o total em execução.

  7. Para mostrar o valor da variável global, selecione Variáveis no menu de criação de aplicações.

    Captura de tela do menu Variáveis e coleções.

  8. Para mostrar todos os locais onde a variável é definida e usada, selecione-a sob Variáveis globais.

    Captura de tela da lista de locais onde a variável é usada.

Tipos de variáveis

O Power Apps tem três tipos de variáveis:

Tipo de variável Âmbito Descrição Funções que estabelecem
Variáveis globais App Use variáveis globais para armazenar um número, cadeia de texto, booleano, registro, tabela ou outro valor que você referenciar em qualquer lugar do aplicativo. Set
Variáveis de contexto Ecrã Use variáveis de contexto para passar valores para uma tela, como parâmetros em outros idiomas. Você faz referência a eles a partir de apenas uma tela. UpdateContext
Navigate
Collections App Use coleções para manter uma tabela à qual você faz referência em qualquer lugar do aplicativo. Você pode alterar o conteúdo da tabela e salvá-lo no dispositivo local para uso posterior. Collect
ClearCollect

Criar e remover variáveis

As variáveis são criadas implicitamente quando aparecem em uma função set, UpdateContext, Navigate, Collect ou ClearCollect . Para declarar uma variável e seu tipo, basta incluí-la em qualquer uma dessas funções em qualquer lugar do seu aplicativo. Essas funções não criam variáveis; apenas preenchem variáveis com valores. Você nunca declara variáveis explicitamente como faria em outra ferramenta de programação, e toda a digitação está implícita a partir do uso.

Por exemplo, poderá ter um controlo Botão com uma fórmula OnSelect igual a Set( X, 1 ). Esta fórmula estabelece X como variável com um tipo de número. Você usa X em fórmulas como um número, e essa variável tem um valor de branco depois de abrir o aplicativo, mas antes de selecionar o botão. Quando seleciona o botão, atribui a X o valor 1.

Se você adicionar outro botão e definir sua propriedade OnSelect como set( X, "Hello" ), ocorrerá um erro porque o tipo (cadeia de texto) não corresponde ao tipo no anterior set (número). Todas as definições implícitas da variável têm de concordar no tipo. Novamente, tudo isso acontece porque você menciona X em fórmulas, não porque qualquer uma dessas fórmulas realmente é executada.

Remova uma variável removendo todas as funções set, UpdateContext, Navigate, Collect ou ClearCollect que estabelecem implicitamente a variável. Sem estas funções, a variável não existe. Remova também todas as referências à variável porque elas causam um erro.

Tempo de vida variável e valor inicial

As variáveis permanecem na memória enquanto o aplicativo é executado. Quando o aplicativo é fechado, os valores nas variáveis são perdidos.

Armazene o conteúdo de uma variável em uma fonte de dados usando as funções Patch ou Collect . Armazene valores em coleções no dispositivo local usando a função SaveData .

Quando o usuário abre o aplicativo, todas as variáveis começam com um valor inicial em branco.

Ler variáveis

Use o nome da variável para ler seu valor. Por exemplo, defina uma variável com esta fórmula:

Set( Radius, 12 )

Em seguida, use Radius em qualquer lugar que você usar um número, e ele é substituído por 12:

Pi() * Power( Radius, 2 )

Se atribuir a uma variável de contexto o mesmo nome que uma variável global ou uma coleção, a variável de contexto terá precedência. Você pode fazer referência à variável global ou coleção usando o operador de desambiguação[@Radius].

Nomes de variáveis reservados

Não use nenhum dos seguintes nomes de variáveis. Esses nomes são propriedades do aplicativo, e usá-los pode causar colisões de nomes variáveis que resultam em um comportamento inesperado do aplicativo.

  • ActiveScreen
  • DesignHeight
  • DesignWidth
  • Height
  • MinScreenHeight
  • MinScreenWidth
  • SizeBreakpoints
  • StudioVersion
  • TestCaseId
  • A testar
  • TestSuiteId
  • Tema
  • Width

Usar uma variável de contexto

Vamos ver como você cria uma máquina de adição usando uma variável de contexto em vez de uma variável global.

Como funcionam as variáveis de contexto

  • Estabelece e define variáveis de contexto de conjunto usando a função UpdateContext ou Navigate. Quando o aplicativo é iniciado, o valor inicial de cada variável de contexto fica em branco.
  • As variáveis de contexto são atualizadas com registos. Em outras ferramentas de programação, você geralmente usa "=" para atribuição, como "x = 1". Por sua vez, nas variáveis de contexto utiliza-se { x: 1 }. Quando utiliza uma variável de contexto, utilize o respetivo nome diretamente sem a sintaxe do registo.
  • Também pode definir uma variável de contexto quando usar a função Navigate para mostrar um ecrã. Se você pensa em uma tela como um tipo de procedimento ou sub-rotina, essa abordagem é como a passagem de parâmetros em outras ferramentas de programação.
  • À exceção de Navigate, as variáveis de contexto estão limitadas ao contexto de um único ecrã, a partir do qual recebem o nome. Não é possível usá-los ou defini-los fora desse contexto.
  • As variáveis de contexto podem conter qualquer valor, incluindo cadeias, números, registos e tabelas.

Reconstrua a máquina de adição usando uma variável de contexto:

  1. Adicione um controlo de entrada de texto, denominado TextInput1, e dois botões, Button1 e Button2.

  2. Defina a propriedade Text de Button1 como "Add" e defina a propriedade Text de Button2 como "Clear".

  3. Para atualizar o total corrente sempre que um utilizador seleciona o botão Adiciona, defina a respetiva propriedade OnSelect como esta fórmula:

    UpdateContext( { RunningTotal: RunningTotal + TextInput1 } )

    Esta fórmula estabelece RunningTotal como uma variável de contexto que contém um número devido ao + operador. Você faz referência a RunningTotal em qualquer parte desta tela. Quando o utilizador abre a aplicação, RunningTotal tem um valor inicial em branco.

    Na primeira vez que o usuário seleciona o botão Adicionar e UpdateContext é executado, RunningTotal é definido como o valor RunningTotal + TextInput1.

    Propriedade OnSelect do botão Adicionar com updatecontext.

  4. Para definir o total corrente como 0 sempre que o utilizador seleciona o botão Clear, defina a respetiva propriedade OnSelect como esta fórmula:

    UpdateContext( { RunningTotal: 0 } )

    Novamente, use UpdateContext com a fórmula UpdateContext( { RunningTotal: 0 } ).

    Propriedade OnSelect do botão Limpar com updatecontext.

  5. Adicione um controlo de Etiqueta e defina a respetiva propriedade Text como RunningTotal.

    Esta fórmula é recalculada automaticamente e mostra ao utilizador o valor de RunningTotal, à medida que é alterado com base nos botões que ele seleciona.

    Propriedade texto da etiqueta.

  6. Pré-visualização da aplicação. Insira um número na caixa de texto e selecione o botão Adicionar algumas vezes. Quando estiver pronto, retorne à experiência de criação usando a tecla Esc .

    O controlo de entrada de texto mostra um valor e a etiqueta mostra o total a executar.

  7. Defina o valor de uma variável de contexto enquanto navega para uma tela para passar "contexto" ou "parâmetros" de uma tela para outra. Para demonstrar esta técnica, introduza um ecrã, introduza um botão e, em seguida, defina a propriedade OnSelect para esta fórmula:

    Navigate( Screen1, None, { RunningTotal: -1000 } )

    Propriedade OnSelect de um botão.

    Mantenha pressionada a tecla Alt enquanto seleciona este botão para mostrar Screen1 e defina a variável de contexto RunningTotal como -1000.

    Screen1 está aberto.

  8. Para mostrar o valor da variável de contexto, efetue uma das seguintes ações:

    • Se estiver a usar a versão de pré-visualização do Power Apps Studio, selecione Variáveis no menu de criação de aplicações.

    • Se estiver a utilizar a versão clássica do Power Apps Studio, selecione o menu Ficheiro e, em seguida, selecione Variáveis no painel esquerdo.

  9. Para mostrar onde a variável de contexto é definida e usada, selecione-a sob Variáveis de contexto.

Usar uma coleção

Vamos criar uma máquina de adição usando uma coleção. Como uma coleção contém uma tabela que é fácil de alterar, essa máquina de adição mantém uma "fita de papel" de cada valor à medida que você a insere nela.

Como funcionam as coleções

  • Utilize a função ClearCollect para criar e definir as coleções. Você pode usar a função Collect em vez disso, mas ela requer outra variável em vez de substituir a antiga.
  • Uma coleção é um tipo de fonte de dados e uma tabela. Para obter um único valor em uma coleção, use a função First e obtenha um campo do registro resultante. Se você usar um único valor com ClearCollect, este é o campo Valor , como neste exemplo:
    First(VariableName).Value

Crie uma máquina de adição usando uma coleção:

  1. Adicione um controlo de Entrada de texto, denominado TextInput1, e dois botões, Button1 e Button2.

  2. Defina a propriedade Text de Button1 como "Add" e defina a propriedade Text de Button2 como "Clear".

  3. Para atualizar o total corrente sempre que um utilizador seleciona o botão Adiciona, defina a respetiva propriedade OnSelect como esta fórmula:

    Collect( Fita de papel, TextInput1.Text )

    A simples existência desta fórmula estabelece PaperTape como uma coleção que mantém uma tabela de cadeias de texto de uma única coluna. Pode referenciar PaperTape em qualquer parte desta aplicação. Sempre que um utilizador abre esta aplicação, PaperTape é uma tabela vazia.

    Quando esta fórmula é executada, adiciona o valor novo ao fim da coleção. Uma vez que estamos a adicionar um valor único, Collect coloca-o automaticamente numa tabela de coluna única e o nome de coluna é Value, que vamos utilizar mais tarde.

    Propriedade OnSelect do botão Adicionar com collect.

  4. Para limpar o registo em papel quando o utilizador seleciona o botão Clear, defina a respetiva propriedade OnSelect como esta fórmula:

    Clear(PaperTape)

    ![Propriedade OnSelect do bot1 Limpar. Para executar a máquina de adição, selecione F5 para abrir a Pré-visualização, introduza números no controlo de introdução de texto e selecione botões.

    Captura de ecrã do controlo de entrada de Texto a mostrar um valor e a etiqueta a mostrar o total corrente. label.](media/working-with-variables/papertape-3.png)

  5. Para executar a máquina de somar, prima F5 para abrir a Pré-visualização, introduza números no controlo de entrada de texto e selecione botões.

    O controlo de entrada de Texto mostra um valor e a etiqueta mostra o total a executar.

  6. Para retornar ao espaço de trabalho padrão, selecione Esc.

  7. Para apresentar a fita de papel, insira um controlo da Tabela de Dados e defina os seus **[Itens](controles/propriedades1. Para ver os valores na sua coleção, efetue uma das seguintes ações:

    • Se estiver a utilizar a versão de pré-visualização do Power Apps Studio, selecione Variáveis no menu de criação da aplicação e, em seguida, selecione Coleções.

    • Se você estiver usando a versão clássica do Power Apps Studio, selecione Coleções no menu Arquivo . Para ver os valores na sua coleção, efetue uma das seguintes ações:

    • Se estiver a usar a versão de pré-visualização do Power Apps Studio, selecione Variáveis no menu de criação de aplicações e, em seguida, selecione Coleções.

    • Se estiver a usar a versão clássica do Power Apps Studio, selecione Coleções no menu Ficheiro.

  8. Para armazenar e obter sua coleção, adicione mais dois controles de botão e defina suas propriedades Text como Carregar e Salvar. Defina a propriedade OnSelect do botão Load (Carregar) como esta fórmula:

    Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )

    Tem de limpar a coleção primeiro, pois LoadData vai acrescentar os valores armazenados ao final da coleção.

    Propriedade OnSelect do botão Carregar.

  9. Defina a propriedade OnSelect do botão Guardar para esta fórmula:

    SaveData( PaperTape, "StoredPaperTape" )

    Propriedade OnSelect* do botão Guardar.

  10. Visualize novamente selecionando F5, insira números no controle de entrada de texto e selecione botões. Selecione o botão Save. Feche e atualize a aplicação e, em seguida, selecione o botão Load para atualizar a coleção.

Nota

As funções SaveData e LoadData funcionam no Power Apps Mobile, mas não no Power Apps Studio ou no leitor Web para o Power Apps.