任何一个应用程序,都需要通过各种命令来达成某项功能,而这些命令,大多数是通过程序的菜单来实现的,如我们常常用到的记事本的菜单
VB 提供了一个菜单编辑器,专门用来制作各式各样的菜单,它在标准工具栏中的图标如图二:
双击该图标,弹出如图三的窗口,通过这个窗口,我们就可以制作菜单了。
当然,程序光是有菜单还不行,它只是为用户提供了便捷的操作接口,程序功能的最终实行,还必须通过给这些菜单输入复杂的程序才能得以实现。 下面,我们以 Windows 自带的笔记本为例,介绍如何用 VB 制作菜单。 一、菜单制作: 2、标题:显示在菜单中的文本,这里,我们输入“文件(&F)”字样。 (&F) 是什么东西?这是为了方便用户使用键盘操作菜单,当程序运行时,(&) 字样不会出现,而是在字母 F 下加上一条横线,这表示,只要用户在按住 Alt 键的同时再按下 F 键,就相当于用鼠标点击“文件”这个菜单命令了。也就是说,文件菜单的快捷键是 Alt+F 。 名称:本菜单在程序中的名称,主要用作程序调用,因此记得用英文名,另外,名字最好一目了然,这里,我们将“文件”菜单命名为 MenuFile 。 “文件”菜单制作完毕,如图四:
3、点击菜单编辑器上的“下一个”按钮,制作下一个菜单,这时,我们看到,编辑区域自动提到了下一行,如图五:
点击向右按钮,本行前面出现了四个小点,表示本菜单降了一级,是二级菜单(依此类推,如果要制作三级菜单,只需要再点一下向右按钮进行降级就行了)。然后用第二步的方法,制作“新建”(MenuNew)、“打开”(MenuOpen)、“保存”(MenuSave)、“另存为”(MenuSaveOther)菜单,结果如图六:
上面讲到了用 & 符号制作快捷键的方法,这里我们再使用 VB 菜单编辑器中的“快捷键”定制方法制作快捷键。 找到“新建”菜单,先在“新建(&N)”字样后面添加六个空格,以便后面显示的快捷键跟菜单名之间有点空隙,然后在快捷键下拉列表中选择 Ctrl+N ,这表示在按住 Ctrl 键的同时按 N 键就能使用“新建”命令了,如下图: 4、制作菜单分隔线:
5、同理可做“页面设置”(MenuPage)、“打印”(MenuPrint)、“分隔线二”(MenuSeprate2)、“退出菜单”(MenuQuit),如图八:
6、制作“编辑”菜单:
7、根据前面学到的知识,我们制作“编辑”(MenuEdit)、“撤消”(MenuUndo)、“分隔条三”(MenuSeprate3)、“剪切”(MenuCut)、“复制”(MenuCopy)、“粘贴”(MenuPaste)、“删除”(MenuDel)、“分隔条四”(MenuSeprate4)、“全选”(MenuSelectAll)、“时间/日期”(MenuDate)、“分隔条五”(MenuSeprate5)、“自动换行”(MenuWrap)、“设置字体”(MenuFont)菜单。如图十:
8、添加 RichText 控件:
在默认的工具箱面板中,RichText 控件没有罗列出来,大家可以用鼠标右键点击工具箱面板,在弹出的面板中选择“部件”,然后在弹出的窗口中找到“Microsoft Rich Textbox Control 6.0”,勾选本控件的复选框,最后“确定”就行了,如图十二:
二、菜单属性设置: 1、菜单的“有效”性: 对于一个新的空白文件来说,撤消、剪切、复制、粘贴的命令缺少操作对象,所以在初始状态下,它们应该是“无效”的。 打开菜单编辑器,找到“撤消”菜单,然后将“有效”复选框前的勾去掉,这样,“撤消”菜单无效了,如图十三:
同理,将“剪切”、“复制”、“粘贴”三个菜单变为“无效”。 2、复选菜单: 复选菜单的制作非常简单,只需找到要作为复选菜单的那个菜单,然后勾选“复选”按钮就行了,如图十四:
但是,此时的复选按钮还不健全,需要代码的支持方能正常使用,具体情况在下一节的示例中讲述。
有如图一这样一个小程序,通过“菜单”下的色彩设置,可以将窗体的背景分别改为“红”、“绿”、“蓝”色,点击“菜单”下的“退出”,则自动退出程序。
一、界面设置:
需要注意的是,“菜单”为一级,“色彩设置”、“退出”为二级、“红色”、“绿色”、“蓝色”为三级菜单,根据图二中每行前面点的多少可以判断出来。 另外,不要忘记勾选“红”、“绿”、“蓝”三种色彩的菜单前的“复选”选项。 二、输入程序代码: Private Sub MenuQuit_Click() 这样,只要点击本菜单,自动退出程序。 2、复选菜单的判断: 复选菜单名.Checked = True/False 当值为 True ,复选菜单被选中;值为 False ,菜单未被选中。 3、我们要让程序在初始状态下保持本色,在 Form 的装入事件中输入以下代码: Private Sub Form_Load() 这段程序,让三个复选菜单都处于未被选中状态(在程序运行时起作用,在设计过程中,三个复选菜单始终是处于选中状态)。 4、当按下红色菜单(MenuRed): Private Sub MenuRed_Click() 这段代码,让“红色菜单”处于选中状态,而其他颜色的菜单处于未被选中状态,同时将窗体的背景色变为红色(VbRed)。 5、当按下绿色菜单(MenuGreen): Private Sub MenuGreen_Click() 绿色菜单处于选中状态,其他菜单非选中,同时窗体背景色变为绿色。 6、按下蓝色菜单: Private Sub MenuBlue_Click() 蓝色菜单处于选中状态,其他菜单非选中,同时窗体背景变为蓝色。 7、最后按 F5 键,如何,程序正常运行了吧? 三、联想: 前面我们学过单选按钮(OptionBUtton)、复选按钮(CheckBox),它们也有是否被选中的判断,那么,它们有什么不同呢? 注意,单选按钮是否选中的判断: 复选按钮的判断: 复选按钮名.Value = 0/1/2 。由于复选按钮可以一次多选,所以对它的判断最为复杂,常常需要用到诸如 If……Then 等条件语句进行判断。但它跟复选菜单不同的是,复选菜单常常只能多中选一,比如上面例子中,选择了“红色菜单”就不能选择“蓝色菜单”,等等。 记不清楚的朋友可以回头复习一下,此处不再赘述。
我们在上一节示例的基础上,来制作如图一的小程序,每点击一次“增加信息”命令,菜单上会自动增加一个“信息”菜单,每点击一次“清除菜单”命令,程序自动清除当前信息菜单;当菜单回复原样,即只剩“信息”菜单时,“清除菜单”无效。
一、界面设置:
在程序中,只要在“索引”文本中输入了数字,就代表这个菜单成为了一个“菜单数组”,通过这个“菜单数组”可以实现菜单的动态增加与清除。 二、程序代码: 指定索引值为 HintNumber ,那么增加时,应该是 HintNumber = HintNumber + 1 ;清除时,应该是 HintNumber = HintNumber -1 。 2、变量的作用域: 因为 HintNumber 既要在“增加菜单”事件中引用,又要在“清除菜单”事件中引用,所以我们将它作为窗体层变量在“通用”过程的“声明”中对其进行定义,如图三:
图三中的代码如下: Dim HintNumber As Integer 3、在窗体的载入事件中让 HintNumber 为初始值 0 ,再加上原来的代码,结果如图四:
4、“增加信息”菜单的 Click 事件: 上面程序的意义在于,先计算 HintNumber + 1 并将结果赋给新的 HintNumber ,然后通过 Load 命令打开一个新菜单 MenuHint(HintNumber) ,并让新菜单的标题变成“信息X”,其中,X是数字,表示这是第几个信息菜单。 5、“清除信息”菜单的 Click 事件: 上面的代码,先对 HintNumber 值进行判断,当 HintNumber 为 0 即程序的初始状态时,直接退出当前过程(Exit Sub 是退出当前过程的命令,切记);如果 HintNumber 不为 0 ,那么卸载索引值最高的信息菜单,即 MenuHint(HintNumber) ,然后讲算 HintNumber -1 并将结果赋给新的 HintNumber ,并最后退出条件判断。 6、“清除信息”菜单的“有效性”: Private Sub MenuHelp_Click() 7、测试: 三、提醒: 这种辅助变量的使用,在 VB 中几乎是无处不在的,如前面我们在讲 For……Next……的语法时说的作为累加器的变量。 另外,从上面的例子我们可以看出, Load/Unload 不仅适用于窗体的装入与卸载,同时还适用于菜单的装入与卸载。
|
|