หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
หมายเหตุ
Microsoft Power Fx เป็นชื่อใหม่สำหรับภาษาสูตรของแอปพื้นที่ทำงาน บทความเหล่านี้กําลังอยู่ระหว่างดําเนินการอยู่ในขณะที่ Microsoft แยกภาษาจากแอปพื้นที่ทํางาน รวมกับผลิตภัณฑ์ Microsoft Power Platform อื่น ๆ และทําให้พร้อมใช้งานในรูปแบบ โอเพนซอร์ส (Open Source) เริ่มต้นด้วย ภาพรวมของ Microsoft Power Fx สำหรับการแนะนำภาษา
เรียนรู้ว่าตัวแปร Power Fx แตกต่างจากตัวแปรในเครื่องมือเช่น Visual Basic หรือ JavaScript อย่างไร และเมื่อสูตรเป็นตัวเลือกที่ดีกว่า บทความนี้อธิบายวิธีการเลือกตัวแปรส่วนกลาง ตัวแปรบริบท หรือคอลเลกชันเพื่อจัดการค่าและสถานะแอป
ในเครื่องมืออื่น คุณอาจดําเนินการคํานวณอย่างชัดเจนและจัดเก็บผลลัพธ์ไว้ในตัวแปร อย่างไรก็ตาม Power Fx และ Excel จะคำนวณสูตรใหม่โดยอัตโนมัติเนื่องจากการเปลี่ยนแปลงข้อมูลป้อนเข้า ดังนั้นคุณจึงมักไม่จำเป็นต้องสร้างและอัปเดตตัวแปร เมื่อใช้วิธีนี้ คุณสามารถสร้าง ทำความเข้าใจ และรักษาแอปของคุณได้อย่างง่ายดาย
ในบางกรณี คุณจําเป็นต้องใช้ตัวแปรใน Power Fx Power Fx ขยายแบบจําลองของ Excel โดยการเพิ่มสูตรลักษณะการทํางาน สูตรเหล่านี้จะทำงานเมื่อ ตัวอย่างเช่น ผู้ใช้เลือกปุ่ม ภายในสูตรลักษณะการทํางาน มักจะเป็นประโยชน์ในการตั้งค่าตัวแปรเพื่อใช้ในสูตรอื่น ๆ
โดยทั่วไป ให้หลีกเลี่ยงการใช้ตัวแปร แต่ในบางครั้ง เฉพาะตัวแปรเท่านั้นที่สามารถเปิดใช้งานประสบการณ์ที่คุณต้องการ คุณสร้างและพิมพ์ตัวแปรโดยนัยเมื่อปรากฏในฟังก์ชันที่ตั้งค่า
แปล Excel ลงใน Power Fx
Excel
มาลองดูวิธีที่ Excel ทำงานกัน เซลล์สามารถมีค่า เช่น ตัวเลขหรือสตริง หรือสูตรที่ยึดตามค่าของเซลล์อื่น หลังจากที่ผู้ใช้ใส่ค่าอื่นลงในเซลล์ Excel จะคำนวณสูตรที่ขึ้นอยู่กับค่าใหม่อีกครั้งโดยอัตโนมัติ คุณไม่ต้องเขียนโปรแกรมเพื่อเปิดใช้งานลักษณะการทำงานนี้
ในตัวอย่างต่อไปนี้เซลล์ A3 ถูกตั้งค่าเป็นสูตร A1 + A2 ถ้า A1 หรือ A2 มีการเปลี่ยนแปลง A3 จะคำนวณใหม่โดยอัตโนมัติเพื่อสะท้อนการเปลี่ยนแปลง พฤติกรรมนี้ไม่จำเป็นต้องมีการเขียนโค้ดนอกสูตร
Excel ไม่มีตัวแปร ค่าของเซลล์ที่มีสูตรจะเปลี่ยนตามการป้อนเข้า แต่ไม่มีวิธีจดจำผลลัพธ์ของสูตร และจัดเก็บไว้ในเซลล์หรือที่ไหนก็ตาม ถ้าคุณเปลี่ยนค่าของเซลล์ สเปรดชีตทั้งหมดอาจเปลี่ยนแปลง และค่าที่คํานวณไว้ก่อนหน้านี้จะสูญหาย ผู้ใช้ Excel สามารถคัดลอกและวางเซลล์ แต่ทำภายใต้ตัวควบคุมด้วยตนเองของผู้ใช้ และไม่สามารถใช้ได้กับสูตร
Power Fx
ตรรกะที่คุณสร้างใน Power Fx ทำงานเหมือนกับ Excel แทนที่จะอัปเดตเซลล์ คุณสามารถเพิ่มตัวควบคุมได้ทุกที่ที่คุณต้องการบนหน้าจอ และตั้งชื่อสำหรับใช้ในสูตร
ตัวอย่างเช่น ใน Power Apps คุณสามารถจำลองลักษณะการทำงานของ Excel ในแอปโดยการเพิ่มการควบคุม Label ชื่อ Label1, และสอง การควบคุม Text input ชื่อ TextInput1 และ TextInput2 ถ้าคุณตั้งค่าคุณสมบัติ Text ของ Label1 เป็น TextInput1.Text + TextInput2.Text ระบบจะแสดงผลรวมของตัวเลขใดก็ตามที่อยู่ใน TextInput1 และ TextInput2 โดยอัตโนมัติ
โปรดสังเกตว่า มีการเลือกตัวควบคุม Label1 ซึ่งแสดงสูตร ข้อความ ในแถบสูตรที่ด้านบนของหน้าจอ ที่นี่คุณจะพบสูตร TextInput1.Text + TextInput2.Text สูตรนี้สร้างการขึ้นต่อกันระหว่างตัวควบคุมเหล่านี้ เหมือนกับการขึ้นต่อกันที่ถูกสร้างขึ้นระหว่างเซลล์ในเวิร์กบุ๊ก Excel มาเปลี่ยนค่าของ TextInput1:
สูตรสําหรับ Label1 จะถูกคํานวณใหม่โดยอัตโนมัติ เพื่อแสดงค่าใหม่
ใน Power Fx คุณสามารถใช้สูตรในการกำหนดไม่เฉพาะค่าหลักของตัวควบคุม แต่รวมถึงคุณสมบัติ เช่น การจัดรูปแบบ ในตัวอย่างถัดไป สูตรสําหรับคุณสมบัติ สี ของป้ายชื่อจะแสดงค่าลบเป็นสีแดงโดยอัตโนมัติ ฟังก์ชัน If ควรมีลักษณะที่คุ้นเคยจาก Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
คุณสามารถใช้สูตรสำหรับสถานการณ์ที่หลากหลาย:
- ด้วยการใช้ GPS ของอุปกรณ์ของคุณ ตัวควบคุมแผนที่สามารถแสดงตำแหน่งที่ตั้งปัจจุบันของคุณด้วยสูตรที่ใช้ Location.Latitude และ Location.Longitude เมื่อคุณเลื่อน แผนที่จะติดตามตำแหน่งที่ตั้งของคุณโดยอัตโนมัติ
- ผู้ใช้อื่นสามารถอัปเดต แหล่งข้อมูล ตัวอย่างเช่น ผู้อื่นในทีมของคุณอาจอัปเดตรายการในรายการ SharePoint เมื่อคุณรีเฟรชแหล่งข้อมูล สูตรที่ขึ้นต่อกันจะคํานวณใหม่โดยอัตโนมัติเพื่อแสดงข้อมูลที่อัปเดต ตัวอย่างเพิ่มเติม คุณอาจตั้งค่าคุณสมบัติ รายการ ของแกลเลอรีเป็นสูตร Filter( SharePointList ) ซึ่งจะแสดงชุด ระเบียนที่กรองใหม่โดยอัตโนมัติ
ประโยชน์ของสูตร Power Fx
การใช้สูตรเพื่อสร้างแอปมีข้อดีหลายอย่าง:
- ถ้าคุณรู้จัก Excel คุณจะรู้จัก Power Fx ภาษาโมเดลและสูตรเป็นแบบเดียวกัน
- ถ้าคุณใช้เครื่องมือการเขียนโปรแกรมอื่นๆ ให้พิจารณาว่าคุณจําเป็นต้องใช้โค้ดมากเพียงใดในตัวอย่างเหล่านี้ ใน Visual Basic คุณอาจจำเป็นต้องเขียนตัวจัดการเหตุการณ์สำหรับเหตุการณ์การเปลี่ยนแปลงบนตัวควบคุม การป้อนข้อความ แต่ละตัว โค้ดในการดําเนินการคํานวณในตัวจัดการเหตุการณ์แต่ละอย่างเหล่านี้ซ้ําซ้อนและไม่สามารถซิงค์ได้ หรือคุณอาจจําเป็นต้องเขียน Subroutine ทั่วไป ใน Power Fx คุณทํางานทั้งหมดนั้นด้วยสูตรหนึ่งบรรทัดสูตรเดียว
- เมื่อต้องการทําความเข้าใจว่าข้อความของ Label1 มาจากไหน คุณทราบดีว่าจะต้องค้นหาที่ใด: สูตรในคุณสมบัติ ข้อความ ไม่มีวิธีอื่นที่จะส่งผลต่อข้อความของตัวควบคุมนี้ ในเครื่องมือการเขียนโปรแกรมดั้งเดิม ตัวจัดการเหตุการณ์หรือ Subroutine สามารถเปลี่ยนค่าของป้ายชื่อจากที่ใดก็ได้ในโปรแกรม วิธีนี้อาจทําให้ยากต่อการติดตามเวลาและตําแหน่งที่ตัวแปรถูกเปลี่ยนแปลง
- ถ้าผู้ใช้เปลี่ยนตัวควบคุมแถบเลื่อน แล้วเปลี่ยนใจ พวกเขาสามารถเปลี่ยนแถบเลื่อนกลับมาเป็นค่าเดิมได้ ซึ่งเหมือนกับไม่มีอะไรเปลี่ยนแปลง: แอปแสดงค่าตัวควบคุมเดียวกันกับก่อนหน้านี้ ไม่จำเป็นต้องทดลองและถามว่า "เกิดอะไรขึ้นถ้า" แบบเดียวกับใน Excel
โดยทั่วไป ถ้าคุณสามารถทําให้มีผลได้โดยใช้สูตร คุณจะทําได้ดีกว่า ปล่อยให้โปรแกรมสูตรใน Power Fx ทำงานให้คุณ
ทราบว่าจะใช้ตัวแปรเมื่อไหร่
ลองเปลี่ยนตัวเพิ่มตัวอย่างของเราให้ดำเนินการแบบเครื่องการเพิ่มแบบเก่าด้วยผลรวมสะสม ถ้าคุณเลือกปุ่ม เพิ่ม ให้คุณเพิ่มตัวเลขลงในผลรวมสะสม ถ้าคุณเลือกปุ่ม ล้าง คุณจะตั้งค่าผลรวมสะสมเป็นศูนย์ใหม่
| แสดง | รายละเอียด |
|---|---|
|
เมื่อแอปเริ่มทำงาน ผลรวมการทำงานคือ 0 จุดสีแดงแสดงถึงนิ้วของผู้ใช้ในกล่องป้อนข้อความซึ่งผู้ใช้กรอก 77 |
|
ผู้ใช้เลือกปุ่ม เพิ่ม |
|
77 จะถูกเพิ่มไปยังผลรวมที่ผลรวมการทำงาน ผู้ใช้เลือกปุ่ม เพิ่ม อีกครั้ง |
|
77 จะถูกเพิ่มเข้าไปในผลรวมการทำงาน อีกครั้งส่งผลให้ได้ผลเป็น 154 ผู้ใช้เลือกปุ่ม ล้าง |
|
ผลรวมการทำงานจะถูกรีเซ็ทเป็น 0 |
เครื่องมือการเพิ่มของเราใช้บางสิ่งที่ไม่มีอยู่ใน Excel: ปุ่ม ในแอปนี้ คุณไม่สามารถใช้เฉพาะสูตรในการคำนวณผลรวมสะสม เนื่องจากค่าจะขึ้นอยู่กับชุดการดำเนินการที่ผู้ใช้จะใช้ แต่คุณต้องบันทึกและอัปเดตผลรวมสะสมด้วยตนเอง เครื่องมือการเขียนโปรแกรมส่วนใหญ่จัดเก็บข้อมูลนี้ใน ตัวแปร
บางครั้งคุณจำเป็นต้องใช้ตัวแปรเพื่อให้แอปของคุณทำงานตามที่คุณต้องการ แต่วิธีนี้มาพร้อมกับคำเตือน:
- คุณต้องอัปเดตผลรวมสะสมด้วยตนเอง การคำนวณใหม่อัตโนมัติจะไม่ทำงานสำหรับคุณ
- คุณไม่สามารถคํานวณผลรวมสะสมตามค่าของตัวควบคุมอื่น ๆ ได้ โดยจะขึ้นอยู่กับจำนวนครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม และค่าที่อยู่ในตัวควบคุมการป้อนขอความในแต่ละครั้ง ผู้ใช้ใส่ 77 และเลือก เพิ่ม สองครั้ง หรือระบุ 24 และ 130 สำหรับส่วนเพิ่มเติมแต่ละรายการใช่หรือไม่ คุณไม่สามารถแยกแยะความแตกต่างได้เมื่อยอดรวมถึง 154
- การเปลี่ยนแปลงของผลรวมอาจมาจากหลายเส้นทาง ในตัวอย่างนี้ ทั้งปุ่ม เพิ่ม และ ล้าง สามารถอัปเดตผลรวมได้ ถ้าแอปไม่ทำงานตามที่คุณคิด ปุ่มใดที่เป็นสาเหตุของปัญหา
ใช้ตัวแปรส่วนกลาง
เมื่อต้องการเพิ่มเครื่องการเพิ่มของคุณ คุณจําเป็นต้องมีตัวแปรในการเก็บผลรวมสะสม ตัวแปรที่ง่ายที่สุดเมื่อต้องการทำงานใน Power Fx คือ ตัวแปรส่วนกลาง
วิธีที่ตัวแปรส่วนกลางทำงาน:
- ใช้ฟังก์ชัน Set เพื่อตั้งค่าของตัวแปรส่วนกลาง Set( MyVar, 1 ) ตั้งค่าตัวแปรส่วนกลาง MyVar เป็นค่า 1
- ใช้ตัวแปรส่วนกลางโดยการอ้างอิงชื่อที่คุณใช้กับฟังก์ชัน Set ในกรณีนี้ MyVar จะคืนค่า 1
- ตัวแปรส่วนกลางสามารถเก็บค่า รวมถึงสตริง ตัวเลข เรกคอร์ด และ ตาราง
ลองสร้างเครื่องการเพิ่มใหม่โดยใช้ตัวแปรส่วนกลาง:
เพิ่มตัวควบคุม text input ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
ตั้งค่า (RunningTotal, RunningTotal + TextInput1.Text)
การที่สูตรนี้มีขึ้นทำให้ RunningTotal เป็นตัวแปรส่วนกลางที่เก็บตัวเลข เนื่องจากตัวดำเนินการ + คุณสามารถอ้างอิง RunningTotal ได้ทุกที่ในแอป เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ RunningTotal มีค่าเริ่มต้นเป็น ว่างเปล่า
ครั้งแรกที่ผู้ใช้เลือกปุ่ม เพิ่ม และ ตั้งค่า ทำงาน RunningTotal ถูกกำหนดเป็นค่า RunningTotal + TextInput1
เมื่อต้องการตั้งค่าผลรวมสะสมเป็น 0 ทุกครั้งที่ผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
Set( RunningTotal, 0 )
เพิ่มตัวควบคุม ป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็น ผลรวมสะสม
สูตรนี้จะคํานวณใหม่โดยอัตโนมัติและแสดงค่า ผลรวมสะสม เนื่องจากมีการเปลี่ยนแปลงตามปุ่มที่ผู้ใช้เลือก
แสดงตัวอย่างแอป และคุณมีเครื่องการเพิ่มตามที่อธิบายไว้ก่อนหน้านี้ ใส่ตัวเลขในกล่องข้อความ และกดปุ่ม เพิ่ม สองสามครั้ง เมื่อพร้อมแล้ว ให้กลับไปยังประสบการณ์การเขียนโดยใช้แป้น Esc
เมื่อต้องการแสดงค่าของตัวแปรส่วนกลาง ให้เลือกเมนู ไฟล์ และเลือก ตัวแปร ในบานหน้าต่างด้านซ้าย
เมื่อต้องการแสดงตำแหน่งที่มีการกำหนดและใช้ตัวแปร ให้เลือก
ชนิดของตัวแปร
Power Fx มีตัวแปรสองชนิด:
| ประเภทตัวแปร | Scope | รายละเอียด | ฟังก์ชั่นที่สร้างขึ้น |
|---|---|---|---|
| ตัวแปรส่วนกลาง | แอป | ใช้งานง่ายที่สุด จัดเก็บตัวเลข สตริงข้อความ บูลีน ระเบียน ตาราง และอื่นๆ คุณสามารถอ้างอิงได้จากทุกที่ในแอป | ชุด |
| คอลเลกชัน | แอป | จัดเก็บตารางที่คุณสามารถอ้างอิงจากทุกที่ในแอป คุณสามารถปรับเปลี่ยนเนื้อหาของตารางแทนที่จะเป็นการตั้งค่าทั้งหมด คุณสามารถบันทึกไปยังอุปกรณ์ในเครื่องเพื่อใช้งานในภายหลัง |
เก็บรวบรวม เคลียร์คอลเล็คท์ |
เมื่อคุณใช้ Power Apps คุณจะเห็นตัวแปรชนิดที่สาม:
| ประเภทตัวแปร | Scope | รายละเอียด | ฟังก์ชั่นที่สร้างขึ้น |
|---|---|---|---|
| ตัวแปรบริบท | หน้าจอ | เหมาะสำหรับการส่งค่าไปยังหน้าจอ เหมือนกับพารามิเตอร์ของกระบวนการในภาษาอื่น ๆ คุณสามารถอ้างอิงจากหน้าจอเดียวเท่านั้น |
อัปเดตบริบท นำทาง |
สร้างและลบตัวแปร
คุณสร้างตัวแปรทั้งหมดโดยปริยายเมื่อปรากฏในฟังก์ชัน Set, UpdateContext, Navigate, Collect หรือ ClearCollect เพื่อประกาศตัวแปรและชนิดของตัวแปร เพียงแค่รวมไว้ในฟังก์ชันเหล่านี้ที่ใดก็ได้ในแอปของคุณ ฟังก์ชั่นเหล่านี้ไม่มีการสร้างตัวแปร มีแค่เติมตัวแปรด้วยค่าเท่านั้น คุณไม่ต้องประกาศตัวแปรอย่างชัดเจน เหมือนกับในเครื่องมือการเขียนโปรแกรมอื่น และการพิมพ์ทั้งหมดนั้นมีค่าจากการใช้งาน
ตัวอย่างเช่น คุณอาจมีตัวควบคุมปุ่มที่มีสูตร OnSelect เท่ากับ Set(X, 1) สูตรนี้สร้าง X เป็นตัวแปรที่เป็นประเภทตัวเลข คุณสามารถใช้ X ในสูตรเป็นตัวเลขและตัวแปรนั้นมีค่าเป็น ว่างเปล่า หลังจากที่คุณเปิดแอป แต่ก่อนที่คุณจะเลือกปุ่ม เมื่อคุณเลือกปุ่ม คุณจะให้ค่า X เป็น 1
ถ้าคุณเพิ่มอีกปุ่มหนึ่ง และตั้งค่าคุณสมบัติ OnSelect เป็น Set( X, "Hello" ), ข้อผิดพลาดเกิดขึ้นเนื่องจากชนิด (สตริงข้อความ) ไม่ตรงกับชนิดใน ชุด ก่อนหน้า (ตัวเลข) คำจำกัดความโดยนัยของตัวแปรทั้งหมดจะต้องมีประเภทตรงกัน อีกครั้ง สิ่งทั้งหมดนี้เกิดขึ้นเนื่องจากคุณได้กล่าวถึง X ในสูตร ไม่ใช่เนื่องจากสูตรใด ๆ เหล่านั้นเรียกใช้งานจริง
คุณลบตัวแปรโดยลบฟังก์ชั่น ตั้งค่าUpdateContextนำทางรวบรวม หรือ ClearCollect ทั้งหมดที่สร้างตัวแปรโดยปริยาย หากไม่มีฟังก์ชันเหล่านี้ตัวแปรจะไม่มีอยู่ คุณยังต้องลบการอ้างอิงใดๆ ไปยังตัวแปร เนื่องจากเป็นสาเหตุให้เกิดข้อผิดพลาด
อายุการใช้งานตัวแปรและค่าเริ่มต้น
แอปจะเก็บตัวแปรทั้งหมดในหน่วยความจําขณะที่ทํางาน หลังจากที่แอปปิด ค่าที่ถูกเก็บไว้ในตัวแปรจะสูญหาย
คุณสามารถเก็บเนื้อหาของตัวแปรในแหล่งข้อมูล โดยใช้ฟังก์ชั่น Patch หรือ รวบรวม คุณยังสามารถจัดเก็บค่าในคอลเล็กชันบนอุปกรณ์โดยใช้ฟังก์ชัน บันทึกข้อมูล
เมื่อผู้ใช้เปิดแอป ตัวแปรทั้งหมดมีค่าเริ่มต้นเป็น ว่างเปล่า
อ่านตัวแปร
ใช้ชื่อของตัวแปรเพื่ออ่านค่า ตัวอย่างเช่น คุณสามารถกำหนดตัวแปรด้วยสูตรนี้:
Set( Radius, 12 )
จากนั้น คุณสามารถใช้ รัศมี ที่ใดก็ได้ที่คุณสามารถใช้ตัวเลข และแทนที่ด้วย 12:
Pi() * Power( Radius, 2 )
หากคุณให้ตัวแปรบริบทชื่อเดียวกันกับตัวแปรส่วนกลางหรือคอลเล็กชัน ตัวแปรบริบทจะมีความสำคัญกว่า อย่างไรก็ตาม คุณยังสามารถอ้างอิงตัวแปรส่วนกลางหรือคอลเลกชัน ถ้าคุณใช้ ตัวดำเนินการขจัดความคลุมเครือ[@Radius]
ใช้ตัวแปรบริบท (Power Apps เท่านั้น)
นี่คือวิธีการสร้างเครื่องการเพิ่มโดยใช้ตัวแปรบริบทแทนที่จะเป็นตัวแปรส่วนกลาง
วิธีที่ตัวแปรบริบททำงาน:
- คุณสร้างและตั้งค่าตัวแปรบริบทโดยใช้ฟังก์ชัน UpdateContext หรือ Navigate เมื่อแอปเริ่มต้น ตัวแปรบริบททั้งหมดมีค่าเริ่มต้นเป็น ว่างเปล่า
- คุณอัปเดตตัวแปรบริบทด้วยเรกคอร์ด ในเครื่องมือการเขียนโปรแกรมอื่น คุณมักใช้ "=" สำหรับการกำหนด แบบเดียวกับใน "x = 1" สำหรับตัวแปรบริบท ให้ใช้ { x: 1 } แทน เมื่อคุณใช้ตัวแปรบริบท ให้ใช้ชื่อของโดยตรงโดยไม่มีไวยากรณ์ของเรกคอร์ด
- คุณยังสามารถตั้งค่าตัวแปรบริบทเมื่อคุณใช้ฟังก์ชัน Navigate บนหน้าจอ ถ้าคุณคิดว่าหน้าจอเป็นกระบวนการหรือ Subroutine ประเภทหนึ่ง วิธีการนี้เหมือนกับพารามิเตอร์ที่ส่งผ่านเครื่องมือการเขียนโปรแกรมอื่น ๆ
- ข้อยกเว้นสำหรับ Navigate ตัวแปรบริบทจะถูกจำกัดให้อยู่ในบริบทของหน้าจอเดียว ซึ่งเป็นที่มาของชื่อของพวกเขา คุณไม่สามารถใช้ หรือตั้งค่าได้จากภายนอกบริบทนี้
- ตัวแปรบริบทสามารถเก็บค่าใดก็ได้ รวมถึงสตริง ตัวเลข เรกคอร์ด และ ตาราง
ลองสร้างเครื่องมือการเพิ่มของเราโดยใช้ตัวแปรบริบท
เพิ่มตัวควบคุม text input ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
อัพเดตคอนเท็กซ์( { RunningTotal: RunningTotal + TextInput1.Text } -
การที่สูตรนี้มีขึ้นทำให้ RunningTotal เป็นตัวแปรบริบทที่เก็บตัวเลข เนื่องจากตัวดำเนินการ + คุณสามารถอ้างอิง RunningTotal ได้ทุกที่ในหน้าจอนี้ เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ RunningTotal มีค่าเริ่มต้นเป็น ว่างเปล่า
ครั้งแรกที่ผู้ใช้เลือกปุ่ม เพิ่ม และ UpdateContext ทำงาน RunningTotal ถูกกำหนดเป็นค่า RunningTotal + TextInput1
เมื่อต้องการตั้งค่าผลรวมสะสมเป็น 0 ทุกครั้งที่ผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
UpdateContext( { RunningTotal: 0 } )
ใช้ UpdateContext กับสูตร UpdateContext( { RunningTotal: 0 } ) อีกครั้ง
เพิ่มตัวควบคุม ป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็น ผลรวมสะสม
สูตรนี้จะคํานวณใหม่โดยอัตโนมัติและแสดงค่า ผลรวมสะสม เนื่องจากมีการเปลี่ยนแปลงตามปุ่มที่ผู้ใช้เลือก
แสดงตัวอย่างแอป และคุณมีเครื่องการเพิ่มของคุณตามที่อธิบายไว้ก่อนหน้านี้ ใส่ตัวเลขในกล่องข้อความ และกดปุ่ม เพิ่ม สองสามครั้ง เมื่อพร้อมแล้ว ให้กลับไปยังประสบการณ์การเขียนโดยใช้แป้น Esc
คุณสามารถตั้งค่าค่าของตัวแปรบริบทขณะนำทางไปยังหน้าจอ เทคนิคนี้มีประโยชน์สําหรับการส่ง "บริบท" หรือ "พารามิเตอร์" จากหน้าจอหนึ่งไปยังอีกหน้าจอหนึ่ง เพื่อสาธิตเทคนิคนี้ ให้ใส่หน้าจอ ใส่ปุ่ม และตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
Navigate( Screen1, None, { RunningTotal: -1000 } )
กดปุ่ม Alt ค้างไว้ในขณะที่คุณเลือกปุ่มนี้เพื่อแสดง Screen1 และตั้งค่าตัวแปรบริบท RunningTotal เป็น -1000
เมื่อต้องการแสดงค่าของตัวแปรบริบท ให้เลือกเมนู ไฟล์ และเลือก ตัวแปร ในบานหน้าต่างด้านซ้าย
เลือกตัวแปรบริบทเพื่อดูตําแหน่งที่กําหนดและใช้
ใช้คอลเลคชัน
สุดท้าย มาลองดูการสร้างเครื่องมือการเพิ่มของเราด้วยคอลเลกชัน เนื่องจากคอลเลกชันเก็บตารางที่คุณสามารถปรับเปลี่ยนได้อย่างง่ายดาย เครื่องการเพิ่มนี้จะเก็บ "เทปกระดาษ" ของแต่ละค่าขณะที่คุณป้อนเข้าไป
วิธีที่คอลเลกชันทำงาน:
- ใช้ฟังก์ชัน ClearCollect เพื่อสร้างและตั้งค่าคอลเลกชัน คุณสามารถใช้ฟังก์ชัน Collect แทน แต่จําเป็นต้องใช้ตัวแปรอื่นแทนการแทนที่ตัวแปรเก่า
- คอลเลกชันเป็นแหล่งข้อมูลประเภทหนึ่ง และตาราง เมื่อต้องการเข้าถึงค่าเดียวในคอลเลกชัน ให้ใช้ฟังก์ชัน อันดับแรก และแยกเขตข้อมูลหนึ่งออกจากระเบียนผลลัพธ์ ถ้าคุณใช้ค่าเดียวกับ ClearCollect ค่านี้คือเขตข้อมูล ค่า ตามตัวอย่างนี้:
First(VariableName).Value
มาลองสร้างเครื่องการเพิ่มของเราใหม่โดยใช้คอลเลกชัน:
เพิ่มการควบคุม การนำเข้าข้อความ ที่ชื่อว่า TextInput1 และปุ่มสองปุ่มที่ชื่อว่า Button1 และ Button2
ตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม1 เป็น "เพิ่ม" และตั้งค่าคุณสมบัติ ข้อความ ของ ปุ่ม2 เป็น "ล้าง"
เมื่อต้องการอัปเดตผลรวมสะสมทุกครั้งที่ผู้ใช้เลือกปุ่ม เพิ่ม ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้
Collect( PaperTape, TextInput1.Text )
การที่สูตรนี้มีขึ้นทำให้ PaperTape เป็นคอลเลกชันที่เก็บตารางสตริงข้อความแบบคอลัมน์เดียว คุณสามารถอ้างอิง PaperTape ได้ทุกที่ในแอปนี้ เมื่อใดก็ตามที่ผู้ใช้เปิดแอปนี้ PaperTape เป็นตารางที่ว่างเปล่า
เมื่อสูตรนี้ทำงาน จะเพิ่มค่าใหม่ลงในตอนท้ายของคอลเลกชัน เนื่องจากคุณกําลังเพิ่มค่าเดียว Collect จะวางค่าลงในตารางแบบคอลัมน์เดียวโดยอัตโนมัติ และชื่อของคอลัมน์คือ ค่า ซึ่งคุณใช้ในภายหลัง
เมื่อต้องการล้างเทปกระดาษ เมื่อผู้ใช้เลือกปุ่ม ล้าง ให้ตั้งค่าคุณสมบัติ OnSelect เป็นสูตรนี้:
Clear( PaperTape )
เมื่อต้องการแสดงผลรวมสะสม ให้เพิ่มป้ายชื่อ และตั้งค่าคุณสมบัติ ข้อความ เป็นสูตรนี้:
Sum( PaperTape, Value )
เมื่อต้องการเรียกใช้เครื่องการเพิ่ม ให้กด F5 เพื่อเปิดการแสดงตัวอย่าง ใส่ตัวเลขในตัวควบคุม text input และเลือกปุ่ม
เมื่อต้องการกลับไปยังพื้นที่ทํางานเริ่มต้น ให้กดแป้น Esc
เมื่อต้องการแสดงเทปกระดาษ ให้แทรกตัวควบคุม ตารางข้อมูล และตั้งค่าคุณสมบัติ รายการ เป็นสูตรนี้:
PaperTape
ในบานหน้าต่างด้านขวา ให้เลือก แก้ไขฟิลด์ จากนั้นเลือก เพิ่มฟิลด์ เลือกคอลัมน์ ค่า จากนั้นเลือก เพิ่ม เพื่อแสดง
เมื่อต้องการดูค่าในคอลเลกชันของคุณ ให้เลือก คอลเลกชัน บนเมนู ไฟล์
เมื่อต้องการจัดเก็บและเรียกใช้คอลเลกชันของคุณ ให้เพิ่มตัวควบคุมปุ่มเพิ่มเติมสองตัว และตั้งค่าคุณสมบัติ ข้อความ เป็น โหลด และ บันทึก ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม โหลด เป็นสูตรดังนี้:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
คุณจำเป็นต้องล้างคอลเลกชันก่อน เนื่องจาก LoadData จะผนวกค่าที่จัดเก็บไว้ในตอนท้ายของคอลเลกชัน
ตั้งค่าคุณสมบัติ OnSelect ของปุ่ม บันทึก เป็นสูตรนี้:
SaveData( PaperTape, "StoredPaperTape" )
แสดงตัวอย่างอีกครั้งโดยการกดปุ่ม F5 ใส่ตัวเลขในตัวควบคุมการป้อนข้อความ และเลือกปุ่ม เลือกปุ่ม บันทึก ปิดและโหลดแอปใหม่ และเลือกปุ่ม โหลด เพื่อโหลดคอลเลกชันของคุณใหม่