Partajați prin


Funcția SetFocus

Se aplică pentru: planșă de lucru apps Aplicații bazate pe model

Mută focalizarea de intrare către un control specific.

Descriere

Funcția SetFocus oferă un control pentru focalizarea de intrare. Apăsările de tastă ale utilizatorului sunt primite de controlul respectiv, permițându-le să tasteze într-un control de intrare text sau să utilizeze butonul Introducere pentru a selecta un buton. Utilizatorul poate utiliza, de asemenea, tasta Tab, caracteristicile tactile, mouse-ul sau alte atingeri pentru a muta focalizarea de intrare. Comportamentul cheii Tab este guvernat de proprietatea TabIndex .

Utilizați funcția SetFocus pentru a seta focalizarea când (fiecare cu un exemplu mai jos):

  • un control de intrare nou expus sau activat, pentru a ghida utilizatorul în ceea ce urmează și pentru o introducere mai rapidă a datelor.
  • un formular este validat, pentru focalizarea și afișarea controlului pentru intrare jignitoare pentru o rezoluție rapidă.
  • este afișat un ecran, pentru a focaliza primul control de intrare cu ajutorul proprietății OnVisible pentru Ecran.

Controlul cu focalizare poate fi diferit vizual în funcție de proprietățile FocusedBorderColor și FocusedBorderThickness.

Limitări

SetFocus poate fi utilizat numai cu:

Nu puteți seta focalizarea pe comenzile care se află într-un control Galerie , Editare formular control sau Componenta. SetFocus poate fi utilizat cu un control într-un ecran care poate fi derulat.

Nu puteți seta focalizarea la comenzile care se află în interiorul unui control Container.

Puteți seta focalizarea doar la controale de pe același ecran cu formula care conține apelul SetFocus.

Încercarea de a seta focalizarea pe un control care are proprietatea DisplayMode setată la Dezactivat nu are efect. Focalizarea va rămâne acolo unde a fost anterior.

Pe Apple iOS, tastatura soft va fi afișată automat numai dacă SetFocus a fost inițiată printr-o acțiune directă a utilizatorului. De exemplu, invocarea de la o proprietate OnSelect a butonului va afișa tastatura virtuală în timp ce invocarea de la OnVisible de pe un ecran nu va afișa.

Puteți să utilizați SetFocus numai în formule comportamentale.

Sintaxă

SetFocus( Control )

  • Control – Obligatoriu. Controlul pentru a da focalizare de intrare.

Exemple

Concentrați-vă la un control de intrare nou expus sau activat

Multe coșuri de cumpărături le permit clientului să folosească adresa de expediere ca adresă de facturare, atenuând necesitatea de a introduce aceleași informații de două ori. Dacă se dorește o adresă de facturare diferită, casetele de introducere a textului adresei de facturare sunt activate și este util să ghidați clientul către aceste comenzi nou activate pentru o introducere mai rapidă a datelor.

Animație cu alegerea utilizării unei adrese de facturare personalizate, cu focalizarea mutată în controlul de intrare al numelui de facturare, ca urmare, oprirea sincronizării automate cu adresele de expediere.

Există multe formule aici, dar cea care mută focalizarea se află pe proprietatea OnUncheck a controlului Casetă de selectare:

SetFocus( BillingName )

Tasta Tab poate fi, de asemenea, folosită pentru a muta focalizarea rapid de la un câmp la altul. Pentru a ilustra mai bine, tasta Tab nu a fost folosită în animație.

Pentru a crea acest exemplu:

  1. Creați o aplicație nouă.
  2. Adăugați controale Label cu textul "Adresa de expediere", "Nume:", "Adresă:", "Adresa de facturare", "Nume:" și "Adresă:" și poziționați-le așa cum se arată în animație.
  3. Adăugați un control Intrare text și redenumiți-l ShippingName.
  4. Adăugați un control Intrare text și redenumiți-l ShippingAddress.
  5. Adăugați un control Casetă de bifat și redenumiți-l SyncAddresses.
  6. Setați proprietatea Text a acestui control la formula "Use Shipping address as Billing address".
  7. Adăugați un control Intrare text și redenumiți-l BillingName.
  8. Setați proprietatea Implicit pentru acest control la formula ShippingName.
  9. Setați proprietatea DisplayMode pentru acest control la formula If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Aceasta va activa sau dezactiva automat acest control pe baza stării controlului casetei de selectare.
  10. Adăugați un control Intrare text și redenumiți-l BillingAddress.
  11. Setați proprietatea Implicit pentru acest control la formula ShippingAddress.
  12. Setați proprietatea DisplayMode pentru acest control la formula If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Aceasta va activa sau dezactiva automat acest control pe baza stării controlului casetei de selectare.
  13. Setați proprietatea Implicit pentru caseta de selectare la formula true. Aceasta va introduce implicit adresa de facturare pentru a utiliza aceeași valoare ca și adresa de expediere.
  14. Setați proprietatea OnCheck pentru caseta de selectare la formula Reset( BillingName ); Reset( BillingAddress ). Dacă utilizatorul alege să sincronizeze Adresele de expediere și de facturare, aceasta va șterge orice intrare a utilizatorului în câmpurile de adresă de facturare care permit proprietățile Implicit pentru fiecare pentru a trage valorile din câmpurile pentru Adresa de expediere corespunzătoare.
  15. Setați proprietatea OnUncheck pentru caseta de selectare la formula SetFocus( BillingName ). Dacă utilizatorul alege să aibă o altă adresă de facturare, aceasta va muta focalizarea pe primul control din Adresa de facturare. Controalele vor fi deja activate datorită proprietăților DisplayMode.

