Objekt App v Power Apps

Platí pro: aplikace plátna modelem řízené aplikace

Poskytne informace o aktuálně spuštěné aplikaci a umožní ovládání jejího chování.

Popis

Jako kontrola, objekt Aplikace poskytuje vlastnosti, které identifikují, která obrazovka se zobrazuje, a které uživatele vyzývají k uložení změn, aby nedošlo ke ztrátě. Každá aplikace má objekt Aplikace.

Můžete napsat vzorce pro některé vlastnosti objektu Aplikace. V horní části podokna Stromové zobrazení vyberte objekt Aplikace, jako byste měli jakýkoli jiný ovládací prvek nebo obrazovku. Chcete-li zobrazit a upravit jednu z vlastností objektu, vyberte ji v rozevíracím seznamu vlevo od lišty vzorců.

Objekt aplikace v podokně stromového zobrazení.

Vlastnost ActiveScreen

Vlastnost ActiveScreen identifikuje zobrazovanou obrazovku.

Tato vlastnost vrací objekt obrazovky. Použijte jej k odkazování na vlastnosti aktuálně zobrazené obrazovky, jako je název se vzorcem App.ActiveScreen.Name. Tuto vlastnost můžete také porovnat s jiným objektem obrazovky, například s porovnávacím vzorcem App.ActiveScreen = Screen2 a vyzkoušet, jestli je aktuálně zobrazená obrazovka Screen2.

Použijte funkci Back nebo Navigate pro změnu zobrazované obrazovky.

Vlastnost BackEnabled

Vlastnost BackEnabled mění způsob, jakým aplikace reaguje na gesto zpět zařízení (přejeďte nebo použijte hardwarové tlačítko zpět na zařízeních Android, přejeďte zleva na zařízení iOS) při spuštění v mobilní aplikaci Power Apps. Je-li zapnuto, gesto zpět zařízení přejde zpět na obrazovku, která byla zobrazena naposledy, což je podobné vzorci Zpět. Když je vypnuto, gesto zpět zařízení vrátí uživatele do seznamu aplikací.

Vlatnosti ConfirmExit

Nikdo nechce přijít o neuložené změny. Použijte vlastnosti ConfirmExit a ConfirmExitMessage, které uživatele upozorní před uzavřením aplikace.

Poznámka:

  • ConfirmExit nefunguje v aplikacích, které jsou zabudovány, například v Power BI a SharePoint.
  • V současné době tyto vlastnosti mohou odkazovat na ovládací prvky pouze na první obrazovce, pokud je funkce náhledu Zpožděné načtení povolena (což ve výchozím nastavení pro nové aplikace je). Pokud jsou uvedeny odkazy, Power Apps Studio nezobrazuje chybu, ale výsledná publikovaná aplikace se neotevře v Power Apps Mobile nebo prohlížeči. Aktivně pracujeme na odstranění tohoto omezení. Mezitím můžete vypnout Zpožděné zatížení v Nastavení>Připravované funkce (pod Preview).

ConfirmExit

ConfirmExit je logická vlastnost, která v případě hodnoty true otevře před zavřením aplikace dialogové okno s potvrzením. Ve výchozím nastavení je tato vlastnost false a nezobrazí se žádné dialogové okno.

V situacích, kdy uživatel může mít v aplikaci neuložené změny, použijte tuto vlastnost k zobrazení potvrzovacího dialogového okna před ukončením aplikace. Použijte vzorec, který dokáže zkontrolovat proměnné a vlastnosti ovládání (například vlastnost Unsaved ovládacího prvku Edit form).

Potvrzovací dialogové okno se zobrazí v jakékoli situaci, kdy by mohla být data ztracena, jako v následujících příkladech:

  • Spuštění funkce Exit.
  • Pokud je aplikace spuštěna v prohlížeči:
    • Zavření prohlížeče nebo karty prohlížeče, na které je aplikace spuštěna.
    • Výběr tlačítka Zpět prohlížeče.
    • Spuštění funkce Launch s parametrem LaunchTarget o hodnotě Self.
  • Pokud je aplikace spuštěna v Power Apps Mobile (iOS nebo Android):
    • Přejetím přepnete do jiné aplikace v Power Apps Mobile.
    • Výběr tlačítka zpět na zařízení Android.
    • Spuštění funkce Launch pro spuštění další aplikace plátna.

