Entender variáveis no PowerAppsUnderstand variables in PowerApps

Se você já usou outra ferramenta de programação, como Visual Basic ou JavaScript, deve estar se perguntando: onde estão as variáveis?If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? O PowerApps é um pouco diferente e exige uma abordagem diferente.PowerApps is a little different and requires a different approach. Em vez de buscar uma variável, pergunte-se: O que eu faria no Excel?Instead of reaching for a variable, ask yourself: What would I do in Excel?

Em outras ferramentas, você pode ter realizado explicitamente um cálculo e armazenado o resultado em uma variável.In other tools, you may have explicitly performed a calculation and stored the result in a variable. No entanto, o PowerApps e o Excel automaticamente recalculam fórmulas à medida que os dados de entrada mudam, por isso geralmente não é necessário criar nem atualizar as variáveis.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. Ao utilizar essa abordagem sempre que possível, é mais fácil criar, compreender e manter seu aplicativo.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

Em alguns casos, você precisará usar variáveis no PowerApps, que estende o modelo do Excel, adicionando fórmulas de comportamento.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Essas fórmulas são executadas quando, por exemplo, um usuário seleciona um botão.These formulas run when, for example, a user selects a button. Dentro de uma fórmula de comportamento, geralmente, é útil definir uma variável a ser usada em outras fórmulas.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

Em geral, evite usar variáveis.In general, avoid using variables. Mas, às vezes, apenas uma variável pode habilitar a experiência que você deseja.But sometimes only a variable can enable the experience you want.

Converter Excel em PowerAppsTranslate Excel into PowerApps

ExcelExcel

Vamos examinar como o Excel funciona.Let's review how Excel works. Uma célula pode conter um valor, como um número ou uma cadeia de caracteres ou uma fórmula com base nos valores de outras células.A cell can contain a value, such as a number or a string, or a formula that's based on the values of other cells. Depois que o usuário insere um valor diferente em uma célula, o Excel recalcula automaticamente todas as fórmulas que dependem do valor novo.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. Você não precisa fazer nenhuma programação para habilitar esse comportamento.You don't have to do any programming to enable this behavior.

O Excel não tem variáveis.Excel doesn't have variables. O valor de uma célula que contém uma fórmula muda com base em sua entrada, mas não há nenhuma maneira de lembrar o resultado de uma fórmula e armazená-lo em uma célula ou em qualquer outro lugar.The value of a cell that contains a formula changes based on its input, but there's no way to remember the result of a formula and store it in a cell or anywhere else. Se você alterar o valor de uma célula, a planilha inteira poderá ser alterada e qualquer valor calculado anteriormente será perdido.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Um usuário do Excel pode copiar e colar células, mas isso está sob o controle manual do usuário e não é possível com fórmulas.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Aplicativos que você cria no PowerApps se comportam de maneira muito parecida com o Excel.Apps that you create in PowerApps behave very much like Excel. Em vez de atualizar células, é possível adicionar controles em qualquer local que desejar em uma tela e nomeá-los para uso em fórmulas.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Por exemplo, você pode replicar o comportamento do Excel em um aplicativo adicionando um controle Rótulo, chamado TextBox1, e dois controles Entrada de texto, chamados TextInput1 e TextInput2.For example, you can replicate the Excel behavior in an app by adding a Label control, named TextBox1, and two Text input controls, named TextInput1 and TextInput2. Se você definir a propriedade Texto de TextBox1 como TextInput1 + TextInput2, ela sempre exibirá a soma de quaisquer números que estiverem em TextInput1 e TextInput2 automaticamente.If you then set the Text property of TextBox1 to TextInput1 + TextInput2, it will always shows the sum of whatever numbers are in TextInput1 and TextInput2 automatically.

Observe que o controle TextBox1 está selecionado, mostrando sua fórmula de Texto na barra de fórmulas na parte superior da tela.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Aqui, encontramos a fórmula TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Esta fórmula cria uma dependência entre esses controles, assim como as dependências são criadas entre as células em uma planilha do Excel.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Vamos alterar o valor de TextInput1:Let's change the value of the TextInput1:

A fórmula para TextBox1 foi automaticamente recalculada, exibindo o novo valor.The formula for TextBox1 has been automatically recalculated, showing the new value.

