MS Access VBA คลิกแล้วเปลี่ยนภาพ และ การวนภาพ

วันนี้ ผมใช้โปรแกรม MS Access มาทำเป็นเกมสื่อการสอน ภาษาอังกฤษ โดยใช้ VBA  ในเกมนี้ เป็นการจับคู่ภาพและคำภาษาอังกฤษ


ปัญหา คือ เมื่อคลิกที่ Image Control แต่ละภาพ แล้ว จะส่ง Image Control ไปยัง Procedure อย่างไร เพื่อที่จะไปกำหนด Property ของภาพ เพื่อเปลี่ยนภาพได้

โดยปกติ เราไม่สามารถ ส่งตัว Control ในลักษณะของ Variable ได้ แต่สามารถส่งชื่อของ Control เพื่อนำไปใช้ และเปลี่ยนค่า property ของ Control

ตัวอย่าง
เมื่อคลิกที่ Image1 ให้ส่งชื่อ และข้อมูลอื่นที่เกี่ยวข้อง ไปยัง doStuff()


การนำชื่อไปใช้  เราก็เอาชื่อไปหาชื่อใน Control Collection แล้วจึงทำในสิ่งที่ต้องการ ในกรณีนี้ เป็นการเอาชื่อภาพว่า ภาพของ Control ที่กำลังถูกคลิก คือภาพอะไร

ตัวอย่าง

อีกประเด็นหนึ่งคือ ในเกมนี้ จะต้องมีการตรวจสอบว่า มีภาพใดที่หาคู่เจอแล้ว ภาพใดที่ยังหาไม่เจอ ดังนั้น จึงต้องมีการวน และตรวจสอบ Image Control ทุกตัว แต่ ในฟอร์ม จะมี Control หลายตัว เช่น ปุ่ม Label เป็นต้น เราจะวนเฉพาะ Image Control อย่างไร

คำตอบคือ ก็วนไปทุก Control นั่นแหละ แต่ถ้าพบว่า ไม่ใช่ Image Control เราก็ผ่านไป ไม่ต้องทำอะไร แต่ถ้าเป็น Image Control เราก็ทำในสิ่งที่ต้องการ

ตัวอย่าง




ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

อุปมา อุปไมย สำนวนการเปรียบเทียบ ของไทย

แนวข้อสอบ เงื่อนไขสัญลักษณ์

เทคนิคการทำ ข้อสอบ อนุกรม ของ ก.พ.