Membuat menu samping dengan komponen vbAccelerator VB6 Explorer Bar

Posted by Kamarudin • 2 minute read • Comments

Masih pembahasan tentang pembuatan menu alternatif selain menggunakan tool standar vb (menu editor), kali ini kita akan menggunakan komponen vbAccelerator VB6 Explorer Bar.

vbAccelerator VB6 Explorer Bar adalah salah satu komponen keren dan gratis yang tersedia di situs www.vbaccelerator.com.

Dan masih menggunakan resource yang sama dengan postingan saya sebelumnya, kita akan membuat menu dengan tampilan seperti berikut :

Untuk memudahkan kita memahami penggunaan komponen vbAccelerator Explorer Bar, minimal ada 2 istilah yang harus kita ketahui :

  1. Bar Menu, gampangnya kita sebut saja menu induk
  2. Item Menu tentu saja ini menu anaknya

Adapun contoh prosedur/fungsi untuk menambahkan Bar Menu dan Item Menu:

Private Function setBarMenu(ByVal explorerBar As Object, ByVal menuName As String, _
                            ByVal menuCaption As String, ByVal iconIndex As Long) As Object

    Dim cBar As Object

    Set cBar = explorerBar.Bars.Add(, menuName, menuCaption)
    cBar.IsSpecial = True
    cBar.iconIndex = iconIndex
    cBar.TitleForeColor = WARNA_BIRU_TUA
    cBar.TitleForeColorOver = WARNA_BIRU_TUA
    cBar.TitleBackColorLight = WARNA_BIRU
    cBar.TitleBackColorDark = RGB(234, 241, 253)
    cBar.BackColor = WARNA_ABU_ABU

    Set setBarMenu = cBar
End Function

Private Sub setItemMenu(ByVal cBar As Object, ByVal menuName As String, ByVal menuCaption As String, ByVal iconIndex As Long)
    Dim cItem   As Object

    Set cItem = cBar.Items.Add(, menuName, menuCaption)
    With cItem
        .iconIndex = iconIndex
        .TextColor = WARNA_BIRU_TUA
        .TextColorOver = WARNA_PUTIH
    End With
End Sub

Sebelum kita akan mengetikan kode lengkap untuk membuat menu dengan komponen vbAccelerator Explorer Bar, tambahkan terlebih dahulu komponen/referensi berikut ke dalam project Anda :

  1. vbAccelerator Explorer Bar (Menu Project -> Component)
  2. vbAccelerator Image List (Menu Project -> Component), komponen ini untuk menambahkan icon di menu bar/item
  3. vbAccelerator VB6 Subclassing and Timer Assistant (Menu Project -> References) pembahasan tentang komponen ini bisa di lihat di sini

kemudian drag komponen vbAccelerator Explorer Bar dan vbAccelerator Image List ke form

Contoh penggunaan prosedur/fungsi setBarMenu dan setItemMenu :

Private Sub addMenu(ByVal explorerBar As Object, ByVal barIcons As Object, ByVal itmIcons As Object)
    Dim rsMenuInduk As ADODB.Recordset
    Dim rsMenuAnak  As ADODB.Recordset
    Dim cBar        As Object

    Dim i           As Long
    Dim x           As Long
    Dim rowCount(1) As Long

    With explorerBar
        .UseExplorerStyle = False

        .Redraw = False

        .BackColorStart = WARNA_BIRU
        .BackColorEnd = WARNA_BIRU

        .ImageList = itmIcons.hIml
        .BarTitleImageList = barIcons.hIml

        'menampilkan menu induk
        strSql = "SELECT id, menu_name, menu_caption " & _
                 "FROM menu_induk " & _
                 "ORDER BY id"
        Set rsMenuInduk = openRecordset(strSql)
        If Not rsMenuInduk.EOF Then
            rowCount(0) = getRecordCount(rsMenuInduk)

            For i = 1 To rowCount(0)
                Set cBar = setBarMenu(explorerBar, rsMenuInduk("menu_name").Value, rsMenuInduk("menu_caption").Value, 0)

                'menampilkan menu anak
                strSql = "SELECT menu_name, menu_caption " & _
                         "FROM menu_anak " & _
                         "WHERE menu_induk_id = " & rsMenuInduk("id").Value & " " & _
                         "ORDER BY id"
                Set rsMenuAnak = openRecordset(strSql)
                If Not rsMenuAnak.EOF Then
                    rowCount(1) = getRecordCount(rsMenuAnak)

                    For x = 1 To rowCount(1)
                        Call setItemMenu(cBar, rsMenuAnak("menu_name").Value, rsMenuAnak("menu_caption").Value, 0)

                        rsMenuAnak.MoveNext
                    Next x
                End If
                Call closeRecordset(rsMenuAnak)

                rsMenuInduk.MoveNext
            Next i
        End If
        Call closeRecordset(rsMenuInduk)

        Set cBar = setBarMenu(explorerBar, "mnuKeluar", "Keluar", 1)
        Call setItemMenu(cBar, "mnuKeluarDrProgram", "Keluar dari Program", 0)

        .Redraw = True
    End With
End Sub

Dan terakhir source code untuk menghandle menu yang di klik :

Private Sub vbalExplorerBarCtl1_ItemClick(itm As vbalExplorerBarLib6.cExplorerBarItem)
    Select Case itm.Key
        Case "mnuBarang": 'TODO : tampilkan frmBarang disini
        Case "mnuCustomer"
        Case "mnuSupplier"
        Case "mnuPembelian"
        Case "mnuReturPembelian"
        Case "mnuPenjualan"
        Case "mnuBiayaOperasional"
        Case "mnuGajiKaryawan"
        Case "mnuLapPembelian"
        Case "mnuLapJthTempo"
        Case "mnuLapPenjualan"
    End Select
End Sub

Contoh source code langkap bisa didownload disini.

Selamat mencoba :blush:

Comments