Principy proměnných v PowerAppsUnderstand variables in PowerApps

Pokud jste používali jiný programovací nástroj, jako je například Visual Basic nebo JavaScript, možná se ptáte: Kde jsou proměnné?If you've used another programming tool, such as Visual Basic or JavaScript, you may be asking: Where are the variables? PowerApps se mírně liší a vyžaduje jiný přístup.PowerApps is a little different and requires a different approach. Místo využití proměnné si položte otázku: Co bych udělal(a) v Excelu?Instead of reaching for a variable, ask yourself: What would I do in Excel?

V jiných nástrojích jste asi explicitně provedli výpočet a výsledek uložili do proměnné.In other tools, you may have explicitly performed a calculation and stored the result in a variable. PowerApps i Excel ovšem automaticky přepočítávají vzorce, když dojde ke změně vstupních dat, takže obvykle není nutné vytvářet a aktualizovat proměnné.However, PowerApps and Excel both automatically recalculate formulas as the input data changes, so you usually don't need to create and update variables. Pokud si tento postup co nejvíce osvojíte, můžete svoji aplikaci snadněji vytvářet a udržovat a vyznat se v ní.By taking this approach whenever possible, you can more easily create, understand, and maintain your app.

V některých případech budete muset použít proměnné v aplikaci PowerApps, která oproti Excelu má navíc vzorce chování.In some cases, you'll need to use variables in PowerApps, which extends Excel's model by adding behavior formulas. Tyto vzorce se spustí, když například uživatel klikne nebo klepne na tlačítko.These formulas run when, for example, a user selects a button. V rámci vzorce chování je často užitečné nastavit proměnnou, která se použije v jiných vzorcích.Within a behavior formula, it's often helpful to set a variable to be used in other formulas.

Obecně se proměnným vyhýbejte.In general, avoid using variables. Ale v některých případech může požadované výsledky přinést jenom proměnná.But sometimes only a variable can enable the experience you want.

Převod Excelu do PowerAppsTranslate Excel into PowerApps

ExcelExcel

Pojďme si zopakovat, jak funguje Excel.Let's review how Excel works. Buňka může obsahovat hodnotu, jako je číslo nebo řetězec, nebo vzorec, který je založený na hodnotách jiných buněk.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. Poté, co uživatel zadá do buňky jinou hodnotu, Excel automaticky přepočítá všechny vzorce, které jsou závislé na nové hodnotě.After the user enters a different value into a cell, Excel automatically recalculates any formulas that depend on the new value. Nemusíte nic programovat, aby to takto fungovalo.You don't have to do any programming to enable this behavior.

Excel nemá proměnné.Excel doesn't have variables. Hodnota buňky, která obsahuje vzorec, se mění podle údajů zadaných ve vzorci, ale neexistuje žádný způsob, jak si výsledek vzorce pamatovat a uložit ho v buňce nebo někde jinde.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. Pokud změníte hodnotu buňky, může se změnit celá tabulka a všechny dříve vypočtené hodnoty budou ztraceny.If you change a cell's value, the entire spreadsheet may change, and any previously calculated values are lost. Uživatel Excelu můžete kopírovat a vkládat buňky, to je ale ruční práce uživatele, která není se vzorci možná.An Excel user can copy and paste cells, but that's under the user's manual control and isn't possible with formulas.

PowerAppsPowerApps

Aplikace, které vytvoříte v PowerApps, se chovají velmi podobně jako Excel.Apps that you create in PowerApps behave very much like Excel. Místo aktualizování buněk můžete kamkoliv na obrazovce přidat ovládací prvky a pojmenovat je pro použití ve vzorcích.Instead of updating cells, you can add controls wherever you want on a screen and name them for use in formulas.

Můžete například replikovat chování Excelu v aplikaci tak, že přidáte ovládací prvek Popisek s názvem TextBox1 a dva ovládací prvky Textové zadání s názvem TextInput1 a 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. Pokud pak nastavíte vlastnost Text prvku TextBox1 na TextInput1 + TextInput2, bude vždy automaticky ukazovat součet čísel v TextInput1 a 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.

