Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [VB6] Spostare due Oggetti Contemporaneamente

    (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:
    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 )?

  2. #2
    Utente di HTML.it L'avatar di tippolo
    Registrato dal
    Dec 2005
    Messaggi
    103
    ciao
    *) 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...
    Per questo credo potresti fare così:

    Oggetto2.Top = Oggetto1.Top + n
    Oggetto2.Left = Oggetto1.Left + n

    in modo che il Top ed il Left dipendano dall'Oggetto1
    Non hai ancora firmato la petizione per VB? Clicca questo link:
    http://www.classicvb.org/petition/?lang=it

  3. #3
    Utente di HTML.it L'avatar di tippolo
    Registrato dal
    Dec 2005
    Messaggi
    103
    vedi se questo è il codice che fa al caso tuo
    codice:
    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
    Non hai ancora firmato la petizione per VB? Clicca questo link:
    http://www.classicvb.org/petition/?lang=it

  4. #4
    Ohhhhhhhhhhhhhhh yessss!!!!

    Grazie mille davvero: avevo provato anche io col left/top ma avevo fatto un casino


    Thx!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.