Förstå variabler i PowerAppsUnderstand variables in PowerApps

Om du har använt ett annat programmeringsverktyg, till exempel Visual Basic eller JavaScript, kanske du undrar: Var är variablerna?If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps är lite annorlunda och kräver ett annat synsätt.PowerApps is a little different and requires a different approach. I stället för att leta efter en variabel kan du fråga: Vad ska jag göra i Excel?Instead of reaching for a variable, ask yourself: What would I do in Excel?

I andra verktyg kan du ha utfört en uttrycklig beräkning och lagrat resultatet i en variabel.In other tools, you may have explicitly performed a calculation and stored the result in a variable. PowerApps och Excel beräknar dock automatiskt om formler när indatan ändras, så normalt sett behöver du inte skapa eller uppdatera några variabler.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. Genom att använda den här metoden när det är möjligt, kan du enkelt skapa, förstå och underhålla din app.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

I vissa fall kan du behöva använda variabler i PowerApps som utökar Excel-modellen genom att lägga till beteendeformler.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Formlerna körs till exempel när en användare väljer en knapp.These formulas run when, for example, a user selects a button. I en beteendeformel är det ofta bra att ange en variabel som ska användas i andra formler.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

I allmänhet bör du undvika att använda variabler.In general, avoid using variables. Men ibland är det bara en variabel som kan ge dig den funktion du söker.But sometimes only a variable can enable the experience you want.

Omvandla Excel till PowerAppsTranslate Excel into PowerApps

ExcelExcel

Låt oss se hur Excel fungerar.Let's review how Excel works. En cell kan innehålla ett värde, till exempel ett tal, en sträng eller en formel, som är baserad på värden i andra celler.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. När användaren anger ett annat värde i en cell, beräknar Excel automatiskt om alla formler som är beroende av det nya värdet.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. Du behöver inte utföra någon programmering för att aktivera det här beteendet.You don't have to do any programming to enable this behavior.

Excel har inte några variabler.Excel doesn't have variables. Värdet för en cell som innehåller en formel ändras baserat på dess indata, men det finns inget sätt att komma ihåg resultatet av en formel och lagra den i en cell eller någon annanstans.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. Om du ändrar en cells värde kan hela kalkylbladet ändras och eventuella tidigare beräknade värden försvinner.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. En Excel-användare kan kopiera och klistra in celler, men det sker med användarens manuella kontroll och är inte möjligt med formler.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Appar som du skapar i PowerApps fungerar ungefär som Excel.Apps that you create in PowerApps behave very much like Excel. I stället för att uppdatera celler kan du lägga till kontroller var du vill på en skärm och ge dem ett namn som ska användas i formler.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Du kan till exempel replikera Excel-beteendet i en app genom att lägga till kontrollen Etikett med namnet TextBox1, samt två kontroller för Textindata med namnen TextInput1 och 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. Om du sedan anger egenskapen Text för TextBox1 till TextInput1 + TextInput2, kommer den alltid visa summan av de tal som finns i TextInput1 och TextInput2 automatiskt.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.

Observera att kontrollen TextBox1 är markerad och visar textformeln i formelfältet överst på skärmen.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Här hittar vi formeln TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Den här formeln skapar ett beroende mellan dessa kontroller, precis som beroenden skapas mellan cellerna i en Excel-arbetsbok.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Låt oss ändra värdet i TextInput1:Let's change the value of the TextInput1:

Formeln för TextBox1 har beräknats om automatiskt och visar nu det nya värdet.The formula for TextBox1 has been automatically recalculated, showing the new value.

Du kan använda formler i PowerApps för att fastställa både det primära värdet för en kontroll och egenskaper som till exempel formatering.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. I nästa exempel kommer en formel för egenskapen Färg i etiketten automatiskt visa negativa värden i rött.In the next example, a formula for the Color property of the label will automatically show negative values in red. Funktionen If bör se bekant ut från Excel:The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

Om resultatet av vår beräkning i TextBox1.Text nu är negativt, visas talet i rött:Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