Všimněte si, že ovládací prvek TextBox1 je vybraný a zobrazuje svůj vzorec Text v řádku vzorců v horní části obrazovky.Notice that the TextBox1 control is selected, showing its Text formula in the formula bar at the top of the screen. Najdeme tam vzorec TextInput1 + TextInput2.Here we find the formula TextInput1 + TextInput2. Ten vytvoří závislost mezi těmito ovládacími prvky, stejně jako se vytvářejí závislosti mezi buňkami v excelovém sešitu.This formula creates a dependency between these controls, just as dependencies are created between cells in an Excel workbook. Změňme hodnotu TextInput1:Let's change the value of the TextInput1:

Vzorec pro TextBox1 se automaticky přepočítá a zobrazuje novou hodnotu.The formula for TextBox1 has been automatically recalculated, showing the new value.

Vzorce v PowerApps slouží k určení nejen primární hodnoty ovládacího prvku, ale také vlastností, například formátování.In PowerApps, you can use formulas to determine not only the primary value of a control but also properties such as formatting. V následujícím příkladu vzorec pro vlastnost Color popisku automaticky zobrazí záporné hodnoty červeně.In the next example, a formula for the Color property of the label will automatically show negative values in red. Funkce If by měla být velmi povědomá z Excelu:The If function should look very familiar from Excel:
If( Value(TextBox1.Text) < 0; Red; Black )If( Value(TextBox1.Text) < 0, Red, Black )

Teď pokud je výsledek naše výpočtu v TextBox1.Text záporný, číslo se zobrazí červeně:Now, if the result of our calculation in TextBox1.Text is negative, the number will be shown in red:

Vzorce můžete použít pro nejrůznější situace:You can use formulas for a wide variety of scenarios:

  • Pomocí GPS z vašeho zařízení může ovládací prvek mapy zobrazovat vaši aktuální polohu s využitím vzorce, který používá Location.Latitude a 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. Když se budete pohybovat, mapa bude vaši polohu automaticky sledovat.As you move, the map will automatically track your location.
  • Jiní uživatelé můžou aktualizovat zdroje dat.Other users can update data sources. Například jiní členové týmu by mohli aktualizovat položky v sharepointovém seznamu.For example, others on your team might update items in a SharePoint list. Když aktualizujete zdroj dat, všechny závislé vzorce se automaticky přepočítají, aby odrážely aktualizovaná data.When you refresh a data source, any dependent formulas are automatically recalculated to reflect the updated data. Když budeme v příkladu pokračovat, mohli byste nastavit vlastnost Items galerie na vzorec Filter( SharePointList), který automaticky zobrazí nově vyfiltrovanou sadu záznamů.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.

VýhodyBenefits

Použití vzorců k sestavování aplikací má mnoho výhod:Using formulas to build apps has many advantages:

  • Pokud znáte Excel, znáte PowerApps.If you know Excel, you know PowerApps. Model a jazyk vzorce jsou stejné.The model and formula language are the same.
  • Pokud jste používali jiné programovací nástroje, představte si, kolik kódu by bylo zapotřebí k provedení těchto příkladů.If you've used other programming tools, think about how much code would be required to accomplish these examples. V jazyce Visual Basic byste museli napsat obslužnou rutinu události pro událost změny u každého ovládacího prvku zadávání textu.In Visual Basic, you'd need to write an event handler for the change event on each text-input control. Kód k provedení výpočtu v každém z nich je redundantní a mohl by se rozsynchronizovat nebo byste museli napsat společný podprogram.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. V PowerApps k dosažení toho všeho stačil jeden jednořádkový vzorec.In PowerApps, you accomplished all of that with a single, one-line formula.
  • Pokud chcete pochopit, odkud pochází text prvku TextBox1, víte přesně, kde hledat: vzorec ve vlastnosti Text.To understand where TextBox1's text is coming from, you know exactly where to look: the formula in the Text property. Neexistuje jiný způsob, jak ovlivnit text tohoto ovládacího prvku.There's no other way to affect the text of this control. V tradičním programovacím nástroji by každá obslužná rutina události nebo podprogram mohl změnit hodnotu popisku z kteréhokoliv místa v programu.In a traditional programming tool, any event handler or subroutine could change the value of the label, from anywhere in the program. Proto může být obtížné sledovat, kdy a kde se proměnná změnila.This can make it hard to track down when and where a variable was changed.
  • Když uživatel změní posuvník a potom si to rozmyslí, může posuvník změnit zpět na původní hodnotu.If the user changes a slider control and then changes their mind, they can change the slider back to its original value. A je to, jako by se nikdy nic nezměnilo: Aplikace zobrazuje stejné hodnoty ovládacího prvku jako předtím.And it's as if nothing had ever changed: the app shows the same control values as it did before. Experimentování a dotaz „Co když“ nepřináší žádné následky, stejně jako v Excelu.There are no ramifications for experimenting and asking "what if," just as there are none in Excel.

