you can do this (to a certain extent) using the mouse events of the control. Change myControl to the name of your control
Code:
Option Compare Database
Option Explicit
Dim SX As Single
Dim SY As Single
Dim mseDown As Boolean
Private Sub myControl_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
mseDown = True
SX = X
SY = Y
End Sub
Private Sub myControl_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim NX As Single
Dim NY As Single
ChangeCursor Arrows_NSEW 'to indicate the control can be moved. This is my own function but see this link for alternatives http://bytes.com/topic/access/answer...g-mouse-cursor
NY = myControl.Top + Y - SY
NX = myControl.Left + X - SX
If mseDown = True And NY >= 0 And NY <= InsideHeight - myControl.Height And NX >= 0 And NX <= InsideWidth - myControl.Width Then myControl.Move NX, NY
End Sub
Private Sub myControl_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
mseDown = False
End Sub
This allows both vertical and horizontal movement of the control within the viewable window and also assumes the whole form is within the viewable window (i.e. no scrollbars), if you only want to allow horizontal movement, just remove the NY from myControl.move (and modify changecursor to show Arrows_EW).
Note that line controls do not have events - use a box control or unassociated label with height set to 1 or 2 points and the back color set to black or whatever colour your want.
Note also that having dragged controls to where you want them, the new position will not be saved unless you save the form (and this is not possible in .mde/accde or runtime). I would suggest you would need an underlying table to store control positions so you can retrieve the coordinates and position them correctly the next time you open the form
If you want your form scrollable in the sense that as you drag a control to the left or the right the underlying form will scroll then you have a much bigger task