Kongsi melalui


Fungsi SetFocus

Digunakan pada: Aplikasi kanvas Apl berpandukan model

Alihkan fokus input ke kawalan tertentu.

Description

Fungsi SetFocus memberikan kawalan fokus input. Taipan kekunci pengguna kemudian diterima oleh kawalan, membenarkan mereka untuk menaip kawalan input teks atau menggunakan kunci Masukkan untuk memilih butang. Pengguna juga boleh menggunakan kunci Tab, sentuh, tetikus, atau isyarat yang lain untuk mengalihkan sendiri fokus input. Tingkah laku kunci Tab ditadbir oleh TabIndex sifat.

Gunakan fungsi SetFocus untuk menetapkan fokus apabila (setiap dengan contoh di bawah):

  • kawalan input yang baru didedahkan atau didayakan, untuk memandu pengguna dalam apa yang akan datang seterusnya dan untuk kemasukan data pantas.
  • borang disahkan, untuk fokus dan paparkan kawalan input yang menyinggung perasaan untuk penyelesaian pantas.
  • Skrin dipaparkan, untuk fokus kawalan input pertama dengan sifat OnVisible bagi Skrin.

Kawalan dengan fokus mungkin dilihat berbeza berasaskan pada sifat FocusedBorderColor dan FocusedBorderThickness.

Had

SetFocus hanya boleh digunakan dengan:

Anda tidak boleh mengesetkan fokus kepada kawalan yang berada dalam kawalan Galeri , Edit kawalan borang atau Komponen. SetFocus boleh digunakan dengan kawalan dalam skrin boleh skrol.

Anda tidak boleh menetapkan fokus untuk kawalan yang berada dalam kawalan Bekas control.

Anda hanya boleh menetapkan fokus ke kawalan pada skrin sama mengandungi panggilan SetFocus.

Cubaan untuk menetapkan fokus ke kawalan yang mempunyai sifat DisplayMode ditetapkan kepada Dinyahdayakan tidak memberi kesan. Fokus akan kekal di mana ianya sebelum ini.

Pada Apple iOS, papan kekunci lembut hanya akan dipaparkan secara automatik jika SetFocus dimulakan oleh tindakan pengguna langsung. Contohnya, penggunaan daripada sifat butang OnSelect akan memaparkan papan kekunci lembut tetapi penggunaan daripada skrin OnVisible tidak.

Anda boleh menggunakan SetFocus hanya dalam formulas tingkah laku.

Sintaks

SetFocus( Kawalan )

  • Kawalan – Diperlukan. Kawalan memberikan fokus input.

Contoh

Fokus pada kawalan input yang baru didedahkan atau didayakan

Banyak kart beli belah membenarkan pelanggan untuk menggunakan alamat penghantaran sebagai alamat pengebilan, mengurangkan keperluan untuk memasukkan maklumat yang sama dua kali. Jika alamat pengebilan yang berbeza dikehendaki, kotak input teks alamat pengebilan didayakan dan adalah berguna untuk membimbing pelanggan kepada kawalan yang baru didayakan ini untuk kemasukan data yang lebih pantas.

Animasi memilih untuk menggunakan alamat Pengebilan tersuai, dengan fokus dialihkan ke kawalan input nama Pengebilan sebagai hasil, menutup segerak automatik dengan alamat Penghantaran.

Terdapat banyak formula yang dimainkan di sini, tetapi yang mengalihkan fokus adalah pada sifat OnUncheck untuk kawalan Kotak semak:

SetFocus( BillingName )

Kunci Tab juga boleh digunakan untuk mengalihkan fokus dengan pantas daripada satu medan ke medan yang lain. Untuk gambaran yang lebih baik, kunci Tab tidak digunakan dalam animasi.

Untuk mencipta contoh ini:

  1. Cipta aplikasi baharu
  2. Tambah Kawalan Label dengan teks "Alamat penghantaran", "Nama:", "Alamat:", "Alamat Pengebilan", "Nama:", dan "Alamat:" dan letakkannya sebagai yang ditunjukkan dalam animasi.
  3. Tambah Kawalan Input Teks dan namakannya semula ShippingName.
  4. Tambah Kawalan Input Teks dan namakannya semula ShippingAddress.
  5. Tambah Kawalan Kotak semak dan namakannya semula SyncAddresses.
  6. Tetapkan sifat Teks pada kawalan ini ke formula "Use Shipping address as Billing address".
  7. Tambah Kawalan Input Teks dan namakannya semula BillingName.
  8. Tetapkan sifat Lalai pada kawalan ini ke formula ShippingName.
  9. Tetapkan sifat DisplayMode pada kawalan ini ke formula If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Ini akan mendayakan atau menyahdayakan kawalan ini secara automatik berasaskan pada keadaan kawalan kotak semak.
  10. Tambah Kawalan Input Teks dan namakannya semula BillingAddress.
  11. Tetapkan sifat Lalai pada kawalan ini ke formula ShippingAddress.
  12. Tetapkan sifat DisplayMode pada kawalan ini ke formula If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Ini akan mendayakan atau menyahdayakan kawalan ini secara automatik berasaskan pada keadaan kawalan kotak semak.
  13. Tetapkan sifat Lalai kotak semak ke formula true. Alamat Pengebilan akan dilalaikan untuk menggunakan nilai yang sama seperti alamat Penghantaran.
  14. Tetapkan sifat OnCheck kotak semak ke formula Reset( BillingName ); Reset( BillingAddress ). Jika pengguna memilih untuk menyegerak alamat Penghantaran dan Pengebilan, ini akan mengosongkan mana-mana input pengguna dalam medan alamat Pengebilan membenarkan sifat Lalai masing-masing untuk menarik nilai daripada medan alamat Penghantaran yang sepadan.
  15. Tetapkan sifat OnUncheck kotak semak ke formula SetFocus( BillingName ). Jika pengguna memilih untuk mempunyai alamat pengebilan yang berbeza, ini akan mengalihkan fokus ke kawalan pertama dalam alamat Pengebilan. Kawalan akan didayakan disebabkan oleh sifat DisplayMode.

