vb61Word文件下载.docx
《vb61Word文件下载.docx》由会员分享,可在线阅读,更多相关《vb61Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。
进入菜单编辑器主要有以下四种方法:
·
选择“工具”菜单中的“菜单编辑器”;
单击工具栏上的“菜单编辑器”按钮;
使用热键Ctrl+E快捷键;
·
在要建立菜单的窗体上单击鼠标右键,选择弹出菜单的“菜单编辑器”菜单项。
㈠菜单控件属性
大多数菜单控件属性可用“菜单编辑器”设置,同样,所有的菜单属性也可以在“属性”窗口中得到。
通常,在“菜单编辑器”中建立菜单,但要快速改变某个属性,一般使用“属性”窗口,如图6-3所示。
使用“菜单编辑器”可以输入或修改菜单项,设置属性。
主要项目有:
标题(Caption属性):
定义菜单控件的标题,这些标题将出现在主菜单或子菜单的菜单项中。
如果想在菜单中建立分隔线,把同一级菜单项分组,则应在“标题”框中键入一个连字符(-)。
为了使用户能够通过键盘访问菜单项,可在一个字母前插入&符号。
在运行时,该字母带有下划线(&符号是不可见的),按ALT键和该字母就可访问菜单项。
名称(Name属性):
菜单控件的名称是菜单控件的标识,在程序设计时是通过名称来识别和引用不同的菜单控件的,所以每个菜单控件必须都要有一个唯一的名称。
菜单控件名称的命名最好加上它的父菜单的名称信息,并且还应与菜单的功能有一定的联系。
如编辑菜单下的剪切、拷贝、粘贴的菜单项名称分别为:
mnuEditCut、mnuEditCopy、mnuEditPaste。
索引(1ndex属性):
可指定一个数字值来确定菜单或菜单项在菜单数组中的位置。
该位置与控件的屏幕位置无关,实质上是菜单或菜单项在菜单数组中的排序索引(Index)。
在设计时,菜单或菜单项的索引缺省值均为空(不等于O),表示没有参加排序,说明没有建立菜单数组。
快捷键(ShortCut属性):
为菜单或菜单项的执行再设置一个触发的途径——允许用户使用快捷键。
快捷键的缺省值为(None)。
点开“快捷键”的下拉列表可选择任何一种快捷键组合方式作为该菜单或菜单项的快捷键。
帮助上下文ID(HelpContextID属性):
输入唯一的单精度数值,用于在HelpFile属性指定的帮助文件中查找适当的帮助主题。
缺省为空。
协调位置(NegotiatePosition属性):
确定允许选择菜单的NegotiatePosition属性。
该属性决定是否及如何在容器窗体中显示菜单。
共有三个选择;
“0—None”、“l—Left”、“2—Midoule”、“3—Right”。
选中标记(Checked属性):
设置在菜单项的左边是否出现选中标记。
通常用它来指出切换式菜单项的开关状态。
菜单项的选中标记在设计时设置很简单,点击“复选”方框使之带有“√”即可(Checked=True)。
但其应用的关键在程序中动态地设置任何一个菜单的选中标记。
有效(Enable属性):
当某一菜单和菜单项被设置为禁用(Enable=False),则该菜单在运行时失效并且变为灰色。
缺省情况下,所有菜单或菜单项都是有效的(Enable=True),对菜单的Click事件做出响应。
可见(Visible属性):
缺省情况下,所有菜单或菜单项都是可见的(Visible=True),用于将菜单项显示在菜单上。
当把某个菜单项的Visible属性设置为False,则该菜单项将立即从菜单中消失。
显示窗口列表(Windowslist属性):
在Microsoft的所有应用程序中几乎都有一个“窗口”菜单,在此菜单中除了几个进行窗体位置排列的菜单项外,在此菜单的下面动态地添加有当前打开的所有窗体的列表。
实现这一功能的唯一操作就是在“窗口”的选项中,选中“显示窗口列表”。
它对应该菜单的WindowsList属性。
㈡菜单控件编辑按钮
编辑区共有7个按钮,其中四个箭头键和三个命令按钮,用来对输入的菜单控件进行简单的编辑,首先在菜单控件列表中用鼠标单击想要移动的菜单选项,然后利用编辑按钮进行编辑,这些按钮的功能说明如表6-1所示。
㈢菜单项控件列表框
位于菜单设计窗口的下部,所有创建的菜单项都在这里显示出来,并通过内缩符号(…)表明菜单项的层次或级别,每有一个(…)表明该菜单项降一个级别。
条形光标所在处为当前正在编辑的菜单项。
此外在菜单编辑器上还有两个重要的按钮:
“确定”和“取消”按钮。
它们的作用分别是:
确定:
关闭菜单编辑器,并在窗体上显示菜单。
取消:
关闭菜单编辑器,取消本次所有对菜单的修改。
使用菜单编辑器进行菜单的设计,就是在数据区输入或修改菜单所需要的数据:
标题、名称、快捷键、访问键、可见、有效、帮助等参数;
然后在菜单非编辑区调整菜单的结构,哪些菜单项为主菜单的菜单项,哪些菜单项为一级子菜单的菜单项等等,并可在此插入新的菜单项或删除已有的菜单项;
而通过菜单项显示区显示,可使我们非常直观地了解菜单系统的总体结构。
第二节下拉菜单的设计
下拉菜单位于窗体标题栏的下面,是最常见的菜单形式。
它能比较好地将应用程序的功能按逻辑关系进行划分,组合在一起,使用户操作起来比较方便。
一、菜单系统设计的步骤
VisualBasic的菜单设计是完全可视化的操作,方便、直观、快速是VisualBasic菜单设计的三大特点。
但是,要设计出一个功能卓越完美的菜单系统其实并不容易,需要程序员对应用程序的功能有全面深刻的理解,并对整个程序的结构了如指掌。
否则,就难以设计出一个好的菜单系统。
因此,设计一个完善的菜单系统需要经过以下几个步骤:
1.全面掌握应用程序功能之间的关系
在规划一个工程时,我们往往把工程逐步分解为若干个子工程,而子工程又可以再划分为若干个更小的工程;
在应用程序设计中,功能的划分也极其类似。
因此,将应用程序功能逐层进行分解,画出功能结构图,是菜单总体规划与设计的基础。
2.合理规划菜单的结构
菜单的结构指菜单是如何构成的,根据功能结构图,可以把菜单相应划分为主菜单、一级菜单、二级菜单等。
应用程序系统的实用性一定程度上取决于菜单系统设计质量。
因此在设计菜单系统时,应注意考虑以下问题:
对于使用频率高的菜单项,应该尽可能放在容易操作的地方(例如放在最前面)。
菜单中菜单项的数目应限制在一个屏幕之内。
若菜单项的数目超过一屏,则应为其中的一些菜单项创建子菜单。
在同一个菜单中,应使用分隔线将不同类型的菜单项分开。
使用日常用语而不是计算机术语作为菜单标题。
为菜单和菜单项设置访问键或快捷键,以便用户能更快速地进行操作。
4.使用菜单编辑器完成菜单的设计。
5.按实际要求为菜单项指定所要执行的程序。
使用菜单编辑器设计创建菜单后,菜单的结构仍然只是一个空架子,通过菜单程序的设计才能真正的实现菜单所要完成的任务。
二、编写菜单控件的代码
通过菜单编辑器我们可方便快速地进行菜单结构与属性的设计,但它仍仅仅是一个菜单的结构,还不能执行实质性的命令或动作。
如前所述,一个菜单控件用以对应一个或一
组操作命令,如何建立它们之间的对应关系,这是一个很重要的工作。
当用户操作菜
单时,单击某个菜单控件时,将触发一个click事件,执行该事件的处理程序,Click事件的处理程序默认值为空,但允许用户自行编写。
当按“确定”按钮退出“菜单编辑器”后,主菜单将出现在窗体的菜单栏上,如图6-4所示:
单击某个菜单项,将出现其对应的一级菜单。
若单击的菜单项是终端菜单项,例如单击“产品入库登记”,则将出现事件代码编写器,用户可以在过程中编写菜单项所对应的程序代码,即click事件的代码。
如图6-5所示:
一个菜单系统中,除分隔符以外的所有菜单控件都能识别click()事件。
一般情况下,只需对终端菜单控件进行编写代码,用来执行具体的命令或任务;
而非终端菜单控件一般不编写代码,在一些特殊情况下,例如希望单击该菜单项时,不但显示下一级菜单,同时需要对一些菜单项进行属性(如:
使菜单项有效或无效,隐藏菜单项或显示菜单项等)修改时,也可以编写代码。
三、下拉菜单设计实例
例6-1下面以库存管理系统为例来详细描述菜单设计的整个过程,具体的步骤如下:
1.画出功能结构图,如图6-6所示。
2.菜单规划
根据功能结构图,将菜单系统规划如下:
主菜单将包含五个菜单项,根据菜单规划的要求,根据菜单项使用频率由高到低来排列:
出入库登记、库存预警、统计与查询、报表打印、系统设置与维护,退出系统。
一级菜单设计如下:
⑴“出入库登记”下的菜单项有:
产品入库登记(I)、产品出库登记(O)。
⑵“库存预警”下的菜单项有:
短缺产品预告(D)、积压产品预告(J)。
⑶“统计与查询”下的菜单项有:
产品入库查询与统计、产品出库查询与统计、产品库存量查询。
⑷“报表打印”下的菜单项有:
产品入库名细表、产品出库名细表、库存月报表、库存年报表。
⑸“系统设置与维护”下的菜单项有:
产品品种设置、库存预警设置、库存盘点、“分隔线”、用户与密码设置、数据备份与恢复。
3.使用“菜单编辑器”创建菜单控件
通过“菜单编辑器”可以方便、快速地为应用程序创建菜单控件,如图6-7所示。
创建菜单的一般步骤如下:
⑴进入菜单编辑器
⑵在“标题”文本框中,输入菜单控件标题,即在菜单栏上显示的文本。
如果希望某个字符成为该菜单项的访问键,也可以在该字符前面加上一个字符&
。
在菜单中,这一字符会自动加上一条下划线。
菜单标题文本显示在菜单控件列表框中。
⑶在“名称”文本框中,键入将用来在代码中引用该菜单控件的名字。
命名应当遵循一定的命名规则,大多数的命名规则都建议用前缀来标识对象(例如菜单控件用mnu来作为前缀),其后紧跟菜单项的名称。
⑷若是一级菜单项,则单击左箭头按钮进行一次缩进;
若是二级菜单项,则单击左箭头按钮两次进行两次缩进。
⑸如果需要的话,还可以设置控件的其他属性。
这一工作可以在“菜单编辑器”中做,也可以在控件“属性”窗口中做。
⑹选取“下一个”就可以再建一个菜单控件。
或者,单击“插入”按钮可以在现有的控件之间插入一个菜单控件。
也可以单击向上与向下的箭头按钮,在现有菜单控件之中移动菜单控件。
⑺如果所有的菜单控件都已创建,单击“确定”按钮可关闭“菜单编辑器”。
利用上面的步骤将规划好的菜单系统逐个输入菜单编辑器中,最后按确定按钮退出。
然后编写菜单控件的代码。
假设各个子功能都已经建立好各自的窗体,例如:
“产品入库登记”子功能的窗体的名称为“frm产品入库登记”,就可以在此调用该窗体来实现产品出入库登记的功能,代码如下:
PrivateSubmnu产品入库登记_click()
Loadfrm产品入库登记
frm产品入库登记.show
EndSub
通过菜单控件下拉列框选择其它菜单控件,编写其代码。
例如选择“系统退出”菜单控件,编写代码如下:
PrivateSubmnu系统退出_click()
UnloadMe
四、动态菜单技术
动态菜单是对常规菜单的一种扩展,它可根据用户的操作内容动态地添加与之有关的菜单项或删除无关的菜单项,于是,菜单中的选项不再是固定不变的了。
例如,在企业的管理信息系统中,为了保证系统的安全,一般设置多个用户,每个用户各有分工,一些用户负责录入数据,一些用户负责审核等,所以对于一个用户,他只能操作菜单系统中的部分菜单项,这就需要在运行时根据不同的用户来确定。
又比如说,在Windows98的文本编辑中,如果剪贴板上没有任何文本,则“编辑”菜单中的“粘贴”项变暗,因而不能被选取。
㈠使菜单项有效或无效
每个菜单项都是窗体中的一个控件,所有的菜单控件都具有Enabled属性,当该属性设为False时,该菜单项将变为无效或禁用。
但是,被禁用的菜单项并没有从菜单上消失,只是该菜单项变为灰色,用户无法选择,该菜单项对应的命令或过程将无法得到执行,而且该菜单项的快捷键、访问键均无效。
要使某个菜单项无效或有效,其方法很简单。
例如:
mnu产品入库登记.Enabled=False‘使“产品入库登记”菜单项无效的命令
如果使主菜单上的某个菜单项变成无效,将使得该菜单项下的整个菜单无效,因为不首先单击上一级菜单项,就不能访问它下一级的任何菜单项。
下列代码将使应用程序的“报表打印”菜单无效。
Mnu报表打印.Enabled=False
上面的命令将使“报表”菜单下的子菜单根本无法显示出来,也就谈不上使用那些菜单了。
㈡使菜单项隐藏
在菜单编辑器中,通过选取被标记为Visible的复选框,可以设置菜单控件的Visible属性的初值。
在运行时,要使一个菜单控件可见或不可见,可以在代码中设置其Visible属性。
mnu系统设置与维护.Visible=True‘使控件可见。
Mnu系统设置与维护.Visible=False‘使控件不可见。
当一个菜单控件不可见时,菜单中的其余控件会上移以填补空出的空间。
如果控件位于菜单栏上,则菜单栏上其余的控件会左移以填补该空间。
这里需提示注意的是:
使某个菜单项的菜单控件隐藏,也同时使该菜单项无效,也就是说,菜单项被隐藏不可见后,通过该菜单项的访问键或者快捷键也都将无法访问该菜单项。
同理,如果主菜单上的某个菜单项的标题不可见,则该菜单下的所有子菜单的菜单项控件均无效。
第三节弹出菜单的设计
弹出菜单又称快捷菜单。
弹出菜单可以显示于窗体任何位置之上、独立于菜单栏的浮动菜单。
在Windows98系统中,弹出菜单的应用非常普遍,弹出菜单一般用于对选定的区域或对象进行相关的操作。
需要注意的是,只有将鼠标的箭头置于所选定的对象或区域之上,单击鼠标右键才会出现弹出菜单。
例如,我们在Windows98的桌面的“我的电脑”图标上单击鼠标的右键,就会激活一个弹出菜单,该菜单包含有与“我的电脑”相关的各种操作。
在文本编辑时,经常要使用到“剪切”、“复制”、“粘贴”、“删除”等辅助操作,所以几乎所有的文本编辑应用程序都支持使用弹出菜单来进行快速操作。
在各种管理信息系统中,也可以将经常使用的功能汇合在一起,创建弹出菜单,这样将可以提高操作的速度。
本节将以前面介绍的库存管理系统为例,详细介绍弹出菜单的设计方法与技巧。
一、建立弹出菜单的步骤
⒈确定弹出菜单的菜单项
在库存管理系统中,“产品入库登记”、“产品出库登记”、“产品短缺预告”、“产品积压预告”这些功能经常要进行操作,这些操作可以通过下拉菜单来进行操作,但有时显得不够快速方便,因此,在主窗体上再创建一个弹出菜单来进行辅助操作,该菜单包括以下四个菜单项,如图6-8所示。
⒉利用“菜单编辑器”添加弹出菜单
进入“菜单编辑器”,在原来的菜单之后增加一个将要作为弹出菜单的主菜单项“常用功能”主菜单项,该主菜单项的标题(Caption属性)就是“常用功能”,名称(Name属性)为“mnu常用功能”;
继续在此菜单项下再建立子菜单,子菜单包含四个菜单项,其标题分别为:
“产品入库登记”、“产品出库登记”、“产品短缺预告”、“产品积压预告”,名称分别为:
pop产品入库登记、pop产品出库登记、pop产品短缺预告、pop产品积压预告。
建立好弹出菜单所需要的菜单后,别忘了把弹出菜单的菜单项—“常用功能”菜单项的Visible属性设置False,使之在菜单中不可见,只有当被作为弹出菜单激活时才成为可见的。
在“菜单编辑器”就可以非常方便地把“常用功能”菜单项的Visible属性设置为False,只需把该菜单项的“可见”选项中的“√”用鼠标单击取消即可。
⒊为建立好的弹出菜单的菜单项编写过程程序代码。
按照第一步的设置,所建立的弹出菜单在窗体的菜单系统中是不可见的,因此就不能按照常规的方法在设计时单击选择菜单项打开相应的Click事件过程代码输入窗口。
如何解决这一问题呢?
两种方法可选择:
一是先把弹出菜单的菜单项的Visible属性设置为True,让它在设计阶段是可见的,这样就可用常规的方法进行菜单项Click事件过程程序代码的输入;
二是直接在窗体事件代码窗口中的窗体对象下拉列表中找到弹出菜单控件,便可对该菜单控件进行Click事件的程序代码输入。
到此,建立弹出菜单菜单的基本工作基本就绪,剩下的问题就是怎样激活弹出菜单了。
二、激活弹出菜单的方法
要使弹出菜单能出现在窗体上,需要使用窗体的PopUpMenu方法。
PopUpMenu方法具体的语法为:
[object.]PopUpMenuMenuname[,flag[,x[,y[,boldcommand]]]]
object(可选):
窗体名称表达式。
缺省值为当前带有焦点的窗体。
Menuname(必需):
弹出菜单控件的名称,在此菜单中必须含有至少一个子菜单。
flags(可选):
在PopupMenu方法中使用flags参数可以进一步定义弹出菜单的位置与性能。
表6-2列出了可用于描述弹出菜单位置的标志。
表6-2描述弹出菜单位置的位置常数
常数
值
说明
vbPopupMenuLeftAlign
缺省值。
弹出菜单的左边定位于x
vbPopupMenuCenterAlign
4
弹出菜单以指定的x位置为中心
vbPopupMenuRightAlign
8
弹出菜单的右边定位于x
表6-3列出了可用于描述弹出菜单性能的标志。
表6-3描述弹出菜单性能的行为常数
VbPopupMenuLeftButton
弹出菜单仅识别鼠标左键对菜单项的选择
VbPopupMenuRightButton
2
弹出菜单识别鼠标左键和右键对菜单项的选择
x,y(可选):
指定显示弹出菜单的x,y坐标。
如果该参数省略,则使用鼠标的坐标。
Boldcommand(可选):
指定弹出菜单中想以粗体字出现的菜单控件的名字。
如果该参数省略,则弹出菜单中没有以黑体字出现的控件。
对于上例,利用窗体的MouseUp或者MouseDown事件(一般标准用法是使用MouseUp事件),当用户用鼠标右键单击窗体时,以下的代码将把“常用功能”弹出菜单激活显示在鼠标所在处。
具体的程序代码为:
PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAs_
Integer,XAsSing1e,YAsSingle)
IfButton=2Then‘检查是否单击了鼠标右键。
PopupMenumnu常用功能‘把“常用功能”激活显示在窗体上。
EndIf
EndSub
此例中的PopupMenu方法,没有带有任何其它的参数,表示使用各个参数的缺省值。
如果为PopupMenu方法中指定x和y坐标,则弹出菜单将显示在指定的位置上。
三、弹出菜单程序设计需注意的几个问题
按照前面介绍的方法,我们可很方便地为自己的应用程序建立弹出菜单。
但若要能全面掌握弹出菜单的设计方法,还需深入地了解以下有关弹出菜单的特性:
(1)当弹出菜单被激活并显示在窗体上时,PopupMenu方法后面的任何程序代码都将在此暂时中断,直到用户从弹出菜单中选择了命令(菜单项)或者取消该菜单时才能继续PopupMenu方法之后代码的执行。
(2)在一个窗体上每次只能显示一个弹出菜单。
因此,如果窗体上已经在显示了一个弹出菜单或打开了某一个下拉菜单时,随后的任何PopupMenu方法调用将被忽略。
(3)弹出菜单在激活前其Visible属性不一定是False。
可以把菜单栏中的任何一个菜单作为弹出菜单,没有要求弹出菜单的Visible属性一定是False。
(4)弹出菜单的激活方式一定是鼠标的右键,这是Windows系统缺省的方式,也是众多用户习惯的操作方式,最好不要改变!
(5)弹出菜单并不只属于窗体,窗体中的每个控件都可以有自己的弹出菜单。
为此,必须为每个控件的MouseUp事件编写类似于窗体的PopupMenu方法的调用。
第四节工具栏和状态栏的设计
工具栏内含工具栏按钮,它提供了对于应用程序中最常用的命令的快速访问。
工具栏是既依附于窗体又独立于窗体的简单容器。
工具栏内含于窗体,并可置于窗体的四周的任何位置。
虽然工具栏中的控件与窗体中的控件是相对独立的,但是在工具栏却能控制窗体以及窗体中控件的属性和方法。
在一个窗体中可以有多个工具栏,他们可同时有效或可见,用户可以根据需要在窗体中打开任意多个所需要的工具栏。
与工具栏一样,状态栏也是既依附于窗体又独立于窗体的简单容器。
状态栏内含于窗体,一般置于窗体的下面。
状态栏主要用来显示相关的提示信息以及应用程序的状态信息。
在Windows应用程序中,很多都设计有状态栏,但由于状态栏只用于显示信息,不能用来进行辅助操作,所以在多数时候很难被人所注意。
一、工具栏的设计
工具栏已经成为Windows应用程序的一个标准配备,使用它可以进一步增强应用程序的菜单界面。
许多工具栏按钮我们都已经