Comprendre les variables dans PowerAppsUnderstand variables in PowerApps

Si vous avez déjà utilisé un autre outil de programmation, tel que Visual Basic ou JavaScript, vous vous demanderez peut-être : Où sont les variables ?If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps est un peu différent et requiert une autre approche.PowerApps is a little different and requires a different approach. Au lieu de chercher une variable, demandez-vous : Que ferais-je dans Excel ?Instead of reaching for a variable, ask yourself: What would I do in Excel?

Dans d’autres outils, vous auriez peut-être explicitement effectué un calcul et stocké le résultat dans une variable.In other tools, you may have explicitly performed a calculation and stored the result in a variable. Cependant, PowerApps et Excel recalculent automatiquement les formules lorsque les données saisies sont modifiées. Ainsi, vous n’avez donc généralement pas besoin de créer ni de mettre à jour des variables.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. En adoptant cette approche lorsque cela est possible, vous facilitez la création, la compréhension et la gestion de votre application.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

Dans certains cas, vous devrez utiliser des variables dans PowerApps, qui étend le modèle d’Excel en ajoutant des formules de comportement.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Ces formules sont exécutées lorsque, par exemple, un utilisateur sélectionne un bouton.These formulas run when, for example, a user selects a button. Dans une formule de comportement, il est souvent utile de définir une variable à utiliser dans d’autres formules.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

De manière générale, évitez d’utiliser des variables.In general, avoid using variables. Toutefois, dans certains cas, seule une variable vous permet d’obtenir l’expérience que vous souhaitez.But sometimes only a variable can enable the experience you want.

Convertir Excel dans PowerAppsTranslate Excel into PowerApps

ExcelExcel

Examinons le fonctionnement d’Excel.Let's review how Excel works. Une cellule peut contenir une valeur, comme un nombre ou une chaîne, ou une formule basée sur les valeurs d’autres cellules.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. Lorsque l’utilisateur entre une valeur différente dans une cellule, Excel recalcule automatiquement les formules qui dépendent de la nouvelle valeur.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. Vous n’avez aucune programmation à effectuer pour activer ce comportement.You don't have to do any programming to enable this behavior.

Excel ne possède pas de variables.Excel doesn't have variables. La valeur d’une cellule qui contient une formule change en fonction de son contenu, mais il n’existe aucun moyen de mémoriser le résultat d’une formule et de le stocker dans une cellule ou n’importe où ailleurs.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. Si vous modifiez la valeur d’une cellule, l’ensemble de la feuille de calcul peut être modifié et toutes les valeurs précédemment calculées sont perdues.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Un utilisateur Excel peut copier et coller des cellules, mais cette opération dépend du contrôle manuel de l’utilisateur et n’est pas possible avec des formules.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Les applications que vous créez dans PowerApps ont un comportement très proche d’Excel.Apps that you create in PowerApps behave very much like Excel. Au lieu de mettre à jour des cellules, vous pouvez ajouter des contrôles où vous le souhaitez sur un écran et les nommer pour les utiliser dans des formules.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Par exemple, vous pouvez répliquer le comportement d’Excel dans une application en ajoutant un contrôle Label nommé TextBox1 et deux contrôles Text input nommés TextInput1 et 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. Si vous définissez ensuite la propriété Text de TextBox1 sur TextInput1 + TextInput2, elle affichera toujours automatiquement la somme des nombres qui se trouvent dans TextInput1 et TextInput2.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.

Notez que le contrôle TextBox1 est sélectionné, ce qui affiche sa formule Text dans la barre de formule en haut de l’écran.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Ici, nous trouvons la formule TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Cette formule crée une dépendance entre ces contrôles, au même titre que les dépendances créées entre les cellules dans un classeur Excel.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Nous allons maintenant changer la valeur de TextInput1 :Let's change the value of the TextInput1:

La formule de TextBox1 a été automatiquement recalculée et affiche la nouvelle valeur.The formula for TextBox1 has been automatically recalculated, showing the new value.

