【VB开源代码栏目提醒】:以下是网学会员为您推荐的VB开源代码-【VB程序设计课件】菜单及工具栏 - 讲义教程,希望本篇文章对您学习有所帮助。
第九章菜单程序设计在Windows环境下几乎所有的应用程序都通过菜单来实现各种操作。
对于
VB应用程序来说当操作比较简单时一般通过控件来执行而当要完成比较复杂的操作时使用菜单具有十分明显的优势。
9.1 Visual Basic中的菜单1、菜单的作用和分类??作用??提供人机对话界面便于选择应用程序的功能。
??管理应用系统控制各种功能模块的运行。
??分类??下拉式菜单典型的窗口式菜单??弹出式菜单鼠标器右键单击后弹出的快捷菜单菜单的优点??下拉式菜单的优点??整体感强一目了然直观方便易于
学习。
??具有
导航功能方便在各个菜单中
查询要使用的功能。
??占用屏幕空间小只占用窗体上边一行需要时下拉出子菜单。
下拉式菜单弹出式菜单菜单控件是一个对象与其它对象一样它具有定义它的外观与行为的属性。
在设计或运行时可以设置Caption 属性、Enabled 和Visible 属性、Checked 属性以及其它属性。
菜单控件只包含一个事件即Click 事件当用鼠标或键盘选中该菜单控件时将调用该事件。
9.2 菜单编辑器
VB中的菜单通过菜单编辑器即菜单设计窗口建立。
进入菜单编辑器有4种方法??执行“工具”菜单中的“菜单编辑器”命令??使用热键CtrlE??使用工具栏中的“菜单编辑器”按钮??在设计阶段在窗体上单击鼠标右键出现的快捷菜单上有“菜单编辑器”命令进入菜单编辑器后出现菜单编辑器对话框如下图数据区编辑区菜单项显示区将菜单编辑器分为3个区上半部分为数据区中间为编辑区下半部分为菜单项显示区。
1、数据区数据区包含有标题、名称、索引、快捷键、帮助上下文、协调位置、复选、有效、可见、显示窗口列表。
??标题它是一个文本框用来输入所建立的菜单运行时显示的内容相当于控件的Caption属性。
如果在该处输入一个减号它将显示一个分隔线。
??名称它是一个文本框用来输入所建立菜单的控件名相当于控件的Name属性。
需要注意的是每个菜单项都是一个控件都要取一个唯一的控件名。
??索引用来为用户建立的控件数组设立下标。
??快捷键是一个列表框用来设置菜单项的快捷键热键。
??帮助上下文在该处键入一个数值这个值用来在帮助文件中查找相应的帮助主题。
??协调位置它是一个列表框用来确定菜单或菜单项是否出现或在什么位置显示。
??复选当选择此项目时该项菜单可以通过单击在菜单项前加上指定的记号。
它不改变菜单项的作用也不影响事件过程对于任何对象的执行结果只是设置或重新设置菜单项旁的符号。
利用这个属性可以指明某个菜单项当前是否处于活动状态??有效用来设置菜单项的操作状态。
在默认情况下该属性被设置为True表明相应的菜单项可以对用户事件做出响应。
如果此属性被设置为False则在运行时菜单项变为失效的灰色。
??可见确定菜单项是否可见。
一个不可见的菜单项是不能执行的在默认情况下此属性值为True。
当制作弹出式菜单也需要用到此属性。
??显示窗口列表当该选项被设置为“On”时将显示当前打开的一系列子窗口。
它用于多
文档应用程序。
2、编辑区编辑区共有7个按钮用来对输入的菜单项进行简单的编辑。
??左右箭头用来产生或取消内缩符号。
单击一次右箭头可以产生4个点单击一次左箭头可以删除4个点。
通过内缩的层次来区分菜单的层次。
??上下箭头用来在菜单项显示区中移动菜单项的位置。
??下一个开始一个新的菜单项。
??插入插入新的菜单项。
??删除删除当前菜单项。
3、菜单项显示区菜单项显示区在菜单设计窗口下部输入的菜单项在这里显示并且通过内缩符号表明菜单的层次条形光标所在的菜单项为“当前菜单项”。
??内缩一层为4个点最多20个点。
也就是说最多6层菜单。
??只有菜单名没有菜单项的菜单为顶层菜单。
??在“标题”栏内输入一个“-”减号则表示产生一个分隔线。
??除分隔线外所有的菜单项都可以接收Click事件。
??在输入菜单项的“标题”栏内如果在字母前加上“”字符则显示菜单时在该字母下有下划线可以使用Alt字母的方式打开此菜单或执行相应的菜单命令11.3 用菜单编辑器建立菜单在这一节中我们使用一个例题来讲解菜单编辑器的用法。
例题
设计一个具有菜单的窗体它有2个主菜单项一个是计算一个是清除与退出在“计算”菜单中包含“加减乘除”4个子菜单项当单击任何一个计算菜单项窗体上的标签框的内容按照输入的文本框的内容进行计算。
清除将进行文本框和标签框的内容的清除退出则结束程序运行。
第一步建立简单菜单界面设计??分为2个主菜单项第一个“计算”有4个子菜单项第二个“清除与退出”有2个子菜单项。
菜单设计步骤:选取窗体。
从“工具”菜单中选取“菜单编辑器”或者在“工具栏”上单击“菜单编辑器”按钮。
在“标题”文本框中为第一个菜单标题键入希望在菜单栏上显示的文本。
在“名称”文本框中键入将用来在
代码中引用该菜单控件的名字。
单击向左或向右箭头按钮可以改变该控件的缩进级。
如果需要的话还可以设置控件的其他属性。
这一
工作可以在菜单编辑器中做也可以以后在“属性”窗口中做。
选取“下一个”就可以再建一个菜单控件或者单击“插入”可以在现有的控件之间增加一个菜单控件。
也可以单击向上与向下的箭头按钮在现有菜单控件之中移动控件。
如果窗体所有的菜单控件都已创建选取“确定”可关闭菜单编辑器。
??窗体上有2个文本框4个标签框运算结果下的方框为标签框第二步编写菜单
代码编写菜单的程序
代码首先在窗体的设计状态下单击要编写
代码的菜单项。
出现
代码编辑器开始编写菜单项中的
代码。
当用户选取一个菜单控件时一个Click 事件出现。
需要在
代码中为每个菜单控件编写一个Click 事件过程。
除分隔符条以外的所有菜单控件以及无效的或不可见的菜单控件都能识别Click 事件。
Private Sub add_ClickLabel4.Caption ValText1.Text ValText2.TextEnd SubPrivate Sub sub_ClickLabel4.Caption ValText1.Text -ValText2.TextEnd Sub下面是所有程序
代码Private Sub mul_ClickLabel4.Caption ValText1.Text ValText2.TextEnd SubPrivate Sub div_ClickIf ValText2.Text 0 ThenLabel4.Caption ValText1.Text / ValText2.TextElseLabel4.Caption 除数为0不能计算End IfEnd SubPrivate Sub cls_ClickText1.Text Text2.Text Label4.Caption End SubPrivate Sub quit_ClickEndEnd Sub11.4 菜单项的控制在使用windows 或
vb时有的菜单项呈灰色有的菜单项前面有“√”号有的菜单项的某个字母下面有下划线等。
这一节讲述如何在菜单项中增加这些属性。
1、有效性控制---使菜单命令有效或无效所有的菜单控件都具有Enabled 属性当这个属性设为False 时菜单命令无效使它不响应动作。
当Enabled 设为False 时快捷键的访问也无效。
一个无效的菜单控件会变暗。
例add.Enabled False2、菜单项标记---显示菜单控件上的复选标志所谓菜单项标记就是在菜单项前加上一个“√”使用Checked 属性可以把一个复选标志放置在菜单上以便表示打开/关闭条件的状态。
该属性为True 时相应的菜单项前有“√”标记选取菜单命令可交替地增加和删除此复选标志。
例qq.Checked Not qq.Checked3、使菜单控件不可见在菜单编辑器中通过选取被标记为Visible 的复选框可以设置菜单控件的Visible 属性的初值。
在运行时要使一个菜单控件可见或不可见可以从
代码中设置其Visible 属性。
例qq.Visible False4、键盘选择一般情况下菜单项通过鼠标选择执行相应的操作。
在
vb中可以通过键盘选择所需要的菜单项。
用键盘选取菜单有两种方法热键和访问键。
热键可以直接执行菜单命令不必一级一级下拉菜单速度较快。
访问键就是菜单项中加了下划线的字母只要按Alt和加了下划线的字母就可以选择相应的菜单项。
用访问键选择菜单项时必须一级一级地选择。
说明??热键和访问键都在菜单设计时直接指定。
??为了设置访问键必须在准备加下划线的字母的前面加上一个“”.例如Add Copy??访问键只能是一个字符而且这个字符必须是键盘上的某个键否则没有实际意义。
??如果用汉字作为菜单项或控件的标题则通常把访问键放在标题后面的括号中。
例如清除C11.5 菜单项的增减前面建立的菜单为固定的菜单项不能够增减。
如果要增加或减少菜单项必须打开菜单设计窗口。
在运行状态下如何增减菜单呢??增加菜单项的实现方法??通过控件数组来实现。
??使用Load语句建立控件数组中新的下标控件。
Load语句的功能是把窗体或控件加载到内存中。
它的格式Load 控件名称下标 ??设置新增加的控件属性。
??减少菜单项的实现方法??通过控件数组来实现。
??使用UnLoad语句将控件数组中的控件卸载。
UnLoad语句的功能是把窗体或控件从内存中卸载掉。
它的格式UnLoad 控件数组名称下标 注意卸载控件数组中的控件时如果被卸载的控件在数组中间后续的控件下标不会自动上移。
举例编写一个程序有一个主菜单为应用程序应用程序菜单下有下面这些菜单项增加应用程序、减少应用程序和一个分隔线当单击增加应用程序菜单项窗体上显示2个文本框、2个标签框、1个确定按钮输入菜单项显示内容和应用程序文件名含路径单击确定按钮此内容加入菜单文本框等隐藏当单击减少应用
程序窗体上显示列表框里面有应用程序项选择一个单击确定按钮减少选中的应用程序隐藏列表框等。
分析??首先建立菜单包括增加应用程序、减少应用程序、分隔线、应用程序控件数组隐藏。
??编写应用程序菜单项单击事件可使用shell函数。
由于增加的菜单项显示内容不是其应用程序名应该声明一个模块级的数组用来放置应用程序名另外还需要增加一个模块级变量保存现有的新增的菜单项个数。
??增加应用程序菜单项单击事件显示文本框等用户输入内容后单击确定按钮将内容增加到菜单项中使用Load命令。
??减少应用程序菜单项单击事件显示
列表框用户选择一个项目单击确定按钮将内容从菜单项中卸载。
注意这里不要直接卸载这个菜单项应该将其后的内容往前移动然后卸载最后一个菜单项。
??此程序比较复杂请察看源程序或者观看视频学习。
??另外当简单的几个项目暂时需要隐藏起来可以使用菜单项的隐藏属性visibled。
11.6 弹出式菜单除了下拉式菜单Windows还经常使用弹出式菜单几乎在每个对象上单击鼠标器右键都会出现弹出式的快捷菜单。
建立弹出式菜单的步骤??使用菜单编辑器编辑菜单在主菜单中的菜单名的可见属性设置为false。
??在需要弹出弹出式菜单的事件过程中使用PopupMenu方法对象名.PopupMenu 菜单名FlagsXYBoldCommand 说明对象名窗体名菜单名弹出式菜单的名称flags 参数在PopupMenu 方法中使用flags 参数可以进一步定义弹出式菜单的位置与性能。
Boldcommand 参数用来指定在显示的弹出式菜单中想以粗体字体出现的菜单控件的名称。
在弹出式菜单中只能有一个菜单控件被加粗。
一般来说在程序中通常把PopupMenu方法放在对象的MouseDown事件中。
此事件可以根据事件参数区分鼠标左右键的按下。
举例在窗体上用鼠标器右键弹出弹出式菜单菜单中有下面这些菜单项字体设置、分隔线、字号增大、字号减小、分隔线、粗体复选。
当单击菜单项时针对标签框执行对应的操作。
分析首先设置菜单注意主菜单项为不可见。
编制
代码初始化粗体菜单项起始状态Private Sub Form_LoadMbold.Checked FalseEnd Sub标签框的内容字号变小Private Sub Msizesub_ClickLabel1.FontSize Label1.FontSize -3End Sub标签框的内容字号变大Private Sub Msizeadd_ClickLabel1.FontSize Label1.FontSize 3End Sub设置菜单中粗体设置标签中粗体Private Sub Mbold_ClickMbold.Checked Not Mbold.CheckedLabel1.FontBold Mbold.CheckedEnd Sub当鼠标右键单击标签弹出菜单注意参数xy为鼠标相对于标签的顶部和右部的位置Private Sub Label1_MouseDownButton As Integer Shift As Integer X As Single Y As SingleIf Button 2 ThenPopupMenu Mset X Label1.Left Y Label1.TopEnd IfEnd Sub当鼠标右键单击窗体弹出菜单Private Sub Form_MouseDownButton As Integer Shift As Integer X As Single Y As SingleIf Button 2 ThenPopupMenu Mset X YEnd IfEnd Sub11.3 工具栏
VB提供了工具栏Toolbar控件可以方便地为应用程序制作工具栏为了使工具按钮更生动
VB还提供了图像列表ImageList控件使用这两个控件可以制作出非常形象的应用程序工具栏。
但这两个控件不是标准控件使用之前要把它们添加到工具箱中具体操作方法是1右键单击【工具箱】空白位置选择弹出菜单中的【部件】命令弹出【部件】对话框2在对话框的【控件】列表框中选择MicorSoftWindowsCommonControls6.0选项使该选项前的复选框中出现对钩3单击【确定】按钮。
此后在工具箱中增加一组控件设计工具栏的主要步骤是1将Toolbar和ImageList添加到窗体。
Toolbar自动显示在窗体顶部ImageList运行程序时不可见它只是存放图标的数据库。
2为ImageList添加所需图标。
3创建Toolbar的按钮对象。
4 编写按钮对象的事件过程。
为ImageList添加所需图标把ImageList控件添加到窗体上右单击该控件从弹出的快捷菜单中选择【属性】便打开【属性页】对话框.创建Toolbar的按钮对象把Toolbar控件添加到窗体上右单击该控件从弹出的快捷菜单中选择【属性】便打开Toolbar控件【属性页】对话框。
通用卡设置通用卡主要用于连接ImageList从【图像列表】的下拉列表中选择ImageList控件l插入按钮在工具栏添加一个按钮每次单击【插入按钮】系统在索引号指定的按钮之后插入一个按钮。
l索引工具栏中按钮的序号索引号从1开始。
每次单击【插入按钮】系统在索引号指定的按钮之后插入一个按钮并自动生成索引号在事件过程中可引用索引号。
l关键字可选项按钮的名称可在事件过程中引用。
l图像可以输入ImageList控件图标的序号索引号也可以输入ImageList控件图标的名称关键字代表在Toolbar的按钮中引用索引号或关键字指定的图标。
l样式按钮的形式例如普通按钮为0开关按钮为1分隔线按钮为3等。
11.4 状态栏StatusBar 状态栏
常用于显示系统信息和对用户的提示如
系统日期和时间、
软件版本、光标的当前位置、键盘的状态等。
状态栏一般在窗口的底部。
把StatusBar控件添加到窗体上右键单击该控件从弹出的快捷菜单中选择【属性】便打开StatusBar控件【属性页】对话框。
通用卡设置样式选择状态栏的样式可取0或10是普通状态栏1是简单状态栏。
简单状态栏只有一个窗格普通状态栏允许使用多个窗格。
窗格卡设置l插入窗格在状态栏添加一个窗格每次单击【插入窗格】系统在索引号指定的窗格之后插入一个窗格。
l索引状态栏中窗格的序号索引号从1开始。
每次单击【插入窗格】系统在索引号指定的窗格之后插入一个窗格并自动为新窗格生成索引号索引号可在事件过程中引用。
l删除窗格删除选择索引号指定的窗格。
l文本窗格上显示的字符串l工具提示文本当鼠标指针指向窗格并停留时出现的提示信息。
l关键字窗格的名称可在事件过程中引用可选项。
l样式下拉列表选择其中列表项目便指定了该窗格显示的信息。
索引样式说明0sbrText显示文本确省值1sbrCaps显示CapsLock键状态2sbrNum显示NumLock键状态3sbrIns显示Insert键状态4sbrScrl显示ScrollLock键状态5SbrTime显示系统时间6sbrData显示系统日期