Cara Drag Drop Multi Subitems pada Listview dengan VB6

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.

Cara Drag Drop Multi Subitems pada Listview dengan VB6

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.

Related

Visual Basic Classic 2787371462510855923

Post a Comment

Perhatian !!
- Berkomentarlah dengan menggunakan bahasa yang baik dan sopan dan sesuai topik pembahasan
- Dilarang menjadikan referensi artikel web ini tanpa menyertakan sumbernya

emo-but-icon

Terbaru

Random Artikel

Memuat...

Contact Us

Name

Email *

Message *

item