菜单和工具栏设计和应用_第1页
菜单和工具栏设计和应用_第2页
菜单和工具栏设计和应用_第3页
菜单和工具栏设计和应用_第4页
菜单和工具栏设计和应用_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、菜单和工具栏设计和应用 在Windows环境中,几乎所有的应用软件都通过菜单来实现各种操作。而对于VB应用程序来说,当操作比较简单时,一般通过控件来执行,而当要完成较复杂的操作时,使用菜单将很方便。 工具栏同样以其直观、快捷的特点出现在各种应用程序中,事实上工具栏已经成为Windows应用程序的标准功能。它使用户不必在一级级的菜单中去搜寻需要的命令,给用户带来比菜单更为快捷的操作。本章主要内容: 菜单设计 工具栏设计 9.1 菜单设计 菜单的基本作用有两个,一是提供人机对话的接口,以便让用户选择应用系统的各种功能;二是管理应用系统,控制各种功能模块的运行。一个高质量的菜单程序,不仅能使系统美观

2、,而且能使用户使用方便,并可避免由于误操作而带来的严重后果。 在实际应用中,菜单可分为两种基本类型:下拉式菜单和弹出式菜单。 下拉式菜单一般通过单击菜单栏中菜单标题(如“文件”、“编辑”、“视图”等)的方式打开,如图9-1所示。图9-1 下拉式菜单 弹出式菜单则通过用鼠标右键单击某一区域的方式打开,如图9-2所示。 一般来说,不同的区域所“弹出”的菜单内容是不同的。如在VB的工具栏中的弹出菜单与窗体设计器中的弹出菜单就完全不同。图9-2 弹出式菜单9.1.1 下拉式菜单 在下拉式菜单系统中,一般有一个主菜单,称为菜单栏。其中包括一个或多个选择项,称为菜单标题。当单击一个菜单标题时,包含菜单项的

3、列表(菜单)即被打开。菜单由若干个命令、分隔条、子菜单标题(其右边含有三角的菜单项)等菜单项组成。当选择子菜单标题时又会“下拉”出下一级菜单项列表,称为子菜单。VB的菜单系统最多可达6层。 在VB中,菜单也是一个图形对象,即控件。与其他控件一样,它具有定义它的外观与行为的属性。在设计或运行时可以设置Caption属性、Enabled和Visible属性、Checked属性以及其它属性。菜单控件只包含一个事件,即Click事件,当用鼠标或键盘选中该菜单控件时,将调用该事件。 与一般控件不同的是,菜单控件不在VB的工具箱中,需要在VB“菜单编辑器”中进行菜单设计。 1. 菜单编辑器 菜单通过菜单编

4、辑器(即菜单设计窗口)建立。可以通过下面的4种方法之一进入菜单编辑器: l 执行“工具”菜单中的“菜单编辑器”命令。 l 使用快捷键Ctrl+E。 l 单击工具栏中的“菜单编辑器”按钮。 l 在要建立菜单的窗体上单击鼠标右键,在快捷菜单中,单击“菜单编辑器”命令。 打开后的菜单编辑器窗口如图9-3所示。图9-3 菜单编辑器菜单编辑器分为3个部分。(1) 菜单控件属性区 菜单控件属性区用于设置菜单项的各个属性,表9-1列出其中的主要属性。属 性说 明标题(Caption)设置菜单项的标题,相当于控件的Caption属性,也是显示在菜单中的字符。可以在标题中设置热键。可以用分割线将某些菜单项归为一

5、类并与其他项隔开名称(Name)设置菜单项的名称,相当于控件的Name属性。菜单项的命名规则与控件的命名规则相同索引(Index)设置菜单控件数组的下标,相当于控件数组的Index属性快捷键(Shortcut)设置与菜单项等价的快捷键。快捷键的赋值包括功能键与控制键的组合,如Ctrl+F1键或Ctrl+A键。它们出现在菜单中相应菜单项的右边复选(Checked)“复选”属性设置为True时,可以在相应的菜单项旁加上记号“”。表明该菜单项当前处于活动状态有效(Enabled)用来设置菜单项的操作状态。如果该属性被设置为False,则相应的菜单项会变“灰”,不响应用户事件可见(Visible)设置