Focalizați-vă pe problemele de validare

Notă

Deși acest exemplu pare a fi un control Editare formular, din păcate SetFocus nu este încă acceptat de controlul respectiv. În schimb, acest exemplu folosește un ecran derulabil pentru a găzdui controalele de intrare.

Când se validează un formular, poate fi util nu numai să se afișeze un mesaj dacă există o problemă, ci și să se ducă utilizatorul la câmpul ofensator. Poate fi deosebit de util dacă în câmpul respectiv se derulează în jos pe ecran și nu este vizibil.

O animație cu validarea unui formular de introducere de date și cu un mesaj nu doar afișat, ci și cu setarea focalizării de intrare la controlul de intrare jignitoare, chiar dacă este defilat de pe ecran.

În această animație, butonul de validare este apăsat în mod repetat până când toate câmpurile au fost completate corect. Rețineți că indicatorul mouse-ului nu se deplasează în jos din partea de sus a ecranului. În schimb, funcția SetFocus a mutat focalizarea de intrare la controlul care necesită atenție cu această formulă:

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

Pentru a crea acest exemplu:

  1. Creați o aplicație nouă, necompletată pentru telefon
  2. De la meniul Inserare, selectați Ecran nou, apoi selectați Derulant.
  3. În secțiunea centrală a ecranului, adăugați controale Intrare text și numiți-le Nume, Stradă1, Stradă2, Oraș, Județ, Țară, Cod poștal și Telefon. Adăugați controale Label deasupra fiecăruia pentru a identifica câmpurile. Este posibil să fie necesar să redimensionați secțiunea dacă nu este suficient de lungă pentru a se potrivi cu toate controalele.
  4. Adăugați o bifă control Pictogramă în partea de sus a ecranului, deasupra secțiunii derulante.
  5. Setați proprietatea OnSelect a controlului pictogramei la formula If( IsBlank( ... oferită mai sus.

Focalizați atunci când afișați un ecran

Notă

Deși acest exemplu pare a fi un control Editare formular, din păcate SetFocus nu este încă acceptat de controlul respectiv. În schimb, acest exemplu folosește un ecran derulabil pentru a găzdui controalele de intrare.

Asemănător expunerii unui control de intrare, atunci când se afișează un ecran de introducere a datelor, este util să focalizați primul control de intrare pentru o introducere mai rapidă a datelor.

O animație care arată o comparație alăturată a utilizării SetFocus și a neutilizării atunci când se afișează un ecran de introducere a datelor.

În această animație, ecranul de introducere a datelor din stânga nu folosește SetFocus. La afișare, niciun control de intrare nu are focalizare, solicitându-i utilizatorului să facă utilizeze fila, caracteristicile tactile, mouse sau să folosească un alt mijloc pentru a focaliza câmpul Nume înainte de a putea fi introdus o valoare.

În dreapta avem exact aceeași aplicație cu proprietatea OnVisible a ecranului de introducere a datelor setată la această formulă:

SetFocus( Name )

Aceasta focalizează câmpul Nume automat. Utilizatorul poate începe tastarea și tabularea între câmpuri imediat fără a fi necesară nicio acțiune prealabilă.

Pentru a crea acest exemplu:

  1. Creați aplicația "Focalizați-vă pe problemele de validare" de mai sus.
  2. Pe acest ecran, setați proprietatea OnVisible la formula SetFocus( Name ).
  3. Adăugați un al doilea ecran.
  4. Adăugați un control Buton.
  5. Setați proprietatea OnSelect a acestui control la formula Navigate( Screen1 ).
  6. Previzualizați aplicația de pe acest ecran. Apăsați butonul. Formula OnVisible va fi evaluată și câmpul Nume va fi focalizat automat.