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

Da Gambas-it.org - Wikipedia.
 
(21 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Mostriamo di seguito il codice ''essenziale'' per effettuare il ''Drag-Drop'' 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.
 
+
<BR>In particolare:
L'esempio 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 (ad esempio: pb). Quindi viene assegnata ancora a ciascuna di dette ''PictureBox'' una diversa immagine, che sarà oggetto del ''Drag-Drop''.
+
* 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>;
<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.
+
* 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 consente il ''prelevamento'' dell'immagine da trascinare è <FONT color=darkred>"_MouseDrag()"</font>;
Il ''Drag-Drop'' richiede che:
+
* 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);
* 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>;
+
* nella routine dell'Evento "_Drop()" si assegnerà all'altra ''PictureBox'', che scatena il predetto ''Drop'', i dati dell'immagine oggetto del ''Drag''.
* l'oggetto da 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;
+
  Public Sub Form_Open()   
* 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);
+
  <FONT color=gray>' ''Attiviamo la capacità della "PictureBox1" di ricevere con l'Evento "_Drop()" l'immagine trascinata:''</font>
* 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;
+
  <FONT color=#B22222>PictureBox1</font>.Drop = True
* nella routine del ''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()   
+
  <FONT color=darkorange>PictureBox2</font>.Picture = Picture.Load("<FONT Color=darkgreen>''/percorso/del/file/immagine''</font>")
     
+
   
    ScrollView1.Drop = True  
+
  End
     
+
   
  '''End'''
 
     
 
     
 
'''Public''' Sub pb_MouseDrag()  
 
     
 
    Drag.Icon = Last.Picture  
 
    Last.Drag(Last.Picture.Image)   
 
     
 
'''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()
 
 
   
 
   
  ScrollView1.Drop = True
+
Public Sub <FONT color=darkorange>PictureBox2</font>_MouseDrag() 
 
   
 
   
  '''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 creo una "PictureBox" all'interno della "ScrollView" all'atto del "_Drop()" .''
+
 
' ''Le assegno coordinate con la proprietà "Drag.X" e "Drag.Y", l'immagine prelevata e trascinata''
+
=Note=
' ''con il mouse, e le medesime dimensioni della predetta immagine trascinata e rilasciata:''</font>
+
[1] Vedere anche:
    With pb = New PictureBox(ScrollView1)
+
* [[Guide_della_comunità#Drag_.26_Drop|Drag&Drop]]
      .X = <FONT color=#B22222>Drag.X</font>
+
* [[Drag-Drop di un testo in una DrawingArea]]
      .Y = <FONT color=#B22222>Drag.Y</font>
+
* [[Drag-Drop di un'immagine in una DrawingArea]]
      .Picture = Drag.Data.Picture
+
* [[Drag-Drop di un'immagine in una cella di una GridView]]
      .W = Drag.Data.Picture.W
+
* [[Drag-Drop di un testo da una cella di una GridView ad una cella di un'altra GridView]]
      .H = Drag.Data.Picture.H
+
* [[Spostare oggetti con il mouse all'interno di un contenitore mediante Drag & Drop]]
    End With
 
 
 
'''End'''
 

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: