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:
- Buton control
- Pictogramă control
- Imagine control
- Eticheta control
- TextInput control
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.
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:
- Creați o aplicație nouă.
- 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.
- Adăugați un control Intrare text și redenumiți-l ShippingName.
- Adăugați un control Intrare text și redenumiți-l ShippingAddress.
- Adăugați un control Casetă de bifat și redenumiți-l SyncAddresses.
- Setați proprietatea Text a acestui control la formula
"Use Shipping address as Billing address"
. - Adăugați un control Intrare text și redenumiți-l BillingName.
- Setați proprietatea Implicit pentru acest control la formula
ShippingName
. - 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. - Adăugați un control Intrare text și redenumiți-l BillingAddress.
- Setați proprietatea Implicit pentru acest control la formula
ShippingAddress
. - 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. - 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. - 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. - 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.
Î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:
- Creați o aplicație nouă, necompletată pentru telefon
- De la meniul Inserare, selectați Ecran nou, apoi selectați Derulant.
- Î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.
- Adăugați o bifă control Pictogramă în partea de sus a ecranului, deasupra secțiunii derulante.
- 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.
Î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:
- Creați aplicația "Focalizați-vă pe problemele de validare" de mai sus.
- Pe acest ecran, setați proprietatea OnVisible la formula
SetFocus( Name )
. - Adăugați un al doilea ecran.
- Adăugați un control Buton.
- Setați proprietatea OnSelect a acestui control la formula
Navigate( Screen1 )
. - 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.