6、该菜单项是否可见。如果该属性被设置为False,则相应的菜单项将被暂时从菜单中去掉,直到该属性重新被设置为True表9-1 菜单控件的主要属性 (2) 编辑区 编辑区共有7个按钮,用来对输入的菜单项进行简单的编辑,见表9-2。表9-2 编辑区的按钮按钮说明 用来产生或取消内缩符号“.”,内缩符号可以确定菜单的层次。单击一次右箭头产生一个内缩符号,单击一次左箭头则删除一个内缩符号用于调整菜单项的上下位置。当位于菜单控件列表框中的菜单项被选中后,可以通过上、下箭头来移动其位置用于进入下一个菜单项的设计在光标所在处插入一个空白菜单项删除光标所在处的菜单项 (3) 菜单项显示区 菜单项显示区位于菜单编

7、辑器的下部,输入的菜单项在这里显示出来,并通过内缩符号表明菜单项的层次。 说明: “菜单项”包括4个方面的内容:菜单名、菜单命令、分隔线和子菜单。 在输入菜单项时,如果在字母前加上“&”,则显示菜单时在该字母下面加上一条下划线,可以通过Alt+“带下划线的字母”打开菜单或执行相应的菜单命令。 内缩符号由4个小数点“.”组成,它表明菜单项所在的层次。一个内缩符号“.”表示一层,两个内缩符号“.”表示两层,最多为6层。如果一个菜单项前面没有内缩符号,则该菜单为菜单名,即菜单的第一层。 如果在“标题”栏内只输入一个“-”,则表示产生一个分隔线。 只有菜单名没有菜单项的菜单称为“顶层菜单”,在输入这样

8、的菜单项时,通常在后面加上一个感叹号(!)。 除分隔线外,所有的菜单项都可以接受Click事件。【例9-1】在窗体上建立如图9-4所示的文件下拉菜单。图9-4 建立下拉菜单 操作步骤如下: 执行“工具”菜单中的“菜单编辑器”命令,打开“菜单编辑器”窗口。 在标题栏中输入“文件(&F)”,在菜单项显示区中出现同样的标题名称。按Tab键(或用鼠标)把输入光标移到“名称”栏,在名称栏中输入file,此时菜单项显示区中没有变化。 单击编辑区中的“下一个”按钮,菜单项显示区中的条形光标下移,同时资料区的“标题”栏及“名称”栏被清空,光标回到“标题”栏。 在标题栏中输入“新建”,该信息同时在菜单项显示区中

9、显示出来,用Tab键或鼠标把光标移到“名称”栏,输入new,单击编辑区的右箭头,菜单显示区中的“新建”右移,同时其左侧出现一个内缩符号“.”,表明“新建”是“文件”的下一级菜单 依次输入菜单中的各项,如果需要指定快捷键,可以单击“快捷键”栏右端的箭头,从中选出。例如为“打开”菜单项选中“Ctrl+O”作为其快捷键。 设计完成后的窗口如图9-5所示,单击“确定”按钮,完成菜单的建立工作。图9-5 在菜单编辑器窗口建立下拉菜单 【例9-2】利用下拉式菜单为标签中的文本内容设置不同的字体和风格。如图9-6所示。图9-6 利用菜单控制标题板 设计步骤如下: 建立用户界面及设置对象属性,如图9-7所示。

10、 图9-7 设计用户界面及设置对象属性其中,菜单编辑器中各菜单项的设置见表9-3。 表9-3 菜单项的设置 标题(Caption)名称(Name)说明标题板(&F)Menu主菜单项1.文本字体(&N)Nam子菜单项12. .宋体song子菜单项121. .隶书li子菜单项122. .楷体kai子菜单项123. .黑体hei子菜单项124.文本风格(&S)Styl子菜单项13. .粗体Bld子菜单项131. .斜体Itl子菜单项132. .下划线Undrln子菜单项133 编写菜单项代码。“文本字体”中4个菜单选项的Click事件代码为:Private Sub song_Click() Labe

