Споделяне чрез


Функция SetFocus

Отнася се за: Приложения за платно Приложения, задвижвани от модели

Премества входния фокус към конкретен елемент за управление.

Описание

Функцията SetFocus дава контрол на входния фокус. След това натискането на клавиша на потребителя се получава от този елемент за управление, което им позволява да въведат контрола за въвеждане на текст или да използват Въведете, за да изберете бутон. Потребителят може също да използва клавиша Tab, докосване, мишка или друг жест, за да преместите сами фокуса за въвеждане. Поведението на клавиша Tab се управлява от свойството TabIndex.

Използвайте SetFocus функция за задаване на фокуса, когато (всеки с пример по-долу):

  • новооткрит или активиран входен контрол, за да насочва потребителя в следващото и за по-бързо въвеждане на данни.
  • форма е валидирана, за да се фокусира и покаже нарушаващото въвеждане на контрол за бързо разрешаване.
  • се показва екран, за да се фокусира първото управление на входа с OnVisible свойство на екран.

Управлението с фокус може да бъде визуално различно на базата на FocusedBorderColor и FocusedBorderThickness свойства.

Ограничения

SetFocus може да се използва само с:

Не можете да зададете фокуса на контроли, които са в контрола на галерия , контрола на формуляр за редактиране или компонент. SetFocus може да се използва с контрола в екран, който може да се превърта.

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

Можете да зададете фокуса само на контроли на същия екран като формулата, съдържаща извикване на SetFocus.

Опит за задаване на фокуса върху контрола, който има свойство DisplayMode, зададено на Забранено няма ефект. Фокусът ще остане там, където беше преди.

В Apple iOS меката клавиатура ще се показва автоматично само ако SetFocus е иницииран от директно действие на потребителя. Например извикване от бутоните OnSelect свойството ще показва софтуерната клавиатура, докато извикването от екранното OnVisible, няма.

Можете да използвате SetFocus само във формули на поведение.

Синтаксис

SetFocus( Control )

  • 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. В средната част на екрана добавете Въвеждане на текст контроли и ги назовете Name, Street1, Street2, City, County, StateProvince, PostalCode, и Phone. Добавете контрола етикет над всяко за идентифициране на полетата. Може да се наложи да промените размера на секцията, ако тя не е достатъчно дълга, за да побере всички контроли.
  4. Добавете отметка контрола икона в горната част на екрана, над секцията за превъртане.
  5. Задайте свойството OnSelect на контролата на икона на формулата If( IsBlank( ... по-горе.

Фокусирайте се, когато показвате екран

Бележка

Въпреки че този пример изглежда като контрола Редактиране на формуляр, за съжаление SetFocus все още не се поддържа от този контрол. Вместо това, този пример използва превъртащ се екран за хостване на контролите за въвеждане.

Подобно на експонирането на входен контрол, при показване на екран за въвеждане на данни е полезно да се фокусира първият входен контрол за по-бързо въвеждане на данни.

Анимация, показваща сравнително сравнение на използването на SetFocus спрямо неговото използване при показване на екран за въвеждане на данни.

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

Вдясно имаме точно същото приложение с OnVisible свойство на екрана за въвеждане на данни, зададен на тази формула:

SetFocus( Name )

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

За да създадете този пример:

  1. Създайте приложението „Фокус върху проблемите с валидирането“ по-горе.
  2. На този екран задайте свойството OnVisible на тази контрола на формулата SetFocus( Name ).
  3. Добавяне на втори екран.
  4. Добавете контрола Бутон.
  5. Задайте свойството OnSelect на тази контрола на формулата Navigate( Screen1 ):
  6. Визуализирайте приложението от този екран. Натиснете бутона. Формулата OnVisible ще бъде оценена и полето име автоматично ще бъде на фокус.