20071021194588233.rar (33.37 KB, 下载次数: 136) 2011-6-26 10:42 上传 点击文件名下载附件 主要特点: •支持多级菜单 •支持快速键设置 •支持图标,可为任何格式图片,不受BMP格式限制 •自主界面,源码公开,可自行修改菜单外观。 •简便、易学、实用 不用为学习复杂API困扰,窗体菜单由UserMenus、UserMenu、UserMenuItem三个类模块组成,但所有操作均可通过主类UserMenus建立的对象完成。UserMenus对象只有七个成员。分别介绍如下: 1.SetOn方法 说明:设置菜单的寄居窗体。 句法:UserMenus.SetOn usf As UserForm 2.AddMenuItem方法 说明:添加菜单项。 句法:UserMenus.AddMenuItem caption As String, id As String,[ParentId As String] 参数: caption为菜单项标题。如果在caption中使用“&”符号,则其后的字符会被设置为快速键。如果将caption设置为“-”,表示添加的菜单项为分组项,会在菜单中添加一条横线。 id为菜单项的ID,必须设置,且不能有两个相同id的菜单项(分组菜单项的id可以任意设置)。 ParentId为上级菜单项的id。可选,缺省设置为主菜单。 3.RunMenu 说明:运行指定的菜单项。类似于CommandBarButton对象的Execute方法。该方法一般用不到。 句法:UserMenus.RunMenu id As String 4.MenuItemImage属性 说明:设置指定菜单项的图标。Picture型,只写属性。 句法:Set UserMenus.MenuItemImage(id) = Picture 5.MenuItemEnabled属性 说明:指定菜单项是否有效。Boolean型,可读写。 句法: UserMenus. MenuItemEnabled (id) 6.MenuItemChecked属性 说明:指定菜单项的Checked状态。Boolean型,可读写。 句法: UserMenus. MenuItemChecked (id) 7.MenuItemClick事件 说明:当菜单项被单击时触发该事件。 句法:MenuItemClick(ByVal id As String) 注意事项: 设计窗体时,上部预留出菜单显示位置。 下面是使用窗体菜单的示意代码: Option Explicit Dim WithEvents UserMenus As UserMenus Private Sub UserForm_Initialize() Set UserMenus = New UserMenus With UserMenus .SetOn Me '建立菜单"File" .AddMenuItem "文件(&F)", "File" .AddMenuItem "打开(&O)", "Open", "File" .AddMenuItem "-", "", "File" .AddMenuItem "新建(&N)", "New", "File" '建立菜单"Format" .AddMenuItem "格式(&O)", "Format" .AddMenuItem "行(&R)", "Row", "Format" .AddMenuItem "列(&C)", "Column", "Format" .AddMenuItem "-", "", "Format" .AddMenuItem "样式(&S)", "Style", "Format" '建立菜单"Style"(二级菜单) .AddMenuItem "样式&1", "Style1", "Style" .AddMenuItem "样式&2", "Style2", "Style" .AddMenuItem "样式&3", "Style3", "Style" '建立菜单"Quit" .AddMenuItem "退出(&Q)", "Quit" '设置菜单图标 Set .MenuItemImage("Style") = imgsMenuIco.ListImages("Style").Picture '设置菜单项失效 .MenuItemEnabled("Column") = False End With End Sub Private Sub UserMenus_MenuItemClick(ByVal id As String) Select Case id Case "Quit" Unload Me Case "Style1", "Style2", "Style3" SetStyle id Case Else MsgBox "你选择的菜单项的ID是:" & vbCr & id & vbCr & vbCr & "该功能尚未编制" End Select End Sub Private Sub SetStyle(id As String) Dim i As Integer '对单选菜单,各菜单项建议设置相似的ID,便于管理,如本例所示 For i = 1 To 3 UserMenus.MenuItemChecked("Style" & i) = False Next UserMenus.MenuItemChecked(id) = True End Sub 运行效果如下图所示:
主要特点:
•支持多级菜单
•支持快速键设置
•支持图标,可为任何格式图片,不受BMP格式限制
•自主界面,源码公开,可自行修改菜单外观。
•简便、易学、实用
不用为学习复杂API困扰,窗体菜单由UserMenus、UserMenu、UserMenuItem三个类模块组成,但所有操作均可通过主类UserMenus建立的对象完成。UserMenus对象只有七个成员。分别介绍如下:
1.SetOn方法
说明:设置菜单的寄居窗体。
句法:UserMenus.SetOn usf As UserForm
2.AddMenuItem方法
说明:添加菜单项。
句法:UserMenus.AddMenuItem caption As String, id As String,[ParentId As String]
参数:
caption为菜单项标题。如果在caption中使用“&”符号,则其后的字符会被设置为快速键。如果将caption设置为“-”,表示添加的菜单项为分组项,会在菜单中添加一条横线。
id为菜单项的ID,必须设置,且不能有两个相同id的菜单项(分组菜单项的id可以任意设置)。
ParentId为上级菜单项的id。可选,缺省设置为主菜单。
3.RunMenu
说明:运行指定的菜单项。类似于CommandBarButton对象的Execute方法。该方法一般用不到。
句法:UserMenus.RunMenu id As String
4.MenuItemImage属性
说明:设置指定菜单项的图标。Picture型,只写属性。
句法:Set UserMenus.MenuItemImage(id) = Picture
5.MenuItemEnabled属性
说明:指定菜单项是否有效。Boolean型,可读写。
句法: UserMenus. MenuItemEnabled (id)
6.MenuItemChecked属性
说明:指定菜单项的Checked状态。Boolean型,可读写。
句法: UserMenus. MenuItemChecked (id)
7.MenuItemClick事件
说明:当菜单项被单击时触发该事件。
句法:MenuItemClick(ByVal id As String)
注意事项:
设计窗体时,上部预留出菜单显示位置。
下面是使用窗体菜单的示意代码:
Option Explicit
Dim WithEvents UserMenus As UserMenus
Private Sub UserForm_Initialize()
Set UserMenus = New UserMenus
With UserMenus
.SetOn Me
'建立菜单"File"
.AddMenuItem "文件(&F)", "File"
.AddMenuItem "打开(&O)", "Open", "File"
.AddMenuItem "-", "", "File"
.AddMenuItem "新建(&N)", "New", "File"
'建立菜单"Format"
.AddMenuItem "格式(&O)", "Format"
.AddMenuItem "行(&R)", "Row", "Format"
.AddMenuItem "列(&C)", "Column", "Format"
.AddMenuItem "-", "", "Format"
.AddMenuItem "样式(&S)", "Style", "Format"
'建立菜单"Style"(二级菜单)
.AddMenuItem "样式&1", "Style1", "Style"
.AddMenuItem "样式&2", "Style2", "Style"
.AddMenuItem "样式&3", "Style3", "Style"
'建立菜单"Quit"
.AddMenuItem "退出(&Q)", "Quit"
'设置菜单图标
Set .MenuItemImage("Style") = imgsMenuIco.ListImages("Style").Picture
'设置菜单项失效
.MenuItemEnabled("Column") = False
End With
End Sub
Private Sub UserMenus_MenuItemClick(ByVal id As String)
Select Case id
Case "Quit"
Unload Me
Case "Style1", "Style2", "Style3"
SetStyle id
Case Else
MsgBox "你选择的菜单项的ID是:" & vbCr & id & vbCr & vbCr & "该功能尚未编制"
End Select
Private Sub SetStyle(id As String)
Dim i As Integer
'对单选菜单,各菜单项建议设置相似的ID,便于管理,如本例所示
For i = 1 To 3
UserMenus.MenuItemChecked("Style" & i) = False
Next
UserMenus.MenuItemChecked(id) = True
运行效果如下图所示:
使用道具 举报
先占个位置慢慢学!!
第一次听说[em02][em02]
验证一句话
不怕做不到,就怕想不到
好文章 应该给个精华。
又见用兄出新作品了,学习先
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )
GMT+8, 2024-6-4 22:37 , Processed in 0.281299 second(s), 8 queries , Gzip On, Yac On.
Powered by Discuz! X3.4
Copyright © 2001-2020, Tencent Cloud.