Dans PowerApps, vous pouvez utiliser des formules pour déterminer non seulement la valeur principale d’un contrôle, mais également des propriétés telles que la mise en forme.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. Dans l’exemple suivant, une formule pour la propriété Color de l’étiquette affiche automatiquement les valeurs négatives en rouge.In the next example, a formula for the Color property of the label will automatically show negative values in red. La fonction If est très proche de celle d’Excel :The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0, Red, Black )If( Value(TextBox1.Text) < 0, Red, Black )

Désormais, si le résultat de notre calcul dans TextBox1.Text est négatif, le nombre s’affichera en rouge :Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

Vous pouvez utiliser des formules pour un vaste éventail de scénarios :You can use formulas for a wide variety of scenarios:

  • En utilisant le GPS de votre appareil, un contrôle de carte peut afficher votre emplacement actuel à l’aide d’une formule qui utilise les données Location.Latitude et 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. À mesure que vous vous déplacez, la carte géolocalisera automatiquement votre position.As you move, the map will automatically track your location.
  • Les autres utilisateurs peuvent mettre à jour les sources de données.Other users can update data sources. Par exemple, d’autres personnes de votre équipe peuvent mettre à jour des éléments d’une liste SharePoint.For example, others on your team might update items in a SharePoint list. Lorsque vous actualisez une source de données, toutes les formules dépendantes sont automatiquement recalculées afin de refléter les données mises à jour.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. En poursuivant cet exemple, vous pouvez définir la propriété Items d’une galerie sur la formule Filter( SharePointList ), qui affiche automatiquement le nouvel ensemble d’enregistrements filtré.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.

AvantagesBenefits

L’utilisation de formules pour créer des applications présente de nombreux avantages :Using formulas to build apps has many advantages:

  • Si vous connaissez Excel, vous connaissez PowerApps.If you know Excel, you know PowerApps. Le modèle et le langage des formules sont identiques.The model and formula language are the same.
  • Si vous avez déjà utilisé d’autres outils de programmation, imaginez la quantité de code qui serait nécessaire pour exécuter ces exemples.If you've used other programming tools, think about how much code would be required to accomplish these examples. Dans Visual Basic, vous devriez écrire un gestionnaire d’événements pour l’événement de modification sur chaque contrôle d’entrée de texte.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. Le code permettant d’effectuer le calcul dans chacune d’elles est redondant et pourrait être désynchronisé, ou vous devriez écrire une sous-routine commune.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. Dans PowerApps, vous avez accompli tout cela avec une formule unique sur une seule ligne.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Pour comprendre d’où provient le texte de TextBox1, vous savez exactement où chercher : la formule de la propriété Text.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. Il n’existe aucun autre moyen d’affecter le texte de ce contrôle.There's no other way to affect the text of this control. Dans un outil de programmation traditionnel, tout gestionnaire d’événements ou toute sous-routine peut modifier la valeur du libellé, à partir de n’importe où dans le programme.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. Cela peut rendre difficile le repérage du moment et de l’endroit auxquels la variable a été modifiée.This can make it hard to track down when and where a variable was changed.
  • Si l’utilisateur modifie un contrôle de curseur, puis change d’avis, il peut rétablir le curseur sur sa valeur d’origine.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. C’est comme si rien n’avait changé : l’application affiche les mêmes valeurs de contrôle qu’auparavant.And it's as if nothing had ever changed: the app shows the same control values as it did before. Il n’existe aucune ramification permettant de tester et de demander « que se passe-t-il si », tout comme dans Excel.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

De manière générale, il est préférable d’obtenir un effet à l’aide d’une formule.In general, if you can achieve an effect by using a formula, you'll be better off. Reposez-vous sur le moteur de formules de PowerApps.Let the formula engine in PowerApps work for you.

Savoir quand utiliser des variablesKnow when to use variables

Modifions notre additionneur simple pour qu’il se comporte comme une machine à additionner traditionnelle, avec un total cumulé.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Si vous sélectionnez le bouton Ajouter, vous ajoutez un nombre au total cumulé.If you select an Add button, you'll add a number to the running total. Si vous sélectionnez le bouton Effacer, vous réinitialisez le total cumulé sur zéro.If you select a Clear button, you'll reset the running total to zero.

