การยกเลิก keypress event ใน ms access

ในกรณีที่มีกล่องข้อความ (text box) ให้เติมข้อความ แต่ไม่ต้องการให้คนพิมพ์เข้าโดยตรง ให้คลิกปุ่มเพื่อเลือกวันที่ จากปฏิทิน เท่านั้น เมือผู้ใช้กดแป้นที่กล่องข้อความเพื่อจะพิมพ์ข้อความ ก็ให้แสดง Message และยกเลิกตัวอักษรที่เพิ่งพิมพ์ไปในกล่องข้อความ

ให้เลือกเขียน event procedure ที่ on keypress ของกล่องข้อความนั้น (ไม่ใช้ on keyDown เพราะ on keypress จะเกิดเมื่อกดแป้นและปล่อย ภายในเวลาประมาณ 500 ms แต่ถ้ากดค้างไว้จะเกิด on keyDown event)

การยกเลิก keyPress event ไม่สามารถทำได้ใน event procedure ต้องสร้าง macro และเลือก cancelEvent ใน Macro ที่สร้างขึ้น จากนั้น จึงมาเรียกใช้ใน Event procedure อีกครั้งหนึ่ง

ตัวอย่าง

สมมตว่า text box ชื่อ txtCalendar บนฟอร์ม frmMyForm และไม่ต้องการให้พิมพ์ ถ้ากดแป้นให้มี Message ขึ้น และให้ยกเลิกตัวอักษรใด ๆ ที่พิมพ์ลงไป ทำดังนี้

1. สร้าง Macro โดยไปที่ Objects Macro > New
2. ที่ Action เลือก CancelEvent และปิด Macro โดยตั้งชื่อ เช่น myCancelEvent
3. กลับมาที่ฟอร์ม frmMyForm และคลิกที่ txtCalendar และเปิด property
4. เลือก Event และเลือก on keypress และสร้าง Code ดังนี้

Private Sub txtCalendar_KeyPress(KeyAscii As Integer)
MsgBox "กรุณาใช้ปุ่มเลือกวันที่", vbInformation, "โปรแกรมธนาคารโรงเรียน"
DoCmd.RunMacro "myCancelEvent"
End Sub

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s

%d bloggers like this: