foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
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
|
|
Louis (Normal User)
Pro
Messaggi: 150
Iscritto: 22/04/2008
|
Così dovresti risolvere:
Codice sorgente - presumibilmente VB.NET |
Option Explicit Const HTCAPTION = 2 Const WM_NCLBUTTONDOWN = &HA1 Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Long) As Long '-------------------------------- Private Sub Form_Load() Me.BorderStyle = 0 End Sub '-------------------------------- ' Sposta con il mouse una Form senza bordo BorderStyle = 0: Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ x As Single, Y As Single) If Button = 1 Then Dim ReturnVal As Long x = ReleaseCapture() ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) End If End Sub
|
|
|
DavidP (Normal User)
Pro
Messaggi: 87
Iscritto: 31/08/2009
|
prova questo codice:
Codice sorgente - presumibilmente VB.NET |
Const HTCAPTION = 2 Const WM_NCLBUTTONDOWN = &HA1 Private Declare Function ReleaseCapture Lib "user32" () As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" _ (ByVal hwnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, lParam As Long) As Long Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ x As Single, Y As Single) If Button = 1 Then Dim ReturnVal As Long x = ReleaseCapture() ReturnVal = SendMessage(hwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0) End If End Sub
|
@Luis
Per 1 secondo
Ultima modifica effettuata da DavidP il 23/01/2010 alle 13:06 |
|
Louis (Normal User)
Pro
Messaggi: 150
Iscritto: 22/04/2008
|
Pazienza, non ti preoccupare
|
|
DavidP (Normal User)
Pro
Messaggi: 87
Iscritto: 31/08/2009
|
Va be fa niente
|
|
foralobo (Normal User)
Pro
Messaggi: 146
Iscritto: 30/11/2009
|
grazie tante...l'ho trovato anche io q1uesto codice... ma volevo risolvere senza utilizzare le api...qualche idea?
|
|
Alfonso (Ex-Member)
Guru
Messaggi: 688
Iscritto: 30/09/2009
|
Codice sorgente - presumibilmente VB.NET |
Dim yTop As Long Dim xLeft As Long Dim Trascinamento As Boolean Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single) If Trascinamento = False Then Screen.MousePointer = 5 Trascinamento = True yTop = Y xLeft = x End If End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single) If Trascinamento = True Then Me.Top = Me.Top + Y - yTop Me.Left = Me.Left + x - xLeft End If End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single) If Trascinamento Then Trascinamento = False Screen.MousePointer = 1 End If End Sub
|
Ciao
|
|