ExplorerBar Control for .NET
Ketika memutuskan untuk beralih ke VB .NET salah satu komponen yang saya buru adalah ExplorerBar dan kabar baiknya vbaccelerator juga sudah menyediakan komponen ini, tapi kabar buruknya sample source codenya menggunakan C# .NET .
Tapi tenang aja, dulu saya juga pernah iseng2x belajar bahasa ini, jadi proses konversi dari C# .NET ke VB .NET pun berjalan lancar :).
Oke, klo sudah enggak sabaran langsung aja download librarynya disini dan untuk sample aslinya (bahasa C# .NET) bisa didownload disini.
Sama seperti postingan saya sebelumnya, untuk menambahkan Bar Menu (menu induk) dan Item Menu (menu anak) saya pisah menjadi 2 fungsi yaitu :
Private Function SetBarMenu(ByVal explorerBar As vbAccelerator.Components.Controls.acclExplorerBar, _
ByVal menuName As String, ByVal menuCaption As String, ByVal iconIndex As Integer) As explorerBar
Dim barMenu As explorerBar
barMenu = New explorerBar
With barMenu
.IsSpecial = True
.iconIndex = iconIndex
.Text = menuCaption
.Tag = menuName
End With
Return barMenu
End Function
dan
Private Function SetItemMenu(ByVal explorerBar As vbAccelerator.Components.Controls.acclExplorerBar, _
ByVal menuName As String, ByVal menuCaption As String, ByVal iconIndex As Integer) As ExplorerBarLinkItem
Dim barItem As ExplorerBarLinkItem
barItem = New ExplorerBarLinkItem
With barItem
.iconIndex = iconIndex
.Text = menuCaption
.Tag = menuName ' ini berguna untuk menghandle menu yang diklik
End With
Return barItem
End Function
Selanjutnya kita tinggal gabungkan ke dua fungsi diatas
Private Sub AddMenu()
Dim strSql As String = String.Empty
Dim barMenu As explorerBar
Try
With AcclExplorerBar1
.ImageList = ilsIcons
.TitleImageList = ilsTitleIcons
.DrawingStyle = ExplorerBarDrawingStyle.Custom
.BackColorStart = Color.FromArgb(100, 149, 237)
.BackColorEnd = Color.FromArgb(100, 149, 237)
' menampilkan menu induk
strSql = "SELECT id, menu_name, menu_caption " & _
"FROM menu_induk " & _
"ORDER BY id"
Dim cmdMenuInduk As New OleDb.OleDbCommand(strSql, conn)
Dim dtrMenuInduk As OleDb.OleDbDataReader = cmdMenuInduk.ExecuteReader()
If dtrMenuInduk.HasRows Then
While dtrMenuInduk.Read()
barMenu = Me.SetBarMenu(AcclExplorerBar1, dtrMenuInduk.Item("menu_name").ToString(), dtrMenuInduk.Item("menu_caption").ToString(), 0)
Dim barItems As ExplorerBarItemCollection = barMenu.Items
' menampilkan menu anak
strSql = "SELECT menu_name, menu_caption " & _
"FROM menu_anak " & _
"WHERE menu_induk_id = " & dtrMenuInduk.Item("id").ToString() & " " & _
"ORDER BY id"
Dim cmdMenuAnak As New OleDb.OleDbCommand(strSql, conn)
Dim dtrMenuAnak As OleDb.OleDbDataReader = cmdMenuAnak.ExecuteReader()
If dtrMenuAnak.HasRows Then
While dtrMenuAnak.Read()
Dim barItem As ExplorerBarLinkItem
barItem = Me.SetItemMenu(AcclExplorerBar1, dtrMenuAnak.Item("menu_name").ToString(), dtrMenuAnak.Item("menu_caption").ToString(), 0)
barItems.Add (barItem)
End While
End If
dtrMenuAnak.Close()
cmdMenuAnak.Dispose()
.Bars.Add (barMenu)
End While
End If
dtrMenuInduk.Close()
cmdMenuInduk.Dispose()
End With
' set warna menu bar (master, transaksi, biaya, laporan)
For Each bar As ExplorerBar In AcclExplorerBar1.Bars
bar.TitleForeColor = Color.FromArgb(0, 0, 128)
bar.TitleForeColorHot = Color.FromArgb(0, 0, 128)
bar.TitleBackColorStart = Color.FromArgb(234, 241, 253)
bar.TitleBackColorEnd = Color.FromArgb(100, 149, 237)
bar.BackColor = Color.FromArgb(176, 196, 222)
' set warna menu item (barang, customer, supplier, dll)
For Each itm As ExplorerBarItem In bar.Items
Dim textItem As ExplorerBarLinkItem = CType(itm, ExplorerBarLinkItem)
textItem.ForeColor = Color.FromArgb(0, 0, 128) ' bar.TitleBackColorEnd
textItem.ForeColorHot = Color.White ' bar.TitleBackColorStart
Next
Next
Catch ex As Exception
Debug.Print (ex.Message)
Finally
conn.Close()
End Try
End Sub
cuplikan source diatas menampilkan menu dari database (Ms Access), selanjutnya tinggal dipanggil di event Form_Load
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call AddMenu
Me.BackColor = Color.FromArgb(100, 149, 237)
End Sub
terakhir untuk menghandle menu yang diklik kita memanfaatkan property Tag ExplorerBar, nilai dari property Tag ini sudah kita set pada saat memanggil fungsi SetItemMenu
Private Sub AcclExplorerBar1_ItemClick(ByVal sender As Object, ByVal args As vbAccelerator.Components.Controls.ExplorerBarItemClickEventArgs) Handles AcclExplorerBar1.ItemClick
Dim itmMenu As ExplorerBarLinkItem = CType(args.Item, ExplorerBarLinkItem)
If itmMenu.Tag IsNot Nothing Then
Select Case itmMenu.Tag.ToString()
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 If
End Sub
Selamat MENCOBA
Comments