इसके माध्यम से साझा किया गया


सेटफोकस फ़ंक्शन

इन पर लागू होता है: कैनवास ऐप्स मॉडल-संचालित ऐप्स

इनपुट फ़ोकस को एक विशिष्ट नियंत्रण में ले जाता है.

विवरण

SetFocus फ़ंक्शन नियंत्रण को इनपुट फ़ोकस देता है. उपयोगकर्ता के कीस्ट्रोक्स तब उस नियंत्रण द्वारा प्राप्त होते हैं, जिससे वे पाठ इनपुट नियंत्रण में टाइप कर पाते हैं या बटन का चयन करने के लिए दर्ज करें का उपयोग कर पाते हैं. इनपुट फ़ोकस को स्वयं ले जाने के लिए, उपयोगकर्ता टैब कुंजी, टच, माउस या अन्य जेस्चर का भी उपयोग कर सकते हैं. टैब कुंजी व्यवहार, TabIndex गुण द्वारा नियंत्रित होता है.

SetFocus फ़ोकस का उपयोग निम्न स्थिति में फ़ोकस सेट करने के लिए करें (प्रत्येक नीचे एक उदाहरण के साथ):

  • उपयोगकर्ता के लिए आगे का मार्गदर्शन करने के लिए और तेज़ डेटा एंट्री के लिए, एक नया दिखाई देने वाला या सक्षम इनपुट नियंत्रण.
  • त्वरित समाधान के लिए ऑफ़ेंड़िंग इनपुट नियंत्रण पर फ़ोकस करने और उन्हें प्रदर्शित करने के लिए, एक प्रपत्र को मान्य किया गया है.
  • स्क्रीन के OnVisible गुण के साथ पहले इनपुट नियंत्रण को फ़ोकस करने के लिए, एक स्क्रीन प्रदर्शित होता है.

FocusedBorderColor और FocusedBorderThickness गुणों के आधार पर, नियंत्रण के साथ फ़ोकस दृश्यमान रूप से अलग हो सकते हैं.

सीमाएँ

SetFocus केवल इनके साथ इस्तेमाल किया जा सकता है:

आप उन नियंत्रणों पर फ़ोकस सेट नहीं कर सकते जो गैलरी नियंत्रण, संपादन फ़ॉर्म नियंत्रण, या के अंतर्गत हैं घटक. SetFocus को एक स्क्रॉल करने योग्य स्क्रीन में नियंत्रण के साथ इस्तेमाल किया जा सकता है.

आप उन नियंत्रणों पर फोकस नहीं कर सकते हैं जो एक कंटेनर नियंत्रण के अंदर हैं.

आप फ़ोकस को केवल उस स्क्रीन के नियंत्रण पर सेट कर सकते हैं, जिसमें SetFocus कॉल वाले सूत्र के समान सूत्र शामिल हो.

फ़ोकस को उस नियंत्रण पर सेट करने का प्रयास करने से कोई प्रभाव नहीं होता जिसका DisplayMode गुण अक्षम पर सेट हो. फ़ोकस वहीं रहेगा जहां पहले था.

Apple iOS पर, सॉफ्ट कीबोर्ड केवल तभी स्वचालित रूप से प्रदर्शित होगा यदि SetFocus प्रत्यक्ष उपयोगकर्ता कार्रवाई द्वारा शुरू किया गया था। उदाहरण के लिए, बटन के OnSelect गुण से इनवोक करने पर सॉफ़्ट कीबोर्ड प्रदर्शित होगा जबकि स्क्रीन के OnVisible से इनवोक करने पर नहीं.

आप केवल व्यवहार सूत्र में ही SetFocus का उपयोग कर सकते हैं.

सिंटैक्स

SetFocus( नियंत्रण )

  • नियंत्रण – आवश्यक. इनपुट फ़ोकस देने के लिए नियंत्रण.

उदाहरण

एक नए दिखाई देने वाले या सक्षम इनपुट नियंत्रण पर ध्यान दें

