Objet App dans Power Apps

Fournit des informations sur l’application en cours d’exécution et un contrôle du comportement de l’application.

Description

Comme un contrôle, l’objet appli fournit des propriétés qui identifient l’écran affiché et qui invitent l’utilisateur à enregistrer les modifications afin qu’elles ne soient pas perdues. Chaque application a un objet de type Application.

Vous pouvez écrire des formules pour certaines propriétés de l’objet appli. Au sommet du volet Arborescence, sélectionnez l’objet appli comme vous le feriez pour tout autre contrôle ou écran. Affichez et modifiez l’une des propriétés de l’objet en la sélectionnant dans la liste déroulante à gauche de la barre de formule.

Objet appli dans le volet Arborescence.

Propriété ActiveScreen

La propriété ActiveScreen identifie l’écran qui s’affiche.

Cette propriété renvoie un objet écran, que vous pouvez utiliser pour référencer des propriétés de l’écran ou pour le comparer à un autre écran pour déterminer l’écran affiché. Vous pouvez également utiliser l’expression App.ActiveScreen.Name pour récupérer le nom de l’écran affiché.

Utilisez la fonction Back ou Navigate pour changer l’écran qui s’affiche.

Propriétés ConfirmExit

Personne ne veut perdre des modifications non enregistrées. Utilisez les propriétés ConfirmExit et ConfirmExitMessage pour avertir l’utilisateur avant de fermer votre application.

Notes

  • ConfirmExit ne fonctionne pas dans les applications intégrées, par exemple, Power BI et SharePoint.
  • À l’heure actuelle, ces propriétés peuvent référencer des contrôles uniquement sur le premier écran si la fonction d’aperçu Delayed load est activée (ce qui est par défaut pour les nouvelles applications). Si des références sont faites, Power Apps Studio n’affiche pas d’erreur, mais l’application publiée qui en résulte ne s’ouvre pas dans l’application mobile Power Apps ou un navigateur. Nous travaillons activement pour travailler à lever cette limitation. En attendant, vous pouvez désactiver Charge retardée dans Paramètres > Fonctionnalités à venir (sous Aperçu).

ConfirmExit

ConfirmExit est une propriété booléenne qui, lorsque définie sur true, ouvre une boîte de dialogue de confirmation avant la fermeture de l’application. Par défaut, cette propriété est false et aucune boîte de dialogue n’apparaît.

Utilisez cette propriété pour afficher une boîte de dialogue de confirmation si l’utilisateur a apporté des modifications, mais ne les a pas enregistrées. Utilisez une formule qui peut vérifier les variables et contrôler les propriétés (par exemple, la propriété Unsaved du contrôle Edit Form).

La boîte de dialogue de confirmation apparaît dans toutes les situations où des données pourraient être perdues, comme dans ces exemples :

  • Exécution de la fonction Exit.
  • Si l’application s’exécute dans un navigateur :
    • Fermer le navigateur ou l’onglet du navigateur dans lequel l’application s’exécute.
    • Sélectionnez le bouton précédent du navigateur.
    • Exécution de la fonction Launch avec un LaunchTarget Self.
  • Si l’application s’exécute dans l’application mobile Power Apps (iOS ou Android) :
    • Glisser pour basculer vers une autre application dans l’application mobile Power Apps.
    • Sélection du bouton de retour sur un dispositif Android.
    • Exécution de la fonction Launch pour lancer une autre application canevas.

L’aspect exact de la boîte de dialogue de confirmation peut varier selon les appareils et les versions de Power Apps.

La boîte de dialogue de confirmation ne s’affiche pas dans Power Apps Studio.

ConfirmExitMessage

Par défaut, la boîte de dialogue de confirmation affiche un message générique, tel que « Vous avez peut-être des modifications non enregistrées. » dans la langue de l’utilisateur.

Utilisez ConfirmExitMessage pour fournir un message personnalisé dans la boîte de dialogue de confirmation. Si cette propriété est blank, la valeur par défaut est utilisée. Les messages personnalisés sont tronqués selon les besoins pour tenir dans la boîte de dialogue de confirmation. Conservez donc le message sur quelques lignes au maximum.

Dans un navigateur, la boîte de dialogue de confirmation peut apparaître avec un message générique du navigateur.

Notes

L’objet App a deux autres propriétés supplémentaires OnMessage et BackEnabled qui sont des propriétés expérimentales et disparaîtront de l’objet d’application à l’avenir. Nous vous recommandons de ne pas utiliser ces propriétés dans votre environnement de production.

Exemple

  1. Créez une application qui contient deux contrôles de formulaire, AccountForm et ContactForm.

  2. Définissez la propriété ConfirmExit de l’objet appli à cette expression :

    AccountForm.Unsaved Or ContactForm.Unsaved
    

    Cette boîte de dialogue s’affiche si l’utilisateur modifie les données dans l’un ou l’autre formulaire, puis essaie de fermer l’application sans enregistrer ces modifications.

    Boîte de dialogue Confirmation générique.

  3. Définissez la propriété ConfirmExitMessage de l’objet appli à cette formule :

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

    Cette boîte de dialogue s’affiche si l’utilisateur modifie les données dans le formulaire Compte, puis essaie de fermer l’application sans enregistrer ces modifications.

    Boîte de dialogue de confirmation spécifique au formulaire.

