Перетаскивание объектов на форме мышью - VB
Формулировка задачи:
Нужно сделать такое же, только в VB 6:
Листинг программы
- Option Explicit
- Const SNAP! = 5
- Dim Xdown!, Ydown!
- Private Sub Label1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
- 'Без этой процедуры можно обойтись, но с ней
- 'мышка чуть быстрее "зацепляет" объект
- Xdown = X: Ydown = Y
- End Sub
- Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
- Dim l!, t!
- If Button = 1 Then
- With Label1
- .Left = Application.Min(Application.Max(.Left - Xdown + X, 0), Me.Width - .Width - 5!)
- .Top = Application.Min(Application.Max(.Top - Ydown + Y, 0), Me.Height - .Height - 19!)
- If Abs(.Left - Label2.Left) <= SNAP And Abs(.Top - Label2.Top) <= SNAP Then
- .Left = Label2.Left
- .Top = Label2.Top
- End If
- End With
- Else
- Xdown = X: Ydown = Y
- End If
- End Sub
Решение задачи: «Перетаскивание объектов на форме мышью»
textual
Листинг программы
- Const SNAP! = 500
- Dim Xdown!, Ydown!, bX As Single, bY As Single
- Private Sub Form_Load()
- bX = Label1.Left: bY = Label1.Top
- End Sub
- Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
- Xdown = X: Ydown = Y
- End Sub
- Private Sub Label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
- Dim l!, t!
- If Button = 1 Then
- With Label1
- .Move .Left - Xdown + X, .Top - Ydown + Y
- If Abs(.Left - Label2.Left) <= SNAP And Abs(.Top - Label2.Top) <= SNAP Then
- MsgBox "Столкновение"
- .Left = bX
- .Top = bY
- '.Left = Label2.Left
- '.Top = Label2.Top
- End If
- End With
- Else
- Xdown = X: Ydown = Y
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д