Masih pembahasan tentang pembuatan menu alternatif selain menggunakan tool standar vb (menu editor), kali ini kita akan menggunakan komponen vbAccelerator VB6 Explorer Bar.
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 :
Bar Menu, gampangnya kita sebut saja menu induk
Item Menu tentu saja ini menu anaknya
Adapun contoh prosedur/fungsi untuk menambahkan Bar Menu dan Item Menu:
123456789101112131415161718192021222324252627
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 :
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 :
123456789101112131415
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.