Informazioni sulle variabili in PowerAppsUnderstand variables in PowerApps

Se l'utente ha usato altri strumenti di programmazione, come ad esempio Visual Basic o JavaScript, probabilmente si sta chiedendo dove siano le variabili.If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps è uno strumento un po' diverso e richiede un altro tipo di approccio.PowerApps is a little different and requires a different approach. Invece di cercare le variabili, è opportuno chiedersi cosa si farebbe se si lavorasse in Excel.Instead of reaching for a variable, ask yourself: What would I do in Excel?

In altri strumenti si eseguirebbe un calcolo in modo esplicito e si archivierebbe il risultato in una variabile.In other tools, you may have explicitly performed a calculation and stored the result in a variable. Tuttavia, sia PowerApps che Excel ricalcolano automaticamente le formule quando i dati di input vengono modificati, pertanto in genere non è necessario creare e aggiornare variabili.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. Adottando questo approccio quando possibile, è possibile creare, comprendere e gestire l'app molto più facilmente.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

In alcuni casi è necessario usare le variabili in PowerApps, che estende il modello di Excel aggiungendo formule di comportamento.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Queste formule vengono eseguite quando, ad esempio, un utente seleziona un pulsante.These formulas run when, for example, a user selects a button. All'interno di una formula di comportamento è spesso utile impostare una variabile da usare in altre formule.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

In generale è consigliabile evitare di usare le variabili.In general, avoid using variables. Ma a volte solo una variabile può attivare l'operazione che si vuole eseguire.But sometimes only a variable can enable the experience you want.

Tradurre Excel in PowerAppsTranslate Excel into PowerApps

ExcelExcel

Per prima cosa, tenere presente il funzionamento di Excel.Let's review how Excel works. Una cella può contenere un valore, come ad esempio un numero o una stringa o una formula che si basa sui valori contenuti in altre celle.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. Dopo che l'utente immette un valore diverso in una cella, Excel ricalcola automaticamente tutte le formule che dipendono dal nuovo valore.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. Non è necessario eseguire alcuna attività di programmazione per abilitare questo comportamento.You don't have to do any programming to enable this behavior.

Excel non contiene variabili.Excel doesn't have variables. Il valore di una cella che contiene una formula cambia a seconda del relativo input, ma non è possibile ricordare il risultato di una formula e archiviarlo in una cella o in qualsiasi altro elemento.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 si modifica il valore di una cella, l'intero foglio di calcolo può variare e tutti i valori calcolati in precedenza vengono persi.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Un utente di Excel può copiare e incollare le celle, ma ciò si svolge sotto il controllo manuale dell'utente e non può verificarsi con le formule.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Le applicazioni create in PowerApps si comportano in modo molto simile a Excel.Apps that you create in PowerApps behave very much like Excel. Anziché aggiornare le celle, è possibile aggiungere controlli ovunque si voglia in una schermata e denominarli per usarli nelle formule.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Ad esempio, è possibile replicare il comportamento di Excel in un'applicazione aggiungendo un controllo Etichetta denominato TextBox1 e due controlli Input di testo denominati 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 poi si imposta la proprietà Text di TextBox1 su TextInput1 + TextInput2, la somma dei numeri contenuti in TextInput1 e TextInput2 verrà sempre visualizzata 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.

Si noti che il controllo TextBox1 è selezionato, quindi la formula Text viene visualizzata nella barra delle formule nella parte superiore dello schermo.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Qui troviamo la formula TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Questa formula crea una dipendenza tra questi controlli,così come si creano dipendenze tra le celle di una cartella di lavoro di Excel.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Modifichiamo il valore di TextInput1:Let's change the value of the TextInput1:

La formula per TextBox1 è stata ricalcolata automaticamente e visualizza il nuovo valore.The formula for TextBox1 has been automatically recalculated, showing the new value.

In PowerApps è possibile usare le formule per determinare non solo il valore principale di un controllo, ma anche le proprietà, come ad esempio la formattazione.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. Nell'esempio seguente una formula per la proprietà Color dell'etichetta visualizzerà automaticamente i valori negativi in rosso.In the next example, a formula for the Color property of the label will automatically show negative values in red. La funzione If dovrebbe risultare familiare dall'uso di Excel:The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

A questo punto, se il risultato del calcolo in TextBox1.Text è negativo, il numero verrà visualizzato in rosso:Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