Du kan använda formler för en mängd olika scenarier:You can use formulas for a wide variety of scenarios:

  • Med hjälp av enhetens GPS kan en kartkontroll visa din aktuella plats med en formel som använder Location.Latitude och 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. När du förflyttar dig spårar kartan automatiskt din plats.As you move, the map will automatically track your location.
  • Andra användare kan uppdatera datakällor.Other users can update data sources. Andra i din grupp kan till exempel uppdatera objekt i en SharePoint-lista.For example, others on your team might update items in a SharePoint list. När du uppdaterar en datakälla räknas automatiskt alla beroendeformler om för att återspegla den uppdaterade datan.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. Vidare i exemplet kan du ange galleriegenskapen Items till formeln Filter (SharePointList), som automatiskt kommer att visa den nyligen filtrerade uppsättningen med poster.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.

ErbjudandeBenefits

Att använda formler för att skapa appar har många fördelar:Using formulas to build apps has many advantages:

  • Om du kan Excel, kan du PowerApps.If you know Excel, you know PowerApps. Modellen och formelspråket är likadana.The model and formula language are the same.
  • Om du har använt andra programmeringsverktyg, kan du tänka på hur mycket kod som skulle krävas för att utföra dessa exempel.If you've used other programming tools, think about how much code would be required to accomplish these examples. I Visual Basic skulle du behöva skriva en händelsehanterare för ändringshändelsen i varje textinmatningskontroll.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. Koden för att utföra beräkningar i var och en av dessa är redundant och kan bli osynkroniserad, eller du kan behöva skriva en gemensam subrutin.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. I PowerApps uppnår du alltihop med en enda formel på en enda rad.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Om du vill ta reda på var texten i TextBox1 kommer från, vet du exakt var du ska leta: i formeln i egenskapen Text.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. Det finns inte något annat sätt att påverka texten i den här kontrollen.There's no other way to affect the text of this control. I ett traditionellt programmeringsverktyg kan en händelsehanterare eller subrutin ändra värdet på etiketten från valfri plats i programmet.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. Det kan göra det svårt att spåra när och var en variabel har ändrats.This can make it hard to track down when and where a variable was changed.
  • Om användaren ändrar en skjutreglagekontroll och sedan ångrar sig, går det att dra tillbaka skjutreglaget till det ursprungliga värdet.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. Och det är som om ingenting någonsin har ändrats, appen visar samma kontrollvärden som förut.And it's as if nothing had ever changed: the app shows the same control values as it did before. Det finns inga hinder för att experimentera med ”Vad händer om?”, precis som i Excel.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

I allmänhet är det bättre om du kan uppnå en effekt med hjälp av en formel.In general, if you can achieve an effect by using a formula, you'll be better off. Låt formelmotorn i PowerApps arbeta åt dig.Let the formula engine in PowerApps work for you.

Att veta när variabler ska användasKnow when to use variables

Låt oss ändra vårt enkla tilläggsverktyg till en gammalmodig tilläggsmaskin, med en löpande summa.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Om du väljer knappen Lägg till, lägger du till ett tal till den löpande summan.If you select an Add button, you'll add a number to the running total. Om du väljer knappen Rensa, återställer du den löpande summan till noll.If you select a Clear button, you'll reset the running total to zero.

Vår tilläggsmaskin använder något som inte finns i Excel, nämligen en knapp.Our adding machine uses something that doesn't exist in Excel: a button. I den här appen kan du inte använda enbart formler för att beräkna den löpande summan, eftersom dess värde beror på ett antal åtgärder som användaren vidtar.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. Vår löpande summa måste i stället registreras och uppdateras manuellt.Instead, our running total must be recorded and updated manually. De flesta programmeringsverktyg lagrar den här informationen i en variabel.Most programming tools store this information in a variable.

Ibland måste du ha en variabel för att din app ska fungera som du vill.You'll sometimes need a variable for your app to behave the way you want. Men metoden har sina nackdelar:But the approach comes with caveats:

  • Du måste uppdatera den löpande summan manuellt.You must manually update the running total. Det görs inte med en automatisk omberäkning.Automatic recalculation won't do it for you.
  • Den löpande summan kan inte längre beräknas baserat på värdena i andra kontroller.The running total can no longer be calculated based on the values of other controls. Det beror på hur många gånger användaren valt knappen Lägg till och vilket värde som fanns i textindatakontrollen varje gång.It depends on how many times the user selected the Add button and what value was in the text-input control each time. Har användaren angett 77 och valt Lägg till två gånger, eller 24 respektive 130 de båda gångerna?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? Du kan inte se skillnaden förrän summan har uppnått 154.You can't tell the difference after the total has reached 154.
  • Ändringar i summan kan komma från olika platser.Changes to the total can come from different paths. I det här exemplet kan båda knapparna Lägg till och Rensa uppdatera summan.In this example, both the Add and Clear buttons can update the total. Om appen inte fungerar som förväntat, vilken knapp är det som orsakar problemet?If the app doesn't behave the way you expect, which button is causing the problem?

