الدالة SetFocus

تنطبق على: تطبيقات اللوحة التطبيقات المستندة إلى النموذج

نقل تركيز الإدخال إلى عنصر تحكم معين.

الوصف

تقوم وظيفة SetFocus بتزويد عنصر تحكم بتركيز الإدخال. يتم بعد ذلك تلقي ضغطات مفاتيح المستخدم بواسطة عنصر التحكم هذا ، مما يسمح له بالكتابة في عنصر تحكم إدخال النص أو استخدام مفتاح Enter لتحديد زر. كما يمكن للمستخدم استخدام مفتاح Tab، استخدم اللمس أو الماوس أو إيماءة أخرى لتحريك تركيز الإدخال بنفسه. يتم التحكم بسلوك المفتاح Tab بواسطة الخاصية TabIndex.

استخدم وظيفة SetFocus لتعيين التركيز في حالة (كل بمثال أدناه):

  • عنصر تحكم إدخال مكشوف أو ممكّن حديثًا، لتوجيه المستخدم فيما يأتي بعد ذلك ولإدخال البيانات بشكل أسرع.
  • يتم التحقق من صحة النموذج ، للتركيز وعرض عنصر تحكم الإدخال المخالف من أجل حل سريع.
  • يتم عرض شاشة ، لتركيز التحكم في الإدخال الأول باستخدام خاصية OnVisible الخاصة بـ الشاشة.

قد يكون عنصر التحكم مع التركيز مختلفًا بصريًا استنادًا إلى خاصيتي FocusedBorderColor وFocusedBorderThickness.

القيود

يمكن استخدام SetFocus فقط مع:

لا يمكنك تعيين التركيز على عناصر التحكم الموجودة ضمن عنصر تحكم Gallery أو عنصر تحكم Edit form أو عنصر تحكم المكون. يمكن استخدام SetFocus مع عنصر تحكم في شاشة قابلة للتمرير.

لا يمكنك تعيين التركيز لمراقبة عناصر التحكم الموجودة ضمن عنصر تحكم Container.

يمكنك فقط تعيين التركيز على عناصر التحكم على نفس الشاشة مثل الصيغة التي تحتوي على مكالمة SetFocus.

ليس لمحاولة تعيين التركيز إلى عنصر تحكم قام بتعيين خاصية DisplayMode الخاصة به إلى معطل أي تأثير. سيبقى التركيز حيث كان سابقًا.

في Apple iOS، لن يتم عرض لوحة المفاتيح على الشاشة تلقائياً إلا إذا تمت تهيئة دالة SetFocus بواسطة إجراء مباشر من مستخدم. على سبيل المثال، سيؤدي الاستدعاء من خاصية OnSelect الخاصة بزر إلى عرض لوحة المفاتيح البرمجية بينما لن يؤدي الاستدعاء من OnVisible الخاصة بشاشة إلى ذلك.

يمكنك استخدام SetFocus فقط في صيغ السلوك.

بناء الجملة

SetFocus( عنصر تحكم )

  • عنصر تحكم – مطلوب. عنصر التحكم لإعطاء تركيز الإدخال.

الأمثلة

التركيز على عنصر تحكم إدخال مكشوف أو ممكّن حديثًا

تسمح العديد من عربات التسوق للعميل باستخدام عنوان الشحن كعنوان إرسال الفواتير ، مما يخفف من الحاجة إلى إدخال نفس المعلومات مرتين. في حالة الرغبة في إدخال عنوان فاتورة مختلف، سيتم تمكين مربعات إدخال نص عنوان الفوترة، ومن المفيد توجيه العميل إلى عناصر التحكم هذه التي تم تمكينها حديثاً لإدخال البيانات بشكل أسرع.

الرسوم المتحركة لاختيار استخدام عنوان فوترة مخصص ، مع نقل التركيز إلى عنصر تحكم إدخال اسم الفوترة نتيجة لذلك ، وإيقاف المزامنة التلقائية مع عناوين الشحن.