11、l1.FontName = 宋体End SubPrivate Sub li_Click() Label1.FontName = 隶书End SubPrivate Sub kai_Click() Label1.FontName = 楷体_GB2312End SubPrivate Sub hei_Click() Label1.FontName = 黑体End Sub “文本风格”中3个菜单选项的Click事件代码为:Private Sub bld_Click()End SubPrivate Sub Itl_Click()End SubPrivate Sub Undrln_Click()End Su

12、b 程序运行结果如图9-6所示。 2. 菜单控件数组 既然VB将菜单项视为控件,因此就能运用控件数组的概念。菜单控件数组的作用主要有两个: l 用于动态地增删菜单项。 l 简化编程,用一段代码处理多个菜单项。【例9-3】利用下拉式菜单设计简易的文本编辑器,使其具有创建、编辑、保存文本文件的内容,如图9-8所示。图9-8 使用下拉菜单的简单编辑器 设计步骤如下: 建立用户界面及设置对象属性。在窗体上增加一个公共对话框控件,一个文本框控件,并设置对象属性,参见图9-9所示。图9-9 建立用户界面及设置对象属性 其中,菜单编辑器中各菜单项的设置见表9-4。表9-4 菜单项的设置标题(Caption)

13、名称(Name)索引(Index)说 明文件(&F)Files主菜单项1.新建(&N)File0子菜单项11.打开(&O)File1子菜单项12.保存(&S)File2子菜单项13.另存(&A)File3子菜单项14.关闭(&X)File4子菜单项15编辑(&E)Edit主菜单项2.剪切Edi0子菜单项21.复制Edi1子菜单项22.粘贴Edi2子菜单项23.删除Edi3子菜单项24 编写菜单项代码。菜单控件数组File的Click事件代码为:Private Sub (Index As Integer) n = Index Select Case n Case 0 新建 Text1.Text

14、= Form1.Caption = 未命名 Case 1 打开 CommonDialog1.ShowOpen 显示“打开”公共对话框 fname = CommonDialog1. If fname Then Text1.Text = Open fname For Input As #1 b = Do Until EOF(1) Line Input #1, nextline b = b & nextline & Chr(13) & Chr(10) Loop Close #1 Text1.Text = b End IfForm1.Caption = fname Case 2 保存 If Form1

15、.Caption = 未命名 Or Form1.Caption = Then CommonDialog1.ShowSave 显示“另存为”公共对话框 fname = CommonDialog1. Else End If If fname Then Open fname For Output As #1 Close #1 End IfCase 3 另存 CommonDialog1.ShowSave 显示“另存为”公共对话框 fname = CommonDialog1. If fname Then Open fname For Output As #1 Close #1 End If Case 4

16、 关闭 Text1.Text = Unload Me End SelectEnd Sub 编写“编辑”菜单中的菜单控件数组Edi的Click事件代码。在编写过程中,需要用到两个与剪贴板有关的方法:SetText方法和GetText方法。其中SetText方法是将指定的文本放入系统剪贴板中: 剪贴板对象的GetText方法可以作为函数一样使用,它返回系统剪贴板当前的内容:Text1.SelText = Clipboard.GetText()其中,Clipboard是VB提供的剪贴板对象。 菜单控件数组Edi的Click事件代码为: Private Sub edi_Click(Index As I

17、nteger) i = Index Select Case i Case 0 剪切 Text1.SelText = Case 1 复制 Case 2 粘贴 Text1.SelText = Clipboard.GetText() Case 3 删除 Text1.SelText = End SelectEnd Sub 程序运行结果如图9-8所示。 3. 菜单项的可用与不可用 VB设计的菜单可以根据程序的运行状态动态地进行调整。当菜单项所指示的操作不适合当前的环境时,可以暂时将其关闭,不让用户选择该菜单项,也可以干脆把它隐藏起来,就像根本没有这个菜单项一样,等到条件成熟时,再重新显示被隐藏的菜单项。

