Differenze tra le versioni di "Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse"
Da Gambas-it.org - Wikipedia.
Riga 27: | Riga 27: | ||
GridView1.Tag = GridView1.Current | GridView1.Tag = GridView1.Current | ||
+ | |||
+ | 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 | ||
+ | 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 10:44, 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_MouseUp() Swap GridView1.Tag.Text, GridView1.Current.Text End Public Sub GridView1_Click() GridView1.Tag = GridView1.Current 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 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