هناك العديد من الصيغ في اللعب هنا، ولكن الصيغة التي تحرك التركيز موجودة في خاصية OnUncheck الخاصة بعنصر تحكم Check box:

SetFocus( BillingName )

كما يمكن استخدام مفتاح Tab لنقل التركيز بسرعة من أحد الحقول إلى حقل آخر. للتوضيح بشكل أفضل، لم يتم استخدام مفتاح Tab في الحركة.

لإنشاء هذا المثال:

  1. أنشئ تطبيقًا جديدًا.
  2. أضف عناصر تحكم Label مع النص "عنوان الشحن" و "الاسم:" و "العنوان:" و "عنوان الفوترة" و "الاسم:" و "العنوان:" ووضعهم كما هو موضح في الرسوم المتحركة.
  3. أضف عنصر تحكم Text Input وأعد تسميته باسم ShippingName.
  4. أضف عنصر تحكم Text Input وأعد تسميته باسم ShippingAddress.
  5. أضف عنصر تحكم Check box وأعد تسميته باسم SyncAddresses.
  6. قم بتعيين خاصية Text الخاصة بعنصر التحكم هذا إلى الصيغة "Use Shipping address as Billing address".
  7. أضف عنصر تحكم Text Input وأعد تسميته باسم BillingName.
  8. قم بتعيين خاصية Default في عنصر التحكم هذا إلى الصيغة ShippingName.
  9. قم بتعيين خاصية DisplayMode في عنصر التحكم هذا إلى الصيغة If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). سيؤدي هذا إلى تمكين عنصر التحكم هذا أو تعطيله تلقائيًا استنادًا إلى حالة عنصر تحكم خانة الاختيار.
  10. أضف عنصر تحكم Text Input وأعد تسميته باسم BillingAddress.
  11. قم بتعيين خاصية Default في عنصر التحكم هذا إلى الصيغة ShippingAddress.
  12. قم بتعيين خاصية DisplayMode في عنصر التحكم هذا إلى الصيغة If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ). سيؤدي هذا إلى تمكين عنصر التحكم هذا أو تعطيله تلقائيًا استنادًا إلى حالة عنصر تحكم خانة الاختيار.
  13. قم بتعيين خاصية Default الخاصة بخانة الاختيار إلى الصيغة true. سيؤدي هذا إلى تعيين عنوان الفوترة افتراضيًا على استخدام نفس قيمة عنوان الشحن.
  14. قم بتعيين خاصية OnCheck الخاصة بخانة الاختيار إلى الصيغة Reset( BillingName ); Reset( BillingAddress ). إذا اختار المستخدم مزامنة عناوين الشحن والفوترة ، فسيؤدي ذلك إلى محو أي إدخال للمستخدم في حقول عنوان الفوترة مما يسمح لخصائص Default على كل منها لسحب القيم من حقول عنوان الشحن المقابلة.
  15. قم بتعيين خاصية OnUncheck الخاصة بخانة الاختيار إلى الصيغة SetFocus( BillingName ). إذا اختار المستخدم أن يكون لديه عنوان إرسال فواتير مختلف ، فسيؤدي ذلك إلى نقل التركيز إلى عنصر التحكم الأول في عنوان إرسال الفواتير. تم تمكين عناصر التحكم بالفعل بسبب خصائص DisplayMode.

التركيز على مشكلات التحقق من الصحة

‏‫ملاحظة‬

على الرغم من أن هذا المثال يبدو أنه عنصر تحكم Edit form، ولسوء الحظ، لم يتم دعم SetFocus بعد بواسطة عنصر التحكم هذا. بدلاً من ذلك ، يستخدم هذا المثال شاشة قابلة للتمرير لاستضافة عناصر التحكم في الإدخال.

