Interscambiare la posizione del contenuto degli item di una ListBox mediante trascinamento con il mouse
Da Gambas-it.org - Wikipedia.
Versione del 7 dic 2023 alle 20:13 di Vuott (Discussione | contributi)
Useremo in questo caso le risorse del Drag&Drop per spostare il testo da una riga a un'altra mediante trascinamento con il mouse.
Mostriamo un esempio pratico:
Public Sub Form_Open() With ListBox1 .Drop = True .List = ["aaaa", "bbbb", "cccc", "dddd", "eeee"] End With End Public Sub ListBox1_MouseDrag() With ListBox1 .Tag = .Index ' Preleva e trascina il testo individuando la riga che lo contiene: .Drag(ListBox1.Text, "text/html") End With End Public Sub ListBox1_Drop() Dim b As Byte ' Individua il numero d'indice della riga, ove si deve rilasciare il testo prelevato dall'altra riga: b = Fix(Drag.Y / (ListBox1.ScrollH / ListBox1.Count)) [nota 1] ' Assegna alla riga del prelievo il testo contenuto nella riga del rilascio: ListBox1[ListBox1.Tag].Text = ListBox1[b].Text ' Rilascia nella riga il testo della riga del prelievo: ListBox1[b].Text = Drag.Data End
Si potrebbe anche parzialmente usare il Drag&Drop, modificando la routine "ListBox1_Drop()"con l'uso della funzione Swap:
Public Sub ListBox1_Drop() Swap ListBox1[ListBox1.Tag].Text, ListBox1[Fix(Drag.Y / (ListBox1.ScrollH / ListBox1.Count))].Text End
Note
[1] Vedere questa pagina: Individuare il numero d'indice della riga di una ListBox sulla quale si è cliccato con il mouse