2 komponen ini merupakan komponen favorit saya untuk kelengkapan setiap aplikasi yang saya buat, dimana komponen MenuStrip digunakan untuk menampilkan menu bergaya klasik.
dan komponen ExplorerBar Control for .NET menampilkan menu dengan ciri khas menu yg ada di Windows Explorernya XP
jadi dengan asumsi bahwa Anda sudah pernah membuat menu dengan MenuStrip dan ExplorerBar Control for .NET, maka fokus kita kali ini adalah pada poin-poin berikut :
1. Membuat menu ExplorerBar Control for .NET berdasarkan menu MenuStrip
Tentunya agar poin 1 ini berjalan dengan baik, maka kita harus mempersiapkan terlebih dulu item menu stripnya sekalian menambahkan komponen ExplorerBar Control for .NET ke form.
berhubung persiapan sudah siap, kita masuk kebagian kode
PrivateFunctionSetBarMenu(ByValexplorerBarAsacclExplorerBar,ByValmenuNameAsString,ByValmenuCaptionAsString,ByValiconIndexAsInteger)AsexplorerBarDimbarMenuAsexplorerBarbarMenu=NewexplorerBarWithbarMenu.IsSpecial=True.iconIndex=iconIndex.Text=menuCaption.Tag=menuNameEndWithReturnbarMenuEndFunctionPrivateFunctionSetItemMenu(ByValexplorerBarAsacclExplorerBar,ByValmenuNameAsString,ByValmenuCaptionAsString,ByValiconIndexAsInteger)AsExplorerBarLinkItemDimbarItemAsExplorerBarLinkItembarItem=NewExplorerBarLinkItemWithbarItem.iconIndex=iconIndex.Text=menuCaption.Tag=menuName' ini berguna untuk menghandle menu yang diklikEndWithReturnbarItemEndFunctionPrivateSubAddMenu()DimbarMenuAsexplorerBarDimbarItemsAsExplorerBarItemCollectionDimbarItemAsExplorerBarLinkItemTryWithAcclExplorerBar1.DrawingStyle=ExplorerBarDrawingStyle.Custom.BackColorStart=Color.FromArgb(100,149,237).BackColorEnd=Color.FromArgb(100,149,237)' ulang sebanyak menu induk (Master, Transaksi, Biaya dan Laporan)ForiAsInteger=0ToMenuStrip.Items.Count-1' menambahkan menu induk ke barItemsbarMenu=Me.SetBarMenu(AcclExplorerBar1,MenuStrip.Items(i).Name,MenuStrip.Items(i).Text,0)barItems=barMenu.Items' menampilkan menu anak berdasarkan menu indukForEachitmAsObjectInCType(MenuStrip.Items(i),ToolStripMenuItem).DropDownItems' perlu divalidasi khusus menu Separator, klo enggak akan menyebabkan error' pada saat konversi dari tipe ToolStripItemCollection ke ToolStripMenuItemIfNot(Strings.InStr(1,itm.ToString(),"ToolStripSeparator")>0)ThenDimitmMenuAsToolStripMenuItem=CType(itm,ToolStripMenuItem)' menambahkan menu anak ke barItemsbarItem=Me.SetItemMenu(AcclExplorerBar1,itmMenu.Name,itmMenu.Text,0)barItems.Add(barItem)EndIfNext.Bars.Add(barMenu)NextEndWith' set warna menu bar (master, transaksi, biaya, laporan)ForEachbarAsExplorerBarInAcclExplorerBar1.Barsbar.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)ForEachitmAsExplorerBarItemInbar.ItemsDimtextItemAsExplorerBarLinkItem=CType(itm,ExplorerBarLinkItem)textItem.ForeColor=Color.FromArgb(0,0,128)textItem.ForeColorHot=Color.WhiteNextNextCatchexAsExceptionDebug.Print(ex.Message)EndTryEndSub
Selanjutnya tinggal panggil method AddMenu diatas di event Form_Load
Ada yg kelupaan :D, tambahkan juga Namespace vbAccelerator (ingat posisinya paling atas)
1
ImportsvbAccelerator.Components.Controls
contoh output yg dihasilkan dari kode diatas :
Coba saja Anda tambahkan menu baru di MenuStrip maka otomatis akan nambah juga dimenu ExplorerBar nya, gimana ? Gampangkan :)
2. Membatasi menu yang ditampilkan ExplorerBar Control for .NET
Misalkan ada beberapa menu yang tidak ingin kita tampilkan di menu ExplorerBar Control for .NET, kita ambil contoh menu Barang (mnuBarang), Retur Pembelian (mnuReturPembelian), Retur Penjualan (mnuReturPenjualan) dan Gaji Karyawan (mnuGajiKaryawan).
Maka yg perlu kita lakukan ada melakukan sedikit revisi di method AddMenu
PrivateSubAddMenu()DimbarMenuAsexplorerBarDimbarItemsAsExplorerBarItemCollectionDimbarItemAsExplorerBarLinkItem' daftar menu yg tidak perlu ditampilkan di menu ExplorerBar Control for .NETDimabaikanMenuIniAsString="mnuBarang,mnuReturPembelian,mnuReturPenjualan,mnuGajiKaryawan"TryWithAcclExplorerBar1.DrawingStyle=ExplorerBarDrawingStyle.Custom.BackColorStart=Color.FromArgb(100,149,237).BackColorEnd=Color.FromArgb(100,149,237)' ulang sebanyak menu induk (Master, Transaksi, Biaya dan Laporan)ForiAsInteger=0ToMenuStrip.Items.Count-1' menambahkan menu induk ke barItemsbarMenu=Me.SetBarMenu(AcclExplorerBar1,MenuStrip.Items(i).Name,MenuStrip.Items(i).Text,0)barItems=barMenu.Items' menampilkan menu anak berdasarkan menu indukForEachitmAsObjectInCType(MenuStrip.Items(i),ToolStripMenuItem).DropDownItems' perlu divalidasi khusus menu Separator, klo enggak akan menyebabkan error' pada saat konversi dari tipe ToolStripItemCollection ke ToolStripMenuItemIfNot(Strings.InStr(1,itm.ToString(),"ToolStripSeparator")>0)ThenDimitmMenuAsToolStripMenuItem=CType(itm,ToolStripMenuItem)' validasi menu yang ditampilkan disiniIfNot(Strings.InStr(1,abaikanMenuIni,itmMenu.Name)>0)Then' menambahkan menu anak ke barItemsbarItem=Me.SetItemMenu(AcclExplorerBar1,itmMenu.Name,itmMenu.Text,0)barItems.Add(barItem)EndIfEndIfNext.Bars.Add(barMenu)NextEndWith' set warna menu bar (master, transaksi, biaya, laporan)ForEachbarAsExplorerBarInAcclExplorerBar1.Barsbar.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)ForEachitmAsExplorerBarItemInbar.ItemsDimtextItemAsExplorerBarLinkItem=CType(itm,ExplorerBarLinkItem)textItem.ForeColor=Color.FromArgb(0,0,128)textItem.ForeColorHot=Color.WhiteNextNextCatchexAsExceptionDebug.Print(ex.Message)EndTryEndSub
revisinya ada di baris 7, 30-34
tuh kan beberapa menu kanannya udah lenyap.
3. Memanggil event handler MenuStrip dari ExplorerBar Control for .NET
Akhirnya nyampe juga dibagian yg saya tunggu2x, soalnya udah laper banget jadi klo postingan ini selesai bisa langsung sarapan pagi :D.
Klik ganda komponen ExplorerBarnya kemudian pindah ke event ItemClick
123456789101112131415161718
PrivateSubAcclExplorerBar1_ItemClick(ByValsenderAsObject,ByValargsAsvbAccelerator.Components.Controls.ExplorerBarItemClickEventArgs)HandlesAcclExplorerBar1.ItemClickDimitmMenuAsExplorerBarLinkItem=CType(args.Item,ExplorerBarLinkItem)IfitmMenu.TagIsNotNothingThenForiAsInteger=0ToMenuStrip.Items.Count-1ForEachitmAsObjectInCType(MenuStrip.Items(i),ToolStripMenuItem).DropDownItems' jangan lupa divalidasi menu Separator pada saat pengecekan menu anakIfNot(Strings.InStr(1,itm.ToString(),"ToolStripSeparator")>0)ThenIfStrings.InStr(1,CType(itm,ToolStripMenuItem).Name,itmMenu.Tag.ToString())>0ThenCType(MenuStrip.Items(i),ToolStripMenuItem).DropDownItems(itmMenu.Tag.ToString()).PerformClick()ReturnEndIfEndIfNextNextEndIfEndSub