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

[VB6] Spostare due Oggetti Contemporaneamente

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

[VB6] Spostare due Oggetti Contemporaneamente

Messaggioda M@ttia » ven feb 01, 2008 8:21 pm

(premetto che, prima che mi saltiate addosso, per esigenze che non sto ad elencare questa funzione la devo implementare in VB6, quindi non convincetemi a metterla in altri linguaggi perché non dipende da me).

Ho la necessità di spostare degli oggetti sul form trascinandoli col mouse, ed ho risolto così:

Codice: Seleziona tutto
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

Public Sub MuoviControllo(ByVal Handle As Long)
  ReleaseCapture
  SendMessage Handle,  &HA1,  &HA2, 0&
End Sub

Private Sub Command1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
  If Button = 1 Then MuoviControllo Command1.hwnd
End Sub


Funziona, ma mi servirebbe poterlo fare con:

*) Una label e uno shape (un cerchio), che non sembrano avere la proprietà *.hwnd

*) Con due oggetti insieme (cioè ne sposto uno e l'altro gli sta dietro, dato che la label e il cerchio formano un "puntino numerato" che sarebbe una cosa sola...


Qualcuno può darmi una dritta (va bene anche storta, basta che funzioni [:D])?
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Robby78 » sab feb 02, 2008 11:05 am

domanda stupida: usare top e left?

P.S. sono stato a Zurigo la scorsa settimana... che spettacolo il paesaggio!!
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

Messaggioda M@ttia » sab feb 02, 2008 8:20 pm

Eh simulare il drag con top e left, a parte il fatto che avevo comunque dei problemi a farlo, non dà nemmeno un gran risultato...
Questo è il metodo "ufficiale" per farlo, ma non so come applicarlo a due oggetti assieme...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Silver Black » sab feb 02, 2008 8:43 pm

Metti controllo + label in un contenitore (es. picture) e fai il drag del contenitore, così sposta tutti gli oggetti contenuti.
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 M@ttia » sab feb 02, 2008 10:24 pm

Silver Black ha scritto:in un contenitore (es. picture)

Eh era la prima cosa che avevo pensato, ma poi il picturebox è irrimediabilmente quadrato (e non trasparente), e mi serviva che due cerchi si sovrapponessero "bene" senza il rettangolo bianco della picturebox...


Comunque ho risolto con un top/left artigianale (ora Robby mi ammazza [crylol]) suggeritomi:

Codice: Seleziona tutto
Dim StartX As Integer, StartY As Integer
Dim MuoviOggetti As Boolean

Private Sub Label1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    StartX = X
    StartY = Y
    MuoviOggetti = True
End Sub


Private Sub label1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Not MuoviOggetti Then Exit Sub
    With Label1
        .Move .Left + (X - StartX), .Top + (Y - StartY)
    End With
    Shape1.Top = Label1.Top + 10
    Shape1.Left = Label1.Left + 20
End Sub


Private Sub label1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    MuoviOggetti = False
End Sub
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite

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