Notre machine à additionner utilise un élément qui n’existe pas dans Excel : un bouton.Our adding machine uses something that doesn't exist in Excel: a button. Dans cette application, vous ne pouvez pas utiliser uniquement des formules pour calculer le total cumulé, car sa valeur dépend d’une série d’actions effectuées par l’utilisateur.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. Au lieu de cela, notre total cumulé doit être enregistré et mis à jour manuellement.Instead, our running total must be recorded and updated manually. La plupart des outils de programmation stockent ces informations dans une variable.Most programming tools store this information in a variable.

Vous avez parfois besoin d’une variable pour que votre application se comporte comme vous le souhaitez.You'll sometimes need a variable for your app to behave the way you want. Cependant, cette approche implique des mises en garde :But the approach comes with caveats:

  • Vous devez mettre à jour manuellement le total cumulé.You must manually update the running total. Le recalcul automatique ne sera pas effectué automatiquement.Automatic recalculation won't do it for you.
  • Le total cumulé ne peut plus être calculé en fonction des valeurs d’autres contrôles.The running total can no longer be calculated based on the values of other controls. Il dépend du nombre de fois que l’utilisateur a sélectionné le bouton Ajouter et de la valeur qui était dans le contrôle de saisie de texte à chaque fois.It depends on how many times the user selected the Add button and what value was in the text-input control each time. L’utilisateur a-t-il entré 77 et sélectionné Ajouter à deux reprises, ou a-t-il spécifié 24 et 130 pour chacun des ajouts ?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? Vous ne pouvez pas faire la différence lorsque le total atteint 154.You can't tell the difference after the total has reached 154.
  • Les modifications apportées au total peuvent provenir de différentes sources.Changes to the total can come from different paths. Dans cet exemple, les boutons Ajouter et Effacer peuvent mettre à jour le total.In this example, both the Add and Clear buttons can update the total. Si l’application ne se comporte pas comme prévu, quel bouton provoque le problème ?If the app doesn't behave the way you expect, which button is causing the problem?

Créer une variable globaleCreate a global variable

Pour créer notre machine à additionner, nous avons besoin d’une variable qui contienne le total cumulé.To create our adding machine, we require a variable to hold the running total. Les variables les plus simples dans PowerApps sont les variables globales.The simplest variables to work with in PowerApps are global variables.

Fonctionnement des variables globales :How global variables work:

  • Définissez la valeur de la variable globale avec la fonction Set.You set the value of the global variable with the Set function. Set( MyVar, 1 ) définit la variable globale MyVar sur la valeur 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Utilisez la variable globale en référençant le nom utilisé avec la fonction Set.You use the global variable by referencing the name used with the Set function. Dans ce cas, MyVar retourne 1.In this case, MyVar will return 1.
  • Les variables globales peuvent contenir n’importe quelle valeur, y compris des chaînes, des nombres, des enregistrements et des tables.Global variables can hold any value, including strings, numbers, records, and tables.

Recréez la machine à additionner à l’aide d’une variable globale :Let's rebuild our adding machine by using a global variable:

  1. Ajoutez un contrôle Text input nommé TextInput1 et deux boutons, nommés Button1 et Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Définissez la propriété Text de Button1 sur « Ajouter » et la propriété Text de Button2 sur « Effacer ».Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Pour mettre à jour le total cumulé chaque fois qu’un utilisateur sélectionne le bouton Ajouter, définissez sa propriété OnSelect sur la formule suivante :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 première fois qu’un utilisateur sélectionne le bouton Add (Ajouter) et que la fonction Set est appelée, RunningTotal est créé avec une valeur par défaut vide.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Dans le cadre de l’addition, elle est considérée comme un zéro.In the addition, it will be treated as a zero.

  4. Pour définir le total cumulé sur 0 chaque fois que l’utilisateur sélectionne le bouton Effacer, définissez sa propriété OnSelect sur la formule suivante :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. Ajoutez un contrôle Label et définissez sa propriété Text sur RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Cette formule est recalculée automatiquement et permet à l’utilisateur de consulter la valeur de RunningTotal à mesure qu’elle est modifiée selon les boutons sélectionnés par l’utilisateur.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. Affichez un aperçu de l’application : vous obtenez la machine à additionner, telle que décrite ci-dessus.Preview the app, and we have our adding machine as described above. Entrez un nombre dans la zone de texte et appuyez sur le bouton Ajouter plusieurs fois.Enter a number in the text box and press the Add button a few times. Lorsque vous êtes prêt, revenez à l’expérience de création à l’aide de la touche Échap.When ready, return to the authoring experience using the Esc key.

  7. Pour afficher la valeur de la variable globale, sélectionnez le menu Fichier et sélectionnez Variables dans le volet gauche.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Pour afficher tous les emplacements où la variable est définie et utilisée, sélectionnez-la.To see all the places where our variable is defined and used, select it.

