Scambiare il contenuto delle celle di una GridView mediante trascinamento con il mouse
Da Gambas-it.org - Wikipedia.
Versione del 7 giu 2024 alle 05:29 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).
Private GridView1 As GridView Public Sub Form_Open() With GridView1 = New GridView(Me) As "GridView1" .X = 0 .y = 0 .W = 180 .H = 100 .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:
Private GridView1 As GridView Public Sub Form_Open() With GridView1 = New GridView(Me) As "GridView1" .X = 0 .y = 0 .W = 180 .H = 100 .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