Я некоторое время искал какой-нибудь код, который позволил бы пользователю «щелкать и перетаскивать», чтобы перемещаться по безграничной форме. Я добился этого в VB.Net и C # в Windows Forms и, как я считаю, исторически делал это в Excel (хотя я не могу вспомнить код). Кажется, я не могу отработать переводы в Access VBA, в первую очередь потому, что «левый» метод не может быть применен к объекту Form в Private Sub (я думаю?):
Me.Left
Без этого я изо всех сил пытаюсь перевести код, поэтому есть ли другой способ, возможно, с вызовами Windows API или просто событиями Form, чтобы это произошло? Мне бы очень хотелось исчерпать возможности, так как формы без полей выглядят так красиво!
Любая помощь очень ценится.
Вот версия VB.Net, которая работает:
Dim dragForm As Boolean
Dim xDrag As Integer
Dim yDrag As Integer
Private Sub Form1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown
dragForm = True
xDrag = Windows.Forms.Cursor.Position.X - Me.Left
yDrag = Windows.Forms.Cursor.Position.Y - Me.Top
End Sub
Private Sub Form1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
If dragForm Then
Me.Top = Windows.Forms.Cursor.Position.Y - yDrag
Me.Left = Windows.Forms.Cursor.Position.X - xDrag
End If
End Sub
Private Sub Form1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseUp
dragForm = False
End Sub
Вот моя попытка переписать это до сих пор:
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim xx As Long
Dim yy As Long
xx = Me.Left + X - xDrag
yy = Me.Top + Y - yDrag
Me.Left = xx
Me.Top = yy
moveFrm = False
End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim xx As Long
Dim yy As Long
If moveFrm = True Then
xx = Me.Left + X - xDrag
yy = Me.Top + Y - yDrag
Me.Left = xx
Me.Top = yy
End If
End Sub
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
moveFrm = True
xDrag = X
yDrag = Y
End Sub