Fokus pada isu pengesahan

Nota

Walau pun contoh ini dipaparkan sebagai kawalan Edit borang, malangnya SetFocus belum lagi disokong oleh kawalan itu. Sebaliknya, contoh ini menggunakan skrin boleh tatal untuk menghoskan kawalan input.

Semasa mengesahkan borang, ianya berguna untuk tidak hanya memaparkan message jika terdapat masalah tetapi juga membawa pengguna ke medan yang menyinggung perasaan. Ianya sewajarnya berguna jika medan dalam soalan ditatal keluar dari skrin dan tidak kelihatan.

Animasi mengesahkan borang kemasukan data dan tidak hanya memaparkan message tetapi juga menetapkan fokus input kepada kawalan input yang menyinggung perasaan, walau pun jika ianya ditatal keluar skrin.

Dalam animasi ini, pengesahan butang ditekan berulang kali hingga semua medan diisi dengan betul. Perlu diingat bahawa penunjuk tetikus tidak bergerak ke bawah daripada atas skrin. Sebaliknya fungsi SetFocus telah mengalihkan fokus input ke kawalan yang memerlukan perhatian dengan formula ini:

If( IsBlank( Name ),
        Notify( "Name requires a value", Error ); SetFocus( Name ),
    IsBlank( Street1 ),
        Notify( "Street Address 1 requires a value", Error ); SetFocus( Street1 ),
    IsBlank( Street2 ),
        Notify( "Street Address 2 requires a value", Error ); SetFocus( Street2 ),
    IsBlank( City ),
        Notify( "City requires a value", Error ); SetFocus( City ),
    IsBlank( County ),
        Notify( "County requires a value", Error ); SetFocus( County ),
    IsBlank( StateProvince ),
        Notify( "State or Province requires a value", Error ); SetFocus( StateProvince ),
    IsBlank( PostalCode ),
        Notify( "Postal Code requires a value", Error ); SetFocus( PostalCode ),
    IsBlank( Phone ),
        Notify( "Contact Phone requires a value", Error ); SetFocus( Phone ),
    Notify( "Form is Complete", Success )
)

Untuk mencipta contoh ini:

  1. Cipta aplikasi telefon kosong yang baharu.
  2. Daripada menu Sisipkan, pilih Skrin baharu, dan kemudian pilih Boleh ditatal.
  3. Dalam bahagian tengah skrin, tambah kawalan Input teks dan namakannya Nama, Street1, Street2, Bandar, Daerah, StateProvince, PostalCode, dan Telefon. Tambah kawalan Label di atas setiap satu untuk mengenal pasti medan. Anda mungkin perlu mengubah saiz bahagian jika ianya tidak terlalu panjang untuk menyesuaikan semua kawalan.
  4. Tambahkan kotak semak kawalan Ikon pada atas skrin, di atas bahagian boleh tatal.
  5. Tetapkan sifat OnSelect ikon kawalan ke formula If( IsBlank( ... diberikan di atas.

Fokus apabila memaparkan skrin

Nota

Walau pun contoh ini dipaparkan sebagai kawalan Edit borang, malangnya SetFocus belum lagi disokong oleh kawalan itu. Sebaliknya, contoh ini menggunakan skrin boleh tatal untuk menghoskan kawalan input.

Sama seperti mendedahkan kawalan input, apabila memaparkan skrin kemasukan data ianya berguna untuk fokus kawalan input pertama untuk kemasukan data pantas.

Animasi menunjukkan perbandingan sebelah menyebelah menggunakan SetFocus berbanding tidak menggunakannya apabila memaparkan skrin entri data.

Dalam animasi ini, skrin kemasukan data pada sebelah kiri tidak menggunakan SetFocus. Setelah dipaparkan tiada kawalan input yang mempunyai fokus, memerlukan pengguna untuk tab, sentuh, tetikus, atau menggunakan cara yang lain untuk fokus medan Nama sebelum nilai boleh ditaip ke dalamnya.

Pada sebelah kanan kami mempunyai aplikasi yang sama dengan sifat OnVisible bagi skrin kemasukan data yang ditetapkan ke formula ini:

SetFocus( Name )

Ini menetapkan fokus ke medan Nama secara automatik. Pengguna boleh mula menaip dan tab antara medan dengan segera tanpa memerlukan tindakan.

Untuk mencipta contoh ini:

  1. Cipta aplikasi "Focus pada isu pengesahan" di atas.
  2. Pada skrin ini, tetapkan sifat OnVisible ke formula SetFocus( Name ).
  3. Tambah skrin kedua.
  4. Tambah Kawalan Butang.
  5. Tetapkan sifat OnSelect untuk kawalan ke formula Navigate( Screen1 ).
  6. Pratonton aplikasi daripada skrin. Tekan butang. Formula OnVisible akan dinilai dan medan Nama akan berada dalam fokus secara automatik.