Megosztás a következőn keresztül:


SetFocus függvény

A következőkre vonatkozik: Vászonalapú alkalmazások Modellvezérelt alkalmazások

A bemeneti fókuszt áthelyezi egy adott vezérlőre.

Description

A SetFocus függvény a bemeneti fókusz vezérlését biztosítja. A felhasználó billentyűleütéseit ezután ez a vezérlő fogadja, így beírhat egy szövegbeviteli vezérlőbe, vagy az Enter billentyű használatával kiválaszthat egy gombot. A felhasználó használhatja a Tab billentyűt, az érintést, az egeret vagy más kézmozdulatot is, hogy áthelyezze a beviteli fókuszt. A Tab billentyű működését a TabIndex tulajdonság szabályozza.

A SetFocus függvény használatával állítsa be a fókuszt, ha (mindegyik az alábbi példával):

  • egy újonnan megjelenő vagy engedélyezett bemeneti vezérlőnél, a felhasználó irányításához abban, hogy mi jön legközelebb, valamint a gyorsabb adatbevitelhez.
  • az űrlapok ellenőrzése megtörténik, a gyors megoldás érdekében megjeleníteni a jogsértő beviteli vezérlőt.
  • megjelenik egy képernyő, az első bemeneti vezérlő fókuszálásához az OnVisible tulajdonságával a képernyőnek.

A fókusszal rendelkező vezérlő a FocusedBorderColor és a FocusedBorderThickness tulajdonságok alapján vizuálisan eltérő lehet.

Korlátozások

A SetFocus csak a következőkkel használható:

A fókusz nem állítható olyan vezérlőkre, amelyek a Katalógus, az Űrlap szerkesztése vezérlőelemen vagy az Összetevőn belül vannak. ... A SetFocus használható egy vezérlőelemmel görgethető képernyőn.

Nem állíthatja be a fókuszt olyan vezérlőelemekre, amelyek egy Tároló vezérlőn belül vannak.

A fókuszt csak ugyanazon a képernyőn lehet beállítani a vezérlőelemekre, mint a SetFocus hívást tartalmazó függvényé.

A fókusz olyan vezérlőre való beállításának kísérlete, amelynek DisplayMode tulajdonsága a Letiltva értékre van állítva, nem vezet hatáshoz. A fókusz továbbra is ott marad, ahol korábban volt.

Az Apple-ön iOS a szoftveres billentyűzet csak akkor jelenik meg automatikusan, ha a SetFocus funkciót közvetlen felhasználói művelet kezdeményezte. Ha például egy gomb OnSelect tulajdonságával hívják meg, meg fog jelenni a szoftveres billentyűzet, míg ha a képernyő OnVisible tulajdonságával, akkor nem.

A SetFocus függvény csak műveleti képletekben használható.

Szintaxis

SetFocus( Vezérlő )

  • Vezérlő – kötelező. A bemeneti fókuszt ez a vezérlő adja meg.

Példák

Fókuszban az újonnan megjelenő vagy engedélyezett bemeneti vezérlő

Sok bevásárlókocsi lehetővé teszi, hogy az ügyfél a szállítási címet használja számlázási címként, kiküszöbölve ezzel az adatok kétszeri bevitelét. Ha másik számlázási cím szükséges, a számlázási cím beviteli szövegmezői engedélyezve vannak, és a gyorsabb adatbevitel érdekében célszerű az ügyfelet az újonnan engedélyezett vezérlőkhöz irányítani.

Animáció, amely egyéni számlázási cím használatának választását mutatja: a rendszer a számlázási név bemeneti vezérlőjére helyezi a fókuszt, kikapcsolva ezzel az automatikus szinkronizálást a szállítási címekkel.

Ebben az esetben számos képlet lép használatba, de a fókuszt mozgató elem az OnUncheck tulajdonsága a Check box vezérlőnek:

SetFocus( BillingName )

A Tab billentyű használatával gyorsan áthelyezheti a fókuszt az egyik mezőből a másikba. A jobb szemléltetés érdekében a Tab billentyűt nem használták az animációban.

A példa létrehozásához:

  1. Új alkalmazás létrehozása.
  2. Adja hozzá a Címkék vezérlőket a következő szöveggel: "Szállítási cím", "Név:", "Cím:", "Számlázási cím", "Név:" és "Cím:", és helyezze el őket az animációban látható módon.
  3. Adjon hozzá egy Szövegbevitel vezérlőelemet, és adja neki a ShippingName nevet.
  4. Adjon hozzá egy Szövegbevitel vezérlőelemet, és adja neki a ShippingAddress nevet.
  5. Vegyen fel egy Jelölőnégyzet vezérlőt , és nevezze át erre: SyncAddresses.
  6. A vezérlő Szöveg tulajdonságának adja meg ezt a képletet: "Use Shipping address as Billing address".
  7. Adjon hozzá egy Szövegbevitel vezérlőelemet, és adja neki a BillingName nevet.
  8. A vezérlő Alapértelmezett tulajdonságának adja meg ezt a képletet: ShippingName.
  9. A vezérlő DisplayMode tulajdonságának adja meg ezt a képletet: If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Ezzel automatikusan engedélyezi vagy letiltja ezt a vezérlőelemet a jelölőnégyzetes vezérlő állapota szerint.
  10. Adjon hozzá egy Szövegbevitel vezérlőelemet, és adja neki a BillingAddress nevet.
  11. A vezérlő Alapértelmezett tulajdonságának adja meg ezt a képletet: ShippingAddress.
  12. A vezérlő DisplayMode tulajdonságának adja meg ezt a képletet: If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). Ezzel automatikusan engedélyezi vagy letiltja ezt a vezérlőelemet a jelölőnégyzetes vezérlő állapota szerint.
  13. A jelölőnégyzet Alapértelmezett tulajdonságának adja meg ezt a képletet: true. Ezzel a számlázási cím alapértelmezetten ugyanazt az értéket fogja használni, mint a szállítási cím.
  14. A jelölőnégyzet OnCheck tulajdonságának adja meg ezt a képletet: Reset( BillingName ); Reset( BillingAddress ). Ha a felhasználó úgy dönt, hogy szinkronizálja a szállítási és számlázási címeket, akkor ez törli a számlázási cím mezőkben szereplő felhasználói adatokat, így az Alapértelmezett tulajdonságok mindegyike a megfelelő szállítási cím mezőkből húzza le az értékeket.
  15. A jelölőnégyzet OnUncheck tulajdonságának adja meg ezt a képletet: SetFocus( BillingName ). Ha a felhasználó másik számlázási címet választ, akkor ezzel a fókuszt a számlázási cím első vezérlőelemére helyezi. A vezérlőket a DisplayMode tulajdonságai miatt már engedélyezte a rendszer.