no PowerApps, você pode usar fórmulas para determinar não apenas o valor principal de um controle, mas também propriedades como a formatação.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. No próximo exemplo, uma fórmula para a propriedade Color do rótulo mostrará automaticamente os valores negativos em vermelho.In the next example, a formula for the Color property of the label will automatically show negative values in red. A função If deve ser bem semelhante à do Excel:The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

Agora, se o resultado de nosso cálculo em TextBox1 for negativo, o número será exibido em vermelho:Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

Você pode usar fórmulas para uma ampla variedade de cenários:You can use formulas for a wide variety of scenarios:

  • Ao usar o GPS do seu dispositivo, um controle de mapa pode exibir seu local atual com uma fórmula que usa Location.Latitude e Location.Longitude.By using your device's GPS, a map control can display your current location with a formula that uses Location.Latitude and Location.Longitude. À medida que você se move, o mapa rastreará automaticamente seu local.As you move, the map will automatically track your location.
  • Outros usuários podem atualizar as fontes de dados.Other users can update data sources. Por exemplo, outras pessoas de sua equipe podem atualizar itens em uma lista do SharePoint.For example, others on your team might update items in a SharePoint list. Quando você atualiza uma fonte de dados, todas as fórmulas dependentes são recalculadas automaticamente para refletir os dados atualizados.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. Ao aprofundar ainda mais o exemplo, você poderá definir a propriedade Itens de uma galeria como a fórmula Filter( SharePointList), que exibirá automaticamente o conjunto de registros recém-filtrado.Furthering the example, you might set a gallery's Items property to the formula Filter( SharePointList ), which will automatically display the newly filtered set of records.

BenefíciosBenefits

Usar fórmulas para criar aplicativos tem muitas vantagens:Using formulas to build apps has many advantages:

  • Se você conhece o Excel, também conhece o PowerApps.If you know Excel, you know PowerApps. O modelo e a linguagem de fórmula são os mesmos.The model and formula language are the same.
  • Se você usou outras ferramentas de programação, pense na quantidade de códigos necessária para executar esses exemplos.If you've used other programming tools, think about how much code would be required to accomplish these examples. No Visual Basic, você precisaria escrever um manipulador de eventos para o evento de alteração em cada controle de entrada de texto.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. O código para realizar o cálculo em cada um deles é redundante e pode ficar fora de sincronia, ou você precisaria escrever uma sub-rotina comum.The code to perform the calculation in each of these is redundant and could get out of sync, or you'd need to write a common subroutine. No PowerApps, você realizou tudo com uma única fórmula de uma linha.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Para compreender de onde o texto de TextBox1 é proveniente, você sabe exatamente onde procurar: a fórmula na propriedade Texto.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. Não há nenhuma outra forma de afetar o texto deste controle.There's no other way to affect the text of this control. Em uma ferramenta de programação tradicional, qualquer manipulador de eventos ou sub-rotina poderia alterar o valor do rótulo, de qualquer lugar no programa.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. Isso pode dificultar o rastreamento de quando e onde uma variável foi alterada.This can make it hard to track down when and where a variable was changed.
  • Se o usuário altera um controle deslizante e, em seguida, muda de ideia, ele pode alterar o controle deslizante de volta para seu valor original.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. E é como se nada nunca tivesse sido alterado: o aplicativo mostrará os mesmos valores de controle como fazia antes.And it's as if nothing had ever changed: the app shows the same control values as it did before. Não há nenhuma ramificação para experimentar e perguntar "e se", assim como não há nada no Excel.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

Em geral, se você puder obter um efeito usando uma fórmula, será melhor.In general, if you can achieve an effect by using a formula, you'll be better off. Deixe que o mecanismo da fórmula no PowerApps trabalhe para você.Let the formula engine in PowerApps work for you.

Saber quando usar variáveisKnow when to use variables

Vamos alterar nosso adicionador simples para atuar como uma calculadora antiga, com um total acumulado.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Se você selecionar um botão Adicionar, um número será adicionado ao total acumulado.If you select an Add button, you'll add a number to the running total. Se você selecionar um botão Limpar, redefinirá o total acumulado para zero.If you select a Clear button, you'll reset the running total to zero.

