在我写的程序中,我需要将鼠标的位置绝对地放在表单的左上角。 我正在使用此代码:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "x: " & X & " - y: " & Y
End Sub
当我使用此代码时,左上角的坐标为0,0。但问题是,当我在表格内移动时,这些值太大了15倍。
这就是我使用的原因:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "x: " & X / 15 & " - y: " & Y / 15
End Sub
这给出了正确的坐标,但为什么我需要将其除以15? 我不确定这段代码是否与其他系统兼容。
答案 0 :(得分:5)
查看MouseMove的文档。返回的X和Y值对应于“对象的ScaleHeight,ScaleWidth,ScaleLeft和ScaleTop属性。”
因此,查看ScaleHeight, ScaleWidth和ScaleLeft, ScaleTop的文档,很明显您可以决定如何确定X和Y坐标。您不限于Twips或Pixels,但可以使用您指定的任何编号系统。
以下是ScaleHeight,ScaleWidth页面的引用:
例如,语句ScaleHeight = 100更改单位 测量表格的实际内部高度。而不是 高度为n个当前单位(缇,像素,......),高度为 100个用户定义的单位。因此,50个单位的距离是一半 物体的高度/宽度,101个单位的距离将被关闭 对象由1个单位组成。
在这方面,为了确保您的结果符合您的期望,您可以准确地告诉表单它包含多少用户定义的单位。
答案 1 :(得分:2)
单位为Twips
(运行时转换因子:screen.TwipsPerPixelX
和Y
)。
您还可以将表单ScaleMode
更改为使用Pixel
s。