Поділитися через


Функція SetFocus

Застосовується до: програм Canvas Програм на основі моделі

Переміщує фокус вводу до певного елемента керування.

Опис

Функція SetFocus дає фокус вводу елементу керування. Після цього цей елемент керування отримуватиме натискання клавіш користувачем, що дасть йому змогу вводити текст у елемент керування вводом тексту або використовувати клавішу ENTER, щоб натиснути кнопку. Користувач також може використовувати клавішу TAB, сенсорний ввід, мишу або інший жест, щоб перемістити фокус вводу самостійно. Поведінка клавіші TAB керується властивістю TabIndex.

Використовуйте функцію SetFocus, щоб задати фокус у наведених нижче випадках (кожний з наведених нижче випадків з прикладом):

  • щойно відображений або ввімкнений елемент керування вводом для повідомлення користувача про подальші дії та швидшого вводу даних;
  • форма перевіряється, щоб сфокусуватися та відобразити несправний елемент керування для швидкого вирішення;
  • відображається екран, щоб сфокусуватися на першому елементі керування з властивістю OnVisibleЕкрана.

Елемент керування з фокусом може візуально відрізнятися залежно від властивостей FocusedBorderColor і FocusedBorderThickness.

Обмеження

Функцію SetFocus можна використовувати лише із зазначеними нижче елементами.

Не можна встановити фокус на елементи керування, які знаходяться в елементі керування «Галерея», «Редагувати форму» або « Компонент». Функцію SetFocus можна використовувати з елементом керування в екрані з прокручуванням.

Неможливо задати фокус елементів керування, розташованих всередині елемента керування Контейнер.

Можна встановити фокус на елементи керування лише на тому самому екрані, що й формула, яка містить виклик SetFocus.

Спроба встановити фокус на елемент керування, для властивості DisplayMode якого встановлено значення Вимкнуто, не матиме ніякого ефекту. Фокус залишиться там, де він був раніше.

В Apple iOS програмна клавіатура відображатиметься автоматично, лише якщо SetFocus було ініційовано прямою дією користувача. Наприклад, виклик з властивості кнопки OnSelect відобразить екранну клавіатуру, а виклик з екранної функції OnVisible — ні.

Ви можете використовувати функцію SetFocus лише у формулах поведінки.

Синтаксис

SetFocus( Елемент керування )

  • Control — обов’язковий аргумент. Елемент керування, на який потрібно встановити фокус вводу.

Приклади

Фокус на щойно відображеному або ввімкненому елементі керування вводом

Багато кошиків дають змогу клієнту використовувати адресу доставки, наприклад адресу для надсилання рахунків, знімаючи потребу вводити ту саму інформацію двічі. Якщо потрібно використати іншу адресу для надсилання рахунків, поля вводу тексту цієї адреси ввімкнуто, тому корисно направляти клієнта до цих щойно ввімкнених елементів керування для швидшого введення даних.

Анімація вибору використання настроюваної адреси для виставлення рахунків із фокусом, переміщеним на елемент керування іменем рахунка в результаті, вимикаючи автоматичну синхронізацію з адресою доставки.

Тут відтворюються багато формул, але та, що переміщує фокус, знаходиться на властивості OnUncheck елемента керування Прапорець.

SetFocus( BillingName )

Клавішу TAB також можна використовувати для швидкого переміщення фокусу з одного поля на інше. Щоб краще проілюструвати це, клавіша TAB не використовувалася в анімації.

Щоб створити цей приклад, виконайте зазначені нижче дії.

  1. Створіть нову програму.
  2. Додайте елементи керування Підпис з текстом "Адреса доставки", "Ім’я:", "Адреса:", "Адреса для надсилання рахунків:", "Ім’я:" та "Адреса:" та розташуйте їх як показано в анімації.
  3. Додайте елемент керування Введення тексту і перейменуйте його на ShippingName.
  4. Додайте елемент керування Введення тексту і перейменуйте його на ShippingAddress.
  5. Додайте елемент керування Прапорець і перейменуйте його на SyncAddresses.
  6. Установіть для властивості Текст цього елемента керування таку формулу: "Use Shipping address as Billing address".
  7. Додайте елемент керування Введення тексту і перейменуйте його на BillingName.
  8. Установіть для властивості За замовчуванням на цьому елементі керування таку формулу: ShippingName.
  9. Установіть для властивості DisplayMode на цьому елементі керування таку формулу: If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Це автоматично вмикатиме або вимикатиме цей елемент керування на основі стану цього елемента керування прапорцем.
  10. Додайте елемент керування Введення тексту і перейменуйте його на BillingAddress.
  11. Установіть для властивості За замовчуванням на цьому елементі керування таку формулу: ShippingAddress.
  12. Установіть для властивості DisplayMode на цьому елементі керування таку формулу: If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Це автоматично вмикатиме або вимикатиме цей елемент керування на основі стану цього елемента керування прапорцем.
  13. Установіть для властивості За замовчуванням цього прапорця таку формулу: true. Це налаштує використання адресою для надсилання рахунків за замовчуванням того самого значення, що й адреса доставки.
  14. Установіть для властивості OnCheck цього прапорця таку формулу: Reset( BillingName ); Reset( BillingAddress ). Якщо користувач намагається синхронізувати адресу доставки та адресу для надсилання рахунків, це призведе до видалення будь-якої введеної користувачем інформації в полях адреси для надсилання рахунків, що дозволить увімкнути властивості За замовчуванням для кожного поля для отримання значень із відповідних полів адреси доставки.
  15. Установіть для властивості OnUncheck цього прапорця таку формулу: SetFocus( BillingName ). Якщо користувач хоче вказати іншу адресу для надсилання рахунків, ця дія перемістить фокус до першого елемента керування в адресі для надсилання рахунків. Елементи керування вже будуть ввімкнуті через їх властивості DisplayMode.