Nossa calculadora usa algo que não existe no Excel: um botão.Our adding machine uses something that doesn't exist in Excel: a button. Neste aplicativo, não é possível usar somente fórmulas para calcular o total acumulado porque seu valor depende de uma série de ações que o usuário realiza.In this app, you can't use only formulas to calculate the running total because its value depends on a series of actions that the user takes. Em vez disso, nosso total acumulado deve ser registrado e atualizado manualmente.Instead, our running total must be recorded and updated manually. A maioria das ferramentas de programação armazena essas informações em uma variável.Most programming tools store this information in a variable.

Às vezes, você precisará que uma variável para o seu aplicativo se comporte da maneira desejada.You'll sometimes need a variable for your app to behave the way you want. Mas a abordagem vem com Advertências:But the approach comes with caveats:

  • Você deve atualizar manualmente o total acumulado.You must manually update the running total. O recálculo automático não fará isso para você.Automatic recalculation won't do it for you.
  • O total acumulado não pode mais ser calculado com base nos valores de outros controles.The running total can no longer be calculated based on the values of other controls. Ele depende de quantas vezes o usuário selecionou o botão Adicionar e qual valor estava no controle de entrada de texto em cada uma das vezes.It depends on how many times the user selected the Add button and what value was in the text-input control each time. O usuário inseriu 77 e selecionou Adicionar duas vezes, ou ele especificou 24 e 130 para cada uma das adições?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? Você não pode determinar a diferença depois que o total atingiu 154.You can't tell the difference after the total has reached 154.
  • As alterações no total podem vir de caminhos diferentes.Changes to the total can come from different paths. Neste exemplo, os botões Adicionar e Limpar podem atualizar o total.In this example, both the Add and Clear buttons can update the total. Se o aplicativo não se comportar da maneira esperada, qual botão estará causando o problema?If the app doesn't behave the way you expect, which button is causing the problem?

Criar uma variável globalCreate a global variable

Para criar nossa calculadora, precisamos de uma variável para manter o total acumulado.To create our adding machine, we require a variable to hold the running total. As variáveis mais simples para trabalhar com PowerApps são variáveis globais.The simplest variables to work with in PowerApps are global variables.

Como variáveis globais funcionam:How global variables work:

  • Defina o valor da variável global com a função Set.You set the value of the global variable with the Set function. Set (MyVar, 1) define a variável global MyVar para um valor de 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Você usa a variável global referenciando o nome usado com a função Set.You use the global variable by referencing the name used with the Set function. Nesse caso, MyVar retornará 1.In this case, MyVar will return 1.
  • Variáveis globais podem conter qualquer valor, incluindo cadeias de caracteres, números, registros e tabelas.Global variables can hold any value, including strings, numbers, records, and tables.

Recompilaremos nossa calculadora usando uma variável global:Let's rebuild our adding machine by using a global variable:

  1. Adicione um controle de entrada de texto, chamado TextInput1, e dois botões, chamados Button1 e Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Defina a propriedade Texto de Button1 como "Adicionar" e defina a propriedade Texto de Button2 como "Limpar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Para atualizar o total acumulado sempre que um usuário seleciona o botão Adicionar, defina sua propriedade OnSelect como esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Set( RunningTotal, RunningTotal + Text1 )Set( RunningTotal, RunningTotal + Text1 )

    Na primeira vez que um usuário selecionar o botão Adicionar e Set for chamado, RunningTotal será criado com um valor padrão em branco.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Além disso, ele será tratado como zero.In the addition, it will be treated as a zero.

  4. Para definir o total acumulado como 0, sempre que o usuário seleciona o botão Limpar, defina sua propriedade OnSelect como esta fórmula:To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    Set( RunningTotal, 0 )Set( RunningTotal, 0 )

  5. Adicione um controle Rótulo e defina sua propriedade Text como RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Esta fórmula será automaticamente recalculada e exibirá ao usuário o valor de RunningTotal à medida que ele mudar de acordo com os botões que o usuário selecionar.This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

  6. Visualize o aplicativo e nossa calculadora estará como descrito acima.Preview the app, and we have our adding machine as described above. Insira um número na caixa de texto e pressione o botão Adicionar algumas vezes.Enter a number in the text box and press the Add button a few times. Quando estiver pronto, retorne para a experiência de criação usando a tecla Esc.When ready, return to the authoring experience using the Esc key.

  7. Para ver o valor da variável global, selecione o menu Arquivo e selecione Variáveis no painel à esquerda.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Para ver todos os locais em que nossa variável é definida e usada, selecione-a.To see all the places where our variable is defined and used, select it.