Obecně platí, že pokud můžete dosáhnout účinku pomocí vzorce, bude lepší vzorec.In general, if you can achieve an effect by using a formula, you'll be better off. Nechte modul vzorců v PowerApps pracovat za vás.Let the formula engine in PowerApps work for you.

Jak poznat, kdy použít proměnnéKnow when to use variables

Změňme náš jednoduchý sčítač tak, aby fungoval jako starý sčítací stroj s mezisoučtem.Let's change our simple adder to act like an old-fashioned adding machine, with a running total. Pokud vyberete tlačítko Přidat, přičtete číslo k mezisoučtu.If you select an Add button, you'll add a number to the running total. Pokud vyberete tlačítko Vymazat, mezisoučet se vynuluje.If you select a Clear button, you'll reset the running total to zero.

Náš sčítací stroj používá něco, co v Excelu neexistuje: tlačítko.Our adding machine uses something that doesn't exist in Excel: a button. V této aplikaci nemůžete k výpočtu mezisoučtu použít jenom vzorce, protože jeho hodnota závisí na řadě akcí, které uživatel provede.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. Místo toho se musí mezisoučet zaznamenat a aktualizovat ručně.Instead, our running total must be recorded and updated manually. Většina programovacích nástrojů ukládá tyto informace do proměnné.Most programming tools store this information in a variable.

Někdy budete proměnnou pro svoji aplikaci potřebovat, aby se chovala požadovaným způsobem.You'll sometimes need a variable for your app to behave the way you want. Ale tento přístup má určitá úskalí:But the approach comes with caveats:

  • Musíte ručně aktualizovat mezisoučet.You must manually update the running total. Automatické přepočítání to za vás neudělá.Automatic recalculation won't do it for you.
  • Mezisoučet už nejde vypočítat na základě hodnot jiných ovládacích prvků.The running total can no longer be calculated based on the values of other controls. Závisí na tom, kolikrát uživatel vybral tlačítko Přidat a jaká hodnota byla pokaždé v ovládacím prvku zadávání textu.It depends on how many times the user selected the Add button and what value was in the text-input control each time. Zadal uživatel 77 a vybral dvakrát Přidat nebo zadal 24 a 130 pro každé sčítané číslo?Did the user enter 77 and select Add twice, or did they specify 24 and 130 for each of the additions? Když je součet 154, rozdíl nepoznáte.You can't tell the difference after the total has reached 154.
  • Změny v součtu můžou pocházet z různých cest.Changes to the total can come from different paths. V tomto příkladu může součet aktualizovat tlačítko Přidat i Vymazat.In this example, both the Add and Clear buttons can update the total. Pokud se aplikace nechová očekávaným způsobem, které tlačítko je příčinou problému?If the app doesn't behave the way you expect, which button is causing the problem?

Vytvoření globální proměnnéCreate a global variable

Abychom vytvořili náš sčítač, vyžadujeme, aby byl mezisoučet v proměnné.To create our adding machine, we require a variable to hold the running total. Nejjednodušší proměnné pro práci v PowerApps jsou globální proměnné.The simplest variables to work with in PowerApps are global variables.

