Funkcija SetFocus
Attiecas uz: Pamatnes programmām Modeļa vadītas programmas
Ievades fokusu pārvieto uz noteiktu vadīklu.
Apraksts
Funkcija SetFocus piešķir vadīklai ievades fokusu. Pēc tam šī vadīkla saņem lietotāja taustiņsitienus, ļaujot viņiem ievadīt ievades vadīklā tekstu vai izmantot Enter taustiņu, lai atlasītu pogu. Lietotāji var arī izmanto Tab taustiņu, skārienvadību, peli vai citu žestu, lai paši pārvietotu ievades fokusu. Tabulēšanas taustiņu darbību regulē rekvizīts TabIndex .
Izmantojiet funkciju SetFocus, lai iestatītu fokusu, kad (katrs zemāk esošajam piemēram):
- ir tikko eksponēta vai iespējota ievades vadīkla, lai vadītu lietotāju tajā, kas sekos tālāk, un nodrošinātu ātrāku datu ievadi.
- tiek validēta veidlapa, lai fokusētu un rādītu aizvainojošo ievades vadīklu ātram atrisinājumam.
- tiek rādīts ekrāns, lai fokusētu pirmo ievades vadīklu ar Ekrāna rekvizītu OnVisible.
Vadīkla ar fokusu var vizuāli atšķirties, pamatojoties uz FocusedBorderControl un FocusedBorderThickness rekvizītiem.
Ierobežojumi
SetFocus var izmantot tikai ar šādiem līdzekļiem:
Fokusu nevar iestatīt vadīklām, kas atrodas galerijas vadīklā, veidlapas vadīklā vai komponentā. SetFocus var izmantot ar vadīklu ritināmā ekrānā.
Fokusu nevar iestatīt vadīklām, kas atrodas vadīklā Konteineris.
Varat iestatīt fokusu vienīgi vadīklām, kas ir tādas pašas kā formula, kas satur SetFocus izsaukumu.
Mēģinājumiem iestatīt fokusu uz vadīklu, kuras rekvizīts DisplayMode ir iestatīts uz Disabled, nebūs nekādas ietekmes. Fokuss paliks tur, kur tas bija iepriekš.
Apple iOS mīkstajā tastatūrā tiks parādīta automātiski tikai tad, ja SetFocus tika uzsākta ar tiešu lietotāja darbību. Piemēram, izsaucot no pogas rekvizīta OnSelect, tiks rādīta elektroniskā tastatūra, bet izsaucot no ekrāna OnVisible — nē.
SetFocus varat izmantot vienīgi uzvedības formulās.
Sintakse
SetFocus( vadība )
- Kontrole - Nepieciešama. Vadīkla, lai nodrošinātu ievadei fokusu.
Piemēri
Fokuss uz tikko eksponētu vai iespējotu ievades vadīklu
Daudzi iepirkumu grozi ļauj klientam izmantot piegādes adresi kā norēķinu adresi, mazinot vajadzību divreiz ievadīt vienu un to pašu informāciju. Ja vēlaties izmantot citu norēķinu adresi, tiek iespējoti norēķinu adreses teksta ievades lodziņi, un ir noderīgi novirzīt klientu uz šīm nesen iespējotajām vadīklām ātrākai datu ievadei.
Ir iesaistītas daudzas formulas, taču tā, kura pārvieto fokusu, atrodas vadīklas Izvēles rūtiņa rekvizītā OnUncheck:
SetFocus( BillingName )
Taustiņu Tab var arī izmantot, lai ātri pārvietotu fokusu no viena lauka uz citu. Labākai ilustrācijai animācijā netika izmantots Tab taustiņš.
Lai izveidotu šo piemēru:
- Izveidojiet jaunu programmu.
- Pievienojiet Etiķetes vadīklas ar tekstu "Piegādes adrese", "Vārds un uzvārds:", "Adrese:", "Norēķinu adrese", "Vārds un uzvārds:", and "Adrese:" un novietojiet tos, kā parādīts animācijā.
- Pievienojiet Teksta ievades vadīklu un pārdēvējiet to par ShippingName.
- Pievienojiet Teksta ievades vadīklu un pārdēvējiet to par ShippingAddress.
- PIevienojiet Izvēles rūtiņas vadīklu un pārdēvējiet to par SyncAddresses.
- Iestatiet šīs vadīklas Teksta rekvizītu uz formulu
"Use Shipping address as Billing address"
. - Pievienojiet Teksta ievades vadīklu un pārdēvējiet to par BillingName.
- Iestatiet šīs vadīklas Noklusējuma rekvizītu uz formulu
ShippingName
. - Iestatiet šīs vadīklas DisplayMode rekvizītu uz formulu
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
. Tādējādi šī vadīkla tiks automātiski iespējota vai atspējota atkarībā no izvēles rūtiņas vadīklas statusa. - Pievienojiet Teksta ievades vadīklu un pārdēvējiet to par BillingAddress.
- Iestatiet šīs vadīklas Noklusējuma rekvizītu uz formulu
ShippingAddress
. - Iestatiet šīs vadīklas DisplayMode rekvizītu uz formulu
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
. Tādējādi šī vadīkla tiks automātiski iespējota vai atspējota atkarībā no izvēles rūtiņas vadīklas statusa. - Iestatiet izvēles rūtiņas Noklusējuma rekvizītu uz formulu
true
. Tādējādi tiks iespējots, ka norēķinu adrese izmantos tādu pašu vērtību kā piegādes adrese. - Iestatiet izvēles rūtiņas OnCheck rekvizītu uz formulu
Reset( BillingName ); Reset( BillingAddress )
. Ja lietotājs izvēlas sinhronizēt piegādes un norēķinu adreses, tiks noņemta jebkāda lietotāja ievade norēķinu adreses laukos, ļaujot katram Noklusējuma rekvizītam izvilkt vērtības no atbilstošajiem piegādes adrešu laukiem. - Iestatiet izvēles rūtiņas OnUnCheck rekvizītu uz formulu
SetFocus( BillingName )
. Ja lietotājs izvēlas izmantot citu norēķinu adresi, fokuss tiks pārvietots uz pirmo norēķinu adreses vadīklu. Vadīklas jau būs iestatītas savu DisplayMode rekvizītu dēļ.
Fokuss uz validācijas problēmām
Note
Lai arī šis piemērs ir Veidlapas rediģēšanas vadīklā, diemžēl šī vadīkla vēl neatbalsta funkciju SetFocus. Tā vietā šajā piemērā tiek izmantots ritināms ekrāns, lai viesotu ievades vadīklas.
Validējot veidlapu, var būt noderīgi ne tikai rādīt ziņojumu, ja radusies problēma, bet arī aizvest lietotāju uz problemātisko lauku. Tas var būt īpaši noderīgi, ja konkrētais lauks tiek aizritināts ārpus ekrāna un nav redzams.
Šajā animācijā validācijas poga tiek atkārtoti spiesta, līdz visi lauki ir atbilstoši aizpildīti. Ņemiet vērā, ka peles rādītājs nevirzās uz leju no ekrāna augšpuses. Tā vietā funkcija SetFocus ir pārvietojusi ievades fokusu uz vadīklu, kurai ir jāpievērš uzmanība, izmantojot šo formulu:
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 )
)
Lai izveidotu šo piemēru:
- Izveidojiet jaunu, tukšu tālruņa programmu.
- Izvēlnē Ievadīt atlasiet Jauns ekrāns un pēc tam atlasiet Ritināms.
- Ekrāna centra sadaļā pievienojiet Teksta ievades vadīklas un nodēvējiet tās par Name, Street1, Street2, City, County, StateProvince, PostalCode, and Phone. Virs katra pievienojiet Etiķetes vadīklas, lai identificētu laukus. Iespējams, vajadzēs mainīt šīs sadaļas izmēru, ja tā nav pietiekami gara, lai tajā ietilptu visas vadīklas.
- Pievienojiet Ikonas vadīklas atzīmi ekrāna augšpusē virs ritināmās sadaļas.
- Iestatiet ikonas vadīklas rekvizītu OnSelect uz formulu
If( IsBlank( ...
, kas norādīta iepriekš.
Fokuss, rādot ekrānu
Note
Lai arī šis piemērs ir Veidlapas rediģēšanas vadīklā, diemžēl šī vadīkla vēl neatbalsta funkciju SetFocus. Tā vietā šajā piemērā tiek izmantots ritināms ekrāns, lai viesotu ievades vadīklas.
Līdzīgi kā eksponējot ievades vadīklu, datu ekrāna rādīšanas laikā ir noderīgi fokusēt pirmo ievades vadīklu, lai panāktu datu ātrāku ievadi.
Šajā animācijā kreisajā pusē esošais datu ievades ekrāns neizmanto funkciju SetFocus. Rādīšanas laikā nevienai ievades vadīklai nav fokusa, kas nozīmē, ka lietotājam ir jāpieskaras, jānoklikšķina vai jāizmanto cits veids, lai fokusētu lauku Vārds, pirms tajā var ievadīt vērtību.
Labajā pusē ir tieši tāda pati programmas, kuras datu ievades ekrāna rekvizīts OnVisible ir iestatīts uz šo formulu:
SetFocus( Name )
Tas automātiski iestata fokusu uz lauku Vārds. Lietotājs var sākt rakstīt un tabulēt starp laukiem nekavējoties un neveicot iepriekšējas darbības.
Lai izveidotu šo piemēru:
- Izveidojiet augstāk minēto programmu "Fokuss uz validācijas problēmām".
- Šajā ekrānā iestatiet rekvizītu OnVisible uz formulu
SetFocus( Name )
. - Pievienojiet otro ekrānu.
- Pievienojiet Pogas vadīklu.
- IEstatiet šīs vadīklas rekvizītu OnSelect uz formulu
Navigate( Screen1 )
. - Priekšskatiet programmu no šī ekrāna. Nospiediet pogu. Formula OnVisible tiks novērtēta un lauks Vārds tika automātiski fokusēts.