KeyDown , KeyPress , KeyUp
เนื่องจากผมเห็นว่า event ทั้งสามนี้คล้ายๆกัน ผมจึงขอเอาไว้รวมกันน๊ะครับ ผมขอยกตัวอย่าง KeyDown ก่อนน๊ะครับ
KeyDown
นำเอา image box มาวางบน form ก่อน 1 อัน แล้วก็เขียนโคดตามนี้
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Image1.Left = Image1.Left + 100
End Sub
จะเห็นว่ารูปภาพขยับทุกครั้งที่เรากดปุ่ม key ใดๆ ก็ตาม ดังนั้นเราก็ควรตรวจสอบด้วยว่าปุ่มที่เรากดนั้น คืออะไรแล้วจะให้ทำอะไร เช่น
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
Image1.Left = Image1.Left + 100
ElseIf KeyCode = vbKeyLeft Then
Image1.Left = Image1.Left - 100
ElseIf KeyCode = vbKeyUp Then
Image1.Top = Image1.Top - 100
ElseIf KeyCode = vbKeyDown Then
Image1.Top = Image1.Top + 100
End If
End Sub
จากตัวอย่างข้างบนจะเห็นว่าไม่มีปัญหาใดๆ เพราะมี object เพียงตัวเดียวอยู่บน form คุณลองเอา object อะไรก็ได้มาวางดูสิ เช่น button หรือ picture box โปรแกรมจะไม่สามารถทำงานได้ทันที วิธีแก้ปัญหาก็ลองเอารูปภาพนั้นเข้าไปไว้ใน picture box ดูก็จะสามารถทำงานได้ แต่ถ้ามี object อื่นอีก หลายตัวก็คงต้องใช้ event setfocus ช่วย หรือไม่ก็ใช้เม้าท์คลิกไปที่ picture box ก่อนแล้วจึงจะทำ งานได้(จะมีปัญหาเมื่อ สถานะพร้อมไปอยู่ที่ object บางตัว เช่น text box) แล้วเราจึงย้ายโคดมาไว้ที่นี่ แทน
Private Sub Picture1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
Image1.Left = Image1.Left + 100
ElseIf KeyCode = vbKeyLeft Then
Image1.Left = Image1.Left - 100
ElseIf KeyCode = vbKeyUp Then
Image1.Top = Image1.Top - 100
ElseIf KeyCode = vbKeyDown Then
Image1.Top = Image1.Top + 100
End If
End Sub
และ shift จะหมายถึงว่ามีการกดปุ่ม shift หรือ control ด้วยหรือเปล่า โดย 1 คือ shift และ 2 คือ control
ส่วน KeyPress ก็คล้ายกัน เพียงแต่ว่าจะใช้ได้แต่เฉพาะ ปุ่มพวกตัวอักษรเท่านั้น ปุ่มพวก ลูกศร ขึ้นลง ซ้ายขวา จะใช้ไม่ได้
KeyUp
อันนี้ก็เหมือนกัน แต่จะเกิดขึ้นเมื่อปล่อยปุ่มไปแล้วเท่านั้น ก็ลองทำเหมือนเดิม แค่เปลี่ยนเพียงเล็กน้อย
Private Sub Picture1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyRight Then
Image1.Left = Image1.Left + 100
ElseIf KeyCode = vbKeyLeft Then
Image1.Left = Image1.Left - 100
ElseIf KeyCode = vbKeyUp Then
Image1.Top = Image1.Top - 100
ElseIf KeyCode = vbKeyDown Then
Image1.Top = Image1.Top + 100
End If
End Sub
จะเห็นว่าภาพจะขยับเมื่อปล่อยปุ่มเท่านั้น
by