Differenze tra le versioni di "Codice essenziale per effettuare il Drag-Drop di un'immagine"

Da Gambas-it.org - Wikipedia.
 
(12 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Mostriamo di seguito un paio di codici ''essenziali'' per effettuare il ''Drag-Drop'' <SUP>&#091;[[#Note|Nota 1]]&#093;</sup> di un'immagine <SPAN style="text-decoration:underline">da un oggetto ad un altro</span> posti sul medesimo ''Form''.
+
Mostriamo di seguito un codice essenziali per effettuare il ''Drag&Drop'' <SUP>&#091;[[#Note|nota 1]]&#093;</sup> di un'immagine, ad esempio, da una ''PictureBox'' a un'altra.
 
 
====Primo esempio====
 
Nel primo esempio, semplicissimo, sono poste sul ''Form'' due Oggetti ''PictureBox'': si provvederà a effettuare il ''Drag and Drop'' da una ''PictureBox'' all'altra.
 
 
<BR>In particolare:
 
<BR>In particolare:
* la ''PictureBox'', <SPAN style="text-decoration:underline">nella</span> quale verrà effettuato il rilascio dell'icona dell'immagine trascinata, deve avere la sua proprietà ''.Drop'' posta a <FONT color=Darkred>''True''</font>;
+
* la ''PictureBox'', <SPAN style="text-decoration:underline">nella</span> quale verrà effettuato il rilascio dell'icona dell'immagine trascinata, deve avere la sua Proprietà ".Drop" posta a <FONT color=Darkred>''True''</font>;
 
* la ''PictureBox'', <SPAN style="text-decoration:underline">dalla</span> quale viene ''prelevata'' e trascinata l'immagine (e quindi quella alla quale sarà applicato l'evento che scatena il ''prelevamento'' dell'immagine da trascinare), deve essere quella che ovviamente <SPAN style="text-decoration:underline">contiene</span> l'immagine;
 
* la ''PictureBox'', <SPAN style="text-decoration:underline">dalla</span> quale viene ''prelevata'' e trascinata l'immagine (e quindi quella alla quale sarà applicato l'evento che scatena il ''prelevamento'' dell'immagine da trascinare), deve essere quella che ovviamente <SPAN style="text-decoration:underline">contiene</span> l'immagine;
* l'evento che scatena il ''prelevamento'' dell'immagine da trascinare è <FONT color=darkred>''_MouseDrag()''</font>;
+
* l'Evento che consente il ''prelevamento'' dell'immagine da trascinare è <FONT color=darkred>"_MouseDrag()"</font>;
* all'interno della routine di questo evento si porrà la riga di comando: ''Drag.Icon = Last.Picture'', affinché durante il trascinamento appaia in prossimità del puntatore del mouse l'icona dell'immagine che si sta trascinando. Inoltre, sarà posta quest'altra riga: ''Last.Drag(Last.Picture.Image)'' per avviare il processo di ''trascinamento'', indicando nell'argomento del metodo ''Drag'' che i dati oggetto della procedura di ''Drag'' sono afferenti ad un'immagine (e non un testo);
+
* all'interno della routine di questo Evento si porrà la riga di comando: ''Drag.Icon = Last.Picture'', affinché durante il trascinamento appaia in prossimità del puntatore del mouse l'icona dell'immagine che si sta trascinando. Inoltre, sarà posta quest'altra riga: ''Last.Drag(Last.Picture.Image)'' per avviare il processo di ''trascinamento'', indicando nell'argomento del Metodo ".Drag()" che i dati, oggetto della procedura di ''Drag'', sono afferenti ad un'immagine (e non un testo);
* nella routine dell'evento ''Drop'' si assegnerà all'altra ''PictureBox'', che scatena il predetto ''Drop'', i dati dell'immagine oggetto del ''Drag''.
+
* nella routine dell'Evento "_Drop()" si assegnerà all'altra ''PictureBox'', che scatena il predetto ''Drop'', i dati dell'immagine oggetto del ''Drag''.
  '''Public''' Sub Form_Open()   
+
  Public Sub Form_Open()   
 
+
  <FONT color=gray>' ''Attiviamo la capacità della "PictureBox1" di ricevere con il "_Drop()" l'immagine trascinata:''</font>
+
  <FONT color=gray>' ''Attiviamo la capacità della "PictureBox1" di ricevere con l'Evento "_Drop()" l'immagine trascinata:''</font>
   PictureBox1.Drop = True
+
   <FONT color=#B22222>PictureBox1</font>.Drop = True
 
 
  PictureBox2.Picture = Picture.Load("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
 
 
 
'''End'''
 
 
 
 
   
 
   
'''Public''' Sub PictureBox2_MouseDrag() 
+
  <FONT color=darkorange>PictureBox2</font>.Picture = Picture.Load("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
 
 
<FONT color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox2":''</font>
 
  Drag.Icon = Last.Picture  
 
  Last.Drag(Last.Picture.Image)   
 
     
 
'''End''' 
 
 
 
'''Public''' Sub PictureBox1_Drop() 
 
 
 
<FONT color=gray>' ''Rilasciamo l'immagine nella "PictureBox1":''</font>
 
  PictureBox1.Picture = Drag.Data.Picture 
 
 
 
'''End'''
 
 
 
====Secondo esempio====
 
In questo secondo esempio, invece, si presuppone che sul ''Form'' vi sia su un lato un oggetto ''VPanel'', all'interno del quale sono presenti tre ''PictureBox''.
 
 
 
Nell'IDE (per fare prima) viene assegnato a ciascuna di tali tre ''PictureBox'' il medesimo nome di ''Gruppo degli Eventi'' (ad esempio: pb).
 
<BR>Quindi viene assegnata ancora a ciascuna di dette ''PictureBox'' una diversa immagine, che sarà oggetto del ''Drag-Drop''.
 
<BR>Sul ''Form'', inoltre, viene posto anche un oggetto ''ScrollView'', all'interno del quale è posta una sola ''PictureBox'' (dato che la ''ScrollView'' non è in grado di supportare in modo autonomo un'immagine), che così avrà il nome ''PictureBox4'', e che avrà il compito di ricevere l'immagine trascinata.
 
 
 
Il ''Drag-Drop'' richiede che:
 
* l'oggetto (in questo caso lo ''ScrollView''), nel quale verrà effettuato il rilascio dell'icona dell'immagine trascinata, abbia la sua proprietà ''.Drop'' posta a <FONT color=Darkred>''True''</font>;
 
* l'oggetto, dal quale viene ''prelevata'' e trascinata l'immagine, e quindi quello al quale sarà applicato l'evento che scatena il ''prelevamento'' dell'immagine da trascinare, deve essere quello che <SPAN style="text-decoration:underline">contiene</span> l'immagine (in questo caso le tre ''PictureBox'' poste nell'oggetto ''VPanel''). Se gli oggetti sono più di uno (come nel nostro esempio), gli oggetti contenenti le ''Picture'' vanno raggruppati con il nome di un medesimo Gruppo;
 
* l'evento che scatena il ''prelevamento'' dell'immagine da trascinare è <FONT color=darkred>''_MouseDrag()''</font>;
 
* all'interno della routine di questo evento si porrà la riga di comando: ''Drag.Icon = Last.Picture'', affinché durante il trascinamento appaia in prossimità del puntatore del mouse l'icona dell'immagine che si sta trascinando. Inoltre, sarà posta quest'altra riga: ''Last.Drag(Last.Picture.Image)'' per avviare il processo di ''trascinamento'', indicando nell'argomento del metodo ''Drag'' che i dati oggetto della procedura di ''Drag'' sono afferenti ad un'immagine (e non un testo);
 
* il rilascio dell'immagine all'interno dell'altro oggetto previsto (nel nostro esempio è una ''ScrollView'', che contiene una ''PictureBox'', che accoglierà e mostrerà effettivamente in vero l'immagine) è effettuato dall'evento <FONT color=darkred>''_Drop()''</font> dell'oggetto ricevente;
 
