Cara Drag Drop Multi Subitems pada Listview dengan VB6
https://carakuvb6.blogspot.com/2017/12/cara-drag-drop-multi-subitems-pada.html
Fungsi komponen Listiview pada Microsoft Visual Basic 6.0 (VB6) untuk views atau menampilkan data yang terdiri dari baris dan kolom, source code cara memindahkan baris pada tabel Listiview dengan menggunakan Mouse atau lebih kita kenal dengan istilah Drag Drop pada artikel sebelumnya mengenai pembahasan drag drop pernah admin bahas pada judul artikel Contoh Membuat Drag dan Drop File ke ListBox akan tetapi menggunakan componen ListBox, secara garis besar cara kerja dari syntak ini hampir sama hanya saja sedikit berbeda dengan komponen yang digunakan dan metode drag drop nya.
Untuk pertama kalinya buka Microsoft Visual Basic 6.0 - StandartEXE dilanjutkan buat sebuah form dan tambahkan satu buah module sebagai tempat pendeklarasian variabel-variabel pendukung dari sourcode ini. Tambahkan komponen Listiview Control (Microsoft Windows Common Control 6.0 (SP6) kemudian tambahkan ke form. Kemudian copykan syntak berikut ini kedalam sebuah module
Public Sub LVDragDropMulti(ByRef lvList As ListView, ByVal x As Single, ByVal y As Single)
Dim objDrag As ListItem
Dim objDrop As ListItem
Dim objNew As ListItem
Dim objSub As ListSubItem
Dim intIndex As Integer
Dim intLoop As Integer
Dim intCount As Integer
Dim intSelected As Integer
Dim arrItems() As ListItem
Set objDrop = lvList.HitTest(x, y)
Set objDrag = lvList.SelectedItem
If (objDrop Is Nothing) Or (objDrag Is Nothing) Then
Set lvList.DropHighlight = Nothing
Set objDrop = Nothing
Set objDrag = Nothing
Exit Sub
End If
intIndex = objDrop.Index
intCount = lvList.ListItems.Count
intSelected = 0
Set lvList.DropHighlight = Nothing
For intLoop = 1 To intCount
If lvList.ListItems(intLoop).Selected Then
intSelected = intSelected + 1
ReDim Preserve arrItems(1 To intSelected) As ListItem
Set arrItems(intSelected) = lvList.ListItems(intLoop)
End If
Next
For intLoop = UBound(arrItems) To LBound(arrItems) Step -1
lvList.ListItems.Remove arrItems(intLoop).Index
Next
For intLoop = UBound(arrItems) To LBound(arrItems) Step -1
Set objDrag = arrItems(intLoop)
Set objNew = lvList.ListItems.Add(intIndex, objDrag.Key, objDrag.Text, objDrag.Icon, objDrag.SmallIcon)
If objDrag.ListSubItems.Count > 0 Then
For Each objSub In objDrag.ListSubItems
objNew.ListSubItems.Add objSub.Index, objSub.Key, objSub.Text, objSub.ReportIcon, objSub.ToolTipText
Next
End If
objNew.Selected = True
Next
ReDim arrItems(1)
Set arrItems(1) = Nothing
Set objNew = Nothing
Set objDrag = Nothing
Set objDrop = Nothing
End Sub
Dilanjutkan dengan syntak berikutnya, copykan syntak dibawah ini sesuai dengan prosedur dan komponen pada form (tulisan cetak warna biru)
Private Sub Form_Load()
ListView1.ColumnHeaders.Clear
ListView1.ColumnHeaders.Add , , "Column (1)", 1700
ListView1.ColumnHeaders.Add , , "Column (2)", 1700
ListView1.ColumnHeaders.Add , , "Column (3)", 1700
ListView1.ColumnHeaders.Add , , "Column (4)", 1700
Dim intLoop As Integer
Dim objItem As ListItem
With ListView1
For intLoop = 1 To 20
Set objItem = .ListItems.Add(, , "Column " & intLoop)
objItem.ListSubItems.Add , , "Column " & intLoop
objItem.ListSubItems.Add , , "Column " & intLoop
Next
Set objItem = Nothing
End With
End Sub
Private Sub ListView1_OLEDragDrop(Data As MSComctlLib.DataObject, _
Effect As Long, Button As Integer, _
Shift As Integer, x As Single, y As Single)
Call LVDragDropMulti(ListView1, x, y)
End Sub
Private Sub ListView1_OLEDragOver(Data As MSComctlLib.DataObject, _
Effect As Long, Button As Integer, _
Shift As Integer, x As Single, y As Single, State As Integer)
Set ListView1.DropHighlight = ListView1.HitTest(x, y)
End Sub
Simpan dan RUN/F5. Klik salah satu data pada listiview kemudian tarik pindahkan ke bagian pertama atau paling bawah sesuai keinginan agan, secara otomatis subitems yang terblok akan berpindah ke kolom sesuai dengan arah mouse agan. Untuk lebih jelasnya sourcode ini bisa didownload di LINK INI. Semoga artikel kali ini dapat bermanfaat bagi pembaca-pembaca sekalian.
Perhatian !!
- Berkomentarlah dengan menggunakan bahasa yang baik dan sopan dan sesuai topik pembahasan
- Dilarang menjadikan referensi artikel web ini tanpa menyertakan sumbernya