कई शॉपिंग कार्ट ग्राहक को शिपिंग पते का उपयोग बिलिंग पते के रूप में करने की अनुमति देते हैं, जिससे एक ही जानकारी को दो बार दर्ज करने की आवश्यकता नहीं होती है. यदि एक अलग बिलिंग पता वांछित है, तो बिलिंग पता टेक्स्ट इनपुट बॉक्स सक्षम किए जाते हैं, और तेज़ डेटा एंट्री के लिए यह ग्राहक को इन नए सक्षम नियंत्रणों तक मार्गदर्शन करने में सहायक होता है.

एक कस्टम बिलिंग पते का उपयोग करने के चुनाव का एनिमेशन, जिसमें फ़ोकस बिलिंग नाम इनपुट नियंत्रण पर ले जाया जाता है, जिसके परिणामस्वरूप शिपिंग पते के साथ स्वचालित सिंक बंद हो जाता है.

यहाँ कई सूत्र कार्य कर रहे हैं, लेकिन जो फ़ोकस को ले जाता है वह चेक बॉक्स नियंत्रण के OnUncheck गुण पर होता है.

SetFocus( BillingName )

टैब कुंजी का उपयोग फ़ोकस को एक फ़ील्ड से दूसरे फ़ील्ड में तेज़ी से ले जाने के लिए भी किया जा सकता है. बेहतर चित्रण करने के लिए, एनिमेशन में टैब कुंजी का उपयोग नहीं किया गया था.

इस उदाहरण को बनाने के लिए:

  1. एक नया ऐप बनाएं.
  2. पाठ "शिपिंग पता", "नाम:", "पता:", "बिलिंग पता", "नाम:", और "पता:" के साथ लेबल नियंत्रण जोड़ें और उसे एनिमेशन में दिखाए अनुसार स्थापित करें.
  3. एक पाठ इनपुट नियंत्रण जोड़ें और उसका नाम बदलकर ShippingName करें.
  4. एक पाठ इनपुट नियंत्रण जोड़ें और उसका नाम बदलकर ShippingAddress करें.
  5. एक चेक बॉक्स नियंत्रण जोड़ें और उसका नाम बदलें SyncAddresses करें.
  6. इस नियंत्रण के पाठ गुण को "Use Shipping address as Billing address" सूत्र पर सेट करें.
  7. एक पाठ इनपुट नियंत्रण जोड़ें और उसका नाम बदलकर BillingName करें.
  8. इस नियंत्रण पर डिफ़ॉल्ट गुण को सूत्र ShippingName पर सेट करें.
  9. इस नियंत्रण पर DisplayMode गुण को सूत्र If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ) पर सेट करें. यह चेक बॉक्स नियंत्रण की स्थिति के आधार पर इस नियंत्रण को स्वचालित रूप से सक्षम या अक्षम कर देगा.
  10. एक पाठ इनपुट नियंत्रण जोड़ें और उसका नाम बदलकर BillingAddress करें.
  11. इस नियंत्रण पर डिफ़ॉल्ट गुण को सूत्र ShippingAddress पर सेट करें.
  12. इस नियंत्रण पर DisplayMode गुण को सूत्र If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ) पर सेट करें. यह चेक बॉक्स नियंत्रण की स्थिति के आधार पर इस नियंत्रण को स्वचालित रूप से सक्षम या अक्षम कर देगा.
  13. चेक बॉक्स के डिफ़ॉल्ट गुण को सूत्र true पर सेट करें. इससे बिलिंग पता डिफ़ॉल्ट रूप से शिपिंग पते के समान मान का उपयोग करेगा.
  14. चेक बॉक्स के OnCheck गुण को सूत्र Reset( BillingName ); Reset( BillingAddress ) पर सेट करें. यदि उपयोगकर्ता शिपिंग और बिलिंग पते को सिंक करना चुनता है, तो यह बिलिंग पता फ़ील्ड में किसी भी उपयोगकर्ता इनपुट को साफ़ कर देगा जिससे प्रत्येक पर डिफ़ॉल्ट गुण संगत शिपिंग पता फ़ील्ड से मान को पुल करने देगा.
  15. चेक बॉक्स के OnUncheck गुण को सूत्र SetFocus( BillingName ) पर सेट करें. यदि उपयोगकर्ता एक अलग बिलिंग पता चुनता है, तो यह फ़ोकस को बिलिंग पते में पहले नियंत्रण पर ले जाएगा. नियंत्रण उनके DisplayMode गुणों के कारण पहले ही सक्षम हो चुके होंगे.