Types de variableTypes of variables

Il existe trois types de variable dans PowerApps :There are three types of variables in PowerApps:

Type de variableVariables type PortéeScope DescriptionDescription FunctionsFunctions
Variables globalesGlobal variables AppApp Les plus simples à utiliser.Simplest to use. Contiennent un nombre, une chaîne de texte, une table, une valeur booléenne, un enregistrement, etc., qui peut être référencé à partir de n’importe où dans l’application.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
Variables de contexteContext variables ÉcranScreen Idéales pour transmettre des valeurs à un écran, comme vous transmettriez des paramètres à une procédure dans d’autres langages.Great for passing values to a screen, much like parameters to a procedure in other languages. Peuvent uniquement être référencées à partir d’un seul écran.Can only be referenced from one screen. UpdateContextUpdateContext
NavigateNavigate
CollectionsCollections AppApp Contiennent une table qui peut être référencée à partir de n’importe où dans l’application.Holds a table that can be references from anywhere in the app. Permettent de modifier le contenu de la table plutôt que de le définir dans son ensemble.Allows the contents of the table to be modified rather than being set as a whole. Peuvent être enregistrées sur l’appareil local pour une utilisation ultérieure.Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect
PatchPatch
UpdateUpdate
RemoveRemove
SaveDataSaveData
LoadDataLoadData
etc.etc.

Toutes les variables sont créées implicitement lorsqu’elles sont utilisées dans les fonctions Set, UpdateContext, Navigate ou Collect.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. Il n’existe aucune déclaration explicite des variables, contrairement à ce qui se passe dans d’autres outils de programmation.There is no explicit declaration of variables as is done in other programming tools. Les types de variable sont également dérivés implicitement à partir des valeurs qui y sont placées.The types of the variables are also derived implicitly from the values that are placed in them.

Toutes les variables sont conservées en mémoire pendant l’exécution de l’application.All variables are held in memory while the app is running. Après la fermeture de l’application, les valeurs contenues dans les variables sont perdues.After the app closes, the values held in the variables are lost. Vous pouvez stocker le contenu d’une variable dans une source de données à l’aide des fonctions Patch ou Collect, ou dans le cas des collections, vous pouvez stocker l’appareil local avec la fonction 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. Lors du premier chargement de l’application, toutes les variables ont la valeur vide.When the app is first loaded, all variables will have the blank value.

Utilisez les noms des variables pour lire leurs valeurs.You use the variables name to read its value. Par exemple, une fois que vous avez défini une variable avec Set( MyColor, Red ), vous pouvez simplement utiliser MyVar partout où une valeur de couleur peut être utilisée et celle-ci est alors remplacée par le rouge.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. Il est possible d’avoir une variable globale ou une collection portant le même nom qu’une variable de contexte.It is possible to have a global variable or collection with the same name as a context variable. Dans ce cas, la variable de contexte est prioritaire.In this case, the context variable will take precedence. Vous pouvez toujours référencer la variable globale ou la collection avec l’opérateur de levée d’ambiguïté @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Créer une variable de contexteCreate a context variable