Jak globální proměnné fungují:How global variables work:

  • Hodnotu globální proměnné nastavíte funkcí Set.You set the value of the global variable with the Set function. Set( MyVar; 1 ) nastaví globální proměnnou MyVar na hodnotu 1.Set( MyVar, 1 ) sets the global variable MyVar to a value of 1.
  • Globální proměnnou použijete tak, že budete odkazovat na název použitý s funkcí Set.You use the global variable by referencing the name used with the Set function. V takovém případě MyVar vrátí 1.In this case, MyVar will return 1.
  • Globální proměnné můžou obsahovat libovolnou hodnotu, včetně řetězců, čísel, záznamů a tabulek.Global variables can hold any value, including strings, numbers, records, and tables.

Pojďme přebudovat náš sčítač pomocí globální proměnné:Let's rebuild our adding machine by using a global variable:

  1. Přidejte ovládací prvek zadávání textu s názvem TextInput1 a dvě tlačítka pojmenovaná Button1 a Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Nastavte vlastnost Text prvku Button1 na "Add" a nastavte vlastnost Text prvku Button2 na "Clear".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Pokud chcete aktualizovat mezisoučet pokaždé, když uživatel vybere tlačítko Přidat, nastavte jeho vlastnost OnSelect ne tento vzorec: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 )

    Když uživatel poprvé vybere tlačítko Přidat a zavolá se funkce Set, vytvoří se RunningTotal s výchozí prázdnou hodnotou.The first time a user selects the Add button and Set is called, RunningTotal is created with a default value of blank. Při sčítání se bude považovat za nulu.In the addition, it will be treated as a zero.

  4. Pokud chcete nastavit mezisoučet na 0 vždy, když uživatel vybere tlačítko Vymazat, nastavte jeho vlastnost OnSelect na tento vzorec: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. Přidejte ovládací prvek Popisek a nastavte jeho vlastnost Text na RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Tento vzorec se automaticky přepočítá a uživateli se zobrazí hodnota RunningTotal, jak se bude měnit podle tlačítek, která uživatel vybere.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. Zobrazte si náhled aplikace a máme tu náš sčítač, jak je popsáno výše.Preview the app, and we have our adding machine as described above. Zadejte do textového pole číslo a stiskněte několikrát tlačítko Přidat.Enter a number in the text box and press the Add button a few times. Až bude připravení, vraťte se pomocí klávesy Esc zpátky do prostředí pro vytváření.When ready, return to the authoring experience using the Esc key.

  7. Pokud chcete zobrazit hodnotu naší globální proměnné, vyberte nabídku Soubor a v levém podokně vyberte Proměnné.To see our global variable's value, select the File menu and select Variables in the left hand pane.

  8. Pokud chcete zobrazit všechna místa, kde je naše proměnná definovaná a použitá, vyberte ji.To see all the places where our variable is defined and used, select it.

Typy proměnnýchTypes of variables

V PowerApps existují tři typy proměnných:There are three types of variables in PowerApps:

Typ proměnnéVariables type RozsahScope PopisDescription FunctionsFunctions
Globální proměnnéGlobal variables AplikaceApp Nejjednodušší na používání.Simplest to use. Obsahuje číslo, textový řetězec, logickou hodnotu, záznam, tabulku atd., na které můžete odkazovat z libovolného místa v aplikaci.Holds a number, text string, Boolean, record, table, etc. that can be references from anywhere in the app. SetSet
Kontextové proměnnéContext variables ObrazovkaScreen Je velmi vhodná k předávání hodnot na obrazovku, podobně jako parametry do procedury v jiných jazycích.Great for passing values to a screen, much like parameters to a procedure in other languages. Dá se na ni odkazovat jenom z obrazovky.Can only be referenced from one screen. UpdateContextUpdateContext
NavigateNavigate
KolekceCollections AplikaceApp Obsahuje tabulku, na kterou se dá odkazovat z libovolného místa v aplikaci.Holds a table that can be references from anywhere in the app. Umožňuje měnit obsah tabulky místo nastavování jako celku.Allows the contents of the table to be modified rather than being set as a whole. Dá se uložit na místní zařízení pro pozdější použití.Can be saved to the local device for later use. CollectCollect
ClearCollectClearCollect
PatchPatch
UpdateUpdate
RemoveRemove
SaveDataSaveData
LoadDataLoadData
atd.etc.