È possibile usare le formule per un'ampia gamma di scenari:You can use formulas for a wide variety of scenarios:

  • Quando si usa il GPS del proprio dispositivo, un controllo mappa può visualizzare la posizione corrente con una formula che 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. A mano a mano che ci si sposta, la mappa tiene traccia automaticamente della posizione.As you move, the map will automatically track your location.
  • Altri utenti possono aggiornare le origini dati.Other users can update data sources. Ad esempio, altri membri del team potrebbero aggiornare le voci di un elenco di SharePoint.For example, others on your team might update items in a SharePoint list. Quando si aggiorna un'origine dati, tutte le formule dipendenti vengono ricalcolate automaticamente per riflettere i dati aggiornati.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. Proseguendo con l'esempio, è possibile impostare la proprietà Items di una raccolta con la formula Filter( SharePointList ), che visualizzerà automaticamente il set di record appena filtrato.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.

VantaggiBenefits

L'uso di formule per compilare applicazioni offre numerosi vantaggi:Using formulas to build apps has many advantages:

  • Se si sa usare Excel, si sa usare PowerApps.If you know Excel, you know PowerApps. Il modello e il linguaggio delle formule sono gli stessi.The model and formula language are the same.
  • Se l'utente ha usato altri strumenti di programmazione, saprà quanto codice sarebbe stato necessario per eseguire questi esempi.If you've used other programming tools, think about how much code would be required to accomplish these examples. In Visual Basic sarebbe stato necessario scrivere un gestore eventi per l'evento di modifica per ogni controllo di input di testo.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. Il codice per eseguire il calcolo in ognuna di queste caselle è ridondante e potrebbe risultare non sincronizzato o potrebbe essere necessario scrivere una subroutine comune.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. In PowerApps tutto ciò si ottiene con una sola formula di una riga.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Per capire da dove arriva il testo di TextBox1, si sa esattamente dove guardare: la formula nella proprietà Text.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. Non c'è altro modo per agire sul testo di questo controllo.There's no other way to affect the text of this control. In uno strumento di programmazione tradizionale qualsiasi gestore eventi o subroutine potrebbe modificare il valore dell'etichetta, da qualsiasi punto del programma.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. In questo modo è molto difficile tenere traccia di dove e quando una variabile è stata modificata.This can make it hard to track down when and where a variable was changed.
  • Se l'utente modifica un dispositivo di scorrimento e poi cambia idea, può far tornare il dispositivo di scorrimento al valore originale.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. Ed è come se non fosse mai stato modificato nulla: l'app visualizza gli stessi valori del controllo, come in precedenza.And it's as if nothing had ever changed: the app shows the same control values as it did before. Non vi sono sperimentazioni o congetture possibili, così come non ve ne sono in Excel.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

In generale, se è possibile ottenere un effetto usando una formula, sarà preferibile usarla.In general, if you can achieve an effect by using a formula, you'll be better off. Sfruttare il motore di formule in PowerApps è l'approccio più utile.Let the formula engine in PowerApps work for you.

Sapere quando usare le variabiliKnow when to use variables

Modifichiamo un semplice addizionatore in modo che funzioni come una vecchia calcolatrice, con un totale parziale.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Se si seleziona un pulsante Aggiungi, verrà aggiunto un numero al totale parziale.If you select an Add button, you'll add a number to the running total. Se si seleziona un pulsante Cancella, il totale parziale verrà reimpostato a zero.If you select a Clear button, you'll reset the running total to zero.

La calcolatrice usa una cosa che non esiste in Excel: un pulsante.Our adding machine uses something that doesn't exist in Excel: a button. In questa applicazione non è possibile usare solo le formule per calcolare il totale parziale perché il suo valore dipende da una serie di azioni eseguite dall'utente.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. Al contrario, il totale parziale deve essere registrato e aggiornato manualmente.Instead, our running total must be recorded and updated manually. La maggior parte degli strumenti di programmazione archivia queste informazioni in una variabile.Most programming tools store this information in a variable.

Talvolta è necessaria una variabile perché l'applicazione si comporti nel modo voluto.You'll sometimes need a variable for your app to behave the way you want. Tuttavia, è bene tenere presente alcune precisazioni:But the approach comes with caveats:

  • È necessario aggiornare manualmente il totale parziale.You must manually update the running total. Il ricalcolo automatico non è utilizzabile.Automatic recalculation won't do it for you.
  • Il totale parziale non può essere calcolato in base ai valori di altri controlli.The running total can no longer be calculated based on the values of other controls. Dipende da quante volte l'utente ha selezionato il pulsante Aggiungi e dal valore del controllo di input di testo presente ogni volta.It depends on how many times the user selected the Add button and what value was in the text-input control each time. L'utente ha immesso 77 e ha selezionato Aggiungi due volte, o ha specificato 24 e 130 per ognuna delle addizioni?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? Non è possibile dirlo, una volta che il totale ha raggiunto 154.You can't tell the difference after the total has reached 154.
  • Le modifiche al totale possono provenire da percorsi diversi.Changes to the total can come from different paths. In questo esempio sia il pulsante Aggiungi che Cancella possono aggiornare il totale.In this example, both the Add and Clear buttons can update the total. Se l'applicazione non si comporta come ci si aspetta, qual è il pulsante che crea il problema?If the app doesn't behave the way you expect, which button is causing the problem?