Nous allons voir comment créer notre machine à additionner à l’aide d’une variable de contexte au lieu d’une variable globale.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Fonctionnement des variables de contexte :How context variables work:

  • Vous pouvez créer et définir des variables de contexte à l’aide de la fonction UpdateContext.You create and set context variables by using the UpdateContext function. Si une variable de contexte n’existe pas déjà lors de la première mise à jour, elle sera créée avec une valeur par défaut vide.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Vous pouvez créer et mettre à jour des variables de contexte avec des enregistrements.You create and update context variables with records. Dans d’autres outils de programmation, vous utilisez couramment « = » pour l’affectation, comme dans « x = 1 ».In other programming tools, you commonly use "=" for assignment, as in "x = 1". Pour les variables de contexte, utilisez {x: 1} à la place.For context variables, use { x: 1 } instead. Lorsque vous utilisez une variable de contexte, utilisez directement son nom.When you use a context variable, use its name directly.
  • Vous pouvez également définir une variable de contexte lorsqu’un écran s’affiche à l’aide de la fonction Navigate.You can also set a context variable when a screen is displayed, by using the Navigate function. Si vous considérez un écran comme une sorte de procédure ou de sous-routine, cette opération est semblable à la transmission de paramètres dans d’autres outils de programmation.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • À l’exception de Navigate, les variables de contexte sont limitées au contexte d’un seul écran, d’où elles tirent leur nom.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. Vous ne pouvez pas les utiliser ni les définir en dehors de ce contexte.You can't use or set them outside of this context.
  • Les variables de contexte peuvent contenir n’importe quelle valeur, y compris des chaînes, des nombres, des enregistrements et des tableaux.Context variables can hold any value, including strings, numbers, records, and tables.

Recréons notre machine à additionner à l’aide d’une variable de contexte :Let's rebuild our adding machine by using a context variable:

  1. Ajoutez un contrôle Text input nommé TextInput1 et deux boutons, nommés Button1 et Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Définissez la propriété Text de Button1 sur « Ajouter » et la propriété Text de Button2 sur « Effacer ».Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Pour mettre à jour le total cumulé chaque fois qu’un utilisateur sélectionne le bouton Ajouter, définissez sa propriété OnSelect sur la formule suivante :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 première fois qu’un utilisateur sélectionne le bouton Ajouter et que la fonction UpdateContext est appelée, RunningTotal est créé avec une valeur par défaut vide.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Dans le cadre de l’addition, elle est considérée comme un zéro.In the addition, it will be treated as a zero.

  4. Pour définir le total cumulé sur 0 chaque fois que l’utilisateur sélectionne le bouton Effacer, définissez sa propriété OnSelect sur la formule suivante :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 } )

    Là encore, UpdateContext est utilisé avec la formule UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Ajoutez un contrôle Label et définissez sa propriété Text sur RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Cette formule est recalculée automatiquement et permet à l’utilisateur de consulter la valeur de RunningTotal à mesure qu’elle est modifiée selon les boutons sélectionnés par l’utilisateur.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. Affichez un aperçu de l’application : vous obtenez la machine à additionner, telle que décrite ci-dessus.Preview the app and we have our adding machine as described above. Entrez un nombre dans la zone de texte et appuyez sur le bouton Ajouter plusieurs fois.Enter a number in the text box and press the Add button a few timnes. Lorsque vous êtes prêt, revenez à l’expérience de création à l’aide de la touche Échap.When ready, return to the authoring experience using the Esc key.

  7. Vous pouvez définir la valeur d’une variable de contexte tout en navigant vers un écran.You can set the value of a context variable while navigating to a screen. Cela est utile pour la transmission d’un « contexte » ou de « paramètres » d’un écran à un autre.This is useful for passing "context" or "parameters" from one screen to another. Pour voir comment cela fonctionne, insérez un nouvel écran et insérez un bouton avec la propriété OnSelect définie comme suit :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 } )

    Lorsque vous sélectionnez ce bouton sur l’écran2 (ce que vous pouvez faire lors de création si vous sélectionnez le bouton vers les extrémités), cela affiche Écran1 et définit également la variable de contexte RunningTotal sur -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. Pour afficher la valeur de la variable de contexte, sélectionnez le menu Fichier et sélectionnez Variables dans le volet gauche.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Pour afficher l’emplacement où la variable de contexte est définie et utilisée, sélectionnez-la.To see where your context variable is defined and used, select it.