Všechny proměnné se vytvářejí implicitně, když se použijí ve funkci Set, UpdateContext, Navigate nebo Collect.All variables are created implicitly when used in Set, UpdateContext, Navigate, or Collect functions. Neexistuje žádná explicitní deklarace proměnných, jak je tomu v jiných programovacích nástrojích.There is no explicit declaration of variables as is done in other programming tools. Typy proměnných se také implicitně odvozují od hodnot, které jsou v nich umístěné.The types of the variables are also derived implicitly from the values that are placed in them.

Všechny proměnné jsou uložené v paměti, když aplikace běží.All variables are held in memory while the app is running. Po ukončení aplikace dojde ke ztrátě hodnot uchovaných v proměnných.After the app closes, the values held in the variables are lost. Obsah proměnné můžete ukládat do zdroje dat pomocí funkcí Patch nebo Collect nebo v případě kolekcí je můžete uložit na místní zařízení pomocí funkce 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. Při prvním načtení aplikace budou mít všechny proměnné prázdnou hodnotu.When the app is first loaded, all variables will have the blank value.

K přečtení hodnoty proměnné slouží její název.You use the variables name to read its value. Například pokud ji definujete pomocí vzorce Set( MyColor; Red ), můžete jednoduše použít MyVar všude, kde se dá použít hodnota barvy, a nahradí se hodnotou 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. Je možné mít globální proměnnou nebo kolekci se stejným názvem jako kontextová proměnná.It is possible to have a global variable or collection with the same name as a context variable. V takovém případě bude mít kontextová proměnná přednost.In this case, the context variable will take precedence. Na globální proměnnou nebo kolekci můžete i tak odkazovat pomocí operátoru odstraňování mnohoznačností @[MyColor].You can still reference the global variable or collection using the disambiguation operator @[MyColor].

Vytvoření kontextové proměnnéCreate a context variable

Podívejme se, jak by se náš sčítací stroj vytvořil pomocí kontextové proměnné místo globální proměnné.Let's look at how our adding machine would be created using a context variable instead of a global variable.

Jak fungují kontextové proměnné:How context variables work:

  • Kontextové proměnné se vytvářejí pomocí funkce UpdateContext.You create and set context variables by using the UpdateContext function. Pokud kontextová proměnná při první aktualizaci ještě neexistuje, vytvoří se s výchozí prázdnou hodnotou.If a context variable doesn't already exist when first updated, it will be created with a default value of blank.
  • Kontextové proměnné se vytvářejí a aktualizují pomocí záznamů.You create and update context variables with records. V jiných programovacích nástrojích se běžně používá "=" pro přiřazení, jako v "x = 1".In other programming tools, you commonly use "=" for assignment, as in "x = 1". U kontextových proměnných se místo toho použije { x: 1 }.For context variables, use { x: 1 } instead. Pokud použijete kontextovou proměnnou, použijte přímo její název.When you use a context variable, use its name directly.
  • Kontextovou proměnnou můžete také nastavit, když se zobrazí obrazovka, pomocí funkce Navigate.You can also set a context variable when a screen is displayed, by using the Navigate function. Pokud si představíte obrazovku jako druh procedury nebo podprogramu, podobá se předávání parametru v jiných programovacích nástrojích.If you think of a screen as a kind of procedure or subroutine, this is similar to parameter passing in other programming tools.
  • S výjimkou funkce Navigate jsou kontextové proměnné omezené na kontext jedné obrazovky, což je místo, kde získají svůj název.Except for Navigate, context variables are limited to the context of a single screen, which is where they get their name. Mimo tento kontext nejdou použít nebo nastavit.You can't use or set them outside of this context.
  • Kontextové proměnné můžou obsahovat libovolnou hodnotu, včetně řetězců, čísel, záznamů a tabulek.Context variables can hold any value, including strings, numbers, records, and tables.