Tipos de variáveisTypes of variables

Há três tipos de variáveis no PowerApps:There are three types of variables in PowerApps:

Tipo de variáveisVariables type EscopoScope DescriçãoDescription FunçõesFunctions
Variáveis globaisGlobal variables AplicativoApp O mais simples de usar.Simplest to use. Contém um número, cadeia de caracteres de texto, booliano, registro, tabela, etc. que podem ser referências de qualquer lugar no aplicativo.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. DefinirSet
Variáveis de contextoContext variables TelaScreen Excelente para passar valores para uma tela, bem como parâmetros para um procedimento em outras linguagens.Great for passing values to a screen, much like parameters to a procedure in other languages. Só pode ser referenciada de uma tela.Can only be referenced from one screen. UpdateContextUpdateContext
NavegarNavigate
ColeçõesCollections AplicativoApp Mantém uma tabela que pode ser de referências de qualquer lugar no aplicativo.Holds a table that can be references from anywhere in the app. Permite que o conteúdo da tabela seja modificado em vez de ser definido como um todo.Allows the contents of the table to be modified rather than being set as a whole. Pode ser salvo para o dispositivo local para uso posterior.Can be saved to the local device for later use. ColetarCollect
ClearCollectClearCollect
Aplicar PatchPatch
AtualizarUpdate
RemoverRemove
SaveDataSaveData
LoadDataLoadData
etc.etc.

Todas as variáveis criadas implicitamente quando usados nas funções Definir, UpdateContext, Navegar ou Coletar.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. Não há nenhuma declaração explícita de variáveis tal como é feito em outras ferramentas de programação.There is no explicit declaration of variables as is done in other programming tools. Os tipos das variáveis também são derivados implicitamente dos valores que são colocados nelas.The types of the variables are also derived implicitly from the values that are placed in them.

Todas as variáveis são mantidas na memória enquanto o aplicativo está em execução.All variables are held in memory while the app is running. Depois que o aplicativo é fechado, os valores mantidos nas variáveis são perdidos.After the app closes, the values held in the variables are lost. Você pode armazenar o conteúdo de uma variável em uma Fonte de Dados usando as funções Aplicar Patch ou Coletar, ou com a função SaveData no caso de coleções que você pode armazenar no dispositivo local.You can store the contents of a variable in a Data Source using Patch or Collect functions, or in the case of collections you can store to the local device with the SaveData function. Quando o aplicativo for carregado pela primeira vez, todas as variáveis terão o valor em branco.When the app is first loaded, all variables will have the blank value.

Você pode usar o nome da variável para ler o valor dela.You use the variables name to read its value. Por exemplo, uma vez definido com Set( MyColor, Red ), você poderá simplesmente usar MyVar em qualquer lugar em que um valor de cor pode ser usado e ele será substituído por Red.For example, once defined with Set( MyColor, Red ) you can simply use MyVar anywhere a color value can be used and it will be replaced with the Red. É possível ter uma variável global ou um conjunto com o mesmo nome que uma variável de contexto.It is possible to have a global variable or collection with the same name as a context variable. Nesse caso, a variável de contexto terá precedência.In this case, the context variable will take precedence. Você ainda pode fazer referência à coleção ou variável global usando o operador de desambiguidade @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Criar uma variável de contextoCreate a context variable

