Eine Form an beliebiger Stelle anklicken uns sie verschieben?

fischo

Grünschnabel
Hallo ihr,

ist es irgendwie möglich, eine Form so zu preparieren, dass ich diese nicht nur an der Titelleiste anklicken (gedrückthalten) und verschieben kann sondern auch an beliebiger Stelle der Form ansetzen?

mfg fischo
 
Versuch´s mal hiermit:
Code:
Private Declare Sub ReleaseCapture Lib "User32" ()
Private Declare Function SendMessage Lib "User32" _
  Alias "SendMessageA" (ByVal hwnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, _
  lParam As Any) As Long

Private Const WM_NCLBUTTONDOWN = &HA1
Private Const HTCAPTION = 2

Private Sub Form_MouseDown(Button As Integer, _
  Shift As Integer, x As Single, Y As Single)
  Dim lResult As Long
  If Button = 1 Then
    Call ReleaseCapture
    lResult = SendMessage(Me.hwnd, WM_NCLBUTTONDOWN, _
      HTCAPTION, 0&)
  End If
End Sub
 
Das ganze geht auch ohne Win-API.
Man muss nur beim MouseDown Ereigniss eine globale Variable auf True setzen und die Koordinaten speichern z.B.

Flag = True
MemX = X
MemY = Y

Bei MouseMove checkt man dann die Variable. Ist sie true wird die Form mit folgenden Code verschoben

me.left = me.left + (X-MemX)
me.top = me.top + (Y-MemY)

und bei MouseUp setzt man dann Flag wieder auf False
 
Zurück