Obiectul Aplicație Power Apps
Se aplică pentru: Aplicații Canvas
Aplicații bazate pe model
Oferă informații despre aplicația care rulează în prezent și controlează comportamentul aplicației.
Descriere
Similar unui control, obiectul Aplicație oferă proprietăți care identifică ecranul afișat și care solicită utilizatorului să salveze modificările, astfel încât să nu se piardă. Fiecare aplicație are un obiect Aplicație.
Puteți scrie formule pentru unele proprietăți ale obiectului Aplicație. În partea de sus a panoului Vizualizare arborescentă, selectați obiectul Aplicație ca pe orice alt control sau ecran. Vizualizați și editați una dintre proprietățile obiectului selectând-o în lista verticală din stânga barei de formule.
Proprietatea ActiveScreen
Proprietatea ActiveScreen identifică ecranul afișat.
Această proprietate returnează un obiect ecran. Folosiți-l pentru a face referire la proprietățile ecranului afișat curent, cum ar fi numele cu formula App.ActiveScreen.Name. De asemenea, puteți compara această proprietate cu un alt obiect ecran, cum ar fi cu formula de comparație App.ActiveScreen = Screen2 pentru a testa dacă Screen2 este ecranul afișat în prezent.
Utilizați funcția Back sau Navigate pentru a schimba ecranul afișat.
Proprietate BackEnabled
Proprietatea BackEnabled modifică modul în care aplicația răspunde la gestul înapoi a dispozitivului (glisați sau utilizați butonul hardware înapoi pe dispozitive Android , glisați de la stânga pe iOS dispozitive) când rulează în Power Apps mobil. Când este activat, gestul înapoi a dispozitivului navighează înapoi la ecranul care a fost afișat cel mai recent, care este similar cu formula Înapoi . Când este dezactivat, gestul înapoi a dispozitivului readuce utilizatorul la lista de aplicații.
Proprietățile ConfirmExit
Nimeni nu dorește să piardă modificările nesalvate. Utilizați proprietățile ConfirmExit și ConfirmExitMessage pentru a avertiza utilizatorul înainte de închiderea aplicației.
Notă
- ConfirmExit nu funcționează în aplicațiile care sunt încorporate în, de exemplu, Power BI și SharePoint.
- Acum, aceste proprietăți pot face referire la controale doar pe primul ecran dacă este activată Încărcare întârziată funcția de previzualizare (care este în mod implicit pentru aplicațiile noi). Dacă se fac referiri, Power Apps Studio nu afișează o eroare, dar aplicația publicată rezultată nu se deschide în Power Apps Mobile sau într-un browser. Lucrăm activ pentru a elimina această limitare. Între timp, puteți dezactiva Încărcare întârziată în Setări>Caracteristici viitoare (sub Previzualizare).
ConfirmExit
ConfirmExit este o proprietate booleană care, când true, deschide o casetă de dialog de confirmare înainte ca aplicația să fie închisă. În mod implicit, această proprietate are valoarea fals și nu apare nicio casetă de dialog.
În situațiile în care utilizatorul poate avea modificări nesalvate în aplicație, utilizați această proprietate pentru a afișa o casetă de dialog de confirmare înainte de a părăsi aplicația. Utilizați o formulă care poate verifica variabilele și proprietățile controalelor (de exemplu, proprietatea Unsaved a controlului Editare formular).
Caseta de dialog de confirmare apare în orice situație în care datele s-ar putea pierde ca în aceste exemple:
- Rularea funcției Exit.
- Dacă aplicația rulează într-un browser:
- Închiderea browserului sau a filei browserului în care rulează aplicația.
- Selectarea butonului Back al browserului.
- Rularea funcției Launch cu LaunchTarget din În sistem propriu.
- Dacă aplicația rulează în Power Apps Mobil (iOS sau Android):
- Glisarea pentru a comuta la o altă aplicație din Power Apps Mobile.
- Selectarea butonului Back pe un dispozitiv Android.
- Rularea funcției Launch pentru a lansa o altă aplicație proiectată pe pânză.
Aspectul exact al casetei de dialog de confirmare poate varia în funcție de dispozitive și de versiunea Power Apps.
Caseta de dialog de confirmare nu apare în Power Apps Studio.
ConfirmExitMessage
În mod implicit, caseta de dialog de confirmare afișează un mesaj generic, cum ar fi „Este posibil să aveți modificări nesalvate.” în limba utilizatorului.
Utilizați ConfirmExitMessage pentru a specifica un mesaj personalizat în caseta de dialog de confirmare. Dacă această proprietate are valoarea blank, se utilizează valoarea implicită. Mesajele personalizate sunt trunchiate după cum este necesar pentru a se încadra în caseta de dialog de confirmare, deci limitați mesajul la cel mult câteva linii.
Într-un browser, caseta de dialog de confirmare poate apărea cu un mesaj generic de la browser.
Notă
Obiectul aplicației are încă două proprietăți OnMessage
și BackEnabled
care sunt experimentale. Aceste proprietăți vor fi eliminate din obiectul aplicației în cele din urmă. Vă recomandăm să nu utilizați aceste proprietăți în mediul dvs. de producție.
Exemplu
Creați o aplicație care conține două controale de formular, respectiv AccountForm și ContactForm.
Setați proprietatea ConfirmExit a obiectului Aplicație la această expresie:
AccountForm.Unsaved Or ContactForm.Unsaved
Această casetă de dialog apare dacă utilizatorul modifică datele dintr-un formular și încearcă să închidă aplicația fără a salva aceste modificări.
Setați proprietatea ConfirmExitMessage a obiectului Aplicație la această formulă:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )
Această casetă de dialog apare dacă utilizatorul modifică datele din formularul Cont și încearcă să închidă aplicația fără a salva aceste modificări.
Configurați cheia de instrumentare pentru Application Insights
Pentru a exporta jurnalele de aplicații generate de sistem în Application Insights, trebuie să configurați Cheia de instrumentare pentru aplicația dvs. canvas.
- Deschideți aplicația pentru editare în Power Apps Studio.
- Selectați obiectul Aplicație în vizualizarea arborescentă de navigare din stânga.
- Introduceți Cheia de instrumentare în panoul de proprietăți.
Dacă datele nu sunt trimise la App Insights, contactați Power Platform administratorul dvs. și verificați dacă App Insights este dezactivat la nivel de locatar.
Proprietatea Formule
Folosiți formule denumite, în proprietatea Formule, pentru a defini o formulă care poate fi reutilizată în aplicația dvs.
În Power Apps, formulele determină valoarea proprietăților de control. De exemplu, pentru a seta culoarea de fundal în mod constant într-o aplicație, puteți seta proprietatea Umplere pentru fiecare la o formulă comună:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Cu atât de multe locuri în care poate apărea această formulă, poate lua mult timp și pot apărea erori dacă le actualizați pe toate atunci când este necesară o schimbare. În schimb, puteți crea o variabilă globală în OnStart pentru a seta culoarea o dată, apoi reutilizați valoarea în întreaga aplicație:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Deși această metodă este mai bună, depinde și de rularea OnStart înainte de stabilirea valorii pentru BGColor . BGColor ar putea fi, de asemenea, manipulat într-un colț al aplicației de care producătorul nu știe, o modificare făcută de altcineva și care poate fi greu de urmărit.
Formulele denumite oferă o alternativă. Așa cum scriem în mod obișnuit control-property = expression, putem scrie, în schimb, denumire = expressie și apoi putem reutiliza denumire în aplicația noastră pentru a înlocui expresia. Definițiile acestor formule sunt făcute în proprietatea Formule:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Avantajele utilizării formulelor denumite includ:
- Valoarea formulei este întotdeauna disponibilă. Nu există nicio dependență de sincronizare, nici OnStart care trebuie să ruleze mai întâi, înainte ca valoarea să fie setată, nici un moment în care valoarea formulei este incorectă. Formulele denumite se pot face referire unele la altele în orice ordine, atâta timp cât nu creează o referință circulară. Acestea pot fi calculate în paralel.
- Valoarea formulei este întotdeauna actualizată. Formula poate efectua un calcul care depinde de proprietățile de control sau de înregistrările bazei de date și, pe măsură ce acestea se modifică, valoarea formulei se actualizează automat. Nu trebuie să actualizați manual valoarea, așa cum faceți cu o variabilă. Iar formulele se recalculează doar când este nevoie.
- Definiția formulei este imuabilă. Definiția din Formule este singura sursă de adevăr, iar valoarea nu poate fi schimbată în altă parte în aplicație. Cu variabile, este posibil ca un cod să schimbe în mod neașteptat o valoare, dar această situație dificil de depanat nu este posibilă cu formulele numite.
- Calculul formulei poate fi amânat. Deoarece valoarea sa este imuabilă, poate fi întotdeauna calculată atunci când este necesar, ceea ce înseamnă că nu trebuie calculată până când este nevoie. Valorile formulelor care nu sunt utilizate până la screen2 al unei aplicații nu trebuie să fie calculate până când screen2 nu este vizibil. Amânarea acestei lucrări poate îmbunătăți timpul de încărcare a aplicației. Formulele denumite sunt declarative și oferă oportunități sistemului de a optimiza modul și momentul în care sunt calculate.
- Formule denumite este un concept Excel. Power Fx folosește conceptele Excel acolo unde este posibil, deoarece atât de mulți oameni cunosc bine Excel. Formulele denumite sunt echivalentul celulelor denumite și al formulelor denumite din Excel, gestionate cu Managerul de nume. Ele recalculează automat, așa cum fac celulele unei foi de calcul și proprietățile de control.
Formulele denumite sunt definite, una după alta, în proprietatea Formule, fiecare terminându-se cu semnul punct și virgulă. Tipul formulei este dedus din tipurile de elemente din formulă și din modul în care sunt utilizate împreună. De exemplu, aceste formule denumite preiau informații utile despre utilizatorul curent de la 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' );
Dacă formula pentru UserTitle trebuie actualizată, acest lucru se poate face cu ușurință în această locație. Dacă UserPhone nu este necesar în aplicație, atunci aceste apeluri către tabelul Utilizatori din Dataverse nu sunt efectuate. Nu există nicio penalizare pentru includerea unei definiții de formulă care nu este utilizată.
Câteva limitări ale formulelor denumite:
- Nu pot folosi funcții de comportament sau nu pot provoca efecte secundare în cadrul aplicației.
- Ei nu pot crea o referință circulară. Nu este permis să aveți a = b; și b = a; în aceeași aplicație.
Funcții definite de utilizator
Important
- Funcțiile definite de utilizator sunt experimentale.
- Funcțiile experimentale nu sunt destinate utilizării în producție și pot să nu fie complete. Aceste funcții sunt disponibile înainte de lansarea oficială, astfel încât să puteți obține acces anticipat și să oferi feedback. Mai multe informații: Înțelegeți caracteristicile experimentale, de previzualizare și perimate în aplicațiile create pe planșă
- Comportamentul descris de acest articol este disponibil numai atunci când funcțiile definite de utilizator funcția experimentală din Setări > funcții viitoare > Experimental este activat (este dezactivat implicit).
- Feedback-ul dumneavoastră este valoros pentru noi. Spuneți-ne părerea dvs. pe Power Apps forumul comunității cu funcții experimentale.
Power Fx include o listă lungă de funcții încorporate, cum ar fi If, Text și a6>Setare. Funcțiile definite de utilizator vă permit să scrieți propriile funcții care preiau parametri și returnează o valoare, așa cum fac funcțiile încorporate. Vă puteți gândi la funcțiile definite de utilizator ca o extensie a formulelor numite care adaugă parametri și acceptă formule de comportament.
De exemplu, puteți defini o formulă numită care returnează cărți de ficțiune dintr-o bibliotecă:
Library = [ { Title: "The Hobbit", Author: "J. R. R. Tolkien", Genre: "Fiction" },
{ Title: "Oxford English Dictionary", Author: "Oxford University", Genre: "Reference" } ];
LibraryFiction = Filter( Library, Genre = "Fiction" );
Fără parametri, ar trebui să definim formule separate denumite pentru fiecare gen. Dar, în schimb, să parametrizăm formula noastră numită:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
Acum putem apela LibraryGenre( "Fiction" )
, LibraryGenre( "Reference" )
sau filtra pe alte genuri cu o singură funcție definită de utilizator.
Sintaxa este:
FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : ReturnType = Formula;
- FunctionName – Obligatoriu. Numele funcției definite de utilizator.
- ParameterNames – Opțional. Numele unui parametru de funcție.
- ParameterTypes – Opțional. Numele unui tip, fie un nume tip de date încorporat, un nume sursă de date sau un tip definit cu Tipul funcție.
- ReturnType – Obligatoriu. Tipul valorii returnate din funcție.
- Formula – Obligatoriu. Formula care calculează valoarea funcției pe baza parametrilor.
Fiecare parametru și ieșirea de la funcția definită de utilizator trebuie introduse. În acest exemplu, SelectedGenre: Text
definește primul parametru al funcției noastre să fie de tipul Text și SelectedGenre
este numele parametru care este utilizat în corp pentru operațiunea Filtru. Consultați Tipurile de date pentru numele tipurilor acceptate. Funcția Tip este folosită pentru a crea un tip agregat pentru biblioteca noastră, astfel încât să putem returna un tabel cu cărți din funcția noastră.
Am definit LibraryType
un tabel plural de tip înregistrări. Dacă dorim să transmitem o singură carte unei funcții, putem extrage tipul de înregistrare pentru acest tabel cu funcția RecordOf funcția:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
Potrivirea înregistrărilor pentru parametrii funcției este mai strictă decât în alte părți ale Power Fx. Câmpurile unei valori de înregistrare trebuie să fie un subset adecvat al definiției tipului și nu pot include câmpuri suplimentare. De exemplu, IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" )
va avea ca rezultat o eroare.
Rețineți că recursiunea nu este încă acceptată de funcțiile definite de utilizator.
Funcții definite de utilizator de comportament
Formulele denumite și majoritatea funcțiilor definite de utilizator nu acceptă funcții de comportament cu efecte secundare, cum ar fi Setare sau Notificare. În general, cel mai bine este să evitați actualizarea stării dacă puteți, în schimb să vă bazați pe modele de programare funcționale și să permiteți Power Fx să recalculeze formulele după cum este necesar. Dar, există cazuri în care este inevitabil. Pentru a include logica comportamentului într-o funcție definită de utilizator, Încapsulare corpul între acolade:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
Acum putem apela Spend( 12 )
pentru a verifica dacă avem 12 în Economii și, dacă da, să-l debităm cu 12 și să adăugăm 12 la variabila Cheltuită. Tipul de returnare al acestei funcții este Void , deoarece nu returnează o valoare.
Sintaxa unei funcții comportamentale definite de utilizator este:
FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Formula2 . .. ] };
- FunctionName – Obligatoriu. Numele funcției definite de utilizator.
- ParameterNames – Opțional. Numele unui parametru de funcție.
- ParameterTypes – Opțional. Numele unui tip, fie un nume tip de date încorporat, un nume de sursă de date sau un tip definit cu Tip funcție.
- ReturnType – Obligatoriu. Tipul valorii returnate din funcție. Folosiți Void dacă funcția nu returnează o valoare.
- Formule – Obligatoriu. Formula care calculează valoarea funcției pe baza parametrilor.
Ca și în cazul tuturor formulelor Power Fx , execuția nu se termină atunci când se întâlnește o eroare. După ce Eroarea funcția a fost apelată, funcția Dacă funcția previne modificările la Economii și Cheltuite din întâmplare. Funcția IfError poate fi utilizată și pentru a preveni execuția ulterioară după o eroare. Chiar dacă returnează Void, formula poate returna totuși o eroare dacă există o problemă.
Tipuri definite de utilizator
Important
- Tipurile definite de utilizator sunt o caracteristică experimentală.
- Funcțiile experimentale nu sunt destinate utilizării în producție și pot să nu fie complete. Aceste funcții sunt disponibile înainte de lansarea oficială, astfel încât să puteți obține acces anticipat și să oferi feedback. Mai multe informații: Înțelegeți caracteristicile experimentale, de previzualizare și perimate în aplicațiile create pe planșă
- Comportamentul descris de acest articol este disponibil numai atunci când Tipuri definite de utilizator funcția experimentală din Setări > Funcții viitoare > Experimental este activat (este dezactivat implicit).
- Feedback-ul dumneavoastră este valoros pentru noi. Spuneți-ne părerea dvs. pe Power Apps forumul comunității cu funcții experimentale.
Formulele denumite pot fi folosite cu funcția Type pentru a crea tipuri definite de utilizator. Utilizați :=
în loc de =
pentru a defini un tip definit de utilizator, de exemplu Book := Type( { Title: Text, Author: Text } )
. Consultați funcția Type pentru mai multe informații și exemple.
Proprietatea OnError
Utilizați OnError pentru a lua măsuri atunci când apare o eroare oriunde în aplicație. Oferă o oportunitate globală de a intercepta un banner de eroare înainte de a fi afișat utilizatorului final. De asemenea, poate fi folosit pentru a înregistra o eroare cu funcția Urmărire sau pentru a scrie într-o bază de date sau într-un serviciu web.
În aplicațiile Canvas, rezultatul fiecărei evaluări a formulei este verificat pentru o eroare. Dacă se întâlnește o eroare, OnError este evaluată cu aceeași FirstError și AllErrors variabile de domeniu care ar fi fost utilizate dacă întreaga formulă ar fi fost înglobată o funcție IfError.
Dacă OnError este goală, se afișează un banner de eroare implicit cu FirstError.Message de eroare. Definirea unei formule OnError inlocuește acest comportament, permițând creatorului să gestioneze raportarea erorilor după cum consideră de cuviință. Comportamentul implicit poate fi solicitat în OnError prin reintroducerea funcția Eroare. Folosiți abordarea de reintroducere dacă unele erori urmează să fie filtrate sau tratate într-un mod diferit, în timp ce altele trebuie să fie trecute.
OnError nu poate înlocui o eroare în calcule așa cum poate IfError . Dacă OnError este invocată, eroarea s-a produs deja și a fost deja procesată prin calcule de formule precum IfError; OnError controlează numai raportarea erorilor.
Formulele OnError sunt evaluate concomitent și este posibil ca evaluarea lor să se suprapună cu procesarea altor erori. De exemplu, dacă setați o variabilă globală în partea de sus a unei OnError și o citiți mai târziu în aceeași formulă, este posibil ca valoarea să se fi modificat. Utilizați funcția Cu pentru a crea o valoare denumită care este locală formulei.
Deși fiecare eroare este procesată individual de OnError, este posibil ca bannerul de eroare implicit să nu apară pentru fiecare eroare în mod individual. Pentru a evita afișarea de prea multe bannere de eroare în același timp, același banner de eroare nu va fi afișat din nou dacă a fost afișat recent.
Exemplu
Luați în considerare un control Etichetă și un control Glisor care sunt legate împreună prin formula:
Label1.Text = 1/Slider1.Value
Glisorul este implicit la 50. Dacă glisorul este mutat la 0, Label1 nu va afișa nicio valoare și va fi afișat un banner de eroare:
Să ne uităm la ce s-a întâmplat în detaliu:
- Utilizatorul a mutat glisorul spre stânga, iar proprietatea Slide1.Value a fost schimbată la 0.
- Label1.Text a fost reevaluat automat. A avut loc împărțirea cu zero, generând o eroare.
- Nu există IfError în această formulă. Eroarea de împărțire la zero este returnată de evaluarea formulei.
- Label1.Text nu poate afișa nimic pentru această eroare, așa că arată o stare gol .
- OnError este invocat. Întrucât nu există o rutină de tratare, bannerul standard de eroare este afișat cu informații despre eroare.
Dacă este necesar, am putea modifica și formula la Label1.Text = IfError( 1/Slider1.Value, 0 )
. Utilizarea IfError nu va avea ca rezultat nicio eroare sau un banner de eroare. Nu putem schimba valoarea unei erori de la OnError deoarece în acel moment eroarea s-a produs deja, este doar o chestiune ce ține de modul în care va fi raportată.
Dacă adăugăm un handler OnError , acesta nu are niciun impact înainte de pasul 5, dar poate afecta modul în care este raportată eroarea:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Cu acest handler OnError la loc, din perspectiva utilizatorului aplicației, nu va exista nicio eroare. Dar eroarea va fi adăugată la urmărirea monitorului, completă cu sursa informațiilor despre eroare de la FirstError:
Dacă dorim să avem și același banner de eroare implicit afișat în plus față de urmărire, putem reintroduce eroarea cu funcția Eroare după apelul Urmărire la fel ca atunci când Urmărire nu s-ar fi aflat acolo:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Proprietatea OnStart
Notă
Utilizarea proprietății OnStart poate cauza probleme de performanță la încărcarea unei aplicații. Suntem în curs de a crea alternative pentru primele două motive pentru utilizarea proprietății – stocarea în cache a datelor și configurarea variabilelor globale. Am creat deja o alternativă pentru definirea primului ecran cu care să fie afișat Navigate. În funcție de context, această proprietate poate fi dezactivată în mod implicit. Dacă nu îl vedeți și trebuie să îl utilizați, verificați setările avansate ale aplicației pentru un comutator care să o activeze. Poate fi folosită, de asemenea, proprietatea OnVisible a unui ecran. În mod implicit, când regula de neblocare OnStart este activată, aceasta permite funcția OnStart să ruleze simultan cu alte reguli ale aplicației. Deci, dacă variabilele la care se face referire în alte reguli ale aplicației sunt inițializate în cadrul funcției OnStart , este posibil să nu fie complet inițializate încă. În plus, există posibilitatea ca un ecran să poată fi randat și să devină interactiv fie înainte de Screen.OnVisible sau App.OnStart a20>funcțiile se termină de execuție, mai ales dacă sunt finalizate cu mult timp.
Proprietatea OnStart rulează atunci când utilizatorul pornește aplicația. Această proprietate este adesea folosită pentru a efectua următoarele sarcini:
- Preluați și memorați datele din cache în colecții folosind funcția Collect.
- Configurați variabile globale utilizând funcția Set.
Această formulă este evaluată înainte de afișarea primului ecran. Nu este încărcat niciun ecran, deci nu puteți seta variabile de context cu funcția UpdateContext. Cu toate acestea, puteți transmite variabile de context cu funcția Navigate.
După ce schimbați proprietatea OnStart, testați-o trecând cu mouse-ul peste obiectul Aplicație în panoul Vizualizare arborescentă, selectând elipsa (...), apoi selectând Rulare OnStart. Spre deosebire de situația în care aplicația este încărcată pentru prima dată, colecțiile și variabilele existente vor fi deja setate. Pentru a începe de la colecțiile goale, utilizați funcția ClearCollect în locul funcției Collect.
Notă
- Utilizarea funcției Navigate în proprietatea OnStart a fost retrasă. Aplicațiile existente vor continua să funcționeze. Pentru o perioadă limitată de timp, o puteți activa în setările aplicației (disponibil sub Retras). Cu toate acestea, folosirea funcției Navigați în acest mod poate duce la întârzieri în încărcarea aplicației deoarece forțează sistemul să finalizeze evaluarea OnStart înainte de afișarea primului ecran. Utilizați în schimb proprietatea StartScreen pentru a calcula primul ecran afișat.
- Comutatorul retras va fi dezactivat pentru aplicațiile create înainte de martie 2021 în care ați adăugat Navigate la OnStart între martie 2021 și acum. Când editați astfel de aplicații în Power Apps Studio, este posibil să vedeți o eroare. Porniți comutatorul retras pentru a șterge această eroare.
Proprietate StartScreen
Proprietatea StartScreen determină ce ecran va fi afișat primul. Este evaluat o dată când aplicația este încărcată și returnează obiectul ecranului pentru a fi afișat. În mod implicit, această proprietate este goală și primul ecran din vizualizarea Studio Tree este afișat primul.
StartScreen este o proprietate a fluxului de date care nu poate conține funcții de comportament. Toate funcțiile de flux de date sunt disponibile, în special utilizați aceste funcții și semnale pentru a determina ce ecran să afișați primul:
- Param funcție de citire a parametrilor utilizați pentru pornirea aplicației.
- Utilizator funcție pentru a citi informații despre utilizatorul actual.
- Căutare, Filtru, CountRows, Max și alte funcții care citesc dintr-o sursă de date.
- Orice accesare API printr-un conector, dar aveți grijă ca acesta să revină rapid.
- Semnale precum Conexiune, Busolă și Aplicație.
Notă
Variabile și colecții globale, inclusiv cele create în OnStart, nu sunt disponibile în StartScreen. Formulele numite sunt disponibile și sunt adesea o alternativă mai bună pentru reutilizarea formulei în aplicație.
Dacă StartScreen returnează o eroare, primul ecran din vizualizarea Studio Tree va fi afișat ca și cum StartScreen nu fusese setat. Utilizați funcția IfError pentru a detecta orice erori și a redirecționa către un ecran de eroare corespunzător.
După ce schimbați StartScreen în Studio, testați-o trecând cu mouse-ul peste obiectul Aplicație în panoul Vizualizare arborescentă, selectând elipsa (...), apoi selectând Navigați la StartScreen. Ecranul se va schimba ca și cum aplicația tocmai ar fi fost încărcată.
Exemple
Screen9
Indică faptul că Screen9
ar trebui să fie afișat mai întâi ori de câte ori pornește aplicația.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Verifică dacă Param „mod-admin” a fost setat de utilizator și îl folosește pentru a decide dacă HomeScreen sau AdminScreen ar trebui să fie afișat mai întâi.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Verifică dacă un participant la o conferință este membru al personalului și îl direcționează către ecranul corespunzător la pornire.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Dirijați aplicația pe baza unei accesări API către ForestScreen
sau OceanScreen
. Dacă API-ul eșuează din orice motiv, ErrorScreen
este folosit în schimb.
Proprietatea StudioVersion
Utilizați proprietatea StudioVersion pentru a afișa sau înregistra versiunea Power Apps Studio care a fost folosită pentru a publica o aplicație. Acest lucru poate fi util la depanare și pentru a vă asigura că aplicația dvs. a fost republicată cu o versiune recentă a Power Apps Studio.
StudioVersion este returnat ca text. Formatul textului se poate schimba în timp și trebuie tratat ca un întreg; evitați extragerea porțiunilor individuale.