Examinaremos como nossa calculadora seria criada usando uma variável de contexto em vez de uma variável global.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Como funcionam as variáveis de contexto:How context variables work:

  • Crie e defina variáveis de contexto usando a função AtualizarContexto.You create and set context variables by using the UpdateContext function. Se uma variável de contexto ainda não existir quando você atualizou pela primeira vez, ela será criada com um valor padrão em branco.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Crie e atualize as variáveis de contexto com registros.You create and update context variables with records. Em outras ferramentas de programação, geralmente você usa "=" para a atribuição, como em "x = 1".In other programming tools, you commonly use "=" for assignment, as in "x = 1". Para variáveis de contexto, use { x: 1 } em vez disso.For context variables, use { x: 1 } instead. Quando você usa uma variável de contexto, use seu nome diretamente.When you use a context variable, use its name directly.
  • Também é possível definir uma variável de contexto quando uma tela é exibida, usando a função Navegar.You can also set a context variable when a screen is displayed, by using the Navigate function. Se pensar em uma tela como um tipo de procedimento ou uma sub-rotina, isso será semelhante ao parâmetro que passa em outras ferramentas de programação.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • Exceto para Navegar, as variáveis de contexto são limitadas ao contexto de uma única tela, que é de onde elas obtêm o nome.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. Você não pode usar nem defini-las fora deste contexto.You can't use or set them outside of this context.
  • Variáveis de contexto podem conter qualquer valor, incluindo cadeias de caracteres, números, registros e tabelas.Context variables can hold any value, including strings, numbers, records, and tables.

Vamos recompilar nossa calculadora usando uma variável de contexto:Let's rebuild our adding machine by using a context variable:

  1. Adicione um controle de entrada de texto, chamado TextInput1, e dois botões, chamados Button1 e Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Defina a propriedade Texto de Button1 como "Adicionar" e defina a propriedade Texto de Button2 como "Limpar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Para atualizar o total acumulado sempre que um usuário seleciona o botão Adicionar, defina sua propriedade OnSelect como esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    UpdateContext( { RunningTotal: RunningTotal + Text1 } )UpdateContext( { RunningTotal: RunningTotal + Text1 } )

    Na primeira vez que um usuário selecionar o botão Adicionar e AtualizarContexto for chamado, RunningTotal é criado com um valor padrão em branco.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Além disso, ele será tratado como zero.In the addition, it will be treated as a zero.

  4. Para definir o total acumulado como 0, sempre que o usuário seleciona o botão Limpar, defina sua propriedade OnSelect como esta fórmula:To set the running total to 0 whenever the user selects the Clear button, set its OnSelect property to this formula:

    UpdateContext( { RunningTotal: 0 } )UpdateContext( { RunningTotal: 0 } )

    Novamente, AtualizarContexto é usado com a fórmula UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Adicione um controle Rótulo e defina sua propriedade Text como RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Esta fórmula será automaticamente recalculada e exibirá ao usuário o valor de RunningTotal à medida que ele mudar de acordo com os botões que o usuário selecionar.This formula will automatically be recalculated and show the user the value of RunningTotal as it changes based on the buttons that the user selects.

  6. Visualize o aplicativo e teremos nossa calculadora conforme descrita acima.Preview the app and we have our adding machine as described above. Insira um número na caixa de texto e pressione o botão Adicionar algumas vezes.Enter a number in the text box and press the Add button a few timnes. Quando estiver pronto, retorne para a experiência de criação usando a tecla Esc.When ready, return to the authoring experience using the Esc key.

  7. Você pode definir o valor de uma variável de contexto ao navegar para uma tela.You can set the value of a context variable while navigating to a screen. Isso é útil para a passagem de "contexto" ou de "parâmetros" de uma tela para outra.This is useful for passing "context" or "parameters" from one screen to another. Para ver isso, insira uma nova tela e inserir um botão com a propriedade OnSelect definida como:To see this, insert a new screen, and insert a button with the OnSelect property set to:

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

    Selecionar este botão na Screen2 (o que pode ser feito durante a criação, se você selecionar o botão em direção às extremidades) mostrará Screen1 e também definirá a variável de contexto RunningTotal para -1000.Selecting this button on Screen2 (which you can do while authoring if you select the button toward the ends) will show Screen1 and also set the context variable RunningTotal to -1000.

  8. Para ver o valor da variável de contexto, selecione o menu Arquivo e selecione Variáveis no painel à esquerda.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Para ver onde sua variável de contexto é definida e usada, selecione-a.To see where your context variable is defined and used, select it.

Criar uma coleçãoCreate a collection

