Делите путем


Функција СетФоцус

Важи за: Цанвас апликације Модел-дривен апликације

Премешта улазни фокус на одређену контролу.

Опис

Функција SetFocus даје контролни улазни фокус. Тада контрола прима корисничке притиске тастера и омогућава му да упише контролу уноса текста или да користи тастер Enter за избор дугмета. Корисник такође може да користи тастер Tab, додир, миш или други гест да бисте сам померио улазни фокус. Понашањем тастера Tab управља својство TabIndex.

Користите функцију SetFocus за подешавање фокуса у следећим случајевима (сваки са примером у наставку):

  • нова изложена или омогућена контрола уноса, која ће водити корисника ка ономе шта следи и за бржи унос података.
  • образац је потврђен, за фокусирање и приказивање увредљиве контроле уноса за брзо решавање.
  • приказује се екран за фокусирање прве контроле уноса са својством OnVisible на Екрану.

Контрола са фокусом се може визуелно разликовати на основу својства FocusedBorderColor и FocusedBorderThickness.

Ограничења

SetFocus се може користити само уз:

Фокус не можете да поставите на контроле које се налазе у контроли галерије , "Уреди контролу обрасца " или "Компонента ". СетФоцус се може користити са контролом на екрану који се може померати.

Не можете поставити фокус на контроле које су унутар контроле Контејнер.

Фокус можете поставити само на контроле на истом екрану као и формулу која садржи позив SetFocus.

Покушај да се фокус постави на контролу која има своје својство Режим приказа постављено на Онемогућено нема ефекта. Фокус ће остати тамо где је раније био.

На Аппле-у iOS ће мека тастатура бити аутоматски приказана само ако је СетФоцус покренут директном акцијом корисника. На пример, позивање са својства дугмета OnSelect ће приказати софтверску тастатуру док позивање са екрана OnVisible неће.

Можете користити SetFocus само у формулама понашања.

Синтакса

SetFocus( Control )

  • Control – Обавезно Контрола за давање улазног фокуса.

Примери

Фокусирајте се на нову изложену или омогућену улазну контролу

Многе korpe za kupovinu омогућавају klijentu да адресу за доставу користи као адресу за наплату, ублажавајући потребу да се двапут уносе исти подаци. Ако је жељена друга адреса фактурисања, омогућени су оквири за унос текста адресе фактурисања и корисно је водити клијента до ових новозаосталих контрола за бржи унос података.

Анимација избора коришћења прилагођене адресе за наплату, са фокусом премештеним на контролу уноса имена наплате као резултат враћа искључивања аутоматске синхронизације са адресама за испоруку.

Овде играју многе формуле, али она која помера фокус је својство 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.

Фокусирање на питања валидације

Белешка

Иако се чини да је овај пример контрола Edit form, она, нажалост, још увек не подржава SetFocus . Уместо тога, овај пример користи екран за померање за хостовање улазних контрола.

При потврди обрасца може вам бити корисно не само приказивање поруке ако постоји проблем, већ и одвођење корисника у поље које је увредљиво. То може бити посебно корисно ако се дотично поље помера са екрана и није видљиво.

Анимација о потврђивању обрасца за унос података и приказивању не само поруке, већ и постављање улазног фокуса на контролу уноса, чак и ако се помера са екрана.

У овој анимацији дугме за потврду се више пута притиска док се сва поља правилно не попуне. Имајте на уму да се показивач миша не помера надоле са врха екрана. Уместо функције SetFocus, hsa је преместила улазни фокус на контролу која захтева пажњу, овом формулом:

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

Фокус код приказа екрана

Белешка

Иако се чини да је овај пример контрола Edit form, она, нажалост, још увек не подржава SetFocus . Уместо тога, овај пример користи екран за померање за хостовање улазних контрола.

Слично као код излагања улазне контроле, приликом приказивања екрана за унос података корисно је фокусирати прву контролу улаза за бржи унос података.

Анимација која приказује упоредно коришћење функције SetFocus , насупрот некоришћењу, приликом приказа екрана за унос података.

У овој анимацији, екран за унос података на левој страни не користи SetFocus. Када се прикаже да ниједна контрола носа нема фокус, и од корисника се тражи да фокусира поље Име помоћу табулатора, додира, миша или другог начина, пре него што се у њега може унети вредност.

На десној страни имамо потпуно исту апликацију са својством OnVisible екрана за унос података постављеним на ову формулу:

SetFocus( Name )

Ово поставља фокус на поље Име аутоматски. Корисник може одмах почети да уноси и да се помера између поља помоћу табулатора, без претходне радње.

Да бисте креирали овај пример:

  1. Направите горњу апликацију „Фокусирање на питања валидације“.
  2. На овом екрану, подесите својство OnVisible за ову контролу на формулу SetFocus( Name ).
  3. Додавање другог екрана.
  4. Додајте контролу Дугме
  5. Подесите својство OnSelect ове контроле на формулу Navigate( Screen1 )
  6. Прегледајте апликацију са овог екрана. Притисните дугме. Формула OnVisible ће бити процењена и поље Име ће аутоматски бити у фокусу.