Если вы поместите элементы управления для перемещения в коллекцию (например, с помощью свойства .Tag
или .Name
), просто l oop через эту коллекцию (вашу группу) и переместите все элементы управления на одно и то же значение.
В стандартном модуле:
Public Sub MoveGroup(ByVal MovingGroup As Collection, _
ByVal AddLeft As Long, _
ByVal AddTop As Long)
Dim CtlToMove As Control
For Each CtlToMove In MovingGroup
CtlToMove.Move CtlToMove.Left + AddLeft, CtlToMove.Top + AddTop
Next
End Sub
Public Sub MoveByTagAsolute(ByRef CtlAbsolute As Control, _
ByVal MovingGroupTag As String, _
ByVal NewLeft As Long, _
ByVal NewTop As Long)
Dim CtlGroup As Collection
Set CtlGroup = New Collection
Dim CtlToMove As Control
For Each CtlToMove In CtlAbsolute.Parent.Controls
If CtlToMove.Tag Like MovingGroupTag Then
CtlGroup.Add CtlToMove
End If
Next
MoveGroup CtlGroup, NewLeft - CtlAbsolute.Left, NewTop - CtlAbsolute.Top
End Sub
Public Sub MoveByTagRelative(ByRef Frm As Form, _
ByVal MovingGroupTag As String, _
ByVal AddLeft As Long, _
ByVal AddTop As Long)
Dim CtlGroup As Collection
Set CtlGroup = New Collection
Dim CtlToMove As Control
For Each CtlToMove In Frm.Controls
If CtlToMove.Tag Like MovingGroupTag Then
CtlGroup.Add CtlToMove
End If
Next
MoveGroup CtlGroup, AddLeft, AddTop
End Sub
В модуле форм:
Private Sub CommandMoveByTagAsolute_Click()
MoveByTagAsolute Me.Controls("ControlAbsolutePos"), "move*", 2000, 3000
End Sub
Private Sub CommandMoveByTagRelative_Click()
MoveByTagRelative Me, "*", 1000, 2000
End Sub
Кнопка CommandMoveByTagAsolute
событие щелчка перемещает ControlAbsolutePos
к новым координатам и остальная часть группы перемещается относительно нее.
Кнопка CommandMoveByTagRelative
событие щелчка перемещает всю группу («*» выбирает все элементы управления в форме) относительно.