सत्यापन की समस्याओं पर ध्यान दें

नोट

हालांकि यह उदाहरण एक प्रपत्र संपादित करें प्रतीत होता है, दुर्भाग्यवश 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. स्क्रीन के केंद्रीय सेक्शन में, पाठ इनपुट नियंत्रण जोड़ें और उन्हें Name, Street1, Street2, City, County, StateProvince, PostalCode, तथा Phone का नाम दें. फ़ील्ड की पहचान करने के लिए, प्रत्येक के ऊपर लेबल नियंत्रण जोड़ें. यदि सेक्शन सभी नियंत्रणों को फिट करने के लिए पर्याप्त रूप से लंबा नहीं है, तो आपको सेक्शन का आकार बदलने की आवश्यकता हो सकती है.
  4. स्क्रॉल करने योग्य सेक्शन के ऊपर, स्क्रीन के शीर्ष पर चेकमार्क आइकन नियंत्रण जोड़ें.
  5. आइकन नियंत्रण के OnSelect गुण को ऊपर दिए सूत्र If( IsBlank( ... पर सेट करें.

स्क्रीन प्रदर्शित करते समय फ़ोकस

नोट

हालांकि यह उदाहरण एक प्रपत्र संपादित करें नियंत्रण प्रतीत होता है, दुर्भाग्यवश SetFocus अभी तक उस नियंत्रण द्वारा समर्थित नहीं है. इसके बजाय, यह उदाहरण इनपुट नियंत्रणों को होस्ट करने के लिए स्क्रॉल स्क्रीन का उपयोग करता है.

इनपुट नियंत्रण को उजागर करने के समान, डेटा एंट्री स्क्रीन प्रदर्शित करते समय, यह तेज़ डेटा एंट्री के लिए पहले इनपुट नियंत्रण को फ़ोकस करने में सहायक होता है.

एक एनिमेशन जो डेटा एंट्री स्क्रीन प्रदर्शित करते समय, SetFocus बनाम इसका उपयोग न करने की तुलना को साथ-साथ दिखाता है.

इस एनीमेशन में, बाईं ओर डेटा एंट्री स्क्रीन SetFocus का उपयोग नहीं कर रही है. प्रदर्शन पर, किसी भी इनपुट नियंत्रण पर फ़ोकस नहीं है, उपयोगकर्ता को Name फ़ील्ड में मान टाइप करने से पहले उसपर फ़ोकस के लिए टैब, टच, माउस या अन्य साधनों का उपयोग करने की आवश्यकता होती है.

दाईं ओर, हमारे पास बिल्कुल वही ऐप है जिसमें डेटा एंट्री स्क्रीन का OnVisible गुण इस सूत्र पर सेट है.

SetFocus( Name )

यह फ़ोकस को स्वचालित रूप से Name फ़ील्ड पर सेट करता है. उपयोगकर्ता बिना किसी पूर्व कार्रवाई के तुरंत फ़ील्ड के बीच टाइप और टैब करना शुरू कर सकता है.

इस उदाहरण को बनाने के लिए:

  1. ऊपर "सत्यापन की समस्याओं पर ध्यान दें" ऐप बनाएं.
  2. इस स्क्रीन पर, OnVisible गुण को सूत्र SetFocus( Name ) पर सेट करें.
  3. दूसरा स्क्रीन जोड़ें.
  4. एक बटन नियंत्रण जोड़ें.
  5. इस नियंत्रण के OnSelect गुण को Navigate( Screen1 ) सूत्र पर सेट करें.
  6. इस स्क्रीन से ऐप का पूर्वावलोकन करें. बटन दबाएँ. OnVisible सूत्र का मूल्यांकन किया जाएगा और नाम फ़ील्ड स्वचालित रूप से फ़ोकस में होगी.