Фокус на проблемах перевірки

Нотатка

Хоча цей приклад є елементом керування Редагування форми, на жаль, функція SetFocus ще не підтримується цим елементом керування. Натомість у цьому прикладі використовується екран із прокручуванням для розташування елементів керування вводом.

Під час перевірки форми може знадобитися не лише відобразити повідомлення, якщо виникла проблема, а також перемістити користувача до поля, яке викликало помилку. Це може бути особливо корисно, якщо таке поле прокручено за межі екрана та не відображається.

Анімація перевірки форми введення даних і не лише відображення повідомлень, але й встановлення фокусу вводу на несправний елемент керування вводом, навіть якщо його прокручено за межі екрана.

У цій анімації кнопка перевірки багато разів натискається, доки всі поля не буде заповнено належним чином. Зверніть увагу на те, що вказівник миші не переміщується вниз із верхньої частини екрана. Натомість функція SetFocus перемістила фокус до елемента керування, який вимагає уваги за допомогою цієї формули.

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 )
)

Щоб створити цей приклад, виконайте зазначені нижче дії.

  1. Створить нову пусту програму для телефону.
  2. У меню Вставити виберіть пункт Новий екран, а потім виберіть пункт Із прокручуванням.
  3. У центральному розділі екрана додайте елементи керування Введення тексту і назвіть їх Ім’я, Вулиця1, Вулиця2, Місто, Країна, Область/республіка, Поштовий індекс і Телефон. Додайте елементи керування Підпис над кожним із них, щоб визначити поля. Щоб вмістити всі елементи керування, може знадобитися змінити розмір розділу, якщо він не достатньо довгий.
  4. Додайте елемент керування галочкою Піктограма у верхній частині екрана над розділом із прокручуванням.
  5. Встановіть для властивості OnSelect елемента керування піктограмою формулу If( IsBlank( ..., яка надається вище.

Фокус під час відображення екрана

Нотатка

Хоча цей приклад є елементом керування Редагування форми, на жаль, функція SetFocus ще не підтримується цим елементом керування. Натомість у цьому прикладі використовується екран із прокручуванням для розташування елементів керування вводом.

Подібно до відображення елемента керування вводом, під час відображення екрана вводу даних зручно помістити фокус на перший елемент керування для швидшого введення даних.

Анімація, що показує одночасне порівняння використання функції SetFocus у порівнянні з випадком, коли вона не використовується під час відображення на екрані введення даних.

У цій анімації екран введення даних ліворуч не використовує функцію SetFocus. Після відображення фокус не буде встановлено на жодному елементі керування, тому користувачу доведеться використовувати клавішу TAB, сенсорний ввід, мишу або інші засоби переміщення фокусу на поле Ім’я, перш ніж у нього можна буде ввести значення.

Праворуч ми маємо ту ж саму програму з властивістю OnVisible екрана введення даних, для якого встановлено таку формулу:

SetFocus( Name )

Це дасть змогу автоматично перемістити фокус на поле Ім’я. Користувач може розпочати ввід і переходити за допомогою клавіші TAB між полями одразу без необхідності виконувати попередню дію.

Щоб створити цей приклад, виконайте зазначені нижче дії.

  1. Створіть програму "Фокус на проблемах перевірки", описану вище.
  2. На цьому екрані встановіть для властивості OnVisible на цьому елементі керування таку формулу: SetFocus( Name ).
  3. Додайте другий екран.
  4. Додайте елемент керування Кнопка.
  5. Установіть для властивості OnSelect цього елемента керування таку формулу: Navigate( Screen1 ).
  6. Перегляньте програму на цьому екрані. Натисніть цю кнопку. Формулу OnVisible буде обчислено, і поле Ім’я автоматично відображатиметься у фокусі.