* nella routine dell'evento ''Drop'' si assegnerà alla ''PictureBox'', presente all'interno dell'oggetto che scatena il predetto ''Drop'' (nel nostro esempio la ''ScrollView''), i dati dell'immagine oggetto del ''Drag''.
 
'''Public''' Sub Form_Open() 
 
   
 
  ScrollView1.Drop = True
 
 
 
'''End'''
 
     
 
     
 
'''Public''' Sub pb_MouseDrag() 
 
     
 
  Drag.Icon = Last.Picture   
 
  Last.Drag(Last.Picture.Image)  
 
     
 
'''End''' 
 
 
   
 
   
 +
End
 
   
 
   
'''Public''' Sub ScrollView1_Drop() 
 
     
 
  PictureBox4.Picture = Drag.Data.Picture 
 
     
 
'''End'''
 
 
 
==Far mostrare l'immagine nel medesimo punto del suo rilascio==
 
Può darsi il caso in cui il contenitore, ove verrà rilasciata e fatta dunque apparire l'immagine trascinata, sia più ampio dell'immagine medesima; e che pertanto questa possa essere rilasciata in un punto qualsiasi a scelta di quel contenitore.
 
<BR>Per assicurare che l'immagine dopo il suo rilascio venga mostrata nel punto esatto (ossia alle esatte ''coordinate'') in cui è stata rilasciata, bisognerà utilizzare le proprietà ''.X''  ed  ''.Y'' della Classe ''Drag''.
 
 
 
