แชร์ผ่าน


ฟังก์ชัน SetFocus

ใช้กับ: แอปพื้นที่ทำงาน แอปแบบจำลอง

ย้ายโฟกัสป้อนเข้าไปยังตัวควบคุมที่ระบุ

Description

ฟังก์ชัน SetFocus ให้การควบคุมที่ข้อมูลป้อนเข้าโฟกัส การกดแป้นพิมพ์ของผู้ใช้นั้นจะได้รับโดยตัวควบคุมนั้น ทำให้พวกเขาสามารถพิมพ์ลงในตัวควบคุมการป้อนข้อความ หรือใช้ปุ่ม Enter เพื่อเลือกปุ่ม ผู้ใช้ยังสามารถใช้ปุ่ม Tab สัมผัส เมาส์ หรือท่าทางอื่นๆ เพื่อย้ายโฟกัสป้อนเข้าด้วยตนเอง ลักษณะการทำงานปุ่ม Tab ถูกควบคุมโดย คุณสมบัติ TabIndex

ใช้ฟังก์ชัน SetFocus เพื่อตั้งค่าโฟกัสเมื่อ (แต่ละตัวอย่างด้านล่าง):

  • ตัวควบคุมการป้อนข้อมูลที่เปิดเผยหรือเปิดใช้งานใหม่ เพื่อให้คำแนะนำผู้ใช้เกี่ยวกับสิ่งที่จะเกิดขึ้นถัดไป และเพื่อการป้อนข้อมูลที่รวดเร็วยิ่งขึ้น
  • ฟอร์มได้รับการตรวจสอบความถูกต้อง เพื่อมุ่งเน้นและแสดงตัวควบคุมการป้อนข้อมูลที่ละเมิดเพื่อวิธีการแก้ปัญหาที่รวดเร็ว
  • หน้าจอจะปรากฏขึ้น เพื่อมุ่งเน้นตัวควบคุมการป้อนข้อมูลแรกด้วยคุณสมบัติ OnVisible ของ หน้าจอ

ตัวควบคุมที่มีโฟกัสอาจแตกต่างกันไปตามคุณสมบัติ FocusedBorderColor และ FocusedBorderThickness ในรูปแบบภาพ

ข้อจำกัด

SetFocus สามารถใช้ได้กับเฉพาะ:

คุณไม่สามารถตั้งค่าโฟกัสไปยังตัวควบคุมที่อยู่ภายในตัวควบคุม แกลเลอรี ตัวควบคุม แก้ไขฟอร์ม หรือ Component SetFocus สามารถใช้กับตัวควบคุมในหน้าจอที่เลื่อนได้

คุณไม่สามารถตั้งโฟกัสการควบคุมที่อยู่ภายในการควบคุม Container

คุณสามารถตั้งค่าโฟกัสตัวควบคุมบนหน้าจอเดียวกับสูตรที่มีการติดต่อ SetFocus

การพยายามตั้งโฟกัสไปยังตัวควบคุมที่มีคุณสมบัติ DisplayMode ตั้งค่าเป็น ปิดใช้งาน ไม่มีผล โฟกัสจะยังคงอยู่ในตำแหน่งเดิม

บน Apple iOS แป้นพิมพ์ชั่วคราวจะปรากฏขึ้นโดยอัตโนมัติ หาก SetFocus ถูกริเริ่มโดยการดำเนินการของผู้ใช้โดยตรง ตัวอย่างเช่น การเรียกใช้จากคุณสมบัติ OnSelect ของปุ่มจะแสดงแป้นพิมพ์ชั่วคราว ในขณะที่การเรียกใช้จาก OnVisible ของหน้าจอจะไม่แสดง

คุณสามารถใช้ SetFocus ได้ใน สูตรลักษณะการทำงาน เท่านั้น

ไวยากรณ์

SetFocus( ตัวควบคุม )

  • ตัวควบคุม – จำเป็น ตัวควบคุมที่จะให้โฟกัสป้อนเข้า

ตัวอย่าง

มุ่งเน้นไปที่ตัวควบคุมการป้อนข้อมูลที่เปิดเผยหรือเปิดใช้งานใหม่

ตะกร้าสินค้าจำนวนมากอนุญาตให้ลูกค้าใช้ที่อยู่จัดส่งเป็นที่อยู่สำหรับเรียกเก็บเงิน ซึ่งช่วยลดความจำเป็นในการป้อนข้อมูลเดียวกันสองครั้ง หากต้องการที่อยู่สำหรับการเรียกเก็บเงินที่แตกต่างกัน ช่องป้อนข้อความที่อยู่สำหรับการเรียกเก็บเงินจะถูกเปิดใช้งาน และจะเป็นประโยชน์ในการแนะนำลูกค้าเกี่ยวกับตัวควบคุมที่เปิดใช้งานใหม่เหล่านี้ เพื่อการป้อนข้อมูลที่รวดเร็วขึ้น

ภาพเคลื่อนไหวของการเลือกที่จะใช้ที่อยู่การเรียกเก็บเงินที่กำหนดเอง โดยผลคือโฟกัสย้ายไปที่ตัวควบคุมการป้อนข้อมูลชื่อสำหรับเรียกเก็บเงิน ให้ปิดการซิงค์อัตโนมัติด้วยที่อยู่สำหรับการจัดส่ง

มีหลายสูตรที่ใช้ที่นี่ แต่สูตรที่ย้ายโฟกัสอยู่ที่คุณสมบัติ OnUncheck ของตัวควบคุม กล่องกาเครื่องหมาย:

SetFocus( BillingName )

ปุ่ม Tab สามารถใช้เพื่อย้ายโฟกัสได้อย่างรวดเร็วจากฟิลด์หนึ่งไปอีกฟิลด์หนึ่ง เพื่ออธิบายให้ดีขึ้น ปุ่ม Tab ไม่ใช้ในภาพเคลื่อนไหว

เมื่อต้องการสร้างตัวอย่างนี้:

  1. สร้างแอปใหม่
  2. เพิ่ม ตัวควบคุม ป้ายชื่อ ด้วยข้อความ "ที่อยู่สำหรับการจัดส่ง" "ชื่อ:", "ที่อยู่:", "ที่อยู่สำหรับการเรียกเก็บเงิน" "ชื่อ:" และ "ที่อยู่:" และจัดวางตามที่แสดงในภาพเคลื่อนไหว
  3. เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น ShippingName
  4. เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น ShippingAddress
  5. เพิ่ม ตัวควบคุม กล่องกาเครื่องหมาย และทำการเปลี่ยนชื่อเป็น SyncAddresses
  6. ตั้งค่าคุณสมบัติ Text ของตัวควบคุมนี้ไปที่สูตร "Use Shipping address as Billing address"
  7. เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น BillingName
  8. ตั้งค่าคุณสมบัติ Default บนตัวควบคุมนี้ไปที่สูตร ShippingName
  9. ตั้งค่าคุณสมบัติ DisplayMode บนตัวควบคุมนี้ไปที่สูตร If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit ) สิ่งนี้จะเปิดใช้งานหรือปิดใช้งานตัวควบคุมนี้โดยอัตโนมัติ ตามสถานะของตัวควบคุมกล่องกาเครื่องหมาย
  10. เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น 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. ในส่วนตรงกลางของหน้าจอ เพิ่มตัวควบคุม การป้อนข้อความ และตั้งชื่อ ชื่อStreet1Street2เมืองประเทศรัฐจังหวัดรหัสไปรษณีย์ และ โทรศัพท์ เพิ่มตัวควบคุม ป้ายชื่อ เหนือแต่ละรายการเพื่อระบุฟิลด์ คุณอาจต้องปรับขนาดส่วน หากไม่ยาวพอสำหรับตัวควบคุมทั้งหมด
  4. เพิ่มเครื่องหมายถูก ตัวควบคุม Icon ที่ด้านบนของหน้าจอ เหนือส่วนที่เลื่อนได้
  5. ตั้งค่าคุณสมบัติ OnSelect ของตัวควบคุมนี้ไปที่สูตร If( IsBlank( ... ที่ให้ไว้ด้านบน

โฟกัสเมื่อแสดงหน้าจอ

หมายเหตุ

แม้ว่าตัวอย่างนี้ดูเหมือนจะเป็นตัวควบคุม แก้ไขฟอร์ม น่าเสียดาย SetFocus ยังไม่รองรับโดยตัวควบคุมนั้น ตัวอย่างนี้ใช้หน้าจอแบบเลื่อนได้เพื่อโฮสต์ตัวควบคุมการป้อนข้อมูลแทน

คล้ายกับการเปิดเผยตัวควบคุมการป้อนข้อมูล เมื่อแสดงหน้าจอการป้อนข้อมูล จะเป็นประโยชน์ที่จะมุ่งเน้นตัวควบคุมการป้อนข้อมูลแรก เพื่อการป้อนข้อมูลที่รวดเร็วขึ้น

ภาพเคลื่อนไหวแสดงการเปรียบเทียบแบบเคียงข้างกันของการใช้ SetFocus กับการไม่ใช้มันเมื่อแสดงหน้าจอการป้อนข้อมูล

ในภาพเคลื่อนไหวนี้ หน้าจอการป้อนข้อมูลทางซ้ายไม่ได้ใช้งาน SetFocus เมื่อการแสดงไม่มีการมุ่งเน้นตัวควบคุมการป้อนข้อมูล ผู้ใช้ต้องแท็บ สัมผัส เมาส์ หรือใช้วิธีการอื่นเพื่อมุ่งเน้นฟิลด์ ชื่อ ก่อนที่ค่าจะพิมพ์ลงไปได้

ทางด้านขวาเรามีแอปเดียวกันกับคุณสมบัติ OnVisible ของหน้าจอการป้อนข้อมูลที่ตั้งค่าไปที่สูตรนี้:

SetFocus( Name )

สิ่งนี้ตั้งค่าโฟกัสไปที่ฟิลด์ ชื่อ โดยอัตโนมัติ ผู้ใช้สามารถเริ่มพิมพ์ และแท็บระหว่างฟิลด์ทันที โดยไม่จำเป็นต้องดำเนินการใดๆ มาก่อน

เมื่อต้องการสร้างตัวอย่างนี้:

  1. สร้างแอป "มุ่งเน้นปัญหาการตรวจสอบความถูกต้อง" ด้านบน
  2. บนหน้าจอนี้ ตั้งค่าคุณสมบัติ OnVisible บนตัวควบคุมนี้ไปที่สูตร SetFocus( Name )
  3. เพิ่มหน้าจอที่สอง
  4. เพิ่ม ตัวควบคุม ปุ่ม
  5. ตั้งค่าคุณสมบัติ OnSelect ของตัวควบคุมนี้ไปที่สูตร Navigate( Screen1 )
  6. ดูตัวอย่างแอปจากหน้าจอนี้ กดปุ่ม สูตร OnVisible จะถูกประเมิน และฟิลด์ ชื่อ จะอยู่ในโฟกัสโดยอัตโนมัติ