MouseDown , MouseUp

           ความจริงแล้ว event พวกนี้ก็ไม่ยากน๊ะครับ เพียงแต่ว่ามันจะทำให้ท่านสับสนบ้างเล็กน้อย และอาจทำ ให้โปรแกรมของท่าน error ได้ถ้าใช้อย่างไม่ระวัง

        event MouseDown เกิดขึ้นเมื่อเราคลิกเม้าท์ลงไป(เราจะปล่อยเม้าท์แล้วหรือไม่ก็ตาม) ดังนั้นถ้า เรายังไม่ยอมปล่อยเม้าท์ ก็จะยังคงเกิด event นี้ต่อไปเรื่อยๆ

        event MouseUp เกิดขึ้นเมื่อหลังจากที่เราปล่อยเม้าท์

        จาก event ทั้งสองจะทำให้เกิด event Click ด้วย ดังนั้นตรงนี้เป็นสิ่งที่ต้องระวัง และเพื่อความเข้าใจ ยิ่งขึ้นก็ลองทำตามนี้ดู นำเอา label ซักสองตัวมาวางบน form แล้วก็เขียนโคดตามนี้

Private Sub Form_Click()
Label2.Caption = "Click"
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Caption = "MouseDown"
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Label1.Caption = "MouseUp"
End Sub

        จะเห็นได้ว่า label ทั้งสองจะแสดงข้อความตามที่ event นั้นเกิดขึ้น และเพื่อความเข้าใจก็ลอง *** download ตัวอย่างโปรแกรมที่ใช้ event นี้ *** จากโปรแกรมนี้จะแสดงให้เห็นว่าเมื่อเรากดเม้า์ค้างไว้ ลูกบอลก็จะวิ่งไปมา แต่ถ้าปล่อยเม้าท์ ลูกบอลก็จะหยุด

        ส่วนค่าที่ส่งมาให้ด้วยในวงเล็บ ก็คือ

     Button ก็คือ ส่งมาว่าปุ่มที่กดนั้นเป็นปุ่มซ้าย หรือขวาโดย 1 หมายถึง ปุ่มซ้าย 2 หมายถึง ปุ่มขวา 

     Shift ก็คือ ส่งมาบอกว่ามีการกดปุ่ม shift ด้วยหรือเปล่า โดย 1 หมายถึง ปุ่ม shift 2 หมายถึง ปุ่ม control และ 4 หมายถึงปุ่มกลาง

        X , Y ก็คือตำแหน่งเม้าท์ที่เรากดลงไป

        ตัวอย่างการใช้ก็คือ

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If (Button = 1) And (Shift = 1) Then
      Label1.Caption = "MouseDown"
   End If
End Sub

         label จะเปลี่ยนไปก็ต่อเมื่อมีการกดเม้าท์ปุ่มซ้าย พร้อมกับกด shift ด้วย      

        หมายเหตุ ค่า button นั้นสามารถใช้ค่า constants ที่ vb ทำไว้ให้ก็ได้ เช่น ปุ่มซ้าย ก็ใช้ vbKeyLeft แทน ปุ่มขวาก็ใช้ vbKeyRight แทน ปุ่มกลางก็ใช้ vbKeyMiddle แทนก็ได้ เช่น

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
   If (Button = vbLeftButton) And (Shift = vbKeyShift) Then
      Label1.Caption = "MouseDown"
   End If
End Sub

        ก็จะได้ค่าเหมือนเดิม

www.oocities.org/xwinggames

by

xwing@thaimail.com