Mostriamo un esempio simile al precedente, in cui su un ''Form'' v'è una ''PictureBox'', contenente un'immagine che dovrà essere trascinata all'interno di un contenitore: una ''ScrollView''.
 
'''Public''' Sub Form_Open()
 
 
   
 
   
  PictureBox1.Picture = Picture.Load("<FONT Color=gray>''/percorso/del/file/immagine''</font>")
+
Public Sub <FONT color=darkorange>PictureBox2</font>_MouseDrag()
 
 
  ScrollView1.Drop = True
 
 
   
 
   
  '''End'''
+
  <FONT color=gray>' ''Preleviamo e trasciniamo l'immagine dalla "PictureBox2":''</font>
 +
  Drag.Icon = Last.Picture   
 +
  Last.Drag(Last.Picture.Image)
 +
<FONT color=gray>' ''...o anche:''
 +
' '''Last.Drag(Drag.Icon.Image)'''</font>
 
   
 
   
 +
End
 
   
 
   
'''Public''' Sub PictureBox1_MouseDrag()
 
 
 
  If Mouse.Left Then   
 
    Drag.Icon = Last.Picture   
 
    Last.Drag(Last.Picture.Image) 
 
  Endif
 
 
 
'''End'''
 
 
   
 
   
 +
Public Sub <FONT color=#B22222>PictureBox1</font>_Drop() 
 
   
 
   
  '''Public''' Sub ScrollView1_Drop()
+
  <FONT color=gray>' ''Rilasciamo l'immagine nella "PictureBox1":''</font>
 +
  <FONT color=#B22222>PictureBox1</font>.Picture = Drag.Data.Picture 
 
   
 
   
  Dim pb As PictureBox
+
  End
 
 
  <FONT color=gray>' ''Poiché la "ScrollView" non è in grado di supportare in modo autonomo un'immagine, allora viene creata una "PictureBox" all'interno della "ScrollView" all'atto del "_Drop()". Sono assegnate a questa nuova "PictureBox": coordinate con la proprietà "Drag.X" e "Drag.Y", l'immagine prelevata e trascinata con il mouse, e le medesime dimensioni della predetta immagine trascinata e rilasciata:''</font>
 
  With pb = New PictureBox(ScrollView1)
 
    .X = <FONT color=#B22222>Drag.X</font>
 
    .Y = <FONT color=#B22222>Drag.Y</font>
 
    .Picture = Drag.Data.Picture
 
    .W = Drag.Data.Picture.W
 
    .H = Drag.Data.Picture.H
 
  End With
 
 
 
'''End'''
 
  
  
Riga 114: Riga 38:
 
=Note=
 
=Note=
 
[1] Vedere anche:
 
[1] Vedere anche:
<BR> - [[Guide_della_comunità#Drag_-_Drop|Drag&Drop]]
+
* [[Guide_della_comunità#Drag_.26_Drop|Drag&Drop]]
<BR> - [[Drag-Drop_di_un_testo_in_una_DrawingArea|Drag-Drop di un testo in una DrawingArea]]
+
* [[Drag-Drop di un testo in una DrawingArea]]
<BR> - [[Drag-Drop_di_un'immagine_in_una_DrawingArea|Drag-Drop di un'immagine in una DrawingArea]]
+
* [[Drag-Drop di un'immagine in una DrawingArea]]
<BR> - [[Drag-Drop_di_un'immagine_in_una_cella_di_una_GridView|Drag-Drop di un'immagine in una cella di una GridView]]
+
* [[Drag-Drop di un'immagine in una cella di una GridView]]
<BR> - [[Drag-Drop_di_un_testo_da_una_cella_di_una_GridView_ad_una_cella_di_un'altra_GridView|Drag-Drop di un testo da una cella di una GridView ad una cella di un'altra GridView]]
+
* [[Drag-Drop di un testo da una cella di una GridView ad una cella di un'altra GridView]]
<BR> - [[Spostare_oggetti_con_il_mouse_all'interno_di_un_contenitore_mediante_Drag_%26_Drop|Spostare oggetti con il mouse all'interno di un contenitore mediante Drag&Drop]]
+
* [[Spostare oggetti con il mouse all'interno di un contenitore mediante Drag & Drop]]

Versione attuale delle 17:07, 31 gen 2024

Mostriamo di seguito un codice essenziali per effettuare il Drag&Drop [nota 1] di un'immagine, ad esempio, da una PictureBox a un'altra.
In particolare:

  • la PictureBox, nella quale verrà effettuato il rilascio dell'icona dell'immagine trascinata, deve avere la sua Proprietà ".Drop" posta a True;
  • la PictureBox, dalla quale viene prelevata e trascinata l'immagine (e quindi quella alla quale sarà applicato l'evento che scatena il prelevamento dell'immagine da trascinare), deve essere quella che ovviamente contiene l'immagine;
  • l'Evento che consente il prelevamento dell'immagine da trascinare è "_MouseDrag()";
  • all'interno della routine di questo Evento si porrà la riga di comando: Drag.Icon = Last.Picture, affinché durante il trascinamento appaia in prossimità del puntatore del mouse l'icona dell'immagine che si sta trascinando. Inoltre, sarà posta quest'altra riga: Last.Drag(Last.Picture.Image) per avviare il processo di trascinamento, indicando nell'argomento del Metodo ".Drag()" che i dati, oggetto della procedura di Drag, sono afferenti ad un'immagine (e non un testo);
  • nella routine dell'Evento "_Drop()" si assegnerà all'altra PictureBox, che scatena il predetto Drop, i dati dell'immagine oggetto del Drag.
Public Sub Form_Open()  

' Attiviamo la capacità della "PictureBox1" di ricevere con l'Evento "_Drop()" l'immagine trascinata:
 PictureBox1.Drop = True

 PictureBox2.Picture = Picture.Load("/percorso/del/file/immagine")

End


Public Sub PictureBox2_MouseDrag()  

' Preleviamo e trasciniamo l'immagine dalla "PictureBox2":
  Drag.Icon = Last.Picture    
  Last.Drag(Last.Picture.Image)
' ...o anche:
' Last.Drag(Drag.Icon.Image)

End


Public Sub PictureBox1_Drop()  

' Rilasciamo l'immagine nella "PictureBox1":
 PictureBox1.Picture = Drag.Data.Picture  

End


Note

[1] Vedere anche: