ฟังก์ชัน SetFocus
ใช้กับ: แอป Canvas แอปที่ขับเคลื่อนด้วยโมเดล
ย้ายโฟกัสป้อนเข้าไปยังตัวควบคุมที่ระบุ
Description
ฟังก์ชัน SetFocus ให้การควบคุมที่ข้อมูลป้อนเข้าโฟกัส การกดแป้นพิมพ์ของผู้ใช้นั้นจะได้รับโดยตัวควบคุมนั้น ทำให้พวกเขาสามารถพิมพ์ลงในตัวควบคุมการป้อนข้อความ หรือใช้ปุ่ม Enter เพื่อเลือกปุ่ม ผู้ใช้ยังสามารถใช้ปุ่ม Tab สัมผัส เมาส์ หรือท่าทางอื่นๆ เพื่อย้ายโฟกัสป้อนเข้าด้วยตนเอง พฤติกรรมของปุ่ม Tab ถูกควบคุมโดยคุณสมบัติ TabIndex
ใช้ฟังก์ชัน SetFocus เพื่อตั้งค่าโฟกัสเมื่อ (แต่ละตัวอย่างด้านล่าง):
- ตัวควบคุมการป้อนข้อมูลที่เปิดเผยหรือเปิดใช้งานใหม่ เพื่อให้คำแนะนำผู้ใช้เกี่ยวกับสิ่งที่จะเกิดขึ้นถัดไป และเพื่อการป้อนข้อมูลที่รวดเร็วยิ่งขึ้น
- ฟอร์มได้รับการตรวจสอบความถูกต้อง เพื่อมุ่งเน้นและแสดงตัวควบคุมการป้อนข้อมูลที่ละเมิดเพื่อวิธีการแก้ปัญหาที่รวดเร็ว
- หน้าจอจะปรากฏขึ้น เพื่อมุ่งเน้นตัวควบคุมการป้อนข้อมูลแรกด้วยคุณสมบัติ OnVisible ของ หน้าจอ
ตัวควบคุมที่มีโฟกัสอาจแตกต่างกันไปตามคุณสมบัติ FocusedBorderColor และ FocusedBorderThickness ในรูปแบบภาพ
ข้อจำกัด
SetFocus สามารถใช้ได้กับ:
- ปุ่มควบคุม
- ไอคอน การควบคุม
- การควบคุมภาพ
- ป้ายกำกับ การควบคุม
- การควบคุม TextInput
คุณไม่สามารถตั้งค่าโฟกัสไปยังตัวควบคุมที่อยู่ภายในตัวควบคุม แกลเลอรี ตัวควบคุม แก้ไขฟอร์ม หรือ Component SetFocus สามารถใช้กับตัวควบคุมในหน้าจอเลื่อนได้
คุณไม่สามารถตั้งโฟกัสการควบคุมที่อยู่ภายในการควบคุม Container
คุณสามารถตั้งค่าโฟกัสตัวควบคุมบนหน้าจอเดียวกับสูตรที่มีการติดต่อ SetFocus
การพยายามตั้งโฟกัสไปยังตัวควบคุมที่มีคุณสมบัติ DisplayMode ตั้งค่าเป็น ปิดใช้งาน ไม่มีผล โฟกัสจะยังคงอยู่ในตำแหน่งเดิม
บน Apple iOS แป้นพิมพ์ชั่วคราวจะปรากฏขึ้นโดยอัตโนมัติ หาก SetFocus ถูกริเริ่มโดยการดำเนินการของผู้ใช้โดยตรง ตัวอย่างเช่น การเรียกใช้จากคุณสมบัติ OnSelect ของปุ่มจะแสดงแป้นพิมพ์ชั่วคราว ในขณะที่การเรียกใช้จาก OnVisible ของหน้าจอจะไม่แสดง
คุณสามารถใช้ SetFocus ได้ใน สูตรลักษณะการทำงาน เท่านั้น
ไวยากรณ์
ตั้งค่าโฟกัส( การควบคุม )
- การควบคุม – จำเป็น ตัวควบคุมที่จะให้โฟกัสป้อนเข้า
ตัวอย่าง
มุ่งเน้นไปที่ตัวควบคุมการป้อนข้อมูลที่เปิดเผยหรือเปิดใช้งานใหม่
ตะกร้าสินค้าจำนวนมากอนุญาตให้ลูกค้าใช้ที่อยู่จัดส่งเป็นที่อยู่สำหรับเรียกเก็บเงิน ซึ่งช่วยลดความจำเป็นในการป้อนข้อมูลเดียวกันสองครั้ง หากต้องการที่อยู่สำหรับการเรียกเก็บเงินที่แตกต่างกัน ช่องป้อนข้อความที่อยู่สำหรับการเรียกเก็บเงินจะถูกเปิดใช้งาน และจะเป็นประโยชน์ในการแนะนำลูกค้าเกี่ยวกับตัวควบคุมที่เปิดใช้งานใหม่เหล่านี้ เพื่อการป้อนข้อมูลที่รวดเร็วขึ้น
มีหลายสูตรที่ใช้ที่นี่ แต่สูตรที่ย้ายโฟกัสอยู่ที่คุณสมบัติ OnUncheck ของตัวควบคุม กล่องกาเครื่องหมาย:
SetFocus( BillingName )
ปุ่ม Tab สามารถใช้เพื่อย้ายโฟกัสได้อย่างรวดเร็วจากฟิลด์หนึ่งไปอีกฟิลด์หนึ่ง เพื่ออธิบายให้ดีขึ้น ปุ่ม Tab ไม่ใช้ในภาพเคลื่อนไหว
เมื่อต้องการสร้างตัวอย่างนี้:
- สร้างแอปใหม่
- เพิ่ม ตัวควบคุม ป้ายชื่อ ด้วยข้อความ "ที่อยู่สำหรับการจัดส่ง" "ชื่อ:", "ที่อยู่:", "ที่อยู่สำหรับการเรียกเก็บเงิน" "ชื่อ:" และ "ที่อยู่:" และจัดวางตามที่แสดงในภาพเคลื่อนไหว
- เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น ShippingName
- เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น ShippingAddress
- เพิ่ม ตัวควบคุม กล่องกาเครื่องหมาย และทำการเปลี่ยนชื่อเป็น SyncAddresses
- ตั้งค่าคุณสมบัติ Text ของตัวควบคุมนี้ไปที่สูตร
"Use Shipping address as Billing address"
- เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น BillingName
- ตั้งค่าคุณสมบัติ Default บนตัวควบคุมนี้ไปที่สูตร
ShippingName
- ตั้งค่าคุณสมบัติ DisplayMode บนตัวควบคุมนี้ไปที่สูตร
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
สิ่งนี้จะเปิดใช้งานหรือปิดใช้งานตัวควบคุมนี้โดยอัตโนมัติ ตามสถานะของตัวควบคุมกล่องกาเครื่องหมาย - เพิ่ม ตัวควบคุม การป้อนข้อความ และทำการเปลี่ยนชื่อเป็น BillingAddress
- ตั้งค่าคุณสมบัติ Default บนตัวควบคุมนี้ไปที่สูตร
ShippingAddress
- ตั้งค่าคุณสมบัติ DisplayMode บนตัวควบคุมนี้ไปที่สูตร
If( SyncAddresses.Value, DisplayMode.View, DisplayMode.Edit )
สิ่งนี้จะเปิดใช้งานหรือปิดใช้งานตัวควบคุมนี้โดยอัตโนมัติ ตามสถานะของตัวควบคุมกล่องกาเครื่องหมาย - ตั้งค่าคุณสมบัติ Default ของกล่องกาเครื่องหมายไปที่สูตร
true
นี่จะเป็นการตั้งค่าเริ่มต้นที่อยู่สำหรับเรียกเก็บเงิน เพื่อใช้ค่าเดียวกันกับที่อยู่สำหรับการจัดส่ง - ตั้งค่าคุณสมบัติ OnCheck ของกล่องกาเครื่องหมายไปที่สูตร
Reset( BillingName ); Reset( BillingAddress )
หากผู้ใช้เลือกที่จะซิงค์ที่อยู่สำหรับการจัดส่งและสำหรับเรียกเก็บเงิน สิ่งนี้จะล้างข้อมูลป้อนเข้าของผู้ใช้ในฟิลด์ที่ที่อยู่สำหรับเรียกเก็บเงินที่อนุญาตให้คุณสมบัติ Default ในแต่ละรายการดึงค่าจากฟิลด์ที่อยู่สำหรับการจัดส่งที่สอดคล้องกัน - ตั้งค่าคุณสมบัติ 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 )
)
เมื่อต้องการสร้างตัวอย่างนี้:
- สร้างแอปว่างสำหรับโทรศัพท์ใหม่
- จากเมนู แทรก ให้เลือก หน้าจอใหม่ แล้วเลือก เลื่อนได้
- ในส่วนตรงกลางของหน้าจอ เพิ่มตัวควบคุม การป้อนข้อความ และตั้งชื่อ ชื่อ Street1 Street2 เมือง ประเทศ รัฐจังหวัด รหัสไปรษณีย์ และ โทรศัพท์ เพิ่มตัวควบคุม ป้ายชื่อ เหนือแต่ละรายการเพื่อระบุฟิลด์ คุณอาจต้องปรับขนาดส่วน หากไม่ยาวพอสำหรับตัวควบคุมทั้งหมด
- เพิ่มเครื่องหมายถูก ตัวควบคุม Icon ที่ด้านบนของหน้าจอ เหนือส่วนที่เลื่อนได้
- ตั้งค่าคุณสมบัติ OnSelect ของตัวควบคุมนี้ไปที่สูตร
If( IsBlank( ...
ที่ให้ไว้ด้านบน
โฟกัสเมื่อแสดงหน้าจอ
หมายเหตุ
แม้ว่าตัวอย่างนี้ดูเหมือนจะเป็นตัวควบคุม Edit form น่าเสียดาย SetFocus ยังไม่รองรับโดยตัวควบคุมนั้น ตัวอย่างนี้ใช้หน้าจอแบบเลื่อนได้เพื่อโฮสต์ตัวควบคุมการป้อนข้อมูลแทน
คล้ายกับการเปิดเผยตัวควบคุมการป้อนข้อมูล เมื่อแสดงหน้าจอการป้อนข้อมูล จะเป็นประโยชน์ที่จะมุ่งเน้นตัวควบคุมการป้อนข้อมูลแรก เพื่อการป้อนข้อมูลที่รวดเร็วขึ้น
ในภาพเคลื่อนไหวนี้ หน้าจอการป้อนข้อมูลทางซ้ายไม่ได้ใช้งาน SetFocus เมื่อการแสดงไม่มีการมุ่งเน้นตัวควบคุมการป้อนข้อมูล ผู้ใช้ต้องแท็บ สัมผัส เมาส์ หรือใช้วิธีการอื่นเพื่อมุ่งเน้นฟิลด์ ชื่อ ก่อนที่ค่าจะพิมพ์ลงไปได้
ทางด้านขวาเรามีแอปเดียวกันกับคุณสมบัติ OnVisible ของหน้าจอการป้อนข้อมูลที่ตั้งค่าไปที่สูตรนี้:
SetFocus( Name )
สิ่งนี้ตั้งค่าโฟกัสไปที่ฟิลด์ ชื่อ โดยอัตโนมัติ ผู้ใช้สามารถเริ่มพิมพ์ และแท็บระหว่างฟิลด์ทันที โดยไม่จำเป็นต้องดำเนินการใดๆ มาก่อน
เมื่อต้องการสร้างตัวอย่างนี้:
- สร้างแอป "มุ่งเน้นปัญหาการตรวจสอบความถูกต้อง" ด้านบน
- บนหน้าจอนี้ ตั้งค่าคุณสมบัติ OnVisible บนตัวควบคุมนี้ไปที่สูตร
SetFocus( Name )
- เพิ่มหน้าจอที่สอง
- เพิ่ม ตัวควบคุม ปุ่ม
- ตั้งค่าคุณสมบัติ OnSelect ของตัวควบคุมนี้ไปที่สูตร
Navigate( Screen1 )
- ดูตัวอย่างแอปจากหน้าจอนี้ กดปุ่ม สูตร OnVisible จะถูกประเมิน และฟิลด์ ชื่อ จะอยู่ในโฟกัสโดยอัตโนมัติ