Membuat menu dengan 4 style
Melengkapi koleksi artikel-artikel saya tentang membuat menu alternatif di VB, kali ini kita akan membuat tampilan menu seperti berikut :
Tujuan saya membuat artikel ini adalah agar Anda semakin bingung menentukan pilihan membuat menu alternatif dan akhirnya back to basic menggunakan menu editor he he he just kidding.
Untuk membuat menu dengan 4 style diatas kita akan menggunakan komponen vbAccelerator CommandBar Control dan library pendukung VB6 SSubTmr, download dan ekstrak ke dua komponen tersebut trus dicopykan ke folder Windows\System32 dan jangan lupa diregistrasikan dengan perintah regsvr32.
Membuat menu dengan vbAccelerator CommandBar Control sedikit berbeda dengan komponen VBSmart Menu XP dan vbAccelerator VB6 Explorer Bar.
Adapun urutan membuat menu dengan komponen vbAccelerator CommandBar Control adalah sebagai berikut :
Gimana? Apakah Anda jadi teringat akan sesuatu ? Yaph Anda benar langkah-langkahnya mirip coding menu di java menggunakan komponen swing (JMenuBar, JMenu dan JMenuItem)
Oke kita langsung saja mencoba untuk mempraktikkannya :
-
Buat project baru kemudian tambahkan komponen dan referensi berikut :
-
Masukkan komponen vbAccelerator CommandBar Control dan ImageList ke form
khusus untuk komponen ImageList tambahkan beberapa icon dan jangan lupa mengeset keynya
1. Membuat Menu Bar
Dim objMenuBar As cCommandBar
Dim objMenu As cCommandBarButtons
With cmdBar(0)
Set objMenuBar = .CommandBars.Add("MenuBar")
Set objMenu = objMenuBar.Buttons
End With
2. Membuat Menu
Untuk membuat menu kita membutuhkan prosedur berikut :
Private Sub addMenu(ByVal cmdBar As vbalCommandBar, ByVal objMenu As cCommandBarButtons, ByVal menuName As String, ByVal menuCaption As String, Optional showCaptionInToolbar As Boolean = True)
Dim btn As cButton
Set btn = cmdBar.Buttons.Add(menuName, , menuCaption)
btn.showCaptionInToolbar = showCaptionInToolbar
objMenu.Add btn
End Sub
3. Membuat Menu Item
Untuk membuat menu item/sub menu kita membutuhkan prosedur berikut :
Private Sub addMenuItem(ByVal cmdBar As vbalCommandBar, ByVal objMenuItem As cCommandBarButtons, ByVal menuName As String, ByVal menuCaption As String, _
Optional iconIndex As Long = -1, Optional buttonStyle As EButtonStyle = eNormal, Optional shortcutKey As KeyCodeConstants, Optional enabled As Boolean = True, Optional selected As Boolean = False)
Dim btn As cButton
Dim i As Long
Dim n As Long
If buttonStyle = eSeparator Then
n = 1
For i = 1 To cmdBar.Buttons.Count
If InStr(1, cmdBar.Buttons(i).key, "mnuSpr", vbTextCompare) > 0 Then n = n + 1
Next i
menuName = "mnuSpr" & n
menuCaption = ""
End If
Set btn = cmdBar.Buttons.Add(menuName, iconIndex, menuCaption, buttonStyle, , shortcutKey)
btn.enabled = enabled
btn.Checked = selected
objMenuItem.Add btn
End Sub
Adapun kode untuk menghandle menu yang diklik adalah sebagai berikut :
Private Sub cmdBar_ButtonClick(index As Integer, btn As vbalCmdBar6.cButton)
Select Case btn.key
Case "mnuNew": 'TODO : something here
Case "mnuOpen": 'TODO : something here
Case "mnuClose": 'TODO : something here
Case "mnuSave": 'TODO : something here
Case "mnuSaveAs": 'TODO : something here
Case "mnuPrintPreview": 'TODO : something here
Case "mnuPrint": 'TODO : something here
Case "mnuMailRecipient": 'TODO : something here
Case "mnuMailRecipientReview": 'TODO : something here
Case "mnuOnlineMeetingParticipant": 'TODO : something here
Case "mnuFaxRecipient": 'TODO : something here
Case "mnuMicrosoftPowerPoint": 'TODO : something here
Case "mnuExit": End
Case "mnuStyle1": cmdBar(0).Style = eOfficeXP
Case "mnuStyle2": cmdBar(0).Style = eOffice2003
Case "mnuStyle3": cmdBar(0).Style = eMoney
Case "mnuStyle4": cmdBar(0).Style = eComCtl32
End Select
End Sub
dan ini adalah sisa source codenya :
Private Function getIconIndex(ByVal key As String) As Long
getIconIndex = ImageList1.ListImages.Item(key).index - 1
End Function
Public Sub createCommandBars()
Dim objMenuBar As cCommandBar
Dim objMenuBarItem As cCommandBar
Dim objMenuBarSendTo As cCommandBar
Dim objMenu As cCommandBarButtons
Dim objMenuItem As cCommandBarButtons
Dim objMenuItemSendTo As cCommandBarButtons
Dim menuName As String
With cmdBar(0)
'1. MEMBUAT MENU BAR
Set objMenuBar = .CommandBars.Add("MenuBar") 'MENU BAR UNTUK MENAMPUNG MENU UTAMA. EX : MENU FILE DAN MENU STYLE MENU
Set objMenu = objMenuBar.Buttons
'2. MEMBUAT MENU/MAIN MENU (EX. FILE, STYLE MENU)
menuName = "mnuFile"
Call addMenu(cmdBar(0), objMenu, menuName, "File")
Set objMenuBarItem = .CommandBars.Add(menuName)
.Buttons(menuName).Bar = objMenuBarItem 'MENGAITKAN MENU FILE KE MENU BAR
'3. MEMBUAT MENU ITEM/SUB MENU (EX. NEW, OPEN, CLOSE de el el)
Set objMenuItem = objMenuBarItem.Buttons
Call addMenuItem(cmdBar(0), objMenuItem, "mnuNew", "New", getIconIndex("new"), , vbKeyN)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuOpen", "Open", getIconIndex("open"), , vbKeyO)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuClose", "Close", getIconIndex("close"))
Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuSave", "Save", getIconIndex("save"), , vbKeyS)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuSaveAs", "Save As...")
Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuPrintPreview", "Print Preview", getIconIndex("preview"))
Call addMenuItem(cmdBar(0), objMenuItem, "mnuPrint", "Print", getIconIndex("print"), , vbKeyP)
Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuSendTo", "Send To")
'>>>> SUB MENU SEND TO
Set objMenuBarSendTo = .CommandBars.Add(menuName & ":mnuSendTo")
.Buttons("mnuSendTo").Bar = objMenuBarSendTo
Set objMenuItemSendTo = objMenuBarSendTo.Buttons
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMailRecipient", "Mail Recipient", getIconIndex("mail"))
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMailRecipientReview", "Mail Recipient (for Review)")
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuOnlineMeetingParticipant", "Online Meeting Participant")
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuFaxRecipient", "Fax Recipient...", getIconIndex("fax"))
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "", "", , eSeparator)
Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMicrosoftPowerPoint", "Microsoft PowerPoint", getIconIndex("powerpoint"))
'<<<<
Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuExit", "Exit", , , vbKeyX)
'MENU : STYLE MENU
menuName = "mnuStyleMenu"
Call addMenu(cmdBar(0), objMenu, menuName, "Style Menu")
Set objMenuBarItem = .CommandBars.Add(menuName)
.Buttons(menuName).Bar = objMenuBarItem 'MENGAITKAN MENU STYLE MENU KE MENU BAR
'>> SUB MENU STYLE MENU
Set objMenuItem = objMenuBarItem.Buttons
Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle1", "Office XP", , eRadio)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle2", "Office 2003", , eRadio, , , True)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle3", "Ms Money", , eRadio)
Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle4", "Standar", , eRadio)
'>>
.MenuImageList = ImageList1
.Toolbar = .CommandBars("MenuBar")
End With
End Sub
Private Sub cmdBar_RequestNewInstance(index As Integer, ctl As Object)
Dim lNewIndex As Long
lNewIndex = cmdBar.UBound + 1
Load cmdBar(lNewIndex)
cmdBar(lNewIndex).Align = 0
Set ctl = cmdBar(lNewIndex)
End Sub
Private Sub Form_Load()
Call createCommandBars
End Sub
Oke mungkin itu saja yang bisa saya bahas pada artikel kali ini, dan mudah-mudahan Anda benar-benar memutuskan cukup menggunakan Menu Editor untuk membuat menu .
Sample program bisa didownload disini.
Selamat mencoba
Comments