Differenze tra le versioni di "Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse"

Da Gambas-it.org - Wikipedia.
(2 versioni intermedie di uno stesso utente non sono mostrate)
Riga 13: Riga 13:
 
     Next
 
     Next
 
   Next
 
   Next
 +
 +
End
 +
 +
 +
Public Sub GridView1_Click()
 +
 +
  GridView1.Tag = GridView1.Current
 
   
 
   
 
  End
 
  End
Riga 22: Riga 29:
 
   
 
   
 
  End
 
  End
 +
 +
 +
=Scambio con il Drag&Drop=
 +
In quest'altro codice si farà uso delle risorse del ''Drag&Drop'':
 +
Public Sub Form_Open()
 
   
 
   
 +
  With GridView1
 +
    .Columns.Count = 3
 +
    .Rows.Count = 5
 +
    .Drop = True
 +
  End With
 
   
 
   
  Public Sub GridView1_Click()
+
  For b As Byte = 0 To GridView1.Columns.Max
 +
    For c As Byte = 0 To GridView1.Rows.Max
 +
      GridView1[c, b].Text = b & "-" & c
 +
    Next
 +
  Next
 +
 +
End
 +
 +
 +
  Public Sub GridView1_MouseDrag()
 +
 +
  GridView1.Drag(GridView1.Current.Text, "text/html")
 +
 +
End
 +
 +
 +
Public Sub GridView1_Drop()
 +
 +
  Dim tmp As String
 
   
 
   
   GridView1.Tag = GridView1.Current
+
   With GridView1
 +
<FONT Color=gray>' ''Individua l'indice della cella del rilascio:''</font>
 +
    tmp = GridView1[.RowAt(Mouse.ScreenY - Me.Y - .Y), .ColumnAt(Mouse.ScreenX - Me.X - .X)].Text
 +
    GridView1[.RowAt(Mouse.ScreenY - Me.Y - .Y), .ColumnAt(Mouse.ScreenX - Me.X - .X)].Text = Drag.Data
 +
    .Current.Text = tmp
 +
  End With
 
   
 
   
 
  End
 
  End

Versione delle 16:22, 10 dic 2023

Scambio senza Drag&Drop

Mostriamo un possibile codice, con il quale si potrà scambiare il testo da una cella di una GridView mediante trascinamento con il mouse a un'altra mediante rilascio (similmente al comportamento del Drag&Drop, ma senza utilizzarne le risorse).

Public Sub Form_Open()

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

 For b As Byte = 0 To GridView1.Columns.Max
   For c As Byte = 0 To GridView1.Rows.Max
     GridView1[c, b].Text = b & "-" & c
   Next
 Next

End


Public Sub GridView1_Click()

 GridView1.Tag = GridView1.Current

End


Public Sub GridView1_MouseUp()

 Swap GridView1.Tag.Text, GridView1.Current.Text

End


Scambio con il Drag&Drop

In quest'altro codice si farà uso delle risorse del Drag&Drop:

Public Sub Form_Open()

 With GridView1
   .Columns.Count = 3
   .Rows.Count = 5
   .Drop = True
 End With

 For b As Byte = 0 To GridView1.Columns.Max
   For c As Byte = 0 To GridView1.Rows.Max
     GridView1[c, b].Text = b & "-" & c
   Next
 Next

End


Public Sub GridView1_MouseDrag()

 GridView1.Drag(GridView1.Current.Text, "text/html")

End


Public Sub GridView1_Drop()

 Dim tmp As String

 With GridView1
' Individua l'indice della cella del rilascio:
   tmp = GridView1[.RowAt(Mouse.ScreenY - Me.Y - .Y), .ColumnAt(Mouse.ScreenX - Me.X - .X)].Text
   GridView1[.RowAt(Mouse.ScreenY - Me.Y - .Y), .ColumnAt(Mouse.ScreenX - Me.X - .X)].Text = Drag.Data
   .Current.Text = tmp
 End With

End