Créer une collectionCreate a collection

Enfin, examinons la création de la machine à additionner avec une collection.Finally, let's look at creating our adding machine with a collection. Étant donné que la collection conserve une table qui est facile à modifier, vous allez configurer cette machine de sorte qu’elle conserve une « bande de papier » de chaque valeur entrée.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.

Fonctionnement des collections :How collections work:

  • Créez et définissez des collections à l’aide de la fonction ClearCollect.Create and set collections by using the ClearCollect function. Vous pouvez également utiliser la fonction Collect, mais elle nécessitera une autre variable au lieu de remplacer l’ancienne.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • Une collection est une sorte de source de données et, par conséquent, une table.A collection is a kind of data source and, therefore, a table. Pour accéder à une valeur unique dans une collection, utilisez la fonction First et extrayez un champ de l’enregistrement qui en résulte.To access a single value in a collection, use the First function, and extract one field from the resulting record. Si vous avez utilisé une valeur unique avec ClearCollect, il s’agira du champ Valeur, comme dans cet exemple :If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( VariableName ).ValueFirst( VariableName ).Value

Recréons notre machine à additionner à l’aide d’une collection :Let's recreate our adding machine by using a collection:

  1. Ajoutez un contrôle Text input nommé TextInput1 et deux boutons, nommés Button1 et Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.
  2. Définissez la propriété Text de Button1 sur « Ajouter » et la propriété Text de Button2 sur « Effacer ».Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".
  3. Pour mettre à jour le total cumulé chaque fois qu’un utilisateur sélectionne le bouton Ajouter, définissez sa propriété OnSelect sur la formule suivante :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 )

    Cette formule ajoute la nouvelle valeur à la fin de la collection.This formula will add the new value to the end of the collection. Étant donné que vous ajoutez une valeur unique, Collect la place automatiquement dans une table à colonne unique avec le nom de colonne Value que vous utiliserez plus tard.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. Pour effacer la bande lorsque l’utilisateur sélectionne le bouton Effacer, définissez sa propriété OnSelect sur la formule suivante :To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Pour afficher le total cumulé, ajoutez une étiquette et définissez sa propriété Text sur la formule suivante :To display the running total, add a label, and set its Text property to this formula:

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

  6. Pour exécuter la machine à additionner, appuyez sur F5 pour ouvrir l’aperçu, entrez des nombres dans le contrôle d’entrée de texte, puis sélectionnez des boutons.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Pour revenir à l’espace de travail par défaut, appuyez sur Échap.To return to the default workspace, press the Esc key.
  8. Pour afficher la bande de papier, insérez un contrôle Data table, puis définissez sa propriété Items sur la formule suivante :To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    Vous devez également sélectionner les colonnes à afficher dans le volet de droite, dans le cas présent, la colonne Value :You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Pour afficher les valeurs dans votre collection, sélectionnez Collections dans le menu Fichier.To see the values in your collection, select Collections on the File menu.

  10. Pour stocker et récupérer votre collection, ajoutez deux contrôles de bouton supplémentaires et définissez leur texte sur Load et Save.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Pour Load, définissez la propriété OnSelect sur :For Load, set the OnSelect property to:

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

    Vous avez besoin de supprimer la collection en premier, car LoadData ajoute les valeurs stockées à la fin de la collection.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Pour Save, définissez la propriété OnSelect sur :For Save, set the OnSelect property to:

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

  12. Affichez un aperçu en appuyant sur la touche F5, entrez des nombres dans le contrôle d’entrée de texte, puis sélectionnez les boutons.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Sélectionnez le bouton Enregistrer.Select the Save button. Fermez et rechargez votre application, puis sélectionnez le bouton Load pour recharger votre collection.Close and reload your app, and select the Load button to reload your collection.

    Remarque : SaveData et LoadData ne fonctionnent pas lors de l’exécution dans un navigateur web : vous devez utiliser le studio installé sur Windows ou l’un des lecteurs pour appareil mobile.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.