Creare una variabile globaleCreate a global variable

Per creare la calcolatrice, è necessaria una variabile per mantenga il totale parziale.To create our adding machine, we require a variable to hold the running total. Le variabili più semplici da utilizzare in PowerApps sono le variabili globali.The simplest variables to work with in PowerApps are global variables.

Come funzionano le variabili globali:How global variables work:

  • Il valore della variabile globale si imposta con la funzione Set.You set the value of the global variable with the Set function. Set( MyVar, 1 ) imposta la variabile globale MyVar su un valore pari a 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • La variabile globale viene usata facendo riferimento al nome usato con la funzione Set.You use the global variable by referencing the name used with the Set function. In questo caso, MyVar restituirà 1.In this case, MyVar will return 1.
  • Le variabili globali possono contenere qualsiasi valore, incluse stringhe, numeri, record, e tabelle.Global variables can hold any value, including strings, numbers, records, and tables.

Ricompilare ora la calcolatrice usata in precedenza con una variabile globale:Let's rebuild our adding machine by using a global variable:

  1. Aggiungere un controllo di input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Impostare la proprietà Text di Button1 su "Aggiungi"e la proprietà Text di Button2 su "Cancella".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostarne la proprietà OnSelect su questa formula: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 )

    La prima volta che un utente seleziona il pulsante Aggiungi e la formula Set viene chiamata, viene creato l'elemento RunningTotal con un valore predefinito vuoto.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Nell'addizione verrà considerato come uno zero.In the addition, it will be treated as a zero.

  4. Per impostare il totale parziale su 0 ogni volta che l'utente seleziona il pulsante Cancella, impostarne la proprietà OnSelect su questa formula: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. Aggiungere un controllo Etichetta e impostarne la proprietà Text su RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Questa formula verrà ricalcolata automaticamente e visualizzerà il valore di RunningTotal in base ai cambiamenti, a seconda dei pulsanti che l'utente seleziona.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. Visualizzare in anteprima l'app: la calcolatrice funziona come descritto in precedenza.Preview the app, and we have our adding machine as described above. Immettere un numero nella casella di testo e premere il pulsante Aggiungi più volte.Enter a number in the text box and press the Add button a few times. Al termine, tornare alla creazione premendo il tasto ESC.When ready, return to the authoring experience using the Esc key.

  7. Per visualizzare il valore della variabile globale, selezionare il menu File e quindi Variabili nel riquadro a sinistra.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Selezionare la variabile per visualizzare tutte le posizioni in cui è definita e usata.To see all the places where our variable is defined and used, select it.

Tipi di variabiliTypes of variables

Esistono tre tipi di variabili in PowerApps:There are three types of variables in PowerApps:

Tipo di variabileVariables type AmbitoScope DescrizioneDescription FunzioniFunctions
Variabili globaliGlobal variables AppApp La più semplice da usare.Simplest to use. Contiene un numero, una stringa di testo, un valore booleano, un record, una tabella e così via a cui si può fare riferimento da un punto qualsiasi nell'app.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
Variabili di contestoContext variables SchermataScreen Eccellente per passare valori a una schermata, proprio come i parametri a una procedura in altri linguaggi.Great for passing values to a screen, much like parameters to a procedure in other languages. Vi si può fare riferimento solo da una schermata.Can only be referenced from one screen. UpdateContextUpdateContext
NavigateNavigate
RaccolteCollections AppApp Contiene una tabella a cui si può fare riferimento da un punto qualsiasi nell'app.Holds a table that can be references from anywhere in the app. Consente di modificare il contenuto della tabella piuttosto che impostarla interamente.Allows the contents of the table to be modified rather than being set as a whole. Può essere salvata nel dispositivo locale per un uso successivo.Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect
PatchPatch
UpdateUpdate
RemoveRemove
SaveDataSaveData
LoadDataLoadData
ecc.etc.

Tutte le variabili vengono create in modo implicito quando usate nelle funzioni Set, UpdateContext, Navigate o Collect.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. Non esistono dichiarazioni esplicite delle variabili così come accade in altri strumenti di programmazione.There is no explicit declaration of variables as is done in other programming tools. I tipi delle variabili derivano in modo implicito anche dai valori che vi vengono inseriti.The types of the variables are also derived implicitly from the values that are placed in them.

