Objek aplikasi di Power Apps
Berlaku untuk: Aplikasi
kanvas Aplikasi berdasarkan model
Menyediakan informasi tentang aplikasi yang saat ini berjalan dan kontrol atas perilaku aplikasi.
KETERANGAN
Seperti kontrol, objek aplikasi menyediakan properti yang mengidentifikasi layar mana yang ditampilkan dan yang meminta pengguna untuk menyimpan perubahan sehingga tidak hilang. Setiap aplikasi memiliki objek Aplikasi.
Anda dapat menulis rumus untuk beberapa properti dari objek Aplikasi. Di bagian atas panel Tampilan hierarki, pilih objek Aplikasi layaknya kontrol atau layar lainnya. Lihat dan edit salah satu properti objek dengan memilihnya dalam daftar drop-down di kiri bilah rumus.
Properti ActiveScreen
Properti ActiveScreen mengidentifikasi layar yang ditampilkan.
Properti ini mengembalikan objek layar. Gunakan untuk mereferensikan properti layar yang ditampilkan saat ini, seperti nama dengan rumus# App.ActiveScreen.Name. Anda juga dapat membandingkan properti ini dengan objek layar lain, seperti dengan rumus perbandingan App.ActiveScreen = Screen2 untuk menguji apakah Screen2 adalah layar yang saat ini ditampilkan.
Gunakan fungsi Back atau Navigate untuk mengubah layar yang ditampilkan.
Properti BackEnabled
Properti BackEnabled mengubah cara aplikasi merespons gerakan mundur perangkat (geser atau gunakan tombol kembali perangkat keras di Android perangkat, geser dari kiri pada iOS perangkat) saat berjalan di Power Apps seluler. Saat diaktifkan, gestur kembali perangkat menavigasi kembali ke layar yang terakhir ditampilkan, yang mirip dengan rumus Kembali . Saat dinonaktifkan, gestur kembali perangkat mengembalikan pengguna ke daftar aplikasi.
Properti ConfirmExit
Tidak ada yang ingin kehilangan perubahan yang belum disimpan. Gunakan properti ConfirmExit dan ConfirmExitMessage untuk memperingatkan pengguna sebelum mereka menutup aplikasi Anda.
Catatan
- ConfirmExit tidak berfungsi di aplikasi yang disematkan, misalnya, Power BI dan SharePoint.
- Sekarang, properti ini dapat mereferensikan kontrol hanya pada layar pertama jika fitur pratinjau pemuatan tertunda diaktifkan (yang secara default untuk aplikasi baru). Jika referensi dibuat, Power Apps Studio tidak menampilkan kesalahan, namun aplikasi yang dipublikasikan tidak terbuka di Power Apps Mobile atau browser. Kami terus bekerja untuk mengangkat keterbatasan ini. Sementara itu, Anda dapat menonaktifkan beban Tertunda di Pengaturan>Fitur yang Akan Datang (dalam Pratinjau).
ConfirmExit
ConfirmExit adalah properti Boolean yang, ketika true, membuka kotak dialog konfirmasi sebelum aplikasi ditutup. Secara default, properti ini palsu, dan tidak ada kotak dialog ditampilkan.
Dalam situasi di mana pengguna mungkin memiliki perubahan yang belum disimpan di aplikasi, gunakan properti ini untuk menampilkan kotak dialog konfirmasi sebelum keluar dari aplikasi. Gunakan rumus yang dapat memeriksa variabel dan properti kontrol (contohnya, properti Belum disimpan dari kontrol Formulir edit ).
Kotak dialog konfirmasi akan muncul dalam situasi apa pun saat data dapat hilang, seperti dalam contoh berikut:
- Menjalankan fungsi Exit.
- Jika aplikasi berjalan di browser:
- Menutup browser atau tab browser yang dijalankan oleh aplikasi.
- Memilih tombol kembali browser.
- Menjalankan fungsi Launch dengan LaunchTarget dari Self.
- Jika aplikasi berjalan di Power Apps Seluler (iOS atau Android):
- Menggeser untuk beralih ke aplikasi lain di Power Apps Mobile.
- Memilih tombol kembali pada perangkat Android.
- Menjalankan fungsi Launch untuk meluncurkan aplikasi Canvas lainnya.
Tampilan yang tepat dari kotak dialog konfirmasi mungkin berbeda di seluruh perangkat dan versi Power Apps.
Kotak dialog konfirmasi tidak muncul di Power Apps Studio.
ConfirmExitMessage
Secara default, kotak dialog konfirmasi akan menampilkan pesan umum, seperti "Anda mungkin memiliki perubahan yang belum disimpan". dalam bahasa pengguna.
Gunakan ConfirmExitMessage untuk menyediakan pesan kustom di kotak dialog konfirmasi. Jika properti ini kosong, nilai default akan digunakan. Pesan kustom terpotong sesuai dengan yang diperlukan agar muat di kotak dialog konfirmasi, sehingga menyimpan pesan ke beberapa baris paling banyak.
Di peramban, kotak dialog konfirmasi mungkin muncul dengan pesan umum dari peramban.
Catatan
Objek aplikasi memiliki dua properti lainnya OnMessage
dan BackEnabled
yang bersifat percobaan. Properti ini akan dihapus dari objek aplikasi pada akhirnya. Sebaiknya jangan gunakan properti ini di lingkungan produksi Anda.
Contoh
Buat aplikasi yang berisi dua kontrol formulir, AccountForm dan ContactForm.
Atur properti ConfirmExit objek Aplikasi ke ekspresi ini:
AccountForm.Unsaved Or ContactForm.Unsaved
Kotak dialog ini akan ditampilkan jika pengguna mengubah data di kedua formulir, lalu mencoba menutup aplikasi tanpa menyimpan perubahan tersebut.
Atur properti ConfirmExitMessage objek Aplikasi ke rumus ini:
If( AccountsForm.Unsaved, "Accounts form has unsaved changes.", "Contacts form has unsaved changes." )
Kotak dialog ini akan ditampilkan jika pengguna mengubah data di formulir Akun, lalu mencoba menutup aplikasi tanpa menyimpan perubahan tersebut.
Siapkan Kunci Instrumentasi untuk Application Insights
Untuk mengekspor log aplikasi Application Insights yang dihasilkan sistem, Anda perlu menyiapkan Kunci Instrumentasi untuk aplikasi kanvas Anda.
- Buka aplikasi Anda untuk diedit . Power Apps Studio
- Pilih objek Aplikasi di tampilan pohon navigasi kiri.
- Masukkan Kunci Instrumentasi di panel properti.
Jika data tidak dikirim ke App Insights, hubungi administrator Anda Power Platform dan verifikasi apakah App Insights dinonaktifkan di tingkat penyewa.
Properti rumus
Gunakan rumus bernama, di properti Rumus, untuk mendefinisikan rumus yang dapat digunakan kembali di seluruh aplikasi Anda.
Dalam rumus Power Apps menentukan nilai properti kontrol. Contohnya, untuk mengatur warna latar belakang secara konsisten di seluruh aplikasi, Anda dapat mengatur properti Isi untuk tiap-tiapnya ke rumus umum:
Label1.Fill: ColorValue( Param( "BackgroundColor" ) )
Label2.Fill: ColorValue( Param( "BackgroundColor" ) )
Label3.Fill: ColorValue( Param( "BackgroundColor" ) )
Dengan begitu banyaknya tempat munculnya rumus ini, akan menjadi bertele-tele dan kesalahan akan diperbarui jika perubahan diperlukan. Sebagai gantinya, Anda dapat membuat variabel global di OnStart untuk mengatur warna satu kali, kemudian menggunakan kembali nilai di seluruh aplikasi:
App.OnStart: Set( BGColor, ColorValue( Param( "BackgroundColor" ) ) )
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Meskipun metode ini lebih baik, namun juga tergantung pada OnStart yang berjalan sebelum nilai untuk BGColor ditetapkan. BGColor mungkin juga dimanipulasi di beberapa sudut aplikasi yang tidak disadari pembuatnya, perubahan yang dibuat oleh orang lain, dan itu mungkin sulit dilacak.
Rumus bernama memberikan alternatif. Sama seperti kita biasa menulis properti-kontrol = ekspresi, kita dapat menulis nama = ekspresi dan kemudian menggunakan kembali nama di seluruh aplikasi untuk mengganti ekspresi. Definisi rumus ini dilakukan dalam properti Rumus:
App.Formulas: BGColor = ColorValue( Param( "BackgroundColor" ) );
Label1.Fill: BGColor
Label2.Fill: BGColor
Label3.Fill: BGColor
Keunggulan menggunakan rumus bernama mencakup:
- Nilai rumus selalu tersedia. Tidak ada dependensi waktu, tidak ada OnStart yang harus dijalankan terlebih dahulu sebelum nilai diatur, tidak ada waktu di mana nilai rumus salah. Rumus bernama dapat merujuk satu sama lain dalam urutan apa pun, selama tidak membuat referensi melingkar. Penghitungan dapat dihitung secara paralel.
- Nilai rumus selalu terbaru. Rumus dapat melakukan penghitungan yang tergantung pada properti kontrol atau rekaman database, dan saat berubah, nilai rumus secara otomatis diperbarui. Anda tidak perlu memperbarui nilai secara manual seperti yang dilakukan dengan variabel. Dan rumus hanya menghitung ulang bila diperlukan.
- Definisi rumus itu kekal. Definisi dalam Rumus adalah satu sumber kebenaran dan nilai tidak dapat diubah di tempat lain dalam aplikasi. Dengan variabel, ada kemungkinan bahwa beberapa kode secara tak terduga mengubah nilai, tetapi situasi yang sulit untuk di-debug ini tidak mungkin dilakukan dengan rumus bernama.
- Penghitungan rumus dapat ditunda. Karena nilainya tidak dapat diubah, selalu dapat dihitung saat dibutuhkan, yang berarti tidak perlu dihitung sampai dibutuhkan. Nilai rumus yang tidak digunakan hingga layar2 aplikasi ditampilkan tidak perlu dihitung hingga layar2 terlihat. Menunda pekerjaan ini dapat meningkatkan waktu pemuatan aplikasi. Rumus bernama itu deklaratif dan memberikan peluang bagi sistem untuk mengoptimalkan cara dan waktu perhitungannya.
- Rumus bernama adalah konsep Excel. Power Fx menggunakan konsep Excel bila mungkin karena begitu banyak orang yang mengenal Excel dengan baik. Rumus bernama setara dengan sel nama dan rumus bernama di Excel, dikelola dengan Manajer Nama. Mereka menghitung ulang secara otomatis seperti sel spreadsheet dan properti kontrol.
Rumus bernama didefinisikan, satu demi satu di properti Rumus , masing-masing diakhiri dengan titik koma. Jenis rumus disimpulkan dari jenis elemen dalam rumus dan bagaimana mereka digunakan bersama. Misalnya, rumus bernama ini akan mengambil informasi yang berguna tentang pengguna saat ini dari 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' );
Jika rumus untuk UserTitle harus diperbarui, maka dapat dilakukan dengan mudah di lokasi yang satu ini. Jika UserPhone tidak diperlukan dalam aplikasi, maka panggilan ini ke tabel Pengguna di Dataverse tidak dibuat. Tidak ada alasan untuk memasukkan definisi rumus yang tidak digunakan.
Beberapa batasan rumus bernama:
- Mereka tidak dapat menggunakan fungsi perilaku atau menyebabkan efek samping dalam aplikasi.
- Mereka tidak dapat membuat referensi melingkar. Memiliki a= b; dan b = a; dalam aplikasi yang sama tidak dibolehkan.
Fungsi yang ditentukan pengguna
Penting
- Fungsi yang ditentukan pengguna bersifat eksperimental.
- Fitur eksperimental tidak dimaksudkan untuk penggunaan produksi dan mungkin tidak lengkap. Fitur-fitur ini tersedia sebelum rilis resmi sehingga Anda bisa mendapatkan akses awal dan memberikan umpan balik. Informasi lebih lanjut: Memahami fitur eksperimental, pratinjau, dan dihentikan di aplikasi kanvas
- Perilaku yang dijelaskan artikel ini hanya tersedia jika fitur eksperimental Fungsi yang ditentukan pengguna di Setelan > Fitur yang > akan datang Eksperimental diaktifkan (dinonaktifkan secara default).
- Tanggapan Anda sangat berharga bagi kami. Beri tahu kami pendapat Anda di Power Apps forum komunitas fitur eksperimental.
Power Fx menyertakan daftar panjang fungsi bawaan, seperti If, Text, dan Set. Fungsi yang ditentukan pengguna memungkinkan Anda untuk menulis fungsi Anda sendiri yang mengambil parameter dan mengembalikan nilai, seperti yang dilakukan fungsi bawaan. Anda dapat menganggap fungsi yang ditentukan pengguna sebagai ekstensi untuk rumus bernama yang menambahkan parameter dan mendukung rumus perilaku.
Misalnya, Anda dapat menentukan rumus bernama yang mengembalikan buku fiksi dari perpustakaan:
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" );
Tanpa parameter, kita perlu menentukan rumus bernama terpisah untuk setiap genre. Tetapi sebagai gantinya, mari kita parameterisasi rumus bernama kita:
LibraryType := Type( [ { Title: Text, Author: Text, Genre: Text } ] );
LibraryGenre( SelectedGenre: Text ): LibraryType = Filter( Library, Genre = SelectedGenre );
Sekarang kita dapat memanggil, LibraryGenre( "Fiction" )
, LibraryGenre( "Reference" )
atau memfilter genre lain dengan satu fungsi yang ditentukan pengguna.
Sintaksnya adalah:
FunctionName( [ParameterName1 : ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : Rumus ReturnType = ;
- FunctionName – Wajib. Nama fungsi yang ditentukan pengguna.
- ParameterNames – Opsional. Nama parameter fungsi.
- ParameterTypes – Opsional. Nama jenis, baik nama tipe data bawaan, nama sumber data, atau jenis yang ditentukan dengan fungsi Type .
- ReturnType – Wajib. Jenis nilai yang dikembalikan dari fungsi.
- Rumus – Wajib. Rumus yang menghitung nilai fungsi berdasarkan parameter.
Setiap parameter dan output dari fungsi user define harus diketik. Dalam contoh ini, SelectedGenre: Text
mendefinisikan parameter pertama untuk fungsi kita menjadi jenis Teks dan SelectedGenre
merupakan nama parameter yang digunakan dalam isi untuk operasi Filter. Lihat Jenis data untuk nama jenis yang didukung.
Fungsi Type digunakan untuk membuat jenis agregat untuk perpustakaan kita, sehingga kita dapat mengembalikan tabel buku dari fungsi kita.
Kami mendefinisikan LibraryType
sebagai tabel jamak dari jenis catatan. Jika kita ingin meneruskan satu buku ke sebuah fungsi, kita dapat mengekstrak jenis catatan untuk tabel ini dengan fungsi RecordOf:
BookType := Type( RecordOf( LibraryType ) );
IsGenre( Book: BookType, SelectedGenre: Text ): Boolean = (Book.Genre = SelectedGenre);
Pencocokan rekaman untuk parameter fungsi lebih ketat daripada di bagian Power Fx lain. Bidang nilai rekaman harus merupakan subset yang tepat dari definisi jenis dan tidak dapat menyertakan bidang tambahan. Misalnya, IsGenre( { Title: "My Book", Published: 2001 }, "Fiction" )
akan mengakibatkan kesalahan.
Catatan, rekursi belum didukung oleh fungsi yang ditentukan pengguna.
Fungsi yang ditentukan pengguna perilaku
Rumus bernama dan sebagian besar fungsi yang ditentukan pengguna tidak mendukung fungsi perilaku dengan efek samping, seperti Set atau Notify. Secara umum, yang terbaik adalah menghindari pembaruan status jika Anda bisa, alih-alih mengandalkan pola pemrograman fungsional dan memungkinkan Power Fx untuk menghitung ulang rumus sesuai kebutuhan secara otomatis. Tapi, ada kasus di mana itu tidak dapat dihindari. Untuk menyertakan logika perilaku dalam fungsi yang ditentukan pengguna, bungkus isi dalam tanda kurung kurawal:
Spend( Amount: Number ) : Void = {
If( Amount > Savings,
Error( $"{Amount} is more than available savings" ),
Set( Savings, Savings - Amount );
Set( Spent, Spent + Amount)
);
}
Sekarang kita dapat menelepon Spend( 12 )
untuk memeriksa apakah kita memiliki 12 di Tabungan kita, dan jika demikian, untuk mendebitnya dengan 12 dan menambahkan 12 ke variabel Dibelanjakan. Jenis pengembalian fungsi ini adalah Void karena tidak mengembalikan nilai.
Sintaks fungsi perilaku yang ditentukan pengguna adalah:
FunctionName( [ ParameterName1: ParameterType1 [, ParameterName2: ParameterType2 ... ] ] ) : ReturnType = { Formula1 [ ; Rumus2 ... ] };
- FunctionName – Wajib. Nama fungsi yang ditentukan pengguna.
- ParameterNames – Opsional. Nama parameter fungsi.
- ParameterTypes – Opsional. Nama jenis, baik nama tipe data bawaan, nama sumber data, atau jenis yang ditentukan dengan fungsi Jenis.
- ReturnType – Wajib. Jenis nilai yang dikembalikan dari fungsi. Gunakan Void jika fungsi tidak mengembalikan nilai.
- Rumus– Wajib. Rumus yang menghitung nilai fungsi berdasarkan parameter.
Seperti semua Power Fx rumus, eksekusi tidak berakhir ketika terjadi kesalahan. Setelah fungsi Kesalahan dipanggil, fungsi Jika mencegah perubahan pada Tabungan dan Dibelanjakan terjadi. Fungsi IfError juga dapat digunakan untuk mencegah eksekusi lebih lanjut setelah kesalahan. Meskipun mengembalikan Void, rumus masih dapat mengembalikan kesalahan jika ada masalah.
Jenis yang ditentukan pengguna
Penting
- Jenis yang ditentukan pengguna adalah fitur eksperimental.
- Fitur eksperimental tidak dimaksudkan untuk penggunaan produksi dan mungkin tidak lengkap. Fitur-fitur ini tersedia sebelum rilis resmi sehingga Anda bisa mendapatkan akses awal dan memberikan umpan balik. Informasi lebih lanjut: Memahami fitur eksperimental, pratinjau, dan dihentikan di aplikasi kanvas
- Perilaku yang dijelaskan artikel ini hanya tersedia jika fitur Eksperimental Jenis yang ditentukan pengguna di Setelan > Fitur yang > akan datang Eksperimental diaktifkan (dinonaktifkan secara default).
- Tanggapan Anda sangat berharga bagi kami. Beri tahu kami pendapat Anda di Power Apps forum komunitas fitur eksperimental.
Rumus bernama dapat digunakan dengan fungsi Jenis untuk membuat jenis yang ditentukan pengguna. Gunakan :=
alih-alih untuk =
menentukan jenis yang ditentukan pengguna, misalnya Book := Type( { Title: Text, Author: Text } )
. Lihat fungsi Jenis untuk informasi dan contoh selengkapnya.
Properti OnError
Gunakan OnError untuk mengambil tindakan saat terjadi kesalahan di mana saja di aplikasi. Ini memberikan peluang global untuk mencegat spanduk kesalahan sebelum ditampilkan kepada pengguna akhir. Fungsi ini juga dapat digunakan untuk mencatat kesalahan dengan fungsi Trace atau menulis ke database atau layanan web.
Di aplikasi Kanvas, hasil dari setiap evaluasi rumus diperiksa untuk kesalahan. Jika kesalahan ditemui, OnError dievaluasi dengan variabel cakupan FirstError dan AllErrors yang sama yang akan digunakan jika seluruh rumus telah dibungkus dalam fungsi IfError.
Jika OnError kosong, banner kesalahan default ditampilkan dengan FirstError.Message dari kesalahan itu. Mendefinisikan rumus OnError akan mengesampingkan perilaku ini yang memungkinkan pembuat menangani pelaporan kesalahan sesuai kebutuhannya. Perilaku default dapat diminta di OnError dengan memunculkan ulang kesalahan dengan fungsi Error. Gunakan pendekatan rethrow jika beberapa kesalahan harus disaring atau ditangani dengan cara yang berbeda, sementara yang lain harus dilewati.
OnError tidak dapat mengganti kesalahan dalam perhitungan seperti yang dapat dilakukan oleh IfError . Jika OnError dipanggil, kesalahan telah terjadi dan telah diproses melalui perhitungan rumus seperti IfError; OnError hanya mengontrol pelaporan kesalahan.
Rumus OnError dievaluasi secara bersamaan dan ada kemungkinan evaluasinya mungkin tumpang tindih dengan pemrosesan kesalahan lainnya. Contohnya, jika Anda menetapkan variabel global di bagian atas OnError dan membacanya nanti dalam rumus yang sama, nilai mungkin telah berubah. Gunakan fungsi With untuk membuat nilai bernama yang lokal ke rumus.
Meskipun setiap kesalahan diproses secara individual oleh OnError, banner kesalahan default mungkin tidak muncul untuk setiap kesalahan secara individual. Untuk menghindari terlalu banyak spanduk kesalahan yang ditampilkan pada saat yang sama, spanduk kesalahan yang sama tidak akan ditampilkan lagi jika baru saja ditampilkan.
Contoh
Pertimbangkan kontrol Label dan kontrol Slider yang terikat bersama melalui rumus:
Label1.Text = 1/Slider1.Value
Default Slider adalah 50. Jika slider dipindahkan ke 0, Label1 tidak akan menampilkan nilai, dan banner kesalahan ditampilkan:
Mari perhatikan apa yang terjadi secara rinci:
- Pengguna memindahkan slide ke kiri dan properti Slide1.Value berubah ke 0.
- Label1.Text secara otomatis dievaluasi ulang. Pembagian dengan nol terjadi, menghasilkan kesalahan.
- Tidak ada IfError dalam rumus ini. Pembagian dengan nol dihasilkan oleh evaluasi rumus.
- Label1.Text tidak dapat menampilkan apa pun untuk kesalahan ini, sehingga menampilkan status kosong .
- OnError dipanggil. Karena tidak ada penanganan, banner kesalahan standar ditampilkan dengan informasi kesalahan.
Jika perlu, kita juga dapat memodifikasi rumusnya menjadi Label1.Text = IfError( 1/Slider1.Value, 0 )
. Menggunakan IfError tidak akan menghasilkan error atau banner error. Kita tidak dapat mengubah nilai kesalahan dari OnError karena pada titik tersebut kesalahan telah terjadi, itu hanyalah pertanyaan tentang cara melaporkannya.
Jika kita menambahkan handler OnError , itu tidak berdampak sebelum langkah 5, tetapi dapat memengaruhi bagaimana kesalahan dilaporkan:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" )
Dengan penanganan OnError ini , dari perspektif pengguna aplikasi, tidak akan ada kesalahan. Tetapi kesalahan akan ditambahkan ke jejak Monitor, lengkap dengan sumber informasi kesalahan dari FirstError:
Jika kita juga ingin agar banner kesalahan default yang sama ditampilkan selain pelacakan, kita dapat memunculkan kembali kesalahan dengan fungsi Error setelah panggilan Pelacakan seperti halnya jika Pelacakan tidak ditemukan di sana:
Trace( $"Error {FirstError.Message} in {FirstError.Source}" );
Error( FirstError )
Properti OnStart
Catatan
Penggunaan properti OnStart dapat menyebabkan masalah performa saat memuat aplikasi. Kita sedang dalam proses membuat alternatif untuk dua alasan utama dalam menggunakan properti—caching data dan menyiapkan variabel global. Kami telah membuat alternatif untuk menentukan layar pertama yang akan ditampilkan dengan Navigate. Tergantung pada konteks Anda, properti ini mungkin dinonaktifkan secara default. Jika Anda tidak melihatnya dan Anda harus menggunakannya, periksa pengaturan Tingkat Lanjut aplikasi untuk mengaktifkannya. Properti OnVisible pada layar juga dapat digunakan. Secara default, ketika aturan OnStart non-pemblokiran diaktifkan, ini memungkinkan fungsi OnStart berjalan bersamaan dengan aturan aplikasi lainnya. Jadi, jika variabel yang direferensikan dalam aturan aplikasi lain diinisialisasi dalam fungsi OnStart , variabel tersebut mungkin belum sepenuhnya diinisialisasi. Selain itu, ada kemungkinan bahwa layar dapat dirender dan menjadi interaktif sebelum fungsi Screen.OnVisible atau App.OnStart selesai dieksekusi, terutama jika membutuhkan waktu lama untuk menyelesaikannya.
Properti OnStart berjalan saat pengguna memulai aplikasi. Properti ini sering digunakan untuk melakukan tugas berikut:
- Ambil dan cache data ke dalam kumpulan menggunakan fungsi Collect.
- Atur variabel global dengan menggunakan fungsi Set.
Rumus ini telah dievaluasi sebelum layar pertama muncul. Tidak ada layar yang termuat, sehingga Anda tidak dapat mengatur variabel konteks dengan fungsi UpdateContext. Namun, Anda dapat melewatkan variabel konteks dengan fungsi Navigasi.
Setelah Anda mengubah properti OnStart, uji dengan mengarahkan kursor ke objek Aplikasi di panel tampilan hierarki, memilih elipsis (...), lalu memilih Jalankan OnStart. Tidak seperti saat aplikasi dimuat untuk pertama kalinya, koleksi dan variabel yang ada akan sudah diatur. Untuk memulai dengan koleksi kosong, gunakan fungsi ClearCollect bukan fungsi Collect.
Catatan
- Menggunakan fungsi Navigate di properti OnStart telah dihentikan. Aplikasi yang ada akan terus bekerja. Untuk waktu yang terbatas, Anda dapat tetap mengaktifkannya dalam pengaturan aplikasi (tersedia dalam Dihentikan). Namun, menggunakan Navigate dengan cara ini dapat mengakibatkan penundaan beban aplikasi karena akan memaksa sistem menyelesaikan evaluasi OnStart sebelum menampilkan layar pertama. Gunakan properti StartScreen untuk menghitung layar pertama yang ditampilkan.
- Pengalih yang dihentikan akan dinonaktifkan untuk aplikasi yang dibuat sebelum Maret 2021 tempat Anda menambahkan Navigasi ke OnStart antara Maret 2021 dan sekarang. Bila Anda mengedit aplikasi tersebut di Power Apps Studio, Anda mungkin melihat kesalahan. Nyalakan sakelar yang dihentikan untuk menghapus kesalahan ini.
Properti StartScreen
Properti StartScreen menentukan layar yang akan ditampilkan pertama kali. Aplikasi ini dievaluasi sekali saat aplikasi dimuat dan mengembalikan objek layar untuk ditampilkan. Secara default, properti ini kosong, dan layar pertama dalam tampilan Pohon Studio ditampilkan terlebih dahulu.
StartScreen adalah properti aliran data yang tidak dapat berisi fungsi perilaku. Semua fungsi aliran data tersedia, khususnya gunakan fungsi dan sinyal ini untuk menentukan layar yang akan ditampilkan pertama kali:
- Param untuk membaca parameter yang digunakan untuk memulai aplikasi.
- Fungsi pengguna untuk membaca informasi tentang pengguna saat ini.
- LookUp, Filter, CountRows, Max, dan fungsi lain yang membaca dari sumber data.
- setiap panggilan API melalui konektor, namun hati-hati karena kembali dengan cepat.
- Sinyal seperti Koneksi, Kompas, dan Aplikasi.
Catatan
Variabel dan koleksi global, termasuk yang dibuat di OnStart, tidak tersedia di StartScreen. Rumus bernama tersedia dan sering kali merupakan alternatif yang lebih baik untuk penggunaan kembali rumus di seluruh aplikasi.
Jika StartScreen menampilkan kesalahan, layar pertama dalam tampilan Studio Tree akan ditampilkan seolah StartScreen belum diatur. Gunakan fungsi IfError untuk menangkap kesalahan dan mengalihkan ke layar kesalahan yang sesuai.
Setelah mengubah StartScreen di Studio, uji dengan mengarahkan kursor ke objek Aplikasi di panel tampilan Hierarki, memilih elipsis (...), lalu memilih Telusuri ke StartScreen. Layar akan berubah seolah-olah aplikasi baru saja dimuat.
Contoh
Screen9
Menunjukkan bahwa Screen9
harus ditampilkan pertama kali aplikasi dimulai.
If( Param( "admin-mode" ) = 1, HomeScreen, AdminScreen )
Memeriksa apakah Param "admin-mode" telah diatur oleh pengguna dan menggunakannya untuk memutuskan apakah HomeScreen atau AdminScreen harus ditampilkan lebih dulu.
If( LookUp( Attendees, User = User().Email ).Staff, StaffPortal, HomeScreen )
Memeriksa apakah peserta konferensi adalah anggota staf dan mengarahkannya ke layar yang tepat saat pengaktifan.
IfError( If( CustomConnector.APICall() = "Forest",
ForestScreen,
OceanScreen
),
ErrorScreen
)
Mengarahkan aplikasi berdasarkan panggilan API ke ForestScreen
atau OceanScreen
. Jika API gagal karena alasan apa pun, maka ErrorScreen
akan digunakan.
Properti StudioVersion
Gunakan properti StudioVersion untuk menampilkan atau mencatat versi Power Apps Studio yang digunakan untuk memublikasikan aplikasi. Ini dapat berguna saat men-debug dan untuk memastikan aplikasi Anda telah dipublikasikan ulang dengan versi Power Apps Studio terbaru.
StudioVersion ditampilkan sebagai teks. Format teks dapat berubah seiring waktu dan harus diperlakukan secara keseluruhan; Hindari mengekstraksi porsi individu.