Propriété OnError

Notes

Utilisez OnError pour prendre des mesures après qu’une erreur ait été détectée. Cela offre une opportunité globale d’intercepter une bannière d’erreur avant qu’elle ne soit affichée à l’utilisateur final. Cela peut être également utilisé pour enregistrer une erreur avec la fonction Trace ou écrire dans une base de données ou un service Web.

Le résultat de chaque évaluation de formule est vérifié pour une erreur. S’il s’agit d’une erreur, OnError sera évalué avec les mêmes variables d’étendue FirstError et AllErrors qui auraient été présentes si la formule entière était enveloppée dans une fonction IfError.

Si OnError est vide, une bannière d’erreur par défaut s’affiche avec FirstError.Message de l’erreur. Définir une formule OnError remplace ce comportement, permettant au fabricant de gérer le rapport d’erreurs comme bon lui semble. Le comportement par défaut peut être demandé dans la fonction OnError en relançant l’erreur avec la fonction Error. Ceci est utile si certaines erreurs doivent être filtrées ou traitées d’une autre manière, tandis que d’autres doivent être transmises.

OnError ne peut pas remplacer une erreur de calcul de la façon dont IfError peut le faire. Au point que OnError est appelée, l’erreur s’est déjà produite et elle a déjà été traitée par des calculs de formule. *OnError* contrôle uniquement les rapports d’erreurs.

Les formules OnError sont évaluées simultanément et il est possible que leur évaluation chevauche le traitement d’autres erreurs. Par exemple, si vous définissez une variable globale en haut d’une OnError et la lisez ultérieurement dans la même formule, la valeur peut avoir changé. Utilisez la fonction With pour créer une valeur nommée locale à la formule.

Bien que chaque erreur soit traitée individuellement par OnError, la bannière d’erreur par défaut peut ne pas s’afficher pour chaque erreur individuellement. Pour éviter d’avoir trop de bannières d’erreur affichées en même temps, la même erreur ne déclenchera pas une nouvelle bannière d’erreur si elle a été affichée récemment.

Exemple

Envisagez des contrôles Label et Slider qui sont liés par la formule :

Label1.Text = 1/Slider1.Value

Contrôles Label et Slider liés par la formule Label1.Text = 1/Slider1.Value.

La valeur par défaut du curseur est 50. Si le curseur est déplacé vers 0, Label1 n’affichera aucune valeur et une bannière d’erreur s’affichera :

Le contrôle Slider est passé à 0, entraînant une erreur de division par zéro et une bannière d’erreur.

Voyons en détail ce qu’il s’est passé :

  1. L’utilisateur a déplacé la diapositive vers la gauche et la propriété Slide1.Value est passée sur 0.
  2. Label1.Text a été automatiquement réévaluée. Une division par zéro s’est produite, générant une erreur.
  3. Il n’y a pas IfError dans cette formule. L’erreur de division par zéro est renvoyée par l’évaluation de la formule.
  4. Label1.Text ne peut rien montrer pour cette erreur, donc il montre un état vide.
  5. OnError est invoqué. Puisqu’il n’y a pas de gestionnaire, la bannière d’erreur standard s’affiche avec les informations d’erreur.

Si nécessaire, nous pourrions également modifier la formule pour Label1.Text = IfError( 1/Slider1.Value, 0 ). Cela n’entraînerait aucune erreur ou bannière d’erreur. Nous ne pouvons pas modifier la valeur d’une erreur OnError puisqu’à ce stade, l’erreur s’est déjà produite, il ne s’agit que de savoir comment elle sera signalée.

Si nous ajoutons un gestionnaire OnError, cela n’aura aucun impact avant l’étape 5, mais cela peut avoir un impact sur la façon dont l’erreur est signalée :

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

Formule App.OnError définie pour générer une trace.

Avec cela en place, du point de vue de l’utilisateur de l’application, il n’y aura pas d’erreur. Mais l’erreur sera ajoutée à la trace de Monitor, avec la source des informations d’erreur de FirstError :

Le contrôle Slider est passé à 0, entraînant une erreur de division par zéro, mais aucune bannière d’erreur.

Si nous voulions également avoir la même bannière d’erreur par défaut affichée en plus de la trace, nous pourrions relancer l’erreur avec la fonction Error après l’appel Trace comme il ce fut le cas si Trace n’était pas là :

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

Propriété OnStart

Notes

L’utilisation de la propriété OnStart peut entraîner des problèmes de performances lors du chargement d’une application. Nous sommes en train de créer des alternatives pour les deux principales raisons d’utiliser la propriété—la mise en cache des données et la configuration des variables globales. Nous avons déjà créé une alternative pour définir le premier écran à afficher avec Navigate. Selon votre contexte, cette propriété peut être désactivée par défaut. Si vous ne le voyez pas et que vous devez l’utiliser, vérifiez les paramètres avancés de l’application pour un commutateur pour l’activer. La propriété OnVisible d’un écran peut également être utilisée.