Tutte le variabili vengono mantenute in memoria durante l'esecuzione dell'app.All variables are held in memory while the app is running. Dopo aver chiuso l'app, i valori contenuti nelle variabili vengono persi.After the app closes, the values held in the variables are lost. È possibile archiviare il contenuto di una variabile in un'origine dati usando le funzioni Patch o Collect oppure nel caso di raccolte è possibile archiviarlo nel dispositivo locale con la funzione 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. Quando l'app viene caricata per la prima volta, tutte le variabili avranno il valore vuoto.When the app is first loaded, all variables will have the blank value.

Usare il nome delle variabili per leggerne il relativo valore.You use the variables name to read its value. Ad esempio, una volta definita con la funzione Set( MyColor, Red ) è possibile usare semplicemente la variabile MyVar ovunque sia possibile usare un valore di colore, che verrà sostituito con 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. È possibile avere una variabile globale o una raccolta con lo stesso nome di una variabile di contesto.It is possible to have a global variable or collection with the same name as a context variable. In questo caso, la variabile di contesto avrà la precedenza.In this case, the context variable will take precedence. È comunque possibile fare riferimento alla variabile globale o alla raccolta usando l'operatore di risoluzione ambiguità @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Creare una variabile di contestoCreate a context variable

Si esaminerà ora in che modo si potrebbe creare una calcolatrice usando una variabile di contesto anziché una variabile globale.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Come funzionano le variabili di contesto:How context variables work:

  • Le variabili di contesto vengono create e impostate tramite la funzione UpdateContext.You create and set context variables by using the UpdateContext function. Se una variabile di contesto non è presente quando viene aggiornata per la prima volta, verrà creata con un valore predefinito vuoto.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Le variabili di contesto vengono create e aggiornate con i record.You create and update context variables with records. In altri strumenti di programmazione si usa generalmente "=" per l'assegnazione, come in "x = 1".In other programming tools, you commonly use "=" for assignment, as in "x = 1". Per le variabili di contesto, usare invece { x: 1 }.For context variables, use { x: 1 } instead. Quando si usa una variabile di contesto, usarne direttamente il nome.When you use a context variable, use its name directly.
  • È anche possibile impostare una variabile di contesto quando viene visualizzata una schermata, usando la funzione Navigate.You can also set a context variable when a screen is displayed, by using the Navigate function. Se si considera una schermata come un tipo di procedura o di subroutine, questa procedura è simile al passaggio dei parametri in altri strumenti di programmazione.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • Ad eccezione di Navigate, le variabili di contesto sono limitate al contesto di una singola schermata, da cui prendono il nome.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. Non è possibile usarle o impostarle al di fuori di tale contesto.You can't use or set them outside of this context.
  • Le variabili di contesto possono contenere qualsiasi valore, incluse stringhe, numeri, record, e tabelle.Context variables can hold any value, including strings, numbers, records, and tables.

