Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - spostamento form
Forum - Visual Basic 6 - spostamento form

Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 12:33
Sabato, 23/01/2010
salve a tutti eccomi di nuovo con un altro problema...

dato un form, vorrei potere spostarlo cliccandoci sopra e trascinandolo...mi direte clicca sulla bara del titolo...ebbene voglio spostare il form che ha come borderstyle = 0 ovvero non ha barra del titolo...

iccome vorrei fare un'interfaccia disegnata, devo eliminare la barra e alla necessità spostare il form cliccando su una parte precisa del form...

ho cercato un po tra gli eventi DragDrop ma l'msnd mi da errore se cerco questi eventi...non so neanche se siano quelli corretti..

mi aiutate?

grazie

PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 13:03
Sabato, 23/01/2010
Così dovresti risolvere:

Codice sorgente - presumibilmente VB.NET

  1. Option Explicit
  2.  
  3. Const HTCAPTION = 2
  4. Const WM_NCLBUTTONDOWN = &HA1
  5. Private Declare Function ReleaseCapture Lib "user32" () As Long
  6. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  7.     (ByVal hwnd As Long, _
  8.     ByVal wMsg As Long, _
  9.     ByVal wParam As Long, lParam As Long) As Long
  10. '--------------------------------
  11. Private Sub Form_Load()
  12.     Me.BorderStyle = 0
  13. End Sub
  14. '--------------------------------
  15. ' Sposta con il mouse una Form senza bordo BorderStyle = 0:
  16. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
  17.         x As Single, Y As Single)
  18.     If Button = 1 Then
  19.         Dim ReturnVal As Long
  20.         x = ReleaseCapture()
  21.         ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
  22.     End If
  23. End Sub


:k:

PM Quote
Avatar
DavidP (Normal User)
Pro


Messaggi: 87
Iscritto: 31/08/2009

Segnala al moderatore
Postato alle 13:05
Sabato, 23/01/2010
prova questo codice:
Codice sorgente - presumibilmente VB.NET

  1. Const HTCAPTION = 2
  2. Const WM_NCLBUTTONDOWN = &HA1
  3. Private Declare Function ReleaseCapture Lib "user32" () As Long
  4. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
  5.     (ByVal hwnd As Long, _
  6.     ByVal wMsg As Long, _
  7.     ByVal wParam As Long, lParam As Long) As Long
  8.  
  9. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
  10.         x As Single, Y As Single)
  11.     If Button = 1 Then
  12.         Dim ReturnVal As Long
  13.         x = ReleaseCapture()
  14.         ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0)
  15.     End If
  16. End Sub



@Luis
Per 1 secondo

Ultima modifica effettuata da DavidP il 23/01/2010 alle 13:06
PM Quote
Avatar
Louis (Normal User)
Pro


Messaggi: 150
Iscritto: 22/04/2008

Segnala al moderatore
Postato alle 13:16
Sabato, 23/01/2010
Pazienza, non ti preoccupare :)

PM Quote
Avatar
DavidP (Normal User)
Pro


Messaggi: 87
Iscritto: 31/08/2009

Segnala al moderatore
Postato alle 13:28
Sabato, 23/01/2010
Va be fa niente

PM Quote
Avatar
foralobo (Normal User)
Pro


Messaggi: 146
Iscritto: 30/11/2009

Segnala al moderatore
Postato alle 12:46
Lunedì, 25/01/2010
grazie tante...l'ho trovato anche io q1uesto codice... ma volevo risolvere senza utilizzare le api...qualche idea?

PM Quote
Avatar
Alfonso (Ex-Member)
Guru


Messaggi: 688
Iscritto: 30/09/2009

Segnala al moderatore
Postato alle 14:12
Lunedì, 25/01/2010
Codice sorgente - presumibilmente VB.NET

  1. Dim yTop As Long
  2. Dim xLeft As Long
  3. Dim Trascinamento As Boolean
  4.  
  5. Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)
  6.  
  7.  If Trascinamento = False Then
  8.     Screen.MousePointer = 5
  9.     Trascinamento = True
  10.     yTop = Y
  11.     xLeft = x
  12.  End If
  13.  
  14. End Sub
  15.  
  16. Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)
  17.  
  18.   If Trascinamento = True Then
  19.     Me.Top = Me.Top + Y - yTop
  20.     Me.Left = Me.Left + x - xLeft
  21.   End If
  22.  
  23. End Sub
  24.  
  25. Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single)
  26.  
  27.   If Trascinamento Then
  28.     Trascinamento = False
  29.     Screen.MousePointer = 1
  30.   End If
  31.  
  32. End Sub



Ciao

PM Quote