第四章菜单与工具栏设计第4章菜单与工具栏设计主要内容:1.菜单设计2.弹出式菜单设计3.工具栏设计4.状态栏设计第四章菜单与工具栏设计4.1菜单设计在Windows中,菜单可以分为两种基本类型:下拉式菜单和弹出式菜单。下拉式菜单一般通过单击菜单栏中菜单名称的方式打开,而弹出式菜单一般通过在某一区域右击的方式打开。如图4-1所示,分别是VB“工程”菜单的下拉式菜单和窗体的弹出式菜单。第四章菜单与工具栏设计4.1.1任务一菜单控件在VisualBasic中,菜单也是一个图形对象,即控件。与其他控件一样,菜单也需要定义它的外观和属性。在设计菜单和运行菜单时可以设置菜单的Caption属性、Enable属性、Visible属性、Checked属性及其他属性。每个菜单项都可以接收Click事件,当用鼠标或键盘选中该菜单项时,将调用该事件。第四章菜单与工具栏设计4.1.2任务二菜单编辑器VisualBasic中,用菜单编辑器设计菜单和菜单项,或在已有的菜单上添加新菜单项、编辑已有的菜单选项以及修改和删除已有的菜单和菜单项。进入菜单编辑器的方式有如下几种:l选择“工具”→“菜单编辑器”命令;l单击常用工具栏中的“菜单编辑器”按钮;l按Ctrl+E组合键;l在要建立菜单的窗体(此窗体为活动窗体)上右击,在弹出的快捷菜单中选择“菜单编辑器”命令。弹出“菜单编辑器”对话框,如图4-2所示。第四章菜单与工具栏设计图4-2“菜单编辑器”对话框第四章菜单与工具栏设计“菜单编辑器”窗口分为3部分:数据区、编辑区和菜单项显示区。现分别介绍各部分的功能。1.数据区数据区是菜单控件的属性区,用于输入和修改菜单项、设置菜单项的属性。由10个部分组成,各部分的作用如下。(1)标题:此文本框用于输入所建立菜单的标题及菜单中每个菜单项的标题(相当于菜单控件的Caption属性),也是显示在菜单中的字符,可以在标题中设置热键。如果要在菜单中添加一条分隔线,就在此输入一个减号(-)。第四章菜单与工具栏设计(2)名称:此文本框用于输入所建立的菜单和各菜单项的控制名(即菜单控件的Name属性),此项不在菜单中显示出来。VisualBasic中的菜单和每个菜单项都是控件,所以都要有一个控制名(其Name属性)。(3)索引:此文本框用来为用户建立的控件数组设立下标,相当于控件数组的Index属性。(4)快捷键:此下拉列表框用来设置与某菜单项等价的快捷键。在程序运行时,按下快捷键会立刻运行一个菜单项。快捷键的赋值包括功能键与控制键的组合,它们出现在菜单中相应菜单项的右边。第四章菜单与工具栏设计(5)帮助上下文:此文本框用于输入在帮助文件(用HelpFile属性设置)中查找相应的帮助主题的数值。(6)协调位置:此下拉列表框用于确定相应的菜单或菜单项的显示位置。该下拉列表框中有4个选项,其作用如下:l0-None——菜单项不显示;l1-Left——菜单项靠左显示;l2-Middle——菜单项居中显示;l3-Right——菜单项靠右显示。第四章菜单与工具栏设计(7)复选:此复选框用于设置该菜单项标记(即菜单项的Checked属性),此选项通常是动态地加上或取消的,一般应当在程序代码中,根据执行情况设置。当“复选”属性设置为True时,可在相应的菜单项旁加上标记√,表明该菜单项当前处于活动状态。(8)有效:该复选框用于设置菜单项的操作状态(即Enable属性)。默认情况下,该属性为True,表示该选项为有效,可以对用户事件做出响应。若设置该选项为False,则相应的菜单项不响应用户事件。第四章菜单与工具栏设计(9)可见:该复选框用于确定相应的菜单项是否可见(即Visible属性)。若菜单项是可以执行的,则其可见属性为True,否则相应的菜单项不能执行,即其可见属性为False。此时可以把它的“可见”属性设置为True,那么该菜单项将重新出现在菜单中。(10)显示窗口列表:该复选框被选中(即框内为√)时,将显示当前打开的一系列子窗口。该选项用于多文档应用程序。第四章菜单与工具栏设计2.编辑区编辑区有7个按钮,用于对输入的菜单项进行简单编辑。菜单在数据区输入,在菜单项显示区显示。这7个按钮的作用如下:(1)左、右箭头:用来产生和取消内缩符号。单击一次右箭头可以产生一个内缩符号(4个点“....”),其作用是使当前菜单项的层次下降一层;单击一次左箭头,可以删除一个内缩符号,其作用是使当前菜单项的层次上升一层。第四章菜单与工具栏设计(2)上、下箭头:用来在菜单项显示区内移动菜单项的位置。把条形光标移动到某个菜单项上,单击上箭头将使该菜单项上移,单击下箭头将使该菜单项下移。(3)下一个:新建一个菜单项(与按【Enter】键作用相同)。(4)插入:在当前菜单项之前插入一个新的菜单项。(5)删除:删除当前菜单项。第四章菜单与工具栏设计3.菜单项显示区菜单项显示区在菜单设计窗口的下面,输入的菜单项在此区域显示,不同菜单项的层次通过内缩符号来表示。条形光标所在的菜单项为“当前菜单项”。第四章菜单与工具栏设计4.1.3任务三创建菜单的步骤【例4-1】设计一个具有输入、输出和显示功能的菜单,该菜单可以把输入的一串字符显示出来。分析:根据题意,可以分为两个主菜单项,分别为“输入信息”和“显示信息”,它们各包括两个子菜单项。l“输入信息”包括“输入”和“退出”。l“显示信息”包括“显示”和“清除”。建立菜单的具体操作步骤如下:第四章菜单与工具栏设计(1)建立控件本例中需要输入和输出数据,因此需要建立一个文本框用以输入数据,建立一个标签用以输出数据,另外建立两个标签作为提示,各控件的属性设置如表4-1所示,窗体界面如图4-3所示。此外,还要设置标签output的背景色及Label1和Label2的显示方式,如图4-4所示。第四章菜单与工具栏设计图4-3菜单控件设计第四章菜单与工具栏设计图4-4菜单项设计第四章菜单与工具栏设计(2)设计菜单下面利用菜单编辑器来设计各个菜单项,在设计菜单控件时应提供3种属性:标题、名称和内缩符号,一个内缩符号表示一层子菜单,没有内缩符号表示主菜单项。本例中有两个主菜单项,每个主菜单项有两个子菜单。其属性设置如表4-2所示。具体操作步骤如下:①选择“工具”→“菜单编辑器”命令,弹出“菜单编辑器”对话框。②在“标题”文本框中输入“输入信息”(主菜单1),在菜单项显示区中出现同样的标题名称。第四章菜单与工具栏设计③按【Tab】键(或用鼠标)把输入光标移到“名称”文本框。④在“名称”文本框中输入“Input”,此时菜单项显示区中没有变化。⑤将此菜单项的Enable(有效)和Visible(可见)属性都设置为True(本例中所有菜单项的此二属性皆如此)。⑥单击编辑区中的“下一个”按钮,菜单项显示区中的条形光标下移,同时数据区的“标题”文本框和“名称”文本框被清空,光标回到“标题”文本框。⑦在“标题”文本框中输入“输入”,该信息同时在菜单项显示区中显示出来。第四章菜单与工具栏设计⑨单击编辑区的右箭头,菜单显示区中的“输入”右移,同时其左侧出现一个内缩符号(….),表明“输入”是“输入信息”的下一级菜单。⑩单击“快捷键”下拉列表框右端的下拉按钮,选择【Ctrl+I】作为“输入”菜单项的快捷键,此时,在该菜单项右侧出现Ctrl+I。单击编辑区中的“下一个”按钮,菜单项显示区的条形光标下移,左端自动出现内缩符号“….”。在“标题”文本框内输入“退出”,然后在“名称”文本框内输入“Quit”作为菜单项的名称。单击“快捷键”下拉列表框右端的下拉按钮,从中选出【Ctrl+Q】组合键作为“退出”菜单项的快捷键。第四章菜单与工具栏设计建立主菜单项“显示信息”及其两个子菜单项的操作与上面所述的各步骤类似,不再重复。设计完成后的窗口如图4-4所示。此时,单击右上角的“确定”按钮,菜单的建立工作全部结束。设计完成后,窗体的顶行显示主菜单项,单击某个主菜单项,即可显示下拉菜单,如图4-5所示。第四章菜单与工具栏设计(3)为事件过程编写代码如前所述,每个菜单项(包括主菜单项和子菜单项)都可以接收Click事件。每个子菜单项都对应一个Click事件过程。即程序运行后,只要单击某个子菜单项,就可以执行事件过程所定义的操作。每个菜单项对应一个控件。菜单设计完成后,窗体上显示出如图4-5所示的菜单项,此时只要单击某个子菜单项,即可编写该菜单项的过程。例如,完成菜单设计后,单击“输入信息”菜单项,显示“输入”和“退出”子菜单项,如果单击“输入”子菜单项,则进入程序代码窗口,并显示:第四章菜单与工具栏设计PrivateSubIput_Click()输入菜单代码Text1.Text=EndSubPrivateSubdisp_Click()显示菜单代码output.Caption=Text1.TextEndSub第四章菜单与工具栏设计PrivateSubclear_Click()清除菜单代码Text1.Text=output.Caption=EndSub第四章菜单与工具栏设计4.1.4任务四菜单控件数组在VisualBasic中,菜单也是图形对象,即控件,所以可以运用数组的概念。菜单控件数组的作用主要有以下两方面:(1)用于动态地增加和删除菜单项;(2)简化了编程过程,用一段代码处理多个菜单项。【例4-2】设计一个简易的文本编辑器,具有新建、编辑和保存一般文本文件的功能,如图4-7所示。第四章菜单与工具栏设计图4-7简易文本编辑器第四章菜单与工具栏设计建立此菜单的具体操作步骤如下:(1)建立菜单控件由于本菜单中有文本的输入和显示操作、文件的操作(如“打开”、“保存”等),因此需要有文本框和对话框,还应设置文本的多行属性和滚动条,如图4-8所示。(2)设计菜单此文本编辑器的每一菜单的下拉菜单中的菜单项是通过菜单控件数组完成的,只需指定其Index属性值即可。打开菜单编辑器,按表4-3所示输入每一个菜单项的各个属性。所建立的菜单如图4-9所示。第四章菜单与工具栏设计图4-8建立菜单控件第四章菜单与工具栏设计图4-9用菜单控件数组建立菜单第四章菜单与工具栏设计(3)编写事件过程代码菜单建立好以后,还需要为每一个事件过程编写相应的代码。下面是每一个菜单项的代码。“文件”菜单的各个菜单项对应的事件代码如下:PrivateSubFile_Click(IndexAsInteger)n=IndexSelectCasenCase0'新建Text1.Text=Form1.Caption=未命名第四章菜单与工具栏设计Case1‘打开子菜单CommonDialog1.ShowOpen'显示“打开”对话框fname=CommonDialog1.FileNameIffnameThenText1.Text=OpenfnameForInputAs#1b=DoUntilEOF(1)LineInput#1,nextlineb=b&nextline&Chr(13)&Chr(10)LoopClose#1Text1.Text=bEndIfForm1.Caption=fname第四章菜单与工具栏设计Case2‘保存子菜单IfForm1.Caption=未命名OrForm1.Caption=ThenCommonDialog1.ShowSave'显示“另存为”对话框fname=CommonDialog1.FileNameElsefname=Form1.CaptionEndIfIffnameThenOpenfnameForOutputAs#1Print#1,Text1.TextClose#1EndIf第四章菜单与工具栏设计Case3‘另存为子菜单CommonDialog1.ShowSave'显示“另存为”对话框fname=CommonDialog1.FileNameIffnameThenOpenfnameForOutputAs#1Print#1,Text1.TextClose#1EndIfCase4‘关闭子菜单Text1.Text=EndEndSelectTe