สอบถามเรื่อง MouseMoveครับ
กระทู้เก่าบอร์ด อ.Yeadram

 2,249   8
URL.หัวข้อ / URL
สอบถามเรื่อง MouseMoveครับ

พึ่งหาเว็บนี้เจอครับ หลังจากไม่ได้เขียน Accessนานแล้ว ก็เจอปัญหารบกวนท่านผู้รู้แนะนำด้วยครับ พอดีผมเขียนให้MouseMoveไปแล้วแสดงเส้นออกมา แต่เมื่อเอาMouseMoveออกเส้นไม่หายไปทำงัยครับเส้นถึงจะหายไปเมื่อเม้าส์ไม ่focusแล้ว

Private Sub Form_Load()
Me.Line1.Visible = False
Me.Line2.Visible = False
Me.Line3.Visible = False
Me.Line4.Visible = False
Me.Line5.Visible = False
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
MouseCursor (32649&)
Me.Line1.Visible = True
End Sub

8 Reply in this Topic. Dispaly 1 pages and you are on page number 1

1 @R01928
Access ไม่มี event ที่เกิดเมื่อเมาส์เคลื่อนออกไปจากคอนโทรล จึงต้องอาศัย MouseMove event ของคอนโทรลทีใหญ่กว่าเป็นตัวกระทำแทน คอลโทรลที่ใหญ่กว่าที่คลุม Label1 ก็มี Section และ Form ครับ

แต่ถ้าไม่มีความจำเป็นจะต้องแสดง/ไม่แสดงเส้นต่างๆที่ว่า หรือเลี่ยงการใช้ MouseMove event ได้ก็จะดีครับ เพราะมันจะก่อให้เกิด event เต็มไปหมดจนอาจรบกวนการทำหลักๆ หรือถ้าเขียนโปรแกรมเพื่อควบคุมไม่ดี เส้นมันก็จะกระพริบแวบๆๆๆๆ ตลอดเวลา
2 @R01930
ขอบคุณครับ พอดีอยากให้หน้าตามันเหมือนเว็บนครับ เวลาที่เอาเม้าส์ไปชี้แล้วเม้าส์เปลี่ยนเป็นรูปมือ เมนูขีดเส้นใต้ขึ้นมา พอเอาเม้าส์ออกเส้นหายไปเม้าส์กลายเป็นลูกศรเหมือนเดิมครับ
3 @R01933
เคยทำเรื่องนี้อยู่เหมือนกัน
แต่ชอบเกิดปัญหา mouse move วนลูปซ้ำๆ
ก็เลยลองใช้วิธี on/off
เอา code ชุดนี้ไปประยุกต์ดูครับ

Private Sub Form_Load()
VisibleLine
End Sub

Function VisibleLine(Optional LineNo As Integer)

For Each ctl In Me
If ctl.Name Like "Label?" Then
    Me("Line" & Right(ctl.Name, 1)).Visible = False
    ctl.OnMouseMove = "=VisibleLine(" & Right(ctl.Name, 1) & ")"
End If
Next

If LineNo Then
Me("Line" & LineNo).Visible = True
Me("Label" & LineNo).OnMouseMove = ""
End If
End Function

4 @R01934
อีกทีครับเมื่อกี๊ลืม Mouse Move ของ Form Detail
Private Sub Detail_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
VisibleLine
End Sub
Private Sub Form_Load()
VisibleLine
End Sub

Function VisibleLine(Optional LineNo As Integer)

For Each ctl In Me
If ctl.Name Like "Label?" Then
    Me("Line" & Right(ctl.Name, 1)).Visible = False
    ctl.OnMouseMove = "=VisibleLine(" & Right(ctl.Name, 1) & ")"
End If
Next

Me.Detail.OnMouseMove = "[Event Procedure]"

If LineNo Then
    Me("Line" & LineNo).Visible = True
    Me("Label" & LineNo).OnMouseMove = ""
Else
    Me.Detail.OnMouseMove = ""
End If

End Function

5 @R01935
ลองดู
6 @R01936
ลองอีกที
7 @R01937

8 @R01943
ขอบคุณ คุณแดนครับ บรรยากาศเหมือนเว็บ อ.สุภาพเดิมเลยครับ
@ ประกาศใช้งานเว็บบอร์ดใหม่ => บอร์ดเรียนรู้ Access สำหรับคนไทย
แล้วจะใส่ลิ้งอ้างอิงมาที่โพสต์เก่านี้หรือไม่ก็ตามสะดวกครับ
Time: 0.3151s