Fókuszálás az érvényesítési problémákra

Feljegyzés

Bár ez a példa Szerkesztési űrlap vezérlőnek tűnik, sajnos a SetFocus még nem támogatott a vezérlő által. Ehelyett a következő példa görgethető képernyő segítségével tárolja a bemeneti vezérlőket.

Az űrlapok ellenőrzésekor hasznos lehet, ha nem csak egy üzenetet jelenít meg a problémáról, hanem a felhasználót azonnal a problémás mezőre veszi. Különösen akkor lehet hasznos, ha a kérdéses mező a képernyőről ki van görgetve, és nem látható.

Az adatbeviteli űrlap érvényesítésének animációja, ahol nem csak egy üzenet jelenik meg, hanem a bemeneti fókusz a problémás beviteli vezérlőre áll, még akkor is, ha a képernyőről ki van görgetve.

Ebben az animációban az érvényesítés gomb ismételten lenyomásra kerül, amíg az összes mező megfelelően ki nem töltődik. Ne feledkezzen meg arról, hogy az egérmutató nem mozog lefelé a képernyő felső részéről. Ehelyett a SetFocus függvény áthelyezte a bemeneti fókuszt arra a vezérlőre, amelyhez a következő képletet kell figyelni:

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

A példa létrehozásához:

  1. Új, üres telefonos alkalmazás létrehozása.
  2. Válassza ki a Beszúrás menüből az Új képernyő lehetőséget, majd válassza a Görgethető lehetőséget.
  3. A képernyő középső részén adja hozzá a szövegbeviteli vezérlőket, és nevezze el őket így: Név, Utca1, Utca2, Város, Megye, ÁllamTartomány, Irányítószám és Telefont. Adja hozzá a Címke vezérlőit mindegyikhez, hogy azonosítsák a mezőket. Előfordulhat, hogy a szakaszt át kell méreteznie, ha az nem elég hosszú ahhoz, hogy az összes vezérlőt elférjen.
  4. Vegyen fel egy pipa Ikon vezérlőt a képernyő felső részén, a lapozható szakasz felett.
  5. Az OnSelect tulajdonsága az ikon vezérlőnek legyen a fenti If( IsBlank( ... képlet:

Fókusz a képernyő megjelenítésekor

Feljegyzés

Bár ez a példa Szerkesztési űrlap vezérlőnek tűnik, sajnos a SetFocus még nem támogatott a vezérlő által. Ehelyett a következő példa görgethető képernyő segítségével tárolja a bemeneti vezérlőket.

A bemeneti vezérlő megjelenítéséhez hasonlóan az adatbeviteli képernyő megjelenítésekor célszerű az első bemeneti vezérlőt a gyorsabb adatbevitelre összpontosítani.

Egy animációs, amely bemutat egy egymás melletti összehasonlítát a SetFocus használatáról azzal az esettel összehasonlítva, ha nem használja, ha megjelenít egy adatbeviteli képernyőt.

Ebben az animációban a bal oldali adatbeviteli képernyő nem használja a SetFocus lehetőséget. Ha a kijelzőn nincs fókuszban levő bemeneti vezérlő, akkor a felhasználónak tabulátorra, érintésre, egérre van szüksége, vagy másik eszközt kell használnia ahhoz, hogy egy érték beírható legyen a Név mezőbe a rá való fókuszálással.

A jobb oldalon pontosan ugyanazt az alkalmazást használjuk, ahol az adatbeviteli képernyő OnVisible tulajdonsága a következő képletre van beállítva:

SetFocus( Name )

Ezzel automatikusan a Név mezőre állítja a fókuszt. A felhasználó előzetes beavatkozás nélkül azonnal megkezdheti a mezők beírását és a váltást köztük.

A példa létrehozásához:

  1. Készítse el a „Fókusz az ellenőrzési problémákra” alkalmazást fent.
  2. Ezen a képernyőn állítsa be az OnVisible tulajdonságot ehhez a képlethez: SetFocus( Name ).
  3. Adjon hozzá egy második képernyőt.
  4. Egy Gomb vezérlő hozzáadása.
  5. Az OnSelect (Kiválasztáskor) tulajdonságát a vezérlőnek állítsa a következő képletre: Navigate( Screen1 ).
  6. Tekintse meg az alkalmazást a képernyőről. Nyomja meg a gombot. A rendszer kiértékeli a OnVisible képletet, és a Név mező automatikusan fókuszban lesz.