Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[VB6] Muovere un form

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[VB6] Muovere un form

Messaggioda DilanDog » gio lug 07, 2005 10:29 am

Qualcuno mi sa dire come posso fare per muovere un form "acchiappandolo" sul corpo del form stesso anzichè sulla barra del titolo? Vorrei fare un form senza bordi, quindi anche senza barra del titolo visibile, però vorrei poterlo spostare trascinandolo con il mouse. Ho provato con il mouse_move ma viene uno schifo, qualche suggerimento? Forse c'è qualche windows message (via API) da intercettare/inviare?
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano

Messaggioda Robby78 » gio lug 07, 2005 10:44 am

Con le API è decisamente + elegante, ma bisognerebbe documentarsi un po' e nn ne ho voglia; col mousemove però ho provato e mi sembra che funzioni bene.... prova con questo codice:

Codice: Seleziona tutto
Dim bClick As Boolean
Option Explicit

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    bClick = True
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Static nX As Single
    Static nY As Single
   
    If bClick Then
        If nX <> 0 Then
            Me.Left = Me.Left + X - nX
        Else
            nX = X
        End If
        If nY <> 0 Then
            Me.Top = Me.Top + Y - nY
        Else
            nY = Y
        End If
    Else
        nX = 0
        nY = 0
    End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    bClick = False
End Sub
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Re: [VB6] Muovere un form

Messaggioda Silver Black » gio lug 07, 2005 11:07 am

DilanDog ha scritto:Qualcuno mi sa dire come posso fare per muovere un form "acchiappandolo" sul corpo del form stesso anzichè sulla barra del titolo? [...] Forse c'è qualche windows message (via API) da intercettare/inviare?


Esatto, l'API SendMessage:


Codice: Seleziona tutto

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function ReleaseCapture Lib "user32" () As Long
Public Const WM_NCLBUTTONDOWN = &HA1
Public Const HTCAPTION = 2
Public Const EM_GETLINECOUNT = &HBA



Public Sub MoveFormByDragDrop(MouseButton As Integer, objForm As Form)
'-------------------------------------------------------------------------
' Muove una finestra come se si usasse il drag&drop sulla barra del titolo
'-------------------------------------------------------------------------

  If MouseButton = vbLeftButton Then
      ReleaseCapture
      SendMessage objForm.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&
  End If
   
End Sub



Ciao!
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)


Re: [VB6] Muovere un form

Messaggioda Robby78 » gio lug 07, 2005 11:15 am

Silver Black ha scritto:...

bella lì!! buono a sapersi
Povera patria! Schiacciata dagli abusi del potere di gente infame, che non sa cos'è il pudore - Franco Battiato
ricordati di pensare! - mia mamma
Avatar utente
Robby78
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3829
Iscritto il: gio gen 08, 2004 5:25 pm
Località: Emilia Romagna

Re: [VB6] Muovere un form

Messaggioda Silver Black » gio lug 07, 2005 11:32 am

Robby78 ha scritto:
Silver Black ha scritto:...

bella lì!! buono a sapersi


[:-D] Grazie! E ovviamente la chiamata a MoveFormByDragDrop va messa nell'evento MouseDown della form che ci interessa muovere, passando il parametro Button e la stessa form:

Codice: Seleziona tutto
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  MoveFormByDragDrop(Button, Me)
End Sub
Sergio Pappalardo aka Silver Black
CyberInstaller - www.silvercybertech.com - http://silvercybertech-labs.com/cyberblog
Avatar utente
Silver Black
Silver Member
Silver Member
 
Messaggi: 1147
Iscritto il: gio gen 06, 2005 8:50 pm
Località: Bassano del Grappa (VI)

Messaggioda DilanDog » ven lug 08, 2005 3:16 pm

Grazie a tutti e due, la soluzione con l'API poi è proprio quella che cercavo, sapevo che c'era da qualche parte [8D]
Avatar utente
DilanDog
Senior Member
Senior Member
 
Messaggi: 208
Iscritto il: ven apr 15, 2005 9:13 am
Località: Milano


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti

cron
Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising