Selasa, 17 April 2012

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 :-D 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 :smile: langkah-langkahnya mirip coding menu di java menggunakan komponen swing (JMenuBar, JMenu dan JMenuItem)
Oke kita langsung saja mencoba untuk mempraktikkannya :
1. Buat project baru kemudian tambahkan komponen dan referensi berikut :


2. 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

1Dim objMenuBar  As cCommandBar
2Dim objMenu     As cCommandBarButtons
3 
4With cmdBar(0)
5    Set objMenuBar = .CommandBars.Add("MenuBar")
6    Set objMenu = objMenuBar.Buttons
7End With
2. Membuat Menu
Untuk membuat menu kita membutuhkan prosedur berikut :
1Private Sub addMenu(ByVal cmdBar As vbalCommandBar, ByVal objMenu As cCommandBarButtons, ByVal menuName As String, ByVal menuCaption As String, Optional showCaptionInToolbar As Boolean = True)
2 
3    Dim btn     As cButton
4 
5    Set btn = cmdBar.Buttons.Add(menuName, , menuCaption)
6    btn.showCaptionInToolbar = showCaptionInToolbar
7    objMenu.Add btn
8End Sub
3. Membuat Menu Item
Untuk membuat menu item/sub menu kita membutuhkan prosedur berikut :
01Private Sub addMenuItem(ByVal cmdBar As vbalCommandBar, ByVal objMenuItem As cCommandBarButtons, ByVal menuName As String, ByVal menuCaption As String, _
02                        Optional iconIndex As Long = -1, Optional buttonStyle As EButtonStyle = eNormal, Optional shortcutKey As KeyCodeConstants, Optional enabled As Boolean = True, Optional selected As Boolean = False)
03 
04    Dim btn     As cButton
05 
06    Dim i       As Long
07    Dim n       As Long
08 
09    If buttonStyle = eSeparator Then
10        n = 1
11        For i = 1 To cmdBar.Buttons.Count
12            If InStr(1, cmdBar.Buttons(i).key, "mnuSpr", vbTextCompare) > 0 Then n = n + 1
13        Next i
14 
15        menuName = "mnuSpr" & n
16        menuCaption = ""
17    End If
18 
19    Set btn = cmdBar.Buttons.Add(menuName, iconIndex, menuCaption, buttonStyle, , shortcutKey)
20    btn.enabled = enabled
21    btn.Checked = selected
22 
23    objMenuItem.Add btn
24End Sub
Adapun kode untuk menghandle menu yang diklik adalah sebagai berikut :
01Private Sub cmdBar_ButtonClick(index As Integer, btn As vbalCmdBar6.cButton)
02    Select Case btn.key
03        Case "mnuNew": 'TODO : something here
04        Case "mnuOpen": 'TODO : something here
05        Case "mnuClose": 'TODO : something here
06        Case "mnuSave": 'TODO : something here
07        Case "mnuSaveAs": 'TODO : something here
08        Case "mnuPrintPreview": 'TODO : something here
09        Case "mnuPrint": 'TODO : something here
10        Case "mnuMailRecipient": 'TODO : something here
11        Case "mnuMailRecipientReview": 'TODO : something here
12        Case "mnuOnlineMeetingParticipant": 'TODO : something here
13        Case "mnuFaxRecipient": 'TODO : something here
14        Case "mnuMicrosoftPowerPoint": 'TODO : something here
15        Case "mnuExit": End
16 
17        Case "mnuStyle1": cmdBar(0).Style = eOfficeXP
18        Case "mnuStyle2": cmdBar(0).Style = eOffice2003
19        Case "mnuStyle3": cmdBar(0).Style = eMoney
20        Case "mnuStyle4": cmdBar(0).Style = eComCtl32
21    End Select
22End Sub
dan ini adalah sisa source codenya :
01Private Function getIconIndex(ByVal key As String) As Long
02    getIconIndex = ImageList1.ListImages.Item(key).index - 1
03End Function
04 
05Public Sub createCommandBars()
06    Dim objMenuBar          As cCommandBar
07    Dim objMenuBarItem      As cCommandBar
08 
09    Dim objMenuBarSendTo    As cCommandBar
10 
11    Dim objMenu             As cCommandBarButtons
12    Dim objMenuItem         As cCommandBarButtons
13    Dim objMenuItemSendTo   As cCommandBarButtons
14 
15    Dim menuName            As String
16 
17    With cmdBar(0)
18        '1. MEMBUAT MENU BAR
19        Set objMenuBar = .CommandBars.Add("MenuBar") 'MENU BAR UNTUK MENAMPUNG MENU UTAMA. EX : MENU FILE DAN MENU STYLE MENU
20        Set objMenu = objMenuBar.Buttons
21 
22        '2. MEMBUAT MENU/MAIN MENU (EX. FILE, STYLE MENU)
23        menuName = "mnuFile"
24        Call addMenu(cmdBar(0), objMenu, menuName, "File")
25        Set objMenuBarItem = .CommandBars.Add(menuName)
26        .Buttons(menuName).Bar = objMenuBarItem 'MENGAITKAN MENU FILE KE MENU BAR
27 
28        '3. MEMBUAT MENU ITEM/SUB MENU (EX. NEW, OPEN, CLOSE de el el)
29        Set objMenuItem = objMenuBarItem.Buttons
30        Call addMenuItem(cmdBar(0), objMenuItem, "mnuNew", "New", getIconIndex("new"), , vbKeyN)
31        Call addMenuItem(cmdBar(0), objMenuItem, "mnuOpen", "Open", getIconIndex("open"), , vbKeyO)
32        Call addMenuItem(cmdBar(0), objMenuItem, "mnuClose", "Close", getIconIndex("close"))
33        Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
34        Call addMenuItem(cmdBar(0), objMenuItem, "mnuSave", "Save", getIconIndex("save"), , vbKeyS)
35        Call addMenuItem(cmdBar(0), objMenuItem, "mnuSaveAs", "Save As...")
36        Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
37        Call addMenuItem(cmdBar(0), objMenuItem, "mnuPrintPreview", "Print Preview", getIconIndex("preview"))
38        Call addMenuItem(cmdBar(0), objMenuItem, "mnuPrint", "Print", getIconIndex("print"), , vbKeyP)
39        Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
40 
41        Call addMenuItem(cmdBar(0), objMenuItem, "mnuSendTo", "Send To")
42        '>>>> SUB MENU SEND TO
43            Set objMenuBarSendTo = .CommandBars.Add(menuName & ":mnuSendTo")
44            .Buttons("mnuSendTo").Bar = objMenuBarSendTo
45 
46            Set objMenuItemSendTo = objMenuBarSendTo.Buttons
47            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMailRecipient", "Mail Recipient", getIconIndex("mail"))
48            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMailRecipientReview", "Mail Recipient (for Review)")
49            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuOnlineMeetingParticipant", "Online Meeting Participant")
50            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuFaxRecipient", "Fax Recipient...", getIconIndex("fax"))
51            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "", "", , eSeparator)
52            Call addMenuItem(cmdBar(0), objMenuItemSendTo, "mnuMicrosoftPowerPoint", "Microsoft PowerPoint", getIconIndex("powerpoint"))
53        '<<<<
54 
55        Call addMenuItem(cmdBar(0), objMenuItem, "", "", , eSeparator)
56        Call addMenuItem(cmdBar(0), objMenuItem, "mnuExit", "Exit", , , vbKeyX)
57 
58        'MENU : STYLE MENU
59        menuName = "mnuStyleMenu"
60        Call addMenu(cmdBar(0), objMenu, menuName, "Style Menu")
61        Set objMenuBarItem = .CommandBars.Add(menuName)
62        .Buttons(menuName).Bar = objMenuBarItem 'MENGAITKAN MENU STYLE MENU KE MENU BAR
63 
64        '>> SUB MENU STYLE MENU
65        Set objMenuItem = objMenuBarItem.Buttons
66        Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle1", "Office XP", , eRadio)
67        Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle2", "Office 2003", , eRadio, , , True)
68        Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle3", "Ms Money", , eRadio)
69        Call addMenuItem(cmdBar(0), objMenuItem, "mnuStyle4", "Standar", , eRadio)
70        '>>
71 
72        .MenuImageList = ImageList1
73        .Toolbar = .CommandBars("MenuBar")
74    End With
75End Sub
76 
77Private Sub cmdBar_RequestNewInstance(index As Integer, ctl As Object)
78    Dim lNewIndex As Long
79 
80    lNewIndex = cmdBar.UBound + 1
81    Load cmdBar(lNewIndex)
82 
83    cmdBar(lNewIndex).Align = 0
84    Set ctl = cmdBar(lNewIndex)
85End Sub
86 
87Private Sub Form_Load()
88    Call createCommandBars
89End 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 :-D .
Sample program bisa didownload disini.
Selamat mencoba :smile:

0 komentar:

Posting Komentar

Twitter Delicious Facebook Digg Stumbleupon Favorites More