Bagikan melalui


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.

Objek Aplikasi di panel Tampilan hierarkis.

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.
  • Saat ini, properti ini dapat merefr hanya pada layar pertama jika fitur pratinjau Muatan tertunda diaktifkan (yang secara default adalah 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, jika 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

  1. Buat aplikasi yang berisi dua kontrol formulir, AccountForm dan ContactForm.

  2. 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.

    Kotak dialog konfirmasi generik.

  3. 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.

    Kotak dialog konfirmasi khusus formulir.

Siapkan Kunci Instrumentasi untuk Application Insights

Untuk mengekspor log aplikasi Application Insights yang dihasilkan sistem, Anda perlu menyiapkan Kunci Instrumentasi untuk aplikasi kanvas Anda.

  1. Buka aplikasi Anda untuk diedit . Power Apps Studio
  2. Pilih objek Aplikasi di tampilan pohon navigasi kiri.
  3. 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.

Di Power Apps, properti kontrol didorong oleh rumus. 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, mungkin beberapa kode secara tidak terduga mengubah nilai, tetapi tidak mungkin 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 spreadsheet, sama seperti properti kontrol.

Rumus bernama didefinisikan, satu demi satu di properti Rumus , masing-masing diakhiri dengan titik koma. Jenis rumus dapat disimpulkan dari jenis ekspresi, yang didasarkan pada jenis elemen dalam ekspresi dan cara kerjanya. 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.

Properti OnError

Gunakan OnError untuk melakukan tindakan setelah kesalahan terdeteksi. Ini memberikan peluang global untuk mencegat banner kesalahan sebelum ditampilkan ke pengguna akhir. Fungsi ini juga dapat digunakan untuk mencatat kesalahan dengan fungsi Trace atau menulis ke database atau layanan web.

Hasil dari setiap evaluasi rumus diperiksa jika ada kesalahan. Jika ini merupakan kesalahan, OnError akan dievaluasi dengan variabel cakupan FirstError dan AllErrors yang sama yang mungkin ada jika seluruh rumus dikemas 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. Hal ini berguna jika beberapa kesalahan harus difilter atau ditangani dengan cara yang berbeda, sedangkan kesalahan lain harus diteruskan.

OnError tidak dapat mengganti kesalahan dalam perhitungan seperti yang dapat dilakukan oleh IfError . Pada titik OnError terpicu, kesalahan sudah terjadi dan telah diproses melalui perhitungan rumus. *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 banner kesalahan ditampilkan pada waktu bersamaan, kesalahan yang sama tidak akan memicu banner kesalahan baru jika baru-baru ini ditampilkan.

Contoh

Pertimbangkan kontrol Label dan kontrol Slider yang terikat bersama melalui rumus:

Label1.Text = 1/Slider1.Value

Kontrol label dan penggeser terikat 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:

Kontrol penggeser dipindahkan ke 0, menghasilkan pembagian dengan nol kesalahan, dan spanduk kesalahan.

Mari perhatikan apa yang terjadi secara rinci:

  1. Pengguna memindahkan slide ke kiri dan properti Slide1.Value berubah ke 0.
  2. Label1.Text secara otomatis dievaluasi ulang. Pembagian dengan nol terjadi, menghasilkan kesalahan.
  3. Tidak ada IfError dalam rumus ini. Pembagian dengan nol dihasilkan oleh evaluasi rumus.
  4. Label1.Text tidak dapat menampilkan apa pun untuk kesalahan ini, sehingga menampilkan status kosong .
  5. 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 ). Hal ini akan mengakibatkan tidak ada kesalahan atau banner kesalahan. Kita tidak dapat mengubah nilai kesalahan dari OnError karena pada titik tersebut kesalahan telah terjadi, itu hanyalah pertanyaan tentang cara melaporkannya.

Jika kita menambahkan penanganan OnError , maka tidak akan memiliki dampak sebelum langkah 5, namun dapat mempengaruhi cara kesalahan dilaporkan:

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

Rumus App.OnError diatur untuk menghasilkan Trace.

Dengan hal ini, dari perspektif pengguna aplikasi, tidak akan ada kesalahan apa pun. Namun kesalahan akan ditambahkan ke pelacakan Monitor, lengkap dengan sumber informasi kesalahan dari FirstError:

Kontrol slider dipindahkan ke 0, menghasilkan pembagian dengan kesalahan nol, tetapi tidak ada spanduk kesalahan.

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.

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.

Menu pintasan item aplikasi untuk Menjalankan OnStart

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.
  • Pengalihan 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. Alihkan tombol Dihentikan yang disebutkan di atas untuk menghapus kesalahan ini.

Properti StartScreen

Catatan

Properti StartScreen tidak akan muncul dalam daftar properti saat opsi dihentikan Bilah rumus yang ditingkatkan diaktifkan. Untuk menonaktifkan bilah rumus yang Disempurnakan, buka Pengaturan>Fitur yang Akan Datang>Dihentikan>, nonaktifkan bilah rumus yang Disempurnakan bila Anda ingin menggunakan 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 akan kosong dan layar pertama dalam tampilan Studio Tree ditampilkan lebih dulu.

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. Ada alternatif deklaratif untuk melakukan hal ini yang sedang berjalan. Untuk tanggapan Anda tentang pembatasan ini, buka forum komunitas Power Apps.

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 aplikasi telah dimuat.

Navigasikan ke StartScreen

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.