Cara Membuat Listview Berfungsi Layaknya Combobox

Cara Membuat Listview Berfungsi Layaknya Combobox - Hai, apa kabar anda hari ini?terima kasih anda masih setia mengunjungi blog ini. Kali ini saya bermaksud berbagi sedikit tentang kegunaan dari Listvisew. 

Listview adalah komponen dari visual basic yang memiliki lebih dari satu kolom, dan artinya bisa menampilkan banyak data di kolomnya.

Bagaiamana dengan Combobox?


Combobox adalah komponen yang membantu programmer memilih satu dari sekian banyak data yang terpampang. 

Begitu diklik akan muncul daftar menurun ke bawah. Cuma hanya bisa menampilkan satu data disatu kolom saja.

Tapi apabila ingin menampilkan data yang lumayan banyak agak kesulitan apabila menggunakan combobox. 


Jadi dengan menggunakan Listview kita bisa menggantikan peran combobox.


Memanggil Komponen Listview di Visual Basic


  1. Untuk Menambahkan component agar objek Listview muncul di dalam Toolbox VB6. Klik Menu Project lalu klik Components atau juga bisa tekan Control + T.
  2. Kemudian akan muncul dialog box Components. Lalu cari controls Microsoft Windows Common Controls 6.0 (SP6). 
Penggunaan Komponen Listview Pada Program


Di gambar terlihat Listview berwarna kuning bernama LvDepo, apabila LVDepo diklik, akan otomatis data – data yang di LvDepo tampil di textbox yang sudah disediakan, berikut petikannya kodenya :
 

Public Sub BukaIdDepo()
On Error Resume Next
Dim Id As New ADODB.Recordset
Dim IDItem As ListItem
Dim mlindex

    mlindex = 1
    LvDepo.ListItems.Clear

    If Id.State = 1 Then Id.Close
        Id.Open "SELECT KdDepo, NmDepo FROM Depo", CON, adOpenDynamic, adLockOptimistic
    If Not Id.EOF Then
    Do Until Id.EOF
    With LvDepo
      .ListItems.Add , , Id.Fields(0)
      .ListItems(.ListItems.Count).SubItems(1) = Id.Fields(1)
      IDItem.Tag = Id!KdDepo
      Id.MoveNext
    End With
    Loop

    If LvDepo.ListItems.Count > 0 Then
    If mlindex > LvDepo.ListItems.Count Then mlindex = 1
        PloadDepo (LvDepo.ListItems(mlindex).Tag)
        LvDepo.ListItems(mlindex).Selected = True
    End If
    End If

End Sub

Public Sub OpenIDDepo()
Dim rsDepo As New ADODB.Recordset
On Error Resume Next
Dim Tampil As New ADODB.Recordset

    Call Koneksi
    Dim Data As ListItem
    Dim i As Integer

    Set rsDepo = New ADODB.Recordset
    If rsDepo.State = 1 Then rsDepo.Close
        rsDepo.CursorLocation = adUseClient
    If rsDepo.State = 1 Then rsDepo.Close
        Tampil.Open "SELECT * FROM Depo WHERE KdDepo ='" & LvDepo.SelectedItem & "'", CON, adOpenDynamic, adLockOptimistic
    If Not Tampil.EOF Then
        xDepo.Text = Tampil.Fields(1)
        xKdDepo.Text = Tampil.Fields(0)
 
    End If

End Sub

Public Sub PloadDepo(Id As String)
On Error Resume Next
Dim fc As New ADODB.Recordset

    If fc.State = 1 Then
        fc.Close
    fc.Open "SELECT NmDepo FROM Depo WHERE KdDepo = '" & LvDepo.SelectedItem & "'", CON, adOpenDynamic, adLockOptimistic
    If Not fc.EOF Then
        LvDepo.ToolTipText = fc!NmDepo

    End If
    End If

End Sub

Public Sub lvDEPO_Click()
Dim z

    OpenIDDepo
    LvDepo.Visible = False
    z = 0

End Sub

Public Sub xKdDepo_Click()
Dim z
  
    If z = 0 Then
        LvDepo.Visible = True
        z = 1
    ElseIf z = 1 Then
        LvDepo.Visible = False
        z = 0
      
    End If

End Sub

Public Sub LvDepo_ItemClick(ByVal Item As MSComctlLib.ListItem)
Dim mlindex

    mlindex = Item.Index
    PloadDepo (Item.Tag)
  
End Sub

Public Sub LvDepo_KeyPress(KeyAscii As Integer)
  
    If KeyAscii = 13 Then
        OpenIDDepo
        LvDepo.Visible = False
      
    End If

End Sub

Function BukaDepo(Kunci As String) As String
Dim cb As New ADODB.Recordset

    If cb.State = 1 Then cb.Close
        cb.Open "SELECT * FROM Depo WHERE NmDepo ='" & Kunci & "'", CON, adOpenDynamic, adLockOptimistic
    If Not cb.EOF Then
        BukaDepo = cb!KdDepo
    Else
        BukaDepo = "-"
      
    End If

End Function


Berikut kode untuk menampilkan data dari Listview ke textboxnya :

Public Sub OpenIDDepo()
Dim rsDepo As New ADODB.Recordset
On Error Resume Next
Dim Tampil As New ADODB.Recordset

    Call Koneksi
    Dim Data As ListItem
    Dim i As Integer

    Set rsDepo = New ADODB.Recordset
    If rsDepo.State = 1 Then rsDepo.Close
        rsDepo.CursorLocation = adUseClient
    If rsDepo.State = 1 Then rsDepo.Close
        Tampil.Open "SELECT * FROM Depo WHERE KdDepo ='" &  

     LvDepo.SelectedItem & "'", CON, adOpenDynamic, adLockOptimistic
    If Not Tampil.EOF Then
        xDepo.Text = Tampil.Fields(1)
        xKdDepo.Text = Tampil.Fields(0)
 
    End If

End Sub

Selanjutnya adalah Prosedur yang bernama BukaIDDepo harus diletakan di Kepala Program, yakni di Form_Load. Anda bisa melihatnya seperti pada contoh berikut ini :

Private Sub Form_Load()
  
    Me.Height = 7590
    Me.Left = 4000
    Me.Top = 200
    Me.Width = 10290
  
    Set CON = New ADODB.Connection
    CON.Open "DSN=gs"
    CON.CursorLocation = adUseClient

    BukaIdDepo
   'Call NonAktiv
   'Tampil ("SELECT * FROM SHIPPER")

End Sub

Databasenya menggunakan Access, untuk lebih lengkapnya, silahkan donlut Source Kode Listview Ala Combobox di  saya rasa sudah cukup lengkap source kode untuk membuat Listview Berfungsi Layaknya Combobox kita kali ini.

Semoga bermanfaat, apabila ada kesulitan mohon tinggalkan komentar anda di kolom komentar yang sudah disediakan.

Terima kasih atas perhatiannya.