Skapa en global variabelCreate a global variable

För att kunna skapa vår tilläggsmaskin behöver vi en variabel som innehåller den löpande summan.To create our adding machine, we require a variable to hold the running total. De enklaste variablerna att arbeta med i PowerApps är globala variabler.The simplest variables to work with in PowerApps are global variables.

Hur globala variabler fungerar:How global variables work:

  • Du anger värdet för den globala variabeln med funktionen Set.You set the value of the global variable with the Set function. Set( MyVar, 1 ) ger den globala variabeln MyVar värdet 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Du använder den globala variabeln genom att referera till det namn som används med funktionen Set.You use the global variable by referencing the name used with the Set function. I det här fallet returnerar MyVar 1.In this case, MyVar will return 1.
  • Globala variabler kan innehålla valfritt värde, inklusive strängar, tal, poster och tabeller.Global variables can hold any value, including strings, numbers, records, and tables.

Låt oss återskapa vår tilläggsmaskin med hjälp av en global variabel:Let's rebuild our adding machine by using a global variable:

  1. Lägg till en textindatakontroll med namnet TextInput1 och två knappar med namnen Button1 och Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Ange egenskapen Text för Button1 till "Lägg till" och ange egenskapen Text för Button2 till "Rensa".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Uppdatera den löpande summan varje gång en användare väljer knappen Lägg till genom att ange egenskapen OnSelect till den här formeln: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 )

    Första gången en användare väljer knappen Add och Set anropas, skapas RunningTotal med ett tomt standardvärde.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Dessutom behandlas det som noll.In the addition, it will be treated as a zero.

  4. Om du vill ange den löpande summan till 0 när en användare väljer knappen Rensa, anger du egenskapen OnSelect till den här formeln: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. Lägg till kontrollen Etikett och ange egenskapen Text till RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Den här formeln omberäknas automatiskt och visar användaren värdet för RunningTotal när det ändras, baserat på knapparna som användaren väljer.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. Förhandsgranska appen. Nu har vi vår tilläggsmaskin enligt beskrivningen ovan.Preview the app, and we have our adding machine as described above. Ange ett värde i textrutan och tryck på knappen Lägg till knappen några gånger.Enter a number in the text box and press the Add button a few times. När du är klar kan du återgå till redigeringen genom att trycka på Esc.When ready, return to the authoring experience using the Esc key.

  7. Om du vill se vår globala variabels värde går du till Arkiv-menyn och väljer Variabler i den vänstra rutan.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Om du vill se alla platser där våra variabler definieras och används, markerar du den.To see all the places where our variable is defined and used, select it.

Typer av variablerTypes of variables

Det finns tre typer av variabler i PowerApps:There are three types of variables in PowerApps:

VariabeltypVariables type OmfångScope BeskrivningDescription FunktionerFunctions
Globala variablerGlobal variables AppApp Enklast att använda.Simplest to use. Innehåller en siffra, en textsträng, ett booleskt värde, en post, en tabell osv, som kan vara referenser från var som helst i appen.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
KontextvariablerContext variables SkärmScreen Bra för att skicka värden till en skärm, ungefär som parametrar till en procedur på andra språk.Great for passing values to a screen, much like parameters to a procedure in other languages. Kan endast refereras från en skärm.Can only be referenced from one screen. UpdateContextUpdateContext
NavigeraNavigate
SamlingarCollections AppApp Innehåller en tabell med referenser från var som helst i appen.Holds a table that can be references from anywhere in the app. Tillåter att innehållet i tabellen kan ändras, snarare än att den anges i sin helhet.Allows the contents of the table to be modified rather than being set as a whole. Kan sparas på den lokala enheten för senare användning.Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect
PatchPatch
UpdateUpdate
RemoveRemove
SaveDataSaveData
LoadDataLoadData
osv.etc.

Alla variabler skapas implicit när de används i funktionerna Set, UpdateContext, Navigate eller Collect.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. Det finns ingen explicit deklaration av variabler, eftersom detta görs i andra programeringsverktyg.There is no explicit declaration of variables as is done in other programming tools. Typer av variabler härleds också implicit från de värden som är placerade i dem.The types of the variables are also derived implicitly from the values that are placed in them.