عند التحقق من صحة نموذج ، قد يكون من المفيد عدم عرض رسالة فقط إذا كانت هناك مشكلة ولكن أيضًا نقل المستخدم إلى الحقل المسيء. يمكن أن يكون مفيدًا بشكل خاص إذا تم تمرير الحقل المعني خارج الشاشة ولم يكن مرئيًا.

رسم متحرك للتحقق من صحة نموذج إدخال البيانات وعدم عرض رسالة فقط ولكن أيضًا ضبط تركيز الإدخال على عنصر التحكم في الإدخال المسيء ، حتى إذا تم تمريره خارج الشاشة.

في هذه الرسوم المتحركة ، يتم الضغط على زر التحقق بشكل متكرر حتى يتم ملء جميع الحقول بشكل صحيح. لاحظ أن مؤشر الماوس لا يتحرك لأسفل من أعلى الشاشة. وبدلاً من ذلك، نقلت وظيفة SetFocus تركيز الإدخال على عنصر التحكم الذي يتطلب الانتباه بهذه الصيغة:

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. في الجزء الأوسط من الشاشة، أضف عناصر تحكم Text input وقم بتسميتها باسم Name، وStreet1، وStreet2، وCity، وCounty، وStateProvince, PostalCode، وPhone. أضف عناصر تحكم Label فوق كل واحد لتحديد الحقول. قد تحتاج إلى تغيير حجم القسم إذا لم يكن طويلًا بما يكفي ليلائم جميع عناصر التحكم.
  4. أضف علامة اختيار عنصر تحكم Icon أعلى الشاشة، أعلى القسم القابل للتمرير.
  5. قم بتعيين خاصية OnSelect الخاصة بعنصر تحكم الرمز إلى الصيغة If( IsBlank( ... المحددة أعلاه.

التركيز عند عرض شاشة

‏‫ملاحظة‬

على الرغم من أن هذا المثال يبدو أنه عنصر تحكم Edit form، ولسوء الحظ، لم يتم دعم SetFocus بعد بواسطة عنصر التحكم هذا. بدلاً من ذلك ، يستخدم هذا المثال شاشة قابلة للتمرير لاستضافة عناصر التحكم في الإدخال.

على غرار كسف عنصر تحكم الإدخال ، عند عرض شاشة إدخال البيانات ، من المفيد تركيز عنصر التحكم الأول في الإدخال لإدخال البيانات بشكل أسرع.

رسم متحرك يظهر مقارنة جنبًا إلى جنب لاستخدام SetFocus مقابل عدم استخدامه عند عرض شاشة إدخال البيانات.

في هذا الرسم المتحرك ، لا تستخدم شاشة إدخال البيانات الموجودة على اليسار SetFocus. عند العرض ، لا يوجد تركيز على عنصر تحكم الإدخال ، مما يتطلب من المستخدم أن يقوم بالتبويب أو اللمس أو الماوس أو استخدام وسيلة أخرى للتركيز على حقل الاسم قبل أن تتم كتابة القيمة فيه.

على اليمين لدينا نفس التطبيق بالضبط مع خاصية OnVisible من شاشة إدخال البيانات المعينة لهذه الصيغة:

SetFocus( Name )

يؤدي هذا إلى تعيين التركيز إلى حقل الاسم تلقائيًا. يمكن للمستخدم البدء في الكتابة والتبديل بين الحقول على الفور دون الحاجة إلى إجراء مسبق.

لإنشاء هذا المثال:

  1. أنشئ تطبيق "التركيز على مشكلات التحقق" أعلاه.
  2. في هذه الشاشة، قم بتعيين خاصية OnVisible إلى الصيغة SetFocus( Name ).
  3. أضف شاشة ثانية.
  4. أضف عنصر تحكم Button.
  5. قم بتعيين خاصية OnSelect الخاصة بعنصر التحكم إلى الصيغة Navigate( Screen1 ).
  6. عاين التطبيق من هذه الشاشة. اضغط على الزر. سيتم تقييم صيغة OnVisible وسيكون حقل الاسم تلقائيًا في التركيز.