Pojďme přebudovat náš sčítač pomocí kontextové proměnné:Let's rebuild our adding machine by using a context variable:

  1. Přidejte ovládací prvek zadávání textu s názvem TextInput1 a dvě tlačítka pojmenovaná Button1 a Button2.Add a text-input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Nastavte vlastnost Text prvku Button1 na "Add" a nastavte vlastnost Text prvku Button2 na "Clear".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Pokud chcete aktualizovat mezisoučet pokaždé, když uživatel vybere tlačítko Přidat, nastavte jeho vlastnost OnSelect ne tento vzorec: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 } )

    Když uživatel poprvé vybere tlačítko Přidat a zavolá se funkce UpdateContext, vytvoří se RunningTotal s výchozí prázdnou hodnotou.The first time a user selects the Add button and UpdateContext is called, RunningTotal is created with a default value of blank. Při sčítání se bude považovat za nulu.In the addition, it will be treated as a zero.

  4. Pokud chcete nastavit mezisoučet na 0 vždy, když uživatel vybere tlačítko Vymazat, nastavte jeho vlastnost OnSelect na tento vzorec: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 } )

    Ještě jednou, UpdateContext se používá se vzorcem UpdateContext( { RunningTotal: 0 } ).Again, UpdateContext is used with the formula UpdateContext( { RunningTotal: 0 } ).

  5. Přidejte ovládací prvek Popisek a nastavte jeho vlastnost Text na RunningTotal.Add a Label control, and set its Text property to RunningTotal.

    Tento vzorec se automaticky přepočítá a uživateli se zobrazí hodnota RunningTotal, jak se bude měnit podle tlačítek, která uživatel vybere.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. Zobrazte si náhled aplikace a máme tu náš sčítač, jak je popsáno výše.Preview the app and we have our adding machine as described above. Zadejte do textového pole číslo a stiskněte několikrát tlačítko Přidat.Enter a number in the text box and press the Add button a few timnes. Až bude připravení, vraťte se pomocí klávesy Esc zpátky do prostředí pro vytváření.When ready, return to the authoring experience using the Esc key.

  7. Hodnotu kontextové proměnné můžete nastavit při přechodu na obrazovku.You can set the value of a context variable while navigating to a screen. To je užitečné pro předávání „kontextu“, neboli „parametrů“, z jedné obrazovky na druhou.This is useful for passing "context" or "parameters" from one screen to another. Pokud se na to chcete podívat, vložte novou obrazovku a vložte tlačítko s vlastností OnSelect nastavenou na: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 } )

    Výběrem tohoto tlačítka na obrazovce Screen2 (což se dá udělat při vytváření, pokud vyberete tlačítko před koncem) se zobrazí Screen1 a také se nastaví kontextová proměnná RunningTotal na -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. Pokud chcete zobrazit hodnotu naší kontextové proměnné, vyberte nabídku Soubor a v levém podokně vyberte Proměnné.To see our context variable's value, select the File menu and select Variables in the left hand pane.

  9. Pokud chcete zobrazit místa, kde se vaše kontextová proměnná definuje a používá, vyberte ji.To see where your context variable is defined and used, select it.

Vytvoření kolekceCreate a collection

Nakonec se podíváme se na vytvoření našeho sčítacího stroje pomocí kolekce.Finally, let's look at creating our adding machine with a collection. Vzhledem k tomu, že kolekce obsahuje tabulku, která jde snadno upravit, uděláme to tak, aby sčítací stroj uchoval každou zadanou hodnotu na „papírové pásce“.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.

Jak fungují kolekce:How collections work:

  • Kolekce se vytvářejí a nastavují pomocí funkce ClearCollect.Create and set collections by using the ClearCollect function. Můžete místo ní použít funkci Collect, bude ale vyžadovat další proměnnou místo nahrazení té staré.You can use the Collect function instead, but it will effectively require another variable instead of replacing the old one.
  • Kolekce je druh zdroje dat – tedy tabulka.A collection is a kind of data source and, therefore, a table. Jestliže chcete pracovat s jednou hodnotou v kolekci, použijte funkci First a extrahujte jedno pole z výsledného záznamu.To access a single value in a collection, use the First function, and extract one field from the resulting record. Pokud jste použili jednu hodnotu s funkcí ClearCollect, bude to pole Value jako v tomto příkladu:If you used a single value with ClearCollect, this will be the Value field, as in this example:
    First( NázevProměnné ).ValueFirst( VariableName ).Value

