Control Array
Control array เป็นตัว control หลายตัวที่มีชื่อแประเภทข้อมูลเดียวกัน และใช้ event procedure ร่วมกัน โดยแต่ละ element ใน array สามารถมีคุณสมบัติที่ต่างกัน control array สร้างได้เฉพาะเวลาออกแบบ และมีวิธีการสร้าง 2 วิธี
วิธีที่ 1 วาดตัว control ลงบนฟอร์มแล้ว และกำหนดค่าคุณสมบัติ Index ด้วยตัวเลขที่ไม่เป็นลบ จะได้ control array ที่มี1 element จากนั้นวาดตัว control อื่น แล้วเปลี่ยนคุณสมบัติ Name เป็นชื่อเดียวกัน จะได้ element ต่อไป
วิธีที่ 2 วาดตัว control 2 ตัว ใน class เดียวกัน และกำหนดชื่อเหมือนในคุณสมบัติ Name ซึ่ง จะมีไดอะล๊อกบ๊อกซ์ของ Visual Basic จะถามว่า ต้องการสร้าง control array หรือไม่ ให้คลิกปุ่ม Yes
control array ช่วยทำให้โปรแกรมมีความยืดหยุ่นมากขึ้น
ตัว control มี control array เดียวกัน ที่ใช้ event procedure ร่วมกัน ทำให้ลดการเขียนคำสั่ง
สามารถเพิ่ม element ให้กับ control array ในเวลาเรียกใช้ (หรือเป็นการเพิ่มตัว control ใหม่)
element ของ control array ใช้ทรัพยากรน้อยกว่า ตัว control ธรรมดา
การใช้ Event Procedure ร่วมกัน
event procedure สัมพันธ์กับรายการข้อมูล ใน control array ด้วยพารามิเตอร์ Index ที่เป็นพารามิเตอร์ตัวแรก โดยพารามิเตอร์ Index จะรับดัชนีของ element ที่เกิด event
Private Sub text1_keypress (Index As Integer, KeyAscii As Integer)
Msgbox "มีการกดแป้นพิมพ์ที่ text1 ("& Index & ")"
End sub
การที่ตัว control หลายตัว ใช้กลุ่มของ event procedure เดียวกัน เป็นเหตุผลที่ดีในการสร้าง control array เช่น การเปลี่ยนสีพื้นหลัง ของ Text box แต่ละตัวให้เป็นสีเหลืองเมื่อรับโฟกัส และเปลี่ยนกลับมาเป็นสีขาวเมื่อผู้ใช้คลิกที่ตัว control อื่น
Private Sub Text1_GotFocus (Index As Integer)
Text1 (Index).Backcolor = vbYellow
End Sub
Private Sub Text1_LostFocus (Index As Integer)
Text1 (Index).Backcolor = vbWhite
End sub
control array มีประโยชน์กับ Option button เพราะช่วยให้จำได้ว่า ตัวเลือกสุดท้ายในกลุ่มที่ได้รับการ activated
Dim optHardwareIndex As Integer
Private Sub optHardware_Click (Index As Integer)
optHardwareIndex = Index
End Sub
การสร้างตัว Control เมื่อเวลาเรียกใช้
การสร้างตัว control ในฐานะ element ของ control array เนื่องจาก control array สร้างได้เฉพาะ เวลาออกแบบ ด้วยใช้คำสั่ง Load
Load txtEmployees(1)
txtEmployees (1).Move 1200 , 2000 , 800 , 350
การยกเลิกตัว control หรือ element ของ control array ใช้คำสั่ง Unload
Unload txtEmployees (1)
การทำงานแบบ Loop ของ Control array
การทำงานกับ control array ด้วยคำสั่งแบบวนรอบ For
Next
For i = txtEmployees.LBound To txtfields.UBound
txtEmployees(i).text = ""
Next
เมธอด LBound และ UBound เป็นของอ๊อบเจค control array ซึ่งเป็นอ๊อบเจคแบบ Intermediate ของ Visual Basic ในการรวม control array ทั้งหมด
control array สามารถทำงานแบบวนรอบ For Each
Next
Dim txt As TextBox
For Each txt In txtEmployees
txt.Text = ""
Next
การทำงานกับ เมธอด Count ของอ๊อบเจค control array
DO While txtEmployees.Count > 1
Unload txtEmployees(txtEmployees.ubound)
Loop
|