滚动条跟踪鼠标位置的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/16 18:53:33
在看电大VB讲座里的滚动条跟踪鼠标这个程序时有几点疑问,望各位能够指点。

代码如下:(只截取了水平滚动条部分)

Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If X < Label1.Left And X > Label1.Left + Label1.Width Then
hscroll1.Value = (X - Label1.Left) / (Label1.Width) * 100
End If
End Sub

这里的X是代表的哪个数呢,(我想应该是标签控件的吧)我是这样理解的,比如说一个标签控件的宽度为100,那么这个X,就代表了从0至100之间的数,不知道我这样想对不对,请各位老师指正。
还有这两句代码:
If X < Label1.Left And X > Label1.Left + Label1.Width Then
hscroll1.Value = (X - Label1.Left) / (Label1.Width) * 100
大概意思是说如果X的值小于标签与窗体的左边距,并且大于标签与窗体的左边距再加上标签自身的宽度,则:水平滚动条的VALUE值等于X值减去
标签与窗体的左边距再除以标签的宽度(这里为什么要除以标签的宽度呢?)再乘以100(100为滚动条的最大值)。在用上面的代码进行调试时发现鼠标位置与滚动条的滚动并不能很好地结合,表现在移动鼠标的时候,当鼠标向标签的右侧移动到最右端的时候,滚动条却到不了最大端,总是差一点;而鼠标向左移动的时候还没有到最左端,滚动条却已经滚动到了最小端,(两者的距离大概相等)所以我认为电大里面讲解的这个实例并不是完美的,应该有一点问题存在。请各位朋友帮忙分析解释一下。

x是参数中传进来的鼠标的横坐标
If X < Label1.Left And X > Label1.Left + Label1.Width
的意思是如果鼠标的横坐标不在标签的横坐标范围内
hscroll1.Value = (X - Label1.Left) / (Label1.Width) * 100
水平滚动条的值=鼠标与标签左边的距离/标签的宽度*100
我不知道你做的是什么样的程序,也不知道要实现什么样的效果
不过如果这样做的话,假如鼠标在标签左边的时候,这个结果将会为负值
如果还有什么不清楚的可以给我发消息