Přesný vzhled potvrzovacího dialogového okna se může v jednotlivých zařízeních a verzích Power Apps lišit.

Diialogové okno pro potvrzení se neobjeví v Power Apps Studio.

ConfirmExitMessage

Ve výchozím nastavení se v potvrzovacím dialogovém okně zobrazuje obecná zpráva, například „Možná jste neuložili změny.“ v jazyce uživatele.

Použijte ConfirmExitMessage pro zobrazení vlastní zprávy v dialogovém okně pro potvrzení. Pokud je tato vlastnost prázdná, použije se výchozí hodnota. Vlastní zprávy jsou zkráceny podle potřeby, aby se vešly do potvrzovacího dialogového okna, takže nastavte délku zprávy nejvýše na několik řádků.

V prohlížeči se může zobrazit potvrzovací dialogové okno s obecnou zprávou z prohlížeče.

Poznámka:

Objekt App má další dvě vlastnosti OnMessage a BackEnabled, které jsou experimentální. Tyto vlastnosti budou nakonec z objektu App odstraněny. Tyto vlastnosti nedoporučujeme používat ve vašem provozním prostředí.

Příklad

  1. Vytvořte aplikaci, která obsahuje dva ovládací prvky formuláře, AccountForm a ContactForm.

  2. Nastavte vlastnost objektu AplikaceConfirmExit na tento výraz:

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Toto dialogové okno se zobrazí, pokud uživatel změní data v obou formátech a poté se pokusí aplikaci zavřít bez uložení těchto změn.

    Dialogové okno Obecné potvrzení.

  3. Nastavte vlastnost objektu AplikaceConfirmExitMessage na tento vzorec:

    If( AccountsForm.Unsaved,
        "Accounts form has unsaved changes.",
        "Contacts form has unsaved changes."
    )
    

    Toto dialogové okno se zobrazí, pokud uživatel změní data ve formuláři aplikace a poté se pokusí aplikaci zavřít bez uložení těchto změn.

    Dialogové okno pro potvrzení dle konkrétního formuláře.

Vlastnost Formulas

Pojmenované vzorce použijte ve vlastnosti Formulas, abyste mohli definovat vzorec, který lze znovu použít v celé aplikaci.

V Power Apps jsou vlastnosti ovládacího prvku řízeny vzorci. Chcete-li například konzistentně nastavit barvu pozadí v celé aplikaci, můžete nastavit vlastnost Fill každého ovládacího prvku na společný vzorec:

Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )

S tolika místy, kde lze tento vzorec použít, je zdlouhavé a náchylné k chybám je všechny aktualizovat, pokud je potřeba změna. Místo toho můžete vytvořit globální proměnnou ve vlastnosti OnStart, kterou jednou nastavíte barvu a poté ji znovu použijete v celé aplikaci:

App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

I když je tato metoda lepší, záleží také na spuštění vlastnosti OnStart před zavedením hodnoty BGColor. Hodnota BGColor může být také zmanipulována v některé části aplikace, o které tvůrce neví, kterou provede někdo jiný a kterou může být těžké vystopovat.

Alternativu poskytují pojmenované vzorce. Stejně jako běžně píšeme control-property = expression, můžeme místo toho napsat name = expression a poté znovu použít name (název) v celé naší aplikaci, aby nahradil expression. Definice těchto vzorců jsou zadány ve vlastnosti Formulas:

App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor

Mezi výhody použití pojmenovaných vzorců patří:

  • Hodnota vzorce je vždy k dispozici. Neexistuje žádná závislost na čase, není třeba, aby vlastnost OnStart byla spuštěna dříve, než je nastavena hodnota, nestane se, že by kdy byla hodnota vzorce nesprávná. Pojmenované vzorce na sebe mohou odkazovat v libovolném pořadí, pokud nevytvářejí cyklický odkaz. Lze je počítat paralelně.
  • Hodnota vzorce je vždy aktuální. Vzorec může provést výpočet, který je závislý na vlastnostech ovládacího prvku nebo záznamech databáze, a když se tyto mění, hodnota vzorce se automaticky aktualizuje. Hodnotu není třeba ručně aktualizovat jako u proměnné. Mimo to se vzorce přepočítávají pouze v případě potřeby.
  • Definice vzorce je neměnná. Definice ve vlastnosti Formulas je jediný správný zdroj a hodnotu lze v celé aplikaci změnit jen zde. U proměnných je možné, že nějaký kód neočekávaně změní hodnotu, ale u pojmenovaných vzorců to není možné.
  • Výpočet vzorce lze odložit. Protože je jeho hodnota neměnná, lze ji vždy vypočítat, když je potřeba, což znamená, že se nemusí počítat, dokud není potřeba. Hodnoty vzorce, které nejsou použity do chvíle zobrazení obrazovky2 aplikace, se nemusí počítat, dokud je obrazovka2 viditelná. Odložení této práce může zlepšit dobu načítání aplikace. Pojmenované vzorce jsou deklarativní a umožňují systému optimalizovat způsob a čas jejich výpočtu.
  • Pojmenované vzorce jsou konceptem aplikace Excel. Power Fx používá koncepty aplikace Excel, kde je to možné, protože mnoho lidí Excel dobře zná. Pojmenované vzorce jsou ekvivalentem pojmenovaných buněk a pojmenovaných vzorců v aplikaci Excel, spravované pomocí Správce názvů. Přepočítávají se automaticky jako tabulka, stejně jako vlastnosti ovládacích prvků.

Pojmenované vzorce jsou definovány jeden po druhém ve vlastnosti Formulas, každá končí středníkem. Typ vzorce je odvozen z typů výrazu, který je založen na typech prvků ve výrazu a na tom, jak se používají společně. Tyto pojmenované vzorce například načítají užitečné informace o aktuálním uživateli z Dataverse:

UserEmail = User().Email;
UserInfo = LookUp( Users, 'Primary Email' = User().Email );
UserTitle = UserInfo.Title;
UserPhone = Switch( UserInfo.'Preferred Phone', 
                    'Preferred Phone (Users)'.'Mobile Phone', UserInfo.'Mobile Phone',
                    UserInfo.'Main Phone' );

Pokud vzorec pro UserTitle vyžaduje aktualizaci, lze to snadno provést v tomto jediném místě. Pokud aplikace nevyžaduje UserPhone, pak se tato volání neprovedou pro tabulku Users v Dataverse. Za zahrnutí definice vzorce, který se nepoužije, není žádná penalizace.

Některá omezení pojmenovaných vzorců:

  • Nemohou používat funkce chování nebo jinak způsobovat vedlejší účinky v rámci aplikace.
  • Nemohou vytvořit cyklický odkaz. Není povoleno, aby aplikace obsahovala jak a = b;, tak b = a;.

Vlastnost OnError

Použití OnError k provedení akce po zjištění chyby. Poskytuje globální příležitost zachytit nápis s chybou předtím, než se zobrazí koncovému uživateli. Může být také použit k zapsání chyby do protokolu pomocí funkce Trace nebo zapisovat do databáze či webové služby.

Výsledek každého vyhodnocení vzorce je kontrolován, zda v něm není chyba. Pokud chyba existuje, OnError se vyhodnotí se stejnými proměnnými rozsahu FirstError a AllErrors, které by byly přítomny, kdyby byl celý vzorec zabalen do volání funkce IfError.

Je-li OnError prázdné, zobrazí se výchozí nápis s chybou pomocí FirstError.Message chyby. Definováním vzorce OnError přepíšete toto chování a umožníte tvůrci nakládat s hlášením chyby tak, jak uzná za vhodné. Výchozí chování lze vyžádat v OnError opětovným vyhozením chyby pomocí funkce Error. To je užitečné, pokud mají být některé chyby odfiltrovány nebo zpracovány jiným způsobem, zatímco jiné mají být předány.

OnError neumí tímto způsobem nahradit chybu ve výpočtech tak, jako IfError. Když je vyvolána vlastnost OnError, chyba již nastala a již byla zpracována pomocí výpočtů vzorce. *OnError* řídí pouze hlášení chyb.

Vzorce OnError jsou vyhodnocovány souběžně a je možné, že se jejich vyhodnocení může překrývat se zpracováním jiných chyb. Pokud například nastavíte globální proměnnou na začátku vlastnosti OnError a přečtěte si ji později ve stejném vzorci, hodnota se mohla změnit. K vytvoření pojmenované hodnoty, která platí jen v rámci vzorce, použijte funkci With .

I když každá chyba je zpracována individuálně v vlastnosti OnError, výchozí nápis s chybou se nemusí zobrazit pro každou chybu jednotlivě. Abyste se vyhnuli zobrazení příliš mnoha nápisů s chybami současně, stejná chyba nespustí nový nápis, pokud byl nedávno zobrazen.

Příklad

Dejme tomu, že máme ovládací prvky Label a Slider, které jsou svázány dohromady prostřednictvím vzorce:

Label1.Text = 1/Slider1.Value

Ovládací prvek Label a Slider svázané prostřednictvím vzorce Label1.Text = 1/Slider1.Value.

Výchozí hodnota ovládacího prvku Slider je 50. Pokud je posuvník posunut na 0, Label1 nezobrazí žádnou hodnotu a zobrazí se nápis s chybou:

Ovládací prvek Slider se přesunul na 0, což vedlo k chybě dělení nulou a zobrazení nápisu s chybou.

Podívejme se podrobně na to, co se stalo:

  1. Uživatel posunul Slider doleva a vlastnost Slider1.Value se změnila na 0.
  2. Vlastnost Label1.Text byla automaticky přepočítána. Došlo k dělení nulou a generovala se chyba.
  3. V tomto vzorci není žádná funkce IfError. Vyhodnocení vzorce vrátí chybu dělení nulou.
  4. Vlastnost Label1.Text pro tuto chybu nemůže nic zobrazit, takže ukazuje a prázdný stav.
  5. Je vyvolána vlastnost OnError. Protože neexistuje žádná obslužná rutina, zobrazí se standardní nápis s informacemi o chybě.

V případě potřeby můžeme vzorec také upravit na Label1.Text = IfError( 1/Slider1.Value, 0 ). Výsledkem by nebyla žádná chyba nebo nápis s chybou. Nemůžeme změnit hodnotu chyby ve vlastnosti OnError, jelikož v tu chvíli již k chybě došlo, je pouze otázkou, jak bude hlášena.

Pokud přidáme obslužnou rutinu OnError, nic před krokem 5 neovlivní, ale může ovlivnit způsob, jakým je chyba hlášena:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" )

Vzorec App.OnError nastaven pro generování trasování.

Z pohledu uživatele aplikace nedojde při použití tohoto kódu k žádné chybě. Chyba však bude z FirstError přidána do trasování Monitoru, včetně zdroje informací o chybě:

Ovládací prvek Slider se přesunul na 0, což vedlo k chybě dělení nulou, ale nezobrazil se žádný nápis s chybou.

Pokud bychom chtěli mít kromě trasování také zobrazen stejný výchozí nápis s chybou, můžeme chybu znovu vyvolat pomocí funkce Error po volání Trace, stejně jako v případě, kdy volání Trace nebylo použito:

Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )

Vlastnost OnStart

Poznámka:

Použití vlastnosti OnStart může způsobit problémy s výkonem při načítání aplikace. Právě vytváříme alternativy pro dva hlavní důvody pro použití vlastnosti – ukládání dat do mezipaměti a nastavení globálních proměnných. Již jsme vytvořili alternativu pro definování první obrazovky, se kterou se má zobrazit s Navigate. V závislosti na vašem kontextu může být tato vlastnost ve výchozím nastavení zakázána. Pokud ji nevidíte a potřebujete ji použít, zkontrolujte v Rozšířených nastaveních aplikace přepínač, který ji aktivuje. Lze použít i vlastnost obrazovky OnVisible.

Vlastnost OnStart se spustí, když uživatel spustí aplikaci. Tato vlastnost se často používá k provádění následujících úkolů:

  • Načíst a ukládat data do mezipaměti kolekcí pomocí funkce Collect.
  • Nastavit globální proměnné pomocí funkce Set.

Tento vzorec je vyhodnocen před zobrazením první obrazovky. Žádná obrazovka není načtena, takže nemůžete nastavit kontextové proměnné pomocí funkce UpdateContext. Proměnné kontextu však můžete předat pomocí funkce Navigate.

Poté, co změníte vlastnost OnStart, otestujte ji umístěním kurzoru myši nad objekt Aplikace v podokně Stromové zobrazení, vyberte tři tečky (...) a poté vyberte Spustit OnStart. Na rozdíl od prvního načtení aplikace budou již existující kolekce a proměnné nastaveny. Chcete-li začít s prázdnými kolekcemi, použijte funkci ClearCollect namísto funkce Collect.

Zástupce položky aplikace pro Run OnStart