Por fim, examinaremos a criação de nossa calculadora com uma coleção.Finally, let's look at creating our adding machine with a collection. Já que uma coleção contém uma tabela que é fácil de modificar, faremos com que essa calculadora mantenha uma "fita de papel" de cada valor conforme eles forem inseridos.Since a collection holds a table that is easy to modify, we will make this adding machine keep a "paper tape" of each value as they are entered.

Como coleções funcionam:How collections work:

  • Crie e defina coleções usando a função LimparColeta.Create and set collections by using the ClearCollect function. Como alternativa, você pode usar a função Coletar, mas isso exigirá efetivamente outra variável em vez de substituir a antiga.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • Uma coleção é um tipo de fonte de dados e, portanto, uma tabela.A collection is a kind of data source and, therefore, a table. Para acessar um único valor em uma coleção, use a função Primeiro e extraia um campo do registro resultante.To access a single value in a collection, use the First function, and extract one field from the resulting record. Se você usar um único valor com LimparColeta, esse será o campo Valor, como neste exemplo:If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

Vamos recriar nossa calculadora usando uma coleção:Let's recreate our adding machine by using a collection:

  1. Adicione um controle de Entrada de texto, chamado TextInput1 e dois botões, chamados Button1 e Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Defina a propriedade Texto de Button1 como "Adicionar" e defina a propriedade Texto de Button2 como "Limpar".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Para atualizar o total acumulado sempre que um usuário seleciona o botão Adicionar, defina sua propriedade OnSelect como esta fórmula:To update the running total whenever a user selects the Add button, set its OnSelect property to this formula:

    Collect( PaperTape, TextInput1.Text )Collect( PaperTape, TextInput1.Text )

    Essa fórmula adicionará o novo valor ao final da coleção.This formula will add the new value to the end of the collection. Já que estamos adicionando um único valor, Coletar colocará automaticamente esse valor em uma tabela de coluna única com nome da coluna Valor, que usaremos mais tarde.Since we are adding a single value, Collect will automatically place it in a single column table with the column name Value which we will use later.

  4. Para limpar nossa fita de papel quando o usuário seleciona o botão Limpar, defina sua propriedade OnSelect como esta fórmula:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Para adicionar o total acumulado, adicione um rótulo e defina sua propriedade Text com esta fórmula:To display the running total, add a label, and set its Text property to this formula:

    Sum( PaperTape, Value )Sum( PaperTape, Value )

  6. Para executar a calculadora, pressione F5 para abrir a Versão Prévia, insira números no controle de entrada de texto e selecione botões.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Para retornar ao espaço de trabalho padrão, pressione a tela Esc.To return to the default workspace, press the Esc key.
  8. Para exibir a fita de papel, insira um controle Tabela de dados e defina sua propriedade Itens para esta fórmula:To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    Você também precisará selecionar as colunas a exibir no painel direito, em nosso caso, mostrar a coluna Valor:You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Para ver os valores em sua coleção, selecione Coleções no menu Arquivo.To see the values in your collection, select Collections on the File menu.

  10. Para armazenar e recuperar sua coleção, adicione dois controles de botão adicionais e defina o texto deles como Carregar e Salvar.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Para Carregar, defina a propriedade OnSelect como:For Load, set the OnSelect property to:

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

    É preciso limpar a coleção primeiro, já que LoadData acrescentará os valores armazenados no final da coleção.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Para Salvar, defina a propriedade OnSelect como:For Save, set the OnSelect property to:

    SaveData( PaperTape, "StoredPaperTape" )SaveData( PaperTape, "StoredPaperTape" )

  12. Visualize novamente pressionando a tecla F5, insira números no controle de entrada de texto e selecione os botões.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Selecione o botão Salvar.Select the Save button. Feche e recarregue o seu aplicativo e, em seguida, selecione o botão Carregar para recarregar sua coleção.Close and reload your app, and select the Load button to reload your collection.

    Observação: SaveData e LoadData não funcionam quando executado em um navegador da Web, você deve estar usando o studio instalado no Windows ou um dos participantes do dispositivo móvel.Note: SaveData and LoadData do not function when running in a web browser, you must be using the studio installed on Windows or one of the players for mobile device.