Alla variabler hålls kvar i minnet medan programmet körs.All variables are held in memory while the app is running. De värden som lagras i variablerna går förlorade när appen har stängts.After the app closes, the values held in the variables are lost. Du kan lagra innehållet i en variabel i en datakälla med hjälp av funktionerna Patch eller Collect eller, som när det gäller samlingar, då du kan lagra på den lokala enheten med funktionen SaveData.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. När appen läses första gången får alla variabler ett tomt värde.When the app is first loaded, all variables will have the blank value.

Du kan läsa värdet genom att använda variabelns.You use the variables name to read its value. När du t.ex. en gång har definierat med Set( MyColor, Red) kan du använda MyVar var som helst där ett färgvärde kan användas och ersättas med 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. Det är möjligt att ha en global variabel eller en samling med samma namn som en kontextvariabel.It is possible to have a global variable or collection with the same name as a context variable. I det här fallet har kontextvariabeln företräde.In this case, the context variable will take precedence. Du kan fortfarande referera till den globala variabeln eller samlingen med hjälp av disambigueringsoperatorn @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Skapa en sammanhangsvariabelCreate a context variable

Nu ska vi titta på hur vi kan lägga till en dator med hjälp av en kontextvariabel istället för en global variabel.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Så här fungerar sammanhangsvariabler:How context variables work:

  • Du skapar och ställer in sammanhangsvariabler med hjälp av funktionen UpdateContext.You create and set context variables by using the UpdateContext function. Om en sammanhangsvariabel inte redan finns när den uppdateras första gången, skapas den med ett tomt standardvärde.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Du skapar och uppdaterar sammanhangsvariabler med poster.You create and update context variables with records. I andra programmeringsverktyg använder du ofta "=" vid tilldelning, som i "x = 1".In other programming tools, you commonly use "=" for assignment, as in "x = 1". Sammanhangsvariabler använder { x: 1 } i stället.For context variables, use { x: 1 } instead. När du använder en sammanhangsvariabel använder du dess namn direkt.When you use a context variable, use its name directly.
  • Du kan också ange en sammanhangsvariabel när en skärm visas, med hjälp av funktionen Navigate.You can also set a context variable when a screen is displayed, by using the Navigate function. Om du tänker på en skärm som en sorts procedur eller subrutin, liknar detta parametern som överförs i andra programmeringsverktyg.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • Förutom Navigate är sammanhangsvariabler begränsade till sammanhanget på en enda skärm, vilket är platsen där de får sitt namn.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. Du kan inte använda eller ange dem utanför det här sammanhanget.You can't use or set them outside of this context.
  • Sammanhangsvariabler kan innehålla valfritt värde, inklusive strängar, tal, poster och tabeller.Context variables can hold any value, including strings, numbers, records, and tables.

Låt oss återskapa vår tilläggsmaskin med hjälp av en sammanhangsvariabel:Let's rebuild our adding machine by using a context variable:

  1. Lägg till en textindatakontroll med namnet TextInput1 och två knappar med namnen Button1 och Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Ange egenskapen Text för Button1 till "Lägg till" och ange egenskapen Text för Button2 till "Rensa".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Uppdatera den löpande summan varje gång en användare väljer knappen Lägg till genom att ange egenskapen OnSelect till den här formeln: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 } )

    Första gången en användare väljer knappen Lägg till och UpdateContext anropas, skapas RunningTotal med ett tomt standardvärde.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Dessutom behandlas det som noll.In the addition, it will be treated as a zero.

  4. Om du vill ange den löpande summan till 0 när en användare väljer knappen Rensa, anger du egenskapen OnSelect till den här formeln: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 } )

    Återigen används UpdateContext med formeln UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Lägg till kontrollen Etikett och ange egenskapen Text till RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Den här formeln omberäknas automatiskt och visar användaren värdet för RunningTotal när det ändras, baserat på knapparna som användaren väljer.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. Förhandsgranska appen. Nu har vi vår tilläggsmaskin enligt beskrivningen ovan.Preview the app and we have our adding machine as described above. Ange ett värde i textrutan och tryck på knappen Lägg till knappen några gånger.Enter a number in the text box and press the Add button a few timnes. När du är klar kan du återgå till redigeringen genom att trycka på Esc.When ready, return to the authoring experience using the Esc key.

  7. Du kan ange värdet för en kontextvariabel när du navigerar till en skärm.You can set the value of a context variable while navigating to a screen. Detta är användbart för att skicka ”kontexten” eller ”parametrar” från en skärm till en annan.This is useful for passing "context" or "parameters" from one screen to another. Om du vill se detta, så infoga en ny skärm och infoga en knapp där egenskapen OnSelect har värdet: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 } )

    Om du väljer den här knappen på Screen2 (som du kan göra när du redigerar om du väljer knappen) visas Screen1. Ge även kontextvariabeln RunningTotal värdet -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. Om du vill se vår kontextvariabels värde går du till Arkiv-menyn och väljer Variabler i den vänstra rutan.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Om du vill se var kontextvariabeln definieras och används, så välj den.To see where your context variable is defined and used, select it.