18、【例9-4】改编例9-3的程序,使得当文本中没有被选中的内容时,剪切、复制和删除等功能被关闭(菜单项呈灰色)。一旦选中某些文本后,剪切、复制和删除等功能就可以被使用,如图9-10所示。图9-10 菜单项的可用与不可用 只需在例9-3的基础上增加“编辑”菜单项Edit的Click事件代码为:Private Sub Edit_Click() edi(0).Enabled = IIf(Text1.SelLength = 0, False, True) edi(1).Enabled = IIf(Text1.SelLength = 0, False, True) edi(3).Enabled = IIf

19、(Text1.SelLength = 0, False, True)End Sub【例9-5】在例9-3的基础上改变程序,隐藏剪切、复制和删除菜单项。 隐藏菜单项的办法也是很简单的。在例9-3中,编写文本框Text1的事件代码。 键抬起(KeyUp)事件代码为:Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer) edi(0).Visible = IIf(Text1.SelLength = 0, False, True) edi(1).Visible = IIf(Text1.SelLength = 0, False, Tru

20、e) edi(3).Visible = IIf(Text1.SelLength = 0, False, True)End Sub 鼠标键抬起(MouseUp)事件代码为:Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) edi(0).Visible = IIf(Text1.SelLength = 0, False, True) edi(1).Visible = IIf(Text1.SelLength = 0, False, True) edi(3).Visible =

21、 IIf(Text1.SelLength = 0, False, True)End Sub程序运行结果如图9-11所示。图9-11 隐藏和重现菜单项 9.1.2 弹出式菜单 弹出式菜单能以灵活的方式为用户提供更加便利的操作,它可以根据用户单击鼠标右键时的位置,动态地调整菜单项的显示位置,同时也改变菜单项显示内容,因此弹出式菜单又称为“上下文菜单”或“快捷菜单”。 设计弹出式菜单仍然使用VB提供的菜单编辑器,只要把某个菜单设置成隐藏(即“可见”栏Visible属性为False)就可以了。 实际上,不管是在窗口顶部菜单条上显示的菜单,还是隐藏的菜单,都可以用PopupMenu方法把它们作为快捷菜单

22、在程序运行期间显示出来,语法为:窗体名. PopupMenu 菜单名, flags ,x , y , boldcommand 说明: 省略窗体名时,将打开当前窗体的菜单。 菜单名是指通过菜单编辑器设计的菜单(至少有一个子菜单项)的名称(Name)。 Flags参数为一些常量数值的设置,包含位置及行为两个指定值,如表9-5、表9-6所示。两个常数可以相加或以Or相连。表9-5 位置常数位置常数说 明0(默认)菜单左上角位于X4菜单上框中央位于X8菜单右上角位于X表9-6 行为常数行为常数说 明0(默认)菜单命令只接受右键单击2菜单命令可接受左、右键单击 Boldcommand参数可以指定在显示的