Ricompilare ora la calcolatrice usata in precedenza tramite una variabile di contesto:Let's rebuild our adding machine by using a context variable:

  1. Aggiungere un controllo di input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Impostare la proprietà Text di Button1 su "Aggiungi"e la proprietà Text di Button2 su "Cancella".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostarne la proprietà OnSelect su questa formula: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 } )

    La prima volta che un utente seleziona il pulsante Aggiungi e la formula UpdateContext viene chiamata, viene creato l'elemento RunningTotal con un valore predefinito di vuoto.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Nell'addizione verrà considerato come uno zero.In the addition, it will be treated as a zero.

  4. Per impostare il totale parziale su 0 ogni volta che l'utente seleziona il pulsante Cancella, impostarne la proprietà OnSelect su questa formula: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 } )

    Ancora una volta UpdateContext viene usato con la formula UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Aggiungere un controllo Etichetta e impostarne la proprietà Text su RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Questa formula verrà ricalcolata automaticamente e visualizzerà il valore di RunningTotal in base ai cambiamenti, a seconda dei pulsanti che l'utente seleziona.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. Visualizzare in anteprima l'app: la calcolatrice funziona come descritto in precedenza.Preview the app and we have our adding machine as described above. Immettere un numero nella casella di testo e premere il pulsante Aggiungi più volte.Enter a number in the text box and press the Add button a few timnes. Al termine, tornare alla creazione premendo il tasto ESC.When ready, return to the authoring experience using the Esc key.

  7. È possibile impostare il valore di una variabile di contesto durante l'esplorazione di una schermata.You can set the value of a context variable while navigating to a screen. Ciò è utile per il passaggio di "contesto" o "parametri" da una schermata a un'altra.This is useful for passing "context" or "parameters" from one screen to another. Per verificarlo, inserire una nuova schermata e inserire un pulsante con la proprietà OnSelect impostata su: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 } )

    Selezionando questo pulsante in Screen2 (operazione possibile durante la creazione se si seleziona il pulsante verso l'estremità) verrà visualizzata Screen1 e impostata la variabile di contesto RunningTotal su -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. Per visualizzare il valore della variabile di contesto, selezionare il menu File e quindi Variabili nel riquadro a sinistra.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Selezionare la variabile di contesto per visualizzare dove viene definita e usata.To see where your context variable is defined and used, select it.

Creare una raccoltaCreate a collection

Infine, si esaminerà la creazione della calcolatrice con una raccolta.Finally, let's look at creating our adding machine with a collection. Dato che una raccolta contiene una tabella facile da modificare, la calcolatrice conserverà un "nastro perforato" di ogni valore al momento dell'immissione.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.

Come funzionano le raccolte:How collections work:

  • Creare e impostare le raccolte usando la funzione ClearCollect.Create and set collections by using the ClearCollect function. In alternativa è possibile usare la funzione Collect, ma questa richiederà un'altra variabile anziché sostituire quella vecchia.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • Una raccolta è una sorta di origine dati e, quindi, una tabella.A collection is a kind of data source and, therefore, a table. Per accedere a un singolo valore in una raccolta, usare la funzione First ed estrarre un campo dal record risultante.To access a single value in a collection, use the First function, and extract one field from the resulting record. Se è stato usato un valore singolo con ClearCollect, questo sarà il campo Value, come nell'esempio seguente:If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

Ricreare ora la calcolatrice tramite una raccolta:Let's recreate our adding machine by using a collection:

  1. Aggiungere un controllo Input di testo denominato TextInput1 e due pulsanti, denominati Button1 e Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Impostare la proprietà Text di Button1 su "Aggiungi" e la proprietà Text di Button2 su "Cancella".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Per aggiornare il totale parziale ogni volta che un utente seleziona il pulsante Aggiungi, impostarne la proprietà OnSelect su questa formula: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 )

    Questa formula aggiungerà il nuovo valore alla fine della raccolta.This formula will add the new value to the end of the collection. Dato che si sta aggiungendo un singolo valore, Collect lo inserirà automaticamente in una tabella a colonna singola con il nome colonna Valore che verrà usato in un secondo momento.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. Per eliminare il nastro perforato quando l'utente seleziona il pulsante Cancella, impostarne la proprietà OnSelect su questa formula:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Per visualizzare il totale parziale, aggiungere un'etichetta e impostarne la proprietà Text sulla formula seguente:To display the running total, add a label, and set its Text property to this formula:

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

  6. Per eseguire la calcolatrice, premere F5 per visualizzare l'anteprima, immettere i numeri nel controllo di input di testo e selezionare i pulsanti.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Per tornare all'area di lavoro predefinita, premere il tasto ESC.To return to the default workspace, press the Esc key.
  8. Per visualizzare il nastro perforato, aggiungere un controllo Tabella di dati e impostarne la proprietà Items su questa formula seguente:To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    Sarà anche necessario selezionare le colonne da visualizzare nel riquadro di destra, in questo caso per mostrare la colonna Valore:You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Per visualizzare i valori nella raccolta, selezionare Raccolte dal menu File.To see the values in your collection, select Collections on the File menu.

  10. Per archiviare e recuperare la raccolta, aggiungere due pulsanti supplementari e impostarne il testo su Carica e Salva.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Per Carica, impostare la proprietà su OnSelect:For Load, set the OnSelect property to:

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

    È necessario prima cancellare la raccolta perché LoadData aggiungerà i valori archiviati alla fine della raccolta.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Per Salva, impostare la proprietà su OnSelect:For Save, set the OnSelect property to:

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

  12. Per visualizzare di nuovo l'anteprima, premere il tasto F5, immettere i numeri nel controllo di input di testo e selezionare i pulsanti.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Selezionare il pulsante Salva.Select the Save button. Chiudere e ricaricare l'app e selezionare il pulsante Carica per ricaricare la raccolta.Close and reload your app, and select the Load button to reload your collection.

    Nota: SaveData e LoadData non funzionano quando sono in esecuzione in un web browser, perché è necessario usare lo studio installato in Windows o uno dei lettori per dispositivi mobili.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.