Poznámka:

  • Použití funkce Navigate ve vlastnosti OnStart bylo vyřazeno. Stávající aplikace budou nadále fungovat. Po omezenou dobu ji můžete stále povolit v nastavení aplikace (k dispozici ve Vyřazeno). Nicméně pomocí Navigate tímto způsobem může dojít ke zpoždění načítání aplikace, protože to nutí systém dokončit vyhodnocení OnStart před zobrazením první obrazovky. Místo toho použijte vlastnost StartScreen pro vypočítání první zobrazené obrazovky.
  • Přepínač Vyřazeno bude vypnut u aplikací vytvořených před březnem 2021, do kterých jste přidali Navigate na OnStart od března 2021 do současnosti. Když takové aplikace upravujete v Power Apps Studio, může se zobrazit chyba. Zapněte výše uvedený přepínač Vyřazeno pro odstranění této chyby.

Vlastnost StartScreen

Poznámka:

Vlastnost StartScreen se nezobrazí v seznamu vlastností, když je zapnuta vyřazená možnost Vylepšený řádek vzorců. Chcete-li vypnout možnost Vylepšený řádek vzorců, jděte do Nastavení>Připravované funkce>Vyřazené> vypněte přepínač Vylepšený řádek vzorců, takže budete moci použít vlastnost StartScreen.

Vlastnost StartScreen určuje, která obrazovka se zobrazí jako první. Vyhodnotí se jednou při načtení aplikace a vrátí objekt obrazovky k zobrazení. Ve výchozím nastavení bude tato vlastnost prázdná a první obrazovka ve stromovém zobrazení Studio se zobrazí jako první.

StartScreen je vlastnost toku dat, která nemůže obsahovat funkce chování. K dispozici jsou všechny funkce toku dat, zejména použijte tyto funkce a signály k určení, která obrazovka se má zobrazit jako první:

  • Funkce Param pro čtení parametrů používaných ke spuštění aplikace.
  • Funkce User pro čtení informací o aktuálním uživateli.
  • LookUp, Filter, CountRows, Max a další funkce, které čtou ze zdroje dat.
  • Všechna volání API prostřednictvím konektoru, ale buďte opatrní, vrátí se rychle.
  • Signály jako např. Spojení, Kompas a Aplikace.

Poznámka:

Globální proměnné a kolekce, včetně těch vytvořených v OnStart, nejsou dostupné v StartScreen. Existují deklarativní alternativy, jak toho dosáhnout, které jsou na cestě. Pro zpětnou vazbu k tomuto omezení přejděte na komunitní fórum Power Apps.

Pokud StartScreen vrátí chybu, první obrazovka ve stromovém zobrazení Studio se zobrazí, jakoby StartScreen nebyla nastavena. Použijte funkci IfError, chcete-li zachytit případné chyby a přesměrovat na příslušnou chybovou obrazovku.

Poté, co změníte StartScreen ve Studiu, otestujte ji umístěním kurzoru myši nad objekt Aplikace v podokně Stromové zobrazení, vyberte tři tečky (...) a poté vyberte Přejít na StartScreen. Obrazovka se změní, jako by byla aplikace načtena.

Přechod na StartScreen

Příklady

Screen9

Označuje, že by Screen9 měl být zobrazen jako první při každém spuštění aplikace.

If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )

Zkontroluje, zda uživatel nastavil parametr „admin-mode“ a použije jej k rozhodnutí, zda se má nejprve zobrazit HomeScreen nebo AdminScreen.

If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )

Zkontroluje, zda je účastník konference zaměstnancem, a při spuštění jej přesměruje na správnou obrazovku.

IfError( If( CustomConnector.APICall() = "Forest", 
             ForestScreen, 
             OceanScreen 
         ), 
         ErrorScreen 
)

Přesměruje aplikaci na základě volání API na ForestScreen nebo OceanScreen. Pokud API z nějakého důvodu selže, použije se ErrorScreen.

Vlastnost StudioVersion

Pomocí vlastnosti StudioVersion můžete zobrazit nebo zaprotokolovat verzi Power Apps Studio, která byla použita k publikování aplikace. To může být užitečné při ladění a zajištění toho, aby vaše aplikace byla znovu publikována s nejnovější verzí Power Apps Studio.

StudioVersion je vráceno jako text. Formát textu se může v průběhu času měnit a mělo by se s ním zacházet jako s celkem; vyvarujte se vytahování jednotlivých částí.