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
MarcoGG

Posted in:
0 commenti:
Posta un commento