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.
0 commenti:
Posta un commento