Vytvořme si náš sčítací stroj pomocí kolekce:Let's recreate our adding machine by using a collection:

  1. Přidejte ovládací prvek Textové zadání s názvem TextInput1 a dvě tlačítka pojmenovaná Button1 a Button2.Add a Text input control, named TextInput1, and two buttons, named Button1 and Button2.

  2. Nastavte vlastnost Text prvku Button1 na "Add" a nastavte vlastnost Text prvku Button2 na "Clear".Set the Text property of Button1 to "Add", and set the Text property of Button2 to "Clear".

  3. Pokud chcete aktualizovat mezisoučet pokaždé, když uživatel vybere tlačítko Přidat, nastavte jeho vlastnost OnSelect ne tento vzorec: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 )

    Tento vzorec přidá novou hodnotu na konec kolekce.This formula will add the new value to the end of the collection. Vzhledem k tomu, že přidáváme jednu hodnotu, funkce Collect ji automaticky umístí do jednosloupcové tabulky s názvem sloupce Value, který použijeme později.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. Pokud chcete vymazat naši papírovou pásku, když uživatel vybere tlačítko Vymazat, nastavte jeho vlastnost OnSelect na tento vzorec:To clear our paper tape when the user selects the Clear button, set its OnSelect property to this formula:

    Clear( PaperTape )Clear( PaperTape )

  5. Jestli chcete zobrazit mezisoučet, přidejte popisek a do jeho vlastnosti Text nastavte tento vzorec:To display the running total, add a label, and set its Text property to this formula:

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

  6. Pokud chcete spustit sčítací stroj, stiskněte klávesu F5, která otevře Náhled, do ovládacího prvku zadání textu zadejte čísla a vyberte tlačítka.To run the adding machine, press F5 to open Preview, enter numbers in the text-input control, and select buttons.

  7. Stisknutím klávesy Esc se vraťte do výchozího pracovního prostoru.To return to the default workspace, press the Esc key.
  8. Pokud chcete zobrazit papírovou pásku, vložte ovládací prvek Tabulka dat a nastavte jeho vlastnost Items na tento vzorec:To display the paper tape, insert a Data table control, and set its Items property to this formula:

    PaperTapePaperTape

    Také bude nutné vybrat sloupce, které chcete zobrazit v pravém podokně, v našem případě sloupec Value:You will also need to select the columns to show in the right hand pane, in our case show the Value column:

  9. Pokud chcete zobrazit hodnoty v kolekci, vyberte v nabídce Soubor možnost Kolekce.To see the values in your collection, select Collections on the File menu.

  10. K ukládání a načítání kolekce přidejte další dva ovládací prvky tlačítka a nastavte jejich text na Načíst a Uložit.To store and retrieve your collection, add two additional button controls and set their text to Load and Save. Pro Načíst nastavte vlastnost OnSelect na:For Load, set the OnSelect property to:

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

    Nejprve potřebujeme kolekci vymazat, protože funkce LoadData přidá uložené hodnoty na konec kolekce.We need to clear the collection first as LoadData will append the stored values to the end of the collection.

  11. Pro Uložit nastavte vlastnost OnSelect na:For Save, set the OnSelect property to:

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

  12. Zobrazte opět náhled stisknutím klávesy F5, zadejte čísla do ovládacího prvku zadání textu a vyberte tlačítka.Preview again by pressing the F5 key, enter numbers in the text-input control, and select buttons. Vyberte tlačítko Uložit.Select the Save button. Zavřete a znovu otevřete aplikaci a vyberte tlačítko Načíst, které znovu načte vaši kolekci.Close and reload your app, and select the Load button to reload your collection.

    Poznámka

    Při spuštění ve webovém prohlížeči funkce SaveData a LoadData nefungují.SaveData and LoadData do not function when running in a web browser. Je nutné použít Studio nainstalované ve Windows nebo některý z přehrávačů pro mobilní zařízení.You must be using the studio installed on Windows or one of the players for mobile devices.