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

Da Gambas-it.org - Wikipedia.
 
(Una versione intermedia di uno stesso utente non è mostrata)
Riga 17: Riga 17:
 
   
 
   
 
   
 
   
  Public Sub GridView1_MouseUp()
+
  Public Sub GridView1_Click()
 
   
 
   
   Swap GridView1.Tag.Text, GridView1.Current.Text
+
   GridView1.Tag = GridView1.Current
 
   
 
   
 
  End
 
  End
 
   
 
   
 
   
 
   
  Public Sub GridView1_Click()
+
  Public Sub GridView1_MouseUp()
 
   
 
   
   GridView1.Tag = GridView1.Current
+
   Swap GridView1.Tag.Text, GridView1.Current.Text
 
   
 
   
 
  End
 
  End
Riga 62: Riga 62:
 
   
 
   
 
   With GridView1
 
   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
 
     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
 
     GridView1[.RowAt(Mouse.ScreenY - Me.Y - .Y), .ColumnAt(Mouse.ScreenX - Me.X - .X)].Text = Drag.Data

Versione attuale 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