【晕】鼠标事件的逻辑问题。

VBAHZ 2005-11-01 10:34:59
想做这样一个功能:在一个Label控件上(以下都是指这个控件)

1、单独按下左键时,执行 Debug.Print "Left Down"
2、单独按下左键不移动,放开时执行 Debug.Print "Left Click"
3、单独按下右键不移动,放开时执行 Debug.Print "Right Click"
4、单独按下左键并拖动鼠标,只有当移动X水平距离(与按下时的X比较)大于50时,
进入拖动状态,Caption上开始显示当前的X值
5、此时(拖动距离>50),当放开左键时,执行 Debug.Print "Left Is" , X
6、当左键为按下状态,拖动距离>50时,若再按下右键,
则恢复Caption为空,并退出拖动状态(不再显示X轨迹)
7、当左键为按下状态,不移动,再按下右键,执行 Debug.Print "Left & Right Down"
然后,也同6一样,恢复Caption,退出拖动状态。

现在的问题是:
如何将这些功能做在同一个控件上?
2、3功能应该是单独触发的,就是说一旦拖动鼠标水平距离>50时,
无论再放开左键还是右键,都不会触发它了。

头好大,晕了,还请大家指教,谢谢!
...全文
153 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
VBAHZ 2005-11-02
  • 打赏
  • 举报
回复
另外,我说的拖动,不是移动控件本身,仅仅是指拖着鼠标不放而已。

再想想,也许可以增加 Right Down 事件,Right Down Move 事件。。。呵呵,
只是。。。好像有逻辑冲突的问题???晕。。。

最难的就是那些 Click 事件,要单独触发的,不能与其它的Click事件混起来的。

事件5 应该为 Left Move Click ,又是一个 Click 诶。。。

VBAHZ 2005-11-02
  • 打赏
  • 举报
回复
不好意思,我没说清楚。

第7个事件应该为:Left & Right Click
既然是Click ,再放开 左键或右键时,不应该再触发 Left Click 或 Right Click 事件了。

第6个事件应该为:Right Cancel Click
也同样不会再触发其它的Click事件了。

这就是最重要、最精华、最头晕的部分◎#¥%……※

谢谢楼上兄弟,可惜你的代码无法实现,而且
If Button = 3 Then Debug.Print "Left & Right Down"
这句是执行不到的

第4个事件应该为:Left Down Move
northwolves 2005-11-01
  • 打赏
  • 举报
回复
部分实现:

Dim cx As Single
Private Sub Form_Load()
Label1.Caption = "xxxx"
End Sub

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
cx = X
If Button = 1 Then Debug.Print "Left Down"
If Button = 2 Then Debug.Print "Right Down"
If Button = 3 Then Debug.Print "Left & Right Down"
End Sub

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 And Abs(X - cx) > 50 Then
Label1.Caption = X: Label1.Move X
If Button = 2 Then Label1.Caption = "xxxx"
End If
End Sub

Private Sub Label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 1 Then
If Abs(X - cx) > 50 Then
Debug.Print "Left Is", X
Else
Debug.Print "Left Click"
End If
End If
If Button = 2 Then Debug.Print "Right Click"

End Sub

1,485

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