Skapa en samlingCreate a collection

Låt oss till sist ta en titt på hur vi kan lägga till en dator med en samling.Finally, let's look at creating our adding machine with a collection. Eftersom en samling innehåller en tabell som är lätt att ändra, ska vi lägga till datorn med ”papperstejp” för värde när det anges.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.

Så här fungerar samlingar:How collections work:

  • Skapa och ange samlingar med funktionen ClearCollect.Create and set collections by using the ClearCollect function. Du kan använda funktionen Collect i stället, men den kommer att kräva en annan variabel i stället för att ersätta den gamla.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • En samling är en sorts datakälla och därför en tabell.A collection is a kind of data source and, therefore, a table. Om du vill få åtkomst till ett enstaka värde i en samling kan du använda funktionen First och extrahera ett fält från den resulterande posten.To access a single value in a collection, use the First function, and extract one field from the resulting record. Om du använde ett enstaka värde med ClearCollect, blir det fältet Value som i följande exempel:If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

Låt oss återskapa vår tilläggsmaskin med en samling:Let's recreate our adding machine by using a collection:

  1. Lägg till en textindatakontroll med namnet TextInput1 och två knappar med namnen Button1 och Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Ange egenskapen Text för Button1 till "Lägg till" och ange egenskapen Text för Button2 till "Rensa".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Uppdatera den löpande summan varje gång en användare väljer knappen Lägg till genom att ange egenskapen OnSelect till den här formeln: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 )

    Den här formeln lägger till det nya värdet i slutet av samlingen.This formula will add the new value to the end of the collection. Eftersom vi lägger till ett enda värde placerar Collect det automatiskt i en tabell med en kolumn med kolumnnamnet Value, som vi kommer att använda senare.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. Om vi vill ta bort ”pappersremsan” när användaren väljer knappen Clear, så ställ in dess egenskap OnSelect till följande formel:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Om du vill visa den löpande summan lägger du till en etikett och anger egenskapen Text till denna formel:To display the running total, add a label, and set its Text property to this formula:

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

  6. Kör tilläggsmaskinen genom att trycka på F5 för att öppna Förhandsgranskning. Ange sedan talen i textinmatningskontrollen och välj knapp.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Återgå till standardarbetsytan genom att trycka på Esc.To return to the default workspace, press the Esc key.
  8. Om du vill visa pappersremsan, så infoga en Data table-kontroll, och ställ in dess egenskap Items till följande formel:To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    Du måste också markera de kolumner som ska visas i den högra rutan. I vårt fall visas kolumnen Value:You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Om du vill se värdena i samlingen väljer du Samlingar i menyn Arkiv.To see the values in your collection, select Collections on the File menu.

  10. Lägga till två ytterligare kontroller för Om du vill lagra och hämta samlingen, så lägg till två ytterligare knappkontroller och ange deras text till Load och Save.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Ställ in egenskapen OnSelect för Load på:For Load, set the OnSelect property to:

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

    Vi behöver rensa samlingen först eftersom LoadData kommer att lägga till de lagrade värdena i slutet av samlingen.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Ställ in egenskapen OnSelect för Save på:For Save, set the OnSelect property to:

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

  12. Förhandsgranska igen genom att trycka på F5, ange siffror i textinmatningskontrollen och välj knappar.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Välj knappen Save.Select the Save button. Stäng och läs in din app igen, och läs in din samling igen genom att välja knappenLoad.Close and reload your app, and select the Load button to reload your collection.

    Obs: SaveData och LoadData fungerar inte när de körs i en webbläsare. Du måste använda studion som installerats på Windows eller någon av spelarna för mobila enheter.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.