23、弹出式菜单中想以粗体字出现的菜单项名称。在弹出式菜单中只能有一个菜单项被加粗。 为创建一个不显示在菜单栏里的菜单,可在设计时使顶级菜单项目为不可见(保证在菜单编辑器里的“可见”复选框没有被选上)。当VB显示一个弹出式菜单时,指定的顶级菜单的Visible属性会被忽略。【例9-6】在例9-3中实现弹出式菜单,如图9-12所示。 首先在菜单编辑器中将“文件”菜单的“可见”栏中的对号取消,如图9-13所示。 图9-12 自定义的弹出式菜单 图9-13 将菜单项的可见属性Visible设为False 增加窗体的MouseDown事件代码为:Private Sub Form_MouseDown(Butt

24、on As Integer, Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu Files, 6 End IfEnd Sub 在程序运行时,右键单击窗体,即可弹出快捷菜单,如图9-12所示。 另外,在VB的文本框中,即使不编程也可以得到一个弹出式菜单。例如在文本编辑器中,单击鼠标右键即可得到如图9-14所示的弹出式菜单。图9-14 在VB文本框中不用编程的弹出式菜单 9.2 工具栏设计 工具栏同样以其直观、快捷的特点出现在各种应用程序中,事实上工具栏已经成为Windows应用程序的标准功能。它使用户

25、不必在一级级的菜单中去搜寻需要的命令,给用户带来比菜单更为快捷的操作。 在VB中可以通过手工方式和使用工具栏控件(Toobar)两种方法建立工具栏。9.2.1 用手工方式制作工具栏 用手工方式制作工具栏,其实就是设计一个放置一些工具按钮的图片框。手工制作工具栏的一般步骤如下: 在窗体中添加一个图片框(作为工具按钮的容器),并通过设置图片框的Align属性来控制工具栏(图片框)在窗体中的位置。当改变窗体的大小时,Align属性值非0的图片框会自动地改变大小以适应窗体的宽度或高度。 选定图片框,在图片框中添加任何想在工具栏中显示的控件。通常使用的控件有:命令按钮、图形方式的单项钮和复选框按钮、下拉

26、列表框等。 设置控件的属性。通常在工具按钮上通过不同的图像来表示对应的功能,还可以设置按钮的ToolTipText属性为工具按钮添加工具提示。 编写代码。由于工具按钮通常用于提供对其他(菜单)命令的快捷访问,所以一般都是在其Click事件代码中调用对应的菜单命令。【例9-7】在例9-3的文本编辑器中增加一个自定义的工具栏,如图9-15所示。图9-15 带有工具栏的文本编辑器 在例9-3的基础上作如下修改: 修改应用程序用户界面。在窗体上增加一个图片框Picture1,然后在图片框中增加一个命令按钮数组Command1(0)Command1(2)。 设置新增对象属性,见表9-7。表9-7 新增对

27、象的属性设置对 象属 性属 性 值说 明Picture1Align1Align Top图片框位于窗体的顶部Command1()Caption清空Style1Graphical图形按钮Picture分别为New.bmp、Open.bmp、Save.bmp建立用户界面及设置对象属性后的界面,如图9-16所示。 图9-16 建立用户界面 修改及编写程序代码。修改窗体的事件代码为: Private Sub Form_Resize() With Text1 .Left = 0 End WithEnd Sub 编写命令按钮数组Command1的Click事件代码为:Private Sub Command1

28、_Click(Index As Integer) (Index)End Sub9.2.2 使用Toolbar控件与ImageList控件 使用工具栏控件(Toolbar)可以使应用程序的工具栏更具标准化和更显专业性。 工具栏控件是VB专业版和企业版所特有的ActiveX控件,可以将其添加到工具箱中,以便在工程中使用。操作方法为: 在主菜单中选择“工程”,在“工程”下拉菜单中选择“部件”,即可打开“部件”对话框。 选中,用鼠标单击“确定”按钮,即可在工具箱中增加一组控件。其中用来创建工具栏的控件是Toolbar控件与ImageList控件,如图9-17所示。图9-17 Toolbar控件与Ima

29、geList控件 1. Toolbar控件 用鼠标双击Toolbar控件,它将自动加入窗体并出现在窗体的顶部(也可单击控件后在窗体中画出控件)。通过设置图片框的Align属性可以控制工具栏在窗体中的位置。当改变窗体的大小时,Align属性值非0的Toolbar控件会自动地改变大小以适应窗体的宽度或高度。 用鼠标右键单击窗体上的Toolbar控件,在弹出的快捷菜单中选择“属性”,打开“属性页”对话框,如图9-18所示。图9-18 Toolbar的“属性页”对话框中的“通用”选项卡 “通用”选项卡中的“图像列表”属性将被用来与ImageList控件建立关联。此时列表为空,是因为尚未将ImageLi

30、st控件添加到窗体中的缘故。 用鼠标选择“按钮”选项卡,如图9-19所示。图9-19 “按钮”选项卡其中的各项功能说明如下: 插入与删除按钮:在Button(按钮)集合中添加或删除元素。通过Button集合可以访问工具栏中的各个按钮。 索引与关键字:工具栏中的按钮通过Button集合进行访问,集合中的每个按钮都有惟一的标识,索引(Index属性)和关键字(Key属性)就是这个标识。索引为整型,关键字为字符串型,访问按钮时可以引用二者之一。 标题与描述:标题(Caption属性)是显示在按钮上的文字。描述是按钮的说明信息。 值(Value属性)决定按钮的状态,0-tbrUnpressed为弹起状

31、态,1-tbrPressed为按下状态。 样式(Style属性)决定按钮的行为特点,并且将影响按钮的功能,如表9-8所示。 表9-8 Style属性值及其意义 值符号常数说 明0tbrDefault缺省按钮。按钮是一个规则的下压按钮1tbrCheck复选按钮。具有按下、放开两种状态。当按钮代表的功能是某种开关类型时,可使用复选样式2tbrButtonGroup单选钮组。当一组按钮功能相互排斥时,可以使用单选钮组样式。注意:同一时刻只能按下一个按钮,但所有按钮可能同时处于抬起状态3tbrSeparator分隔符。按钮的功能是作为有8个像素的固定宽度的分隔符。分隔符样式的按钮可以将不同组或不同类的

32、按钮分隔开,例如将单选钮分组4tbrPlaceholder占位符。按钮在外观和功能上像分隔符,但具有可设置的宽度。占位符样式按钮的功能如同“哑”按钮:该按钮的作用是在Toolbar控件中占据一定位置,以便显示其它控件(如ComboBox控件或ListBox控件)5tbrDropdown下拉式按钮。可以建立下拉菜单 宽度(Width属性):当Style属性为4时,可设置按钮的宽度。 图像(Image属性):按钮上显示的图片在ImageList控件中的编号。 工具提示文本(ToolTipText属性):程序运行时,当鼠标指向按钮时显示的说明文字。2. ImageList控件 工具栏按钮本身没有Pi

33、cture属性,不能像其他控件那样用Picture属性直接添加按钮上显示的图片。为此,VB专门提供了图像列表控件ImageList,在它的帮助下可以实现工具栏按钮图片的载入。 利用ImageList控件为Toolbar添加图片的具体操作过程如下: 向Toolbar控件所在的窗体中添加ImageList控件。 用鼠标右键单击窗体中的ImageList控件,在弹出的快捷菜单中选择“属性”,打开“属性页”对话框,如图9-20所示。图9-20 “属性页”对话框 单击“图像”选项卡中的“插入图片”按钮,在弹出的“选定图片”对话框中找到所需要的图片,单击“打开”按钮即可将图片添加到ImageList控件中

34、。重复上述操作直到得到所有需要的图片。 建立Toolbar控件与ImageList控件的关联:打开Toolbar控件的属性页对话框,在“通用”选项卡的“图像列表”选项中选择ImageList控件名,即可建立两者间的关联。 在程序运行时,下述代码也可建立两者间的关联:Private Sub Form_Load() Toolbar1.ImageList = ImageList1End Sub 为工具栏按钮载入图片。一旦Toolbar与ImageList控件建立了关联,Toolbar属性页对话框的“按钮”选项卡中的“图像”选项变为有效。只需在其中输入ImageList图像库中图像的索引号即可将对应的图片添加到按钮上。 下面我们使用工具栏控件来重新设计例12-6中的文本编辑器。【例9-8】在例9-7的文本编辑器中改用工具栏控件设计新的工具栏。 在例9-7的基础上作如下修改: 修改应用程序用户界面。将窗体上的图片

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论