Descrizione :
Una tecnica interessante per gestire creazione, eliminazione, spostamento di controlli Image a runtime.
+ Articolo :
--> Form di Test :
Basta avere una Form VB6 abbastanza grande, e poi aggiungere questi controlli :
- 2 Controlli Image ( che si chiameranno "Image1" e "Image2" )
su Image1 e Image2 è necessario impostare la Proprietà DragMode=1-Automatic.
- 1 altro Controllo Image ( che si chiamerà "IMG" )
su IMG è necessario impostare le Proprietà Index=0 e Visible=False.
Image1 e Image2 sono immagini "sorgenti", ossia stanno in posizione fissa rispetto alla Form, e non possono essere eliminate.
Le immagini "derivate" si possono creare semplicemente draggando sulla Form le rispettive Image sorgenti.
Le immagini derivate possono essere spostate successivamente, ed eliminate ( tasto destro del mouse )...
--> Il codice Form :
Private mouseX As Single
Private mouseY As Single
Private indiceIMG As Integer
 
Private Function nuovaImage() As Image
 
    Dim i As Integer
    i = IMG.Count
    Load IMG(i)
    IMG(i).Visible = True
 
    Set nuovaImage = IMG(i)
 
End Function
 
Private Sub Form_Load()
 
    Image1.Picture = LoadPicture("C:\Test.bmp")
    Image2.Picture = LoadPicture("C:\Test.bmp")
 
End Sub
 
Private Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
 
    If TypeName(Source) = "Image" Then
 
        If Source.Tag = "IMG" Then
            IMG(indiceIMG).Left = X - mouseX
            IMG(indiceIMG).Top = Y - mouseY
        Else
            Dim nI As Image
            Set nI = nuovaImage
            With nI
                .Picture = Source.Picture
                .Stretch = True
                .Width = Source.Width
                .Height = Source.Height
                .Left = X - mouseX
                .Top = Y - mouseY
                .Tag = "IMG"
                .DragMode = DragModeConstants.vbAutomatic
                '...
                '...
            End With
        End If
 
    End If
 
End Sub
 
Private Sub Image1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    mouseX = X
    mouseY = Y
 
End Sub
 
Private Sub Image2_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    mouseX = X
    mouseY = Y
 
End Sub
 
Private Sub IMG_MouseDown(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    If Button = vbRightButton Then Unload IMG(Index)
 
End Sub
 
Private Sub IMG_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
 
    mouseX = X
    mouseY = Y
    indiceIMG = Index
 
End Sub
1. Con un Click destro elimino una qualsiasi Image derivata ( ma non una Image sorgente ).
2. Con il pulsante sinistro invece possiamo spostare anche le Image derivate ( che in questo caso non verranno duplicate ), per correggere errori di posizionamento.
+ Fine Articolo.



 
 
 13:33
13:33
 MarcoGG
MarcoGG
 

 Posted in:
 Posted in:  






 
 
 
 
 
 
 
 
0 commenti:
Posta un commento