La propriété OnStart s’exécute lorsque l’utilisateur démarre l’application. Cette propriété est souvent utilisée pour effectuer les tâches suivantes :

  • Récupérez et mettez en cache les données dans des collections à l’aide de la fonction Collect.
  • Paramétrez des variables globales à l’aide de la fonction Set.

Cette formule est évaluée avant l’apparition du premier écran. Aucun écran n’est chargé, vous ne pouvez donc pas définir de variables de contexte avec la fonction UpdateContext. Cependant, vous pouvez transmettre des variables de contexte avec la fonction Navigate.

Après avoir modifié la propriété OnStart, testez-la en survolant l’objet Application dans le volet Vue arborescente, en sélectionnant les points de suspension (...), puis en sélectionnant Exécuter OnStart. Contrairement au premier chargement de l’application, les collections et variables existantes seront déjà définies. Pour commencer avec de nouvelles collections, utilisez la fonction ClearCollect au lieu de la fonction Collect.

Menu de raccourcis des éléments d’application pour Run OnStart

Notes

  • La fonction Navigate dans la propriété OnStart a été mise hors service. Les applications existantes continueront de fonctionner. Pour une durée limitée, vous pouvez toujours l’activer dans les paramètres de l’application (disponible sous Mis hors service). Cependant, l’utilisation de la fonction Navigate de cette manière peut entraîner des retards de chargement de l’application car cela oblige le système à terminer l’évaluation de la propriété OnStart avant d’afficher le premier écran. Utilisez plutôt la propriété StartScreen pour calculer le premier écran affiché.
  • Le commutateur Mis hors service sera désactivé pour les applications créées avant mars 2021 où vous avez ajouté Navigate à OnStart entre mars 2021 et maintenant. Lorsque vous modifiez de telles applications dans Power Apps Studio, une erreur peut s’afficher. Activez le commutateur Mis hors service mentionné ci-dessus pour effacer cette erreur.

Propriété StartScreen

Notes

La propriété StartScreen n’apparaîtra pas dans la liste des propriétés lorsque l’option retirée Barre de formule améliorée est activée. Pour désactiver la Barre de formule améliorée, accédez à Paramètres > Fonctionnalités à venir > Mis hors service >, désactivez le bouton bascule Barre de formule améliorée quand vous voulez utiliser la propriété StartScreen.

La propriété StartScreen détermine quel écran sera affiché en premier. L’évaluation s’effectue lorsque l’application est chargée et renvoie l’objet d’écran à afficher. Par défaut, cette propriété sera vide et le premier écran de l’arborescence du Studio s’affiche en premier.

StartScreen est une propriété de flux de données qui ne peut pas contenir de fonctions de comportement. Toutes les fonctions de flux de données sont disponibles, en particulier utilisez ces fonctions et signaux pour déterminer quel écran afficher en premier :

  • Fonction Param pour lire les paramètres utilisés pour démarrer l’application.
  • Fonction User pour lire les informations sur l’utilisateur actuel.
  • Fonctions LookUp, Filter, CountRows, Max et autres qui lisent à partir d’une source de données.
  • Tout appel d’API via un connecteur, mais veillez à ce qu’il revienne rapidement.
  • Des signaux tels que Connection, Compass et App.

Notes

Les collections et variables globales, y compris celles créées dans OnStart ne sont pas disponibles dans StartScreen. Il existe des alternatives déclaratives pour ce faire qui sont sur le chemin. Pour obtenir vos commentaires sur cette restriction, accédez au Forum de la communauté Power Apps.

Si StartScreen renvoie une erreur, le premier écran de l’arborescence Studio s’affichera comme si StartScreen n’avait pas été défini. Utilisez la fonction IfError pour détecter les erreurs et rediriger vers un écran d’erreur approprié.

Après avoir changé la propriété StartScreen dans Studio, testez-la en survolant l’objet Application dans le volet Arborescence, en sélectionnant les points de suspension (...), puis en sélectionnant Accéder à StartScreen. L’écran changera comme si l’application avait été chargée.

Accéder à StartScreen

Exemples

Screen9

Indique que Screen9 doit être affiché en premier à chaque démarrage de l’application.

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

Vérifie si le paramètre "admin-mode" a été défini par l’utilisateur et l’utilise pour décider si HomeScreen ou AdminScreen doit être affiché en premier.

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

Vérifie si un participant à une conférence est un membre du personnel et le dirige vers l’écran approprié au démarrage.

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

Dirige l’application en fonction d’un appel d’API vers soit ForestScreen, soit OceanScreen. Si l’API échoue pour une raison quelconque, ErrorScreen est utilisé à la place.

Notes

Pouvez-vous nous indiquer vos préférences de langue pour la documentation ? Répondez à un court questionnaire. (veuillez noter que ce questionnaire est en anglais)

Le questionnaire vous prendra environ sept minutes. Aucune donnée personnelle n’est collectée (déclaration de confidentialité).