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 :
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
1 | Dim objMenuBar As cCommandBar |
2 | Dim objMenu As cCommandBarButtons |
5 | Set objMenuBar = .CommandBars.Add( "MenuBar" ) |
6 | Set objMenu = objMenuBar.Buttons |
2. Membuat Menu
Untuk membuat menu kita membutuhkan prosedur berikut :
1 | Private
Sub addMenu(ByVal cmdBar As vbalCommandBar, ByVal objMenu As
cCommandBarButtons, ByVal menuName As String, ByVal menuCaption As
String, Optional showCaptionInToolbar As Boolean = True) |
5 | Set btn = cmdBar.Buttons.Add(menuName, , menuCaption) |
6 | btn.showCaptionInToolbar = showCaptionInToolbar |
3. Membuat Menu Item
Untuk membuat menu item/sub menu kita membutuhkan prosedur berikut :
01 | Private
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) |
09 | If buttonStyle = eSeparator Then |
11 | For i = 1 To cmdBar.Buttons.Count |
12 | If InStr( 1 , cmdBar.Buttons(i).key, "mnuSpr" , vbTextCompare) > 0 Then n = n + 1 |
15 | menuName = "mnuSpr" & n |
19 | Set btn = cmdBar.Buttons.Add(menuName, iconIndex, menuCaption, buttonStyle, , shortcutKey) |
21 | btn.Checked = selected |
Adapun kode untuk menghandle menu yang diklik adalah sebagai berikut :
01 | Private Sub cmdBar_ButtonClick(index As Integer, btn As vbalCmdBar 6 .cButton) |
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 |
17 | Case "mnuStyle1" : cmdBar( 0 ).Style = eOfficeXP |
18 | Case "mnuStyle2" : cmdBar( 0 ).Style = eOffice 2003 |
19 | Case "mnuStyle3" : cmdBar( 0 ).Style = eMoney |
20 | Case "mnuStyle4" : cmdBar( 0 ).Style = eComCtl 32 |
dan ini adalah sisa source codenya :
01 | Private Function getIconIndex(ByVal key As String) As Long |
02 | getIconIndex = ImageList 1 .ListImages.Item(key).index - 1 |
05 | Public Sub createCommandBars() |
06 | Dim objMenuBar As cCommandBar |
07 | Dim objMenuBarItem As cCommandBar |
09 | Dim objMenuBarSendTo As cCommandBar |
11 | Dim objMenu As cCommandBarButtons |
12 | Dim objMenuItem As cCommandBarButtons |
13 | Dim objMenuItemSendTo As cCommandBarButtons |
15 | Dim menuName As String |
19 | Set objMenuBar = .CommandBars.Add( "MenuBar" ) 'MENU BAR UNTUK MENAMPUNG MENU UTAMA. EX : MENU FILE DAN MENU STYLE MENU |
20 | Set objMenu = objMenuBar.Buttons |
22 | ' 2 . MEMBUAT MENU/MAIN MENU (EX. FILE, STYLE MENU) |
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 |
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) |
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 |
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" )) |
55 | Call addMenuItem(cmdBar( 0 ), objMenuItem, "" , "" , , eSeparator) |
56 | Call addMenuItem(cmdBar( 0 ), objMenuItem, "mnuExit" , "Exit" , , , vbKeyX) |
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 |
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) |
72 | .MenuImageList = ImageList 1 |
73 | .Toolbar = .CommandBars( "MenuBar" ) |
77 | Private Sub cmdBar_RequestNewInstance(index As Integer, ctl As Object) |
80 | lNewIndex = cmdBar.UBound + 1 |
81 | Load cmdBar(lNewIndex) |
83 | cmdBar(lNewIndex).Align = 0 |
84 | Set ctl = cmdBar(lNewIndex) |
87 | Private Sub Form_Load() |
88 | Call createCommandBars |
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 di
sini.
Selamat mencoba
Posted in:
0 komentar:
Posting Komentar