Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse
Da Gambas-it.org - Wikipedia.
Versione del 10 dic 2023 alle 16:22 di Vuott (Discussione | contributi)
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