Het object App in Power Apps
Van toepassing op: Canvas-apps Modelgestuurde apps
Biedt informatie over de app die momenteel wordt uitgevoerd en beheer van het gedrag van de app.
Beschrijving
Net als een besturingselement biedt het object App eigenschappen die aangeven welk scherm wordt weergegeven en die de gebruiker ertoe aanzetten wijzigingen op te slaan zodat ze niet verloren gaan. Elke app heeft een App-object.
U kunt formules schrijven voor enkele eigenschappen van het object App. Bovenin het deelvenster Structuurweergave selecteert u het object App, net zoals elk ander besturingselement of scherm. Bekijk en bewerk een van de eigenschappen van het object door het te selecteren in de vervolgkeuzelijst links van de formulebalk.
De eigenschap ActiveScreen
De eigenschap ActiveScreen geeft aan welk scherm wordt weergegeven.
Deze eigenschap retourneert een schermobject. Gebruik het om te verwijzen naar eigenschappen van het momenteel weergegeven scherm, zoals de naam met de formule App.ActiveScreen.Name. U kunt deze eigenschap ook vergelijken met een ander schermobject, bijvoorbeeld met de vergelijkingsformule App.ActiveScreen = Screen2 om te testen of Scherm2 het momenteel weergegeven scherm is.
Met de functie Back of Navigate kunt u het weergegeven scherm wijzigen.
BackEnabled-eigenschap
De eigenschap BackEnabled verandert hoe de app reageert op de eigenschap Terug van het apparaat (veeg of gebruik de knop hardware-terugknop op Android-apparaten, veeg van links naar beneden op iOS-apparaten) bij gebruik in Power Apps Mobile. Indien ingeschakeld, navigeert de apparaatfunctie terug naar het scherm dat het laatst werd weergegeven, wat vergelijkbaar is met de formule Terug. Indien uitgeschakeld, brengt het teruggebaar van het apparaat de gebruiker terug naar de applijst.
De eigenschappen ConfirmExit
Niemand wil niet-opgeslagen wijzigingen verliezen. Met de eigenschappen ConfirmExit en ConfirmExitMessage kunt u de gebruiker waarschuwen voordat ze uw app sluiten.
Opmerking
- ConfirmExit werkt niet in apps die bijvoorbeeld zijn ingesloten in Power BI en SharePoint.
- Momenteel kunnen deze eigenschappen alleen verwijzen naar besturingselementen op het eerste scherm als de previewfunctie Delayed load is ingeschakeld. Dat is standaard zo voor nieuwe apps. Als er verwijzingen worden gemaakt, toont Power Apps Studio geen fout, maar de resulterende gepubliceerde app wordt niet geopend in Power Apps Mobile of een browser. Er wordt hard gewerkt om deze beperking uit de weg te ruimen. In de tussentijd kunt u Vertraagde belasting uitschakelen in Instellingen>Komende functies (onder Preview).
ConfirmExit
ConfirmExit is een Booleaanse eigenschap die, als deze true is, een bevestigingsdialoogvenster opent voordat de app wordt gesloten. Deze eigenschap is standaard false, wat betekent dat geen dialoogvenster wordt geopend.
In situaties waarin de gebruiker mogelijk niet-opgeslagen wijzigingen in de app heeft, gebruikt u deze eigenschap om een bevestigingsdialoogvenster weer te geven voordat u de app afsluit. Gebruik een formule die variabelen en eigenschappen kan controleren (bijvoorbeeld de eigenschap Unsaved van het besturingselement Edit form).
Het bevestigingsdialoogvenster verschijnt in elke situatie waarin gegevens verloren kunnen gaan, zoals in deze voorbeelden:
- De functie Exit wordt uitgevoerd.
- Als de app wordt uitgevoerd in een browser:
- De browser of het browsertabblad waarin de app actief is, wordt gesloten.
- De knop Vorige in de browser wordt geselecteerd.
- Het uitvoeren van de functie Launch met LaunchTarget van Self.
- Als de app wordt uitgevoerd in Power Apps Mobile (iOS of Android):
- Swipen om over te schakelen naar een andere app in Power Apps Mobile.
- De knop Terug selecteren op een Android-apparaat.
- Het uitvoeren van de functie Launch om een andere canvas-app te starten.
Het exacte uiterlijk van het bevestigingsdialoogvenster kan verschillen per apparaat en versie van Power Apps.
Het bevestigingsvenster wordt niet geopend in Power Apps Studio.
ConfirmExitMessage
Standaard toont het bevestigingsdialoogvenster een algemeen bericht, zoals Mogelijk hebt u niet-opgeslagen wijzigingen. in de taal van de gebruiker.
Gebruik ConfirmExitMessage om een aangepast bericht op te geven voor het bevestigingsdialoogvenster. Als deze eigenschap leeg is, wordt de standaardwaarde gebruikt. Aangepaste berichten worden zo nodig afgekapt om in het bevestigingsdialoogvenster te passen, dus zorg ervoor dat het bericht hooguit een paar regels lang is.
In een browser kan het bevestigingsdialoogvenster worden geopend met een algemeen bericht van de browser.
Opmerking
App-object heeft nog twee eigenschappen, OnMessage
en BackEnabled
, die experimenteel zijn. Deze eigenschappen worden uiteindelijk uit het app-object verwijderd. Wij raden u aan deze eigenschappen niet te gebruiken in uw productieomgeving.
Voorbeeld
Maak een app die twee formulierbesturingselementen bevat, AccountForm en ContactForm.
Stel de eigenschap ConfirmExit van het object App in op deze expressie:
AccountForm.Unsaved Or ContactForm.Unsaved
Dit dialoogvenster wordt geopend als de gebruiker gegevens in een van beide formulieren wijzigt en vervolgens probeert de app te sluiten zonder die wijzigingen op te slaan.
Stel de eigenschap ConfirmExitMessage van het object App in op deze formule:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )
Dit dialoogvenster wordt geopend als de gebruiker gegevens in het formulier Account wijzigt en vervolgens probeert de app te sluiten zonder die wijzigingen op te slaan.
Instrumentatiesleutel instellen voor Application Insights
Als u door het systeem gegenereerde toepassingslogboeken wilt exporteren naar Application Insights, moet u de Instrumentatiesleutel instellen voor uw canvas-app.
- Open uw app om deze te bewerken in Power Apps Studio.
- Selecteer het App-object in de structuurweergave in het linkernavigatiedeelvenster.
- Voer de Instrumentatiesleutel in het eigenschappendeelvenster in.
Als er geen gegevens naar App Insights worden verzonden, neemt u contact op met uw Power Platform-beheerder en controleert u of App Insights is uitgeschakeld op tenantniveau.
De eigenschap Formules
Gebruik benoemde formules in de eigenschap Formules om een formule te definiëren die in uw hele app kan worden hergebruikt.
In Power Apps worden eigenschappen van besturingselementen aangestuurd door formules. Als u bijvoorbeeld de achtergrondkleur consistent in een app wilt instellen, kunt u de eigenschap Opvullen voor elk instellen op een gemeenschappelijke formule:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Met zoveel plaatsen waar deze formule kan verschijnen, wordt het een vervelende en foutgevoelige klus om deze allemaal bij te werken als er een wijziging nodig is. In plaats daarvan kunt u een globale variabele maken in OnStart om de kleur één keer in te stellen en de waarde vervolgens in de hele app opnieuw te gebruiken:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Hoewel deze methode beter is, hangt het er ook vanaf of OnStart wordt uitgevoerd vóór de waarde voor BGColor wordt bepaald. BGColor kan ook ergens in de app worden gemanipuleerd zonder dat de maker het weet, een wijziging die door iemand anders is aangebracht en die moeilijk op te sporen is.
Benoemde formules bieden een alternatief. Zoals we gewoonlijk besturingssysteem-eigenschap = expressie schrijven, kunnen we in plaats daarvan naam = expressie schrijven en vervolgens naam in onze app gebruiken om expressie te vervangen. De definities van deze formules worden gedaan in de eigenschap Formules:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
De voordelen van het gebruik van benoemde formules zijn onder meer:
- De waarde van de formule is altijd beschikbaar. Er is geen tijdsafhankelijkheid, geen OnStart die eerst moet worden uitgevoerd voordat de waarde wordt ingesteld, geen tijd waarin de waarde van de formule onjuist is. Benoemde formules kunnen in elke volgorde naar elkaar verwijzen, zolang ze geen kringverwijzing creëren. Ze kunnen parallel worden berekend.
- De waarde van de formule is altijd bijgewerkt. De formule kan een berekening uitvoeren die afhankelijk is van eigenschappen van besturingselementen of databaserecords. Als deze veranderen, wordt de waarde van de formule automatisch bijgewerkt. U hoeft de waarde niet handmatig bij te werken zoals bij een variabele. En formules worden alleen opnieuw berekend wanneer dat nodig is.
- De definitie van de formule is onveranderlijk. De definitie in Formules is de enige bron van waarheid en de waarde kan niet ergens anders in de app worden gewijzigd. Met variabelen is het mogelijk dat sommige code onverwacht een waarde wijzigt, maar dit is niet mogelijk met benoemde formules.
- De berekening van de formule kan worden uitgesteld. Omdat de waarde ervan onveranderlijk is, kan deze altijd worden berekend wanneer dat nodig is, wat betekent dat de berekening pas hoeft te worden gedaan als het nodig is. Formulewaarden die pas worden gebruikt als scherm2 van een app wordt weergegeven, hoeven pas te worden berekend als scherm2 zichtbaar is. Het uitstellen van dit werk kan de laadtijd van de app verbeteren. Benoemde formules zijn declaratief en bieden het systeem mogelijkheden om te optimaliseren hoe en wanneer ze worden berekend.
- Benoemde formules is een Excel-concept. Power Fx gebruikt waar mogelijk Excel-concepten omdat zoveel mensen Excel goed kennen. Benoemde formules zijn het equivalent van benoemde cellen en benoemde formules in Excel, beheerd met Name Manager. Ze worden automatisch opnieuw berekend zoals een spreadsheet, net als eigenschappen van besturingselementen.
Benoemde formules worden achter elkaar gedefinieerd in de eigenschap Formules, gescheiden door puntkomma's. Het type van de formule wordt afgeleid uit de typen van de expressie, die is gebaseerd op de typen elementen in de expressie en hoe ze samen worden gebruikt. Deze benoemde formules halen bijvoorbeeld nuttige informatie over de huidige gebruiker op uit 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' );
Als de formule voor UserTitle moet worden bijgewerkt, kan dit eenvoudig op deze locatie worden gedaan. Als UserPhone niet nodig is in de app, worden deze aanroepen naar de tabel Gebruikers in Dataverse niet uitgevoerd. Er is geen straf voor het opnemen van een formuledefinitie die niet wordt gebruikt.
Enkele beperkingen van benoemde formules:
- Ze kunnen geen gedragsfuncties gebruiken of anderszins bijwerkingen veroorzaken binnen de app.
- Ze kunnen geen kringverwijzing maken. Het is niet toegestaan om in dezelfde app a = b; en b = a; te hebben.
Eigenschap OnError
Gebruik OnError om actie te ondernemen nadat een fout is gedetecteerd. Het biedt een wereldwijde mogelijkheid om een foutbanner te onderscheppen voordat deze aan de eindgebruiker wordt getoond. Het kan ook worden gebruikt om een fout te registreren met de functie Trace of weg te schrijven naar een database of webservice.
Het resultaat van elke formule-evaluatie wordt gecontroleerd op een fout. Als het een fout is, wordt OnError geëvalueerd met dezelfde bereikvariabelen FirstError en AllErrors die aanwezig zouden zijn geweest als de hele formule was opgenomen in een functie IfError.
Indien OnError leeg is, wordt een standaardfoutbanner weergegeven met de FirstError.Message van de fout. Als een formule OnError wordt gedefinieerd, heft deze gedrag op, waardoor de maker de foutrapportage naar eigen goeddunken kan afhandelen. Het standaardgedrag kan worden opgevraagd in de OnError door de fout opnieuw te genereren met de functie Error. Dit is handig als sommige fouten eruit moeten worden gefilterd of op een andere manier moeten worden afgehandeld, terwijl andere moeten worden doorgegeven.
OnError kan een fout in berekeningen niet vervangen op de manier waarop IfError dat wel kan. Op het punt dat OnError wordt aangeroepen, is de fout al opgetreden en is deze al verwerkt via formuleberekeningen. *OnError* regelt alleen de foutrapportage.
OnError formules worden gelijktijdig geëvalueerd en het is mogelijk dat hun evaluatie overlapt met de verwerking van andere fouten. Als u bijvoorbeeld een algemene variabele instelt boven op een OnError en deze later in dezelfde formule leest, kan de waarde zijn veranderd. Gebruik de functie With om een benoemde waarde te maken die lokaal is voor de formule.
Hoewel elke fout afzonderlijk wordt verwerkt door OnError, wordt de standaardfoutbanner mogelijk niet voor elke fout afzonderlijk weergegeven. Om te voorkomen dat er te veel foutbanners tegelijkertijd worden weergegeven, zal dezelfde fout geen nieuwe foutbanner activeren als deze recentelijk is getoond.
Voorbeeld
Overweeg een besturingselement Label en een besturingselement Slider die met elkaar verbonden zijn door de formule:
Label1.Text = 1/Slider1.Value
De schuifregelaar is standaard ingesteld op 50. Als de schuifregelaar naar 0 wordt verplaatst, wordt in Label1 geen waarde weergegeven en er wordt een foutbanner getoond:
Laten we eens kijken naar wat er in detail is gebeurd:
- De gebruiker heeft de schuifregelaar naar links verplaatst en de eigenschap Slider1.Value is gewijzigd in 0.
- Label1.Text is automatisch opnieuw geëvalueerd. Er heeft een deling door nul plaatsgevonden, waardoor een fout is gegenereerd.
- Deze formule bevat geen IfError. De fout door deling door nul wordt geretourneerd door de formule-evaluatie.
- Label1.Text kan niets weergeven voor deze fout, dus wordt een lege status weergegeven.
- OnError wordt aangeroepen. Aangezien er geen handler is, wordt de standaardfoutbanner weergegeven met foutinformatie.
Indien nodig kunnen we de formule ook wijzigen in Label1.Text = IfError( 1/Slider1.Value, 0 )
. Dit zou resulteren in geen fout of foutbanner. We kunnen de waarde van een fout niet wijzigen van OnError aangezien de fout op dat moment al is opgetreden. Het is puur een kwestie van hoe deze zal worden gemeld.
Als we een OnError-handler toevoegen, heeft dit geen invloed vóór stap 5, maar kan het wel van invloed zijn op de manier waarop de fout wordt gerapporteerd:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Als dit op zijn plaats is, zal er vanuit het perspectief van de app-gebruiker geen fout zijn. Maar de fout wordt toegevoegd aan de tracering van Monitor, compleet met de bron van de foutinformatie van FirstError:
Als we naast de tracering ook dezelfde standaardfoutbanner willen hebben, kunnen we de fout opnieuw weergeven met de functie Error na de aanroep van Trace, net zoals het geval zou zijn als Trace er niet was:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Eigenschap OnStart
Opmerking
Het gebruik van de eigenschap OnStart kan prestatieproblemen veroorzaken bij het laden van een app. We zijn bezig met het maken van alternatieven voor de twee belangrijkste redenen voor het gebruik van cachinggegevens voor eigenschappen en het instellen van globale variabelen. We hebben al een alternatief gemaakt voor het definiëren van het eerste scherm dat moet worden weergegeven met Navigate. Afhankelijk van uw context is deze eigenschap mogelijk standaard uitgeschakeld. Als u deze niet ziet, maar wel wilt gebruiken, controleert u in de geavanceerde instellingen van de app of er een schakeloptie bestaat om deze eigenschap in te schakelen. De eigenschap OnVisible van een scherm kan ook worden gebruikt.
De eigenschap OnStart wordt uitgevoerd wanneer de gebruiker de app start. Deze eigenschap wordt vaak gebruikt om de volgende taken uit te voeren:
- Gegevens ophalen en opslaan in verzamelingen met behulp van de functie Collect.
- Globale variabelen instellen met behulp van de functie Set.
Deze formule wordt geëvalueerd voordat het eerste scherm wordt weergegeven. Er wordt geen scherm geladen, dus u kunt geen contextvariabelen instellen met de functie UpdateContext. U kunt echter contextvariabelen doorgeven met de functie Navigate.
Nadat u de eigenschap OnStart hebt gewijzigd, kunt u deze testen door de muisaanwijzer op het object App in het deelvenster Structuurweergave te plaatsen, de beletseltekens (...) te selecteren en vervolgens Bij start uitvoeren te selecteren. In tegenstelling tot wanneer de app voor het eerst wordt geladen, zijn bestaande verzamelingen en variabelen al ingesteld. Als u wilt beginnen met lege verzamelingen, gebruikt u de functie ClearCollect in plaats van de functie Collect.
Opmerking
- De functie Navigate in de eigenschap OnStart is buiten gebruik gesteld. Bestaande apps blijven werken. Voor een beperkte tijd kunt u dit nog inschakelen in de app-instellingen (beschikbaar onder Buiten gebruik gesteld). Het gebruik van Navigate op deze manier kan leiden tot vertragingen bij het laden van apps, omdat het systeem wordt gedwongen om de evaluatie van OnStart te voltooien voordat het eerste scherm wordt weergegeven. Gebruik de eigenschap StartScreen in plaats daarvan om het eerste weergegeven scherm te berekenen.
- De schakelaar 'Gepensioneerd' wordt uitgeschakeld voor apps die vóór maart 2021 zijn gemaakt en waarvoor u tussen maart 2021 en nu Navigeren aan OnStart heeft toegevoegd. Wanneer u dergelijke apps in Power Apps Studio bewerkt, kan er een fout worden weergegeven. Schakel de hierboven genoemde schakeloptie Buiten gebruik gesteld in om deze fout te wissen.
De eigenschap StartScreen
Opmerking
De eigenschap StartScreen wordt niet weergegeven in de lijst met eigenschappen wanneer de ingetrokken optie Verbeterde formulebalk is ingeschakeld. Als u de Verbeterde formulebalk wilt uitschakelen, gaat u naar Instellingen>Aankomende functies>Buiten gebruik gesteld> en schakelt u de optie Verbeterde formulebalk uit wanneer u de eigenschap StartScreen wilt gebruiken.
De eigenschap StartScreen bepaalt welk scherm als eerste wordt weergegeven. De eigenschap wordt één keer geëvalueerd wanneer de app wordt geladen en retourneert het schermobject dat moet worden weergegeven. Standaard is deze eigenschap leeg en wordt het eerste scherm in de Studio-structuurweergave als eerste weergegeven.
StartScreen is een gegevensstroomeigenschap die geen gedragsfuncties kan bevatten. Alle gegevensstroomfuncties zijn beschikbaar. Gebruik deze functies en signalen vooral om te bepalen welk scherm als eerste moet worden weergegeven:
- Param functie om parameters te lezen die worden gebruikt om de app te starten.
- gebruikersfunctie om informatie over de huidige gebruiker te lezen.
- LookUp, Filter, CountRows, Max en andere functies die lezen van een gegevensbron.
- Elke API roept via een connector aan, maar houd wel in de gaten of deze snel retourneert.
- Signalen, zoals Verbinding, Kompas en App.
Opmerking
Globale variabelen en verzamelingen, inclusief die zijn gemaakt in OnStart, zijn niet beschikbaar in StartScreen. Binnenkort zijn hiervoor declaratieve alternatieven beschikbaar. Ga voor uw feedback over deze beperking naar het Power Apps-communityforum.
Indien StartScreen een fout retourneert, wordt het eerste scherm in de Studio-structuurweergave weergegeven alsof StartScreen niet is ingesteld. Gebruik de functie IfError om eventuele fouten op te vangen en om te leiden naar een geschikt foutscherm.
Nadat u de eigenschap StartScreen in Studio hebt gewijzigd, kunt u deze testen door de muisaanwijzer op het object App in het paneel Structuurweergave te plaatsen, de weglatingstekens (...) te selecteren en vervolgens Navigeren naar StartScreen te selecteren. Het scherm verandert alsof de app is geladen.
Voorbeelden
Screen9
Geeft aan dat Screen9
als eerste moet worden weergegeven wanneer de app wordt gestart.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Controleert of Param "admin-mode" door de gebruiker is ingesteld en gebruikt deze om te beslissen of HomeScreen of AdminScreen eerst moet worden weergegeven.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Controleert of een deelnemer aan een conferentie een personeelslid is en leidt deze bij het opstarten om naar het juiste scherm.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Stuurt de app op basis van een API-aanroep naar ForestScreen
of OceanScreen
. Als de API om welke reden dan ook mislukt, wordt in plaats daarvan ErrorScreen
gebruikt.
StudioVersion-eigenschap
Gebruik de eigenschap StudioVersion voor weergave of leg de versie van de gebruikte Power Apps Studio vast om een app te publiceren. Dit kan handig zijn bij het opsporen van fouten, en om ervoor te zorgen dat uw app opnieuw is gepubliceerd met een recente versie van Power Apps Studio.
StudioVersion wordt geretourneerd als tekst. De indeling van de tekst kan in de loop der tijd veranderen en moet als één geheel worden behandeld; vermijd het extraheren van individuele porties.