Spostare un'immagine da una cella a un'altra di una GridView senza Drag&Drop

Da Gambas-it.org - Wikipedia.

Mostriamo un esempio di come spostare un'immagine da una cella a un'altra di una GridView senza usare le risorse del Drag&Drop.

Private cc As New Short[2]
Private pc As Picture


Public Sub Form_Open()

 With GridView1
   .Columns.Count = 3
   .Rows.Count = 3
 End With

 GridView1[1, 0].Picture = Picture.Load("/percorso/del/file/immagine")

' Adeguiamo le dimensioni della cella alle dimensioni dell'immagine caricata:
 GridView1.Rows[1].H = -1
 GridView1.Columns[0].W = -1

End


Public Sub GridView1_Click()

 cc[0] = GridView1.Row
 cc[1] = GridView1.Column

' Preleviamo l'immagine individuando precisamente la cella della "GridView":
 pc = GridView1.Current.Picture

End


Public Sub GridView1_MouseUp()

 If (GridView1.RowAt(Mouse.Y) == -1) Then Return

' Se lo spostamento avviene da una cella vuota in una cella contenente dell'immagine, si esce da questa routine impedendo che l'immagine (se presente) della cella di arrivo sia cancellata.
' Altresì, se si clicca e si rilascia il mouse nella medesima cella, si esce da questa routine impedendo che l'immagine presente nella cella sia cancellata.
 If IsNull(pc) Or ((GridView1.Row == cc[0]) And (GridView1.Column == cc[1])) Then Return

' Rilasciamo nella nuova cella della "GridView" l'immagine prelevata e trascinata dall'altra cella:
 GridView1.Current.Picture = pc

' Adeguiamo le dimensioni della nuova cella alle dimensioni dell'immagine rilasciata:
 GridView1.Rows[GridView1.Row].H = -1
 GridView1.Columns[GridView1.Column].W = -1

' Cancelliamo l'immagine presente nella cella, dalla quale è stata trascinata:
 GridView1[cc[0], cc[1]].Picture = Null

End