《VisualBasic程序设计综合教程第8章应用界面设计》由会员分享,可在线阅读,更多相关《VisualBasic程序设计综合教程第8章应用界面设计(79页珍藏版)》请在金锄头文库上搜索。
1、第第8章章 应用界面设计应用界面设计 用户界面是应用程序的重要组成部分之一,一用户界面是应用程序的重要组成部分之一,一用户界面是应用程序的重要组成部分之一,一用户界面是应用程序的重要组成部分之一,一个设计良好的应用程序,其可用性很大程度上取决个设计良好的应用程序,其可用性很大程度上取决个设计良好的应用程序,其可用性很大程度上取决个设计良好的应用程序,其可用性很大程度上取决于程序界面的清晰和各种功能布局的合理。于程序界面的清晰和各种功能布局的合理。于程序界面的清晰和各种功能布局的合理。于程序界面的清晰和各种功能布局的合理。VBVBVBVB除了除了除了除了提供了一些标准常规控件外,还提供了菜单和大
2、量提供了一些标准常规控件外,还提供了菜单和大量提供了一些标准常规控件外,还提供了菜单和大量提供了一些标准常规控件外,还提供了菜单和大量的的的的ActiveXActiveXActiveXActiveX高级控件。合理利用这些控件,可以使应高级控件。合理利用这些控件,可以使应高级控件。合理利用这些控件,可以使应高级控件。合理利用这些控件,可以使应用程序更加符合用程序更加符合用程序更加符合用程序更加符合WindowsWindowsWindowsWindows的风格,同时也具有灵活性的风格,同时也具有灵活性的风格,同时也具有灵活性的风格,同时也具有灵活性和便捷性。和便捷性。和便捷性。和便捷性。 本章将介
3、绍本章将介绍本章将介绍本章将介绍VBVBVBVB用户界面设计的高级技术,主要用户界面设计的高级技术,主要用户界面设计的高级技术,主要用户界面设计的高级技术,主要包括菜单栏、工具栏、状态栏和通用对话框,它们包括菜单栏、工具栏、状态栏和通用对话框,它们包括菜单栏、工具栏、状态栏和通用对话框,它们包括菜单栏、工具栏、状态栏和通用对话框,它们都是构成应用程序界面的重要组成部分。都是构成应用程序界面的重要组成部分。都是构成应用程序界面的重要组成部分。都是构成应用程序界面的重要组成部分。【主要内容主要内容】 菜单编辑器的使用菜单编辑器的使用菜单编辑器的使用菜单编辑器的使用 下拉式菜单与弹出式菜单的建立下拉
4、式菜单与弹出式菜单的建立下拉式菜单与弹出式菜单的建立下拉式菜单与弹出式菜单的建立 工具栏与状态栏的使用工具栏与状态栏的使用工具栏与状态栏的使用工具栏与状态栏的使用 通用对话框的使用通用对话框的使用通用对话框的使用通用对话框的使用8.1 引例引例8.2 设计菜单设计菜单8.3 工具栏和状态栏工具栏和状态栏8.4 通用对话框通用对话框本章小结本章小结【例例例例8.18.1】设计一个简单的菜单应用程序,通过使用菜设计一个简单的菜单应用程序,通过使用菜设计一个简单的菜单应用程序,通过使用菜设计一个简单的菜单应用程序,通过使用菜单操作完成程序中的打开单操作完成程序中的打开单操作完成程序中的打开单操作完成
5、程序中的打开“ “文件文件文件文件” ”对话框的功能,程序对话框的功能,程序对话框的功能,程序对话框的功能,程序运行结果如图运行结果如图运行结果如图运行结果如图8.18.1(a a),图),图),图),图8.18.1(b b)所示。)所示。)所示。)所示。 8.1 引例引例图8.1(a) 【例8.1】运行结果a图8.1(b) 【例8.1】运行结果b操作步骤:操作步骤:(1 1)设计用户界面)设计用户界面 根据图根据图8.18.1(a a)的要求此程序要求设计菜单,在)的要求此程序要求设计菜单,在VBVB中,菜单被看作是一种特殊类型的控件:菜单控件。中,菜单被看作是一种特殊类型的控件:菜单控件。
6、菜单中的每一个菜单项,都是独立的菜单控件对象。菜单中的每一个菜单项,都是独立的菜单控件对象。在窗体上添加菜单需要使用在窗体上添加菜单需要使用“ “菜单编辑器菜单编辑器” ”。选择。选择“ “工具工具” ”菜单中的菜单中的“ “菜单编辑器菜单编辑器” ”命令,调出命令,调出“ “菜单编菜单编辑器辑器” ”,如图,如图8.18.1(c c)所示。)所示。图图8.1(c) “菜单编辑器菜单编辑器”对话框对话框 在在在在“ “菜单编辑器菜单编辑器菜单编辑器菜单编辑器” ”中进行相应的设置,在中进行相应的设置,在中进行相应的设置,在中进行相应的设置,在“ “标题标题标题标题” ”文本框文本框文本框文本框
7、中输中输中输中输入入入入“ “文件文件文件文件(&F)(&F),在,在,在,在“ “名称名称名称名称” ”文本框中输入文本框中输入文本框中输入文本框中输入filefile,完成,完成,完成,完成“ “文件文件文件文件” ”菜单的菜单的菜单的菜单的创建。单击创建。单击创建。单击创建。单击“ “下一个下一个下一个下一个” ”在在在在“ “标题标题标题标题” ”文本框中输入文本框中输入文本框中输入文本框中输入“ “新建新建新建新建(&N)”(&N)”,在,在,在,在“ “名称名称名称名称” ”文本框中输入文本框中输入文本框中输入文本框中输入NewfileNewfile,并在,并在,并在,并在“ “快
8、捷键快捷键快捷键快捷键” ”列表框中选列表框中选列表框中选列表框中选择择择择Ctrl+NCtrl+N。通过。通过。通过。通过“”“”和和和和“”“”按钮来改变菜单的层次。由于按钮来改变菜单的层次。由于按钮来改变菜单的层次。由于按钮来改变菜单的层次。由于“ “新建新建新建新建” ”菜单菜单菜单菜单项是项是项是项是“ “文件文件文件文件” ”菜单的一级子菜单,因此在完成上述设置之后,菜单的一级子菜单,因此在完成上述设置之后,菜单的一级子菜单,因此在完成上述设置之后,菜单的一级子菜单,因此在完成上述设置之后,应单击右箭头应单击右箭头应单击右箭头应单击右箭头“”“”,这时,这时,这时,这时“ “新建新
9、建新建新建” ”菜单项前面会出现菜单项前面会出现菜单项前面会出现菜单项前面会出现“ “.”.”,成为,成为,成为,成为“ “文件文件文件文件” ”菜单下的一级子菜单。菜单下的一级子菜单。菜单下的一级子菜单。菜单下的一级子菜单。用同样的方法输入如图用同样的方法输入如图8.18.1(d d)所示内容,注意每个)所示内容,注意每个菜单项都要有相应的名称,以方便在编写代码时调菜单项都要有相应的名称,以方便在编写代码时调用。对于用。对于“ “编辑编辑” ”、“ “格式格式” ”、“ “查看查看” ”和和“ “帮助帮助” ”只设置其主只设置其主菜单项即可。菜单项即可。图图8. 1(d) 菜单编辑器设置菜单
10、编辑器设置 程序中还使用了程序中还使用了程序中还使用了程序中还使用了“ “打开打开打开打开” ”文件对话框,在文件对话框,在文件对话框,在文件对话框,在VBVB中这一中这一中这一中这一功功功功能可利用通用对话框控件(能可利用通用对话框控件(能可利用通用对话框控件(能可利用通用对话框控件(CommonDialogCommonDialog)来实现。)来实现。)来实现。)来实现。具体操作步骤如下具体操作步骤如下具体操作步骤如下具体操作步骤如下 :A A 执行执行执行执行“ “工程工程工程工程” ”菜单中的菜单中的菜单中的菜单中的“ “部件部件部件部件” ”命令,打开如图命令,打开如图命令,打开如图命
11、令,打开如图8.18.1(e e)所示)所示)所示)所示“ “部件部件部件部件” ”对话框。对话框。对话框。对话框。 图图8.1(e) “部部件件”对对话话框框B B 在在在在“ “部件部件部件部件” ”中对话框选择中对话框选择中对话框选择中对话框选择“ “控件控件控件控件” ”选项卡,然后在控选项卡,然后在控选项卡,然后在控选项卡,然后在控件列表框中选择件列表框中选择件列表框中选择件列表框中选择“ “Microsoft Common Dialog Microsoft Common Dialog Control 6.0”Control 6.0”。C C 单击单击单击单击“ “确定确定确定确定”
12、 ”按钮,通用对话框被添加到工具箱中,按钮,通用对话框被添加到工具箱中,按钮,通用对话框被添加到工具箱中,按钮,通用对话框被添加到工具箱中,如图如图如图如图8. 18. 1(f f)所示。)所示。)所示。)所示。 通用对话框控件通用对话框控件图图8.1(f) 通用对话框通用对话框 将通用对话框控件放置到窗体上任意位置(运将通用对话框控件放置到窗体上任意位置(运将通用对话框控件放置到窗体上任意位置(运将通用对话框控件放置到窗体上任意位置(运行时此控件不可见),设置通用对话框行时此控件不可见),设置通用对话框行时此控件不可见),设置通用对话框行时此控件不可见),设置通用对话框namename属性为
13、属性为属性为属性为Cd1Cd1。选中通用对话框控件单击右键出现如图。选中通用对话框控件单击右键出现如图。选中通用对话框控件单击右键出现如图。选中通用对话框控件单击右键出现如图8.18.1(g g)所示)所示)所示)所示“ “属性属性属性属性” ”对话框。对话框。对话框。对话框。图图8.1(g) “属性页属性页”对话框对话框 进行如图进行如图进行如图进行如图8.18.1(h h)所示最简单的设置,要求初)所示最简单的设置,要求初)所示最简单的设置,要求初)所示最简单的设置,要求初始化路径为始化路径为始化路径为始化路径为E E:盘根目录,单击:盘根目录,单击:盘根目录,单击:盘根目录,单击“ “确
14、定确定确定确定” ”,最后在,最后在,最后在,最后在窗体上添加一文本框即可。窗体上添加一文本框即可。窗体上添加一文本框即可。窗体上添加一文本框即可。图图8.1(h) “属性页属性页”对话框设置对话框设置(2)代码编写)代码编写 在图在图8.1(i)所示界面,选择)所示界面,选择“文件文件”中的中的“打开打开”双击,进入代码编写窗口,编写如代码:双击,进入代码编写窗口,编写如代码:图图8.1(i) 程序运行前界面程序运行前界面Private Sub file_open_Click() file_open是是“文件文件”-“打开打开”菜单的名字菜单的名字 Cd1.ShowOpen Cd1是通用对话
15、框的是通用对话框的nameEnd Sub 运行程序后,单击窗体上的运行程序后,单击窗体上的运行程序后,单击窗体上的运行程序后,单击窗体上的“ “文件文件文件文件” ”,出现图,出现图,出现图,出现图8.18.1(a a)所示运行界面,单击)所示运行界面,单击)所示运行界面,单击)所示运行界面,单击“ “打开打开打开打开” ”或直接按或直接按或直接按或直接按“ “O”O”键,出现图键,出现图键,出现图键,出现图8.18.1(b b)所示运行界面。)所示运行界面。)所示运行界面。)所示运行界面。 说明:说明:说明:说明:(1 1)VBVB中制作菜单是使用菜单编辑器来实现的,中制作菜单是使用菜单编辑
16、器来实现的,中制作菜单是使用菜单编辑器来实现的,中制作菜单是使用菜单编辑器来实现的,具体有关菜单编辑器的使用将在本章做详细讲解。具体有关菜单编辑器的使用将在本章做详细讲解。具体有关菜单编辑器的使用将在本章做详细讲解。具体有关菜单编辑器的使用将在本章做详细讲解。(2 2)“ “通用对话框通用对话框通用对话框通用对话框” ”仅用于应用程序与用户之间的仅用于应用程序与用户之间的仅用于应用程序与用户之间的仅用于应用程序与用户之间的信息交互,是输入信息交互,是输入信息交互,是输入信息交互,是输入 输出的界面,不能实现打开文输出的界面,不能实现打开文输出的界面,不能实现打开文输出的界面,不能实现打开文件。
17、如果想要实现这些功能需要编写相应程序。件。如果想要实现这些功能需要编写相应程序。件。如果想要实现这些功能需要编写相应程序。件。如果想要实现这些功能需要编写相应程序。(3 3)“ “通用对话框通用对话框通用对话框通用对话框” ”还可以进行其它的设置,本章还可以进行其它的设置,本章还可以进行其它的设置,本章还可以进行其它的设置,本章将进行一一讲解。将进行一一讲解。将进行一一讲解。将进行一一讲解。8.2.1 菜单编辑器的使用菜单编辑器的使用8.2.2 运行时改变菜单属性运行时改变菜单属性8.2.3 弹出式菜单弹出式菜单 8.2 设计菜单设计菜单8.2 设计菜单设计菜单 在在在在WindowsWind
18、ows环境下,几乎所有的软件都有菜环境下,几乎所有的软件都有菜环境下,几乎所有的软件都有菜环境下,几乎所有的软件都有菜单,菜单是将应用程序所能完成的任务有机的组单,菜单是将应用程序所能完成的任务有机的组单,菜单是将应用程序所能完成的任务有机的组单,菜单是将应用程序所能完成的任务有机的组织起来以方便用户的使用。而且这些菜单从构成、织起来以方便用户的使用。而且这些菜单从构成、织起来以方便用户的使用。而且这些菜单从构成、织起来以方便用户的使用。而且这些菜单从构成、组织到操作方法甚至快捷键都非常相似。用户界组织到操作方法甚至快捷键都非常相似。用户界组织到操作方法甚至快捷键都非常相似。用户界组织到操作方
19、法甚至快捷键都非常相似。用户界面是否友好是衡量一个应用软件开发水平的重要面是否友好是衡量一个应用软件开发水平的重要面是否友好是衡量一个应用软件开发水平的重要面是否友好是衡量一个应用软件开发水平的重要标志,而菜单是用户界面的重要组成部分标志,而菜单是用户界面的重要组成部分标志,而菜单是用户界面的重要组成部分标志,而菜单是用户界面的重要组成部分。 菜单最大特点是把程序的功能以菜单的形式列菜单最大特点是把程序的功能以菜单的形式列菜单最大特点是把程序的功能以菜单的形式列菜单最大特点是把程序的功能以菜单的形式列出,用户需要的时候可以选择使用。对于可视语出,用户需要的时候可以选择使用。对于可视语出,用户需
20、要的时候可以选择使用。对于可视语出,用户需要的时候可以选择使用。对于可视语言来说,菜单的设计要简单和直观得多,全部设言来说,菜单的设计要简单和直观得多,全部设言来说,菜单的设计要简单和直观得多,全部设言来说,菜单的设计要简单和直观得多,全部设计都在一个窗口内完成。利用这个窗口,可以建计都在一个窗口内完成。利用这个窗口,可以建计都在一个窗口内完成。利用这个窗口,可以建计都在一个窗口内完成。利用这个窗口,可以建立下拉式菜单,最多可达立下拉式菜单,最多可达立下拉式菜单,最多可达立下拉式菜单,最多可达6 6层。每一个菜单项对应层。每一个菜单项对应层。每一个菜单项对应层。每一个菜单项对应于一段程序的执行
21、,类似于执行一个命令。于一段程序的执行,类似于执行一个命令。于一段程序的执行,类似于执行一个命令。于一段程序的执行,类似于执行一个命令。VBVB支支支支持持持持WindowsWindows的下拉式和弹出式两种类型的菜单。的下拉式和弹出式两种类型的菜单。的下拉式和弹出式两种类型的菜单。的下拉式和弹出式两种类型的菜单。 以一个简单的应用程序的界面为例,介绍组以一个简单的应用程序的界面为例,介绍组以一个简单的应用程序的界面为例,介绍组以一个简单的应用程序的界面为例,介绍组成菜单的基本元素(如所示)。菜单栏由多个菜成菜单的基本元素(如所示)。菜单栏由多个菜成菜单的基本元素(如所示)。菜单栏由多个菜成菜
22、单的基本元素(如所示)。菜单栏由多个菜单名(也叫主菜单)组成,如单名(也叫主菜单)组成,如单名(也叫主菜单)组成,如单名(也叫主菜单)组成,如“ “文件文件文件文件” ”、“ “编辑编辑编辑编辑” ”等都是菜单标题。某一个菜单标题下拉出一个等都是菜单标题。某一个菜单标题下拉出一个等都是菜单标题。某一个菜单标题下拉出一个等都是菜单标题。某一个菜单标题下拉出一个菜单,包含一个或者多个菜单项,如图菜单,包含一个或者多个菜单项,如图菜单,包含一个或者多个菜单项,如图菜单,包含一个或者多个菜单项,如图8.28.2 所示。所示。图图8.2 菜单的组成元素菜单的组成元素菜单标题菜单标题菜单栏菜单栏快捷键菜单
23、项菜单项分隔线分隔线8.2.1 菜单编辑器的使用菜单编辑器的使用 VBVB中的菜单通过菜单编辑器,即菜单设计窗中的菜单通过菜单编辑器,即菜单设计窗中的菜单通过菜单编辑器,即菜单设计窗中的菜单通过菜单编辑器,即菜单设计窗口建立。可以通过以下口建立。可以通过以下口建立。可以通过以下口建立。可以通过以下4 4种方式进入菜单编辑器:种方式进入菜单编辑器:种方式进入菜单编辑器:种方式进入菜单编辑器:1 1 打开打开打开打开“ “工具工具工具工具” ”菜单,选择菜单,选择菜单,选择菜单,选择“ “菜单编辑器菜单编辑器菜单编辑器菜单编辑器” ”;2 2 单击工具栏中的单击工具栏中的单击工具栏中的单击工具栏中
24、的“ “菜单编辑器菜单编辑器菜单编辑器菜单编辑器” ”按钮;按钮;按钮;按钮;3 3 使用快捷键使用快捷键使用快捷键使用快捷键Ctrl+ECtrl+E;4 4 在要建立菜单的窗体上单击鼠标右键,将弹出一在要建立菜单的窗体上单击鼠标右键,将弹出一在要建立菜单的窗体上单击鼠标右键,将弹出一在要建立菜单的窗体上单击鼠标右键,将弹出一个菜单,如图个菜单,如图个菜单,如图个菜单,如图8.38.3所示,然后单击所示,然后单击所示,然后单击所示,然后单击“ “菜单编辑器菜单编辑器菜单编辑器菜单编辑器” ”命令。命令。命令。命令。图图8.3 8.3 用弹出式菜单打开菜单编辑器窗口用弹出式菜单打开菜单编辑器窗口
25、 使用上面使用上面使用上面使用上面4 4种方法中的一种,打开菜单编辑器窗口种方法中的一种,打开菜单编辑器窗口种方法中的一种,打开菜单编辑器窗口种方法中的一种,打开菜单编辑器窗口如图如图如图如图8.18.1(c c)所示,具体内容如下:)所示,具体内容如下:)所示,具体内容如下:)所示,具体内容如下:(1 1)标题)标题)标题)标题 “ “标题标题” ”框用于设置在菜单栏上显示的文本。框用于设置在菜单栏上显示的文本。如果菜单打开的是一个对话框,在标题文本后面应加如果菜单打开的是一个对话框,在标题文本后面应加“ “”如果菜单要通过键盘来执行相应操作,使某一字如果菜单要通过键盘来执行相应操作,使某一
26、字符成为该菜单项的访问键,可以用符成为该菜单项的访问键,可以用“ “(&+&+访问字符)访问字符)” ”的格式,访问字符一般是菜单标题的第一个字母,或的格式,访问字符一般是菜单标题的第一个字母,或者是别的更易记的字符,两个同级菜单项不能用同一者是别的更易记的字符,两个同级菜单项不能用同一个访问字符。在运行时访问字符会自动加上一条下划个访问字符。在运行时访问字符会自动加上一条下划线,线,“ “&”&”字符则不可见。如图字符则不可见。如图8.18.1(d d)所示的,按)所示的,按Alt+FAlt+F可打开可打开“ “文件文件” ”菜单,再按菜单,再按“ “O”O”键就打开了键就打开了“ “打开打
27、开” ”菜单项。菜单项。(2 2)名称)名称)名称)名称 在在在在“ “名称名称名称名称” ”文本框中,设置在代码中引用该菜文本框中,设置在代码中引用该菜文本框中,设置在代码中引用该菜文本框中,设置在代码中引用该菜单项的名字。菜单项名字应当唯一,但不同菜单中子单项的名字。菜单项名字应当唯一,但不同菜单中子单项的名字。菜单项名字应当唯一,但不同菜单中子单项的名字。菜单项名字应当唯一,但不同菜单中子菜单项可以重名。菜单项可以重名。菜单项可以重名。菜单项可以重名。(3 3)快捷键)快捷键)快捷键)快捷键 可以在快捷键组合框中输入快捷键,也可以选可以在快捷键组合框中输入快捷键,也可以选可以在快捷键组合
28、框中输入快捷键,也可以选可以在快捷键组合框中输入快捷键,也可以选取功能键或键的组合来设置。快捷键将自动出现在菜取功能键或键的组合来设置。快捷键将自动出现在菜取功能键或键的组合来设置。快捷键将自动出现在菜取功能键或键的组合来设置。快捷键将自动出现在菜单上,要删除快捷键应选取列表项顶部的单上,要删除快捷键应选取列表项顶部的单上,要删除快捷键应选取列表项顶部的单上,要删除快捷键应选取列表项顶部的“ “(nonenone)” ”。例如:为。例如:为。例如:为。例如:为“ “新建新建新建新建” ”菜单项创建快捷菜单项创建快捷菜单项创建快捷菜单项创建快捷键键键键Ctrl+NCtrl+N, ,在运行时按在运
29、行时按在运行时按在运行时按Ctrl+NCtrl+N将实现与单击将实现与单击将实现与单击将实现与单击“ “新建新建新建新建” ”菜单项相同的操作。菜单项相同的操作。菜单项相同的操作。菜单项相同的操作。 菜单条上的第一级菜单不能设置快捷键。菜单条上的第一级菜单不能设置快捷键。菜单条上的第一级菜单不能设置快捷键。菜单条上的第一级菜单不能设置快捷键。(4 4)其它属性)其它属性)其它属性)其它属性 帮助上下文:指定一个唯一的数值作为帮助文本的帮助上下文:指定一个唯一的数值作为帮助文本的帮助上下文:指定一个唯一的数值作为帮助文本的帮助上下文:指定一个唯一的数值作为帮助文本的标识符,可根据该数值在帮助文件
30、中查找适当的帮助主标识符,可根据该数值在帮助文件中查找适当的帮助主标识符,可根据该数值在帮助文件中查找适当的帮助主标识符,可根据该数值在帮助文件中查找适当的帮助主题。题。题。题。 协调位置:与协调位置:与协调位置:与协调位置:与OLEOLE功能有关,一般取功能有关,一般取功能有关,一般取功能有关,一般取0 0值。值。值。值。 复选(复选(复选(复选(CheckedChecked)属性:)属性:)属性:)属性: 如果选中(如果选中(如果选中(如果选中( ),在初次打开菜单项时,该菜单项的左),在初次打开菜单项时,该菜单项的左),在初次打开菜单项时,该菜单项的左),在初次打开菜单项时,该菜单项的左
31、边显示边显示边显示边显示“”“”。在菜单条上的第一级菜单不能使用该属。在菜单条上的第一级菜单不能使用该属。在菜单条上的第一级菜单不能使用该属。在菜单条上的第一级菜单不能使用该属性。性。性。性。 有效(有效(有效(有效(EnabledEnabled)属性:)属性:)属性:)属性: 如果选中(如果选中(如果选中(如果选中( ),在运行时以清晰的文字出现;未选中),在运行时以清晰的文字出现;未选中),在运行时以清晰的文字出现;未选中),在运行时以清晰的文字出现;未选中则在运行时以灰色的文字出现,不能使用该菜单项。则在运行时以灰色的文字出现,不能使用该菜单项。则在运行时以灰色的文字出现,不能使用该菜单
32、项。则在运行时以灰色的文字出现,不能使用该菜单项。 显示窗口列表(显示窗口列表(显示窗口列表(显示窗口列表(WindowListWindowList)属性:)属性:)属性:)属性: 当菜单要包括一个打开的所有当菜单要包括一个打开的所有当菜单要包括一个打开的所有当菜单要包括一个打开的所有MDIMDI(多文档界面)(多文档界面)(多文档界面)(多文档界面)子窗口的列表时,选中(子窗口的列表时,选中(子窗口的列表时,选中(子窗口的列表时,选中( )此项。)此项。)此项。)此项。 (5 5)移动、插入、删除菜单项)移动、插入、删除菜单项)移动、插入、删除菜单项)移动、插入、删除菜单项 当需要创建下一个
33、子菜单时,可选取当需要创建下一个子菜单时,可选取当需要创建下一个子菜单时,可选取当需要创建下一个子菜单时,可选取“ “下一个下一个下一个下一个” ”或者单击或者单击或者单击或者单击“ “插入插入插入插入” ”按键。单击按键。单击按键。单击按键。单击“”“”按钮,缩进级按钮,缩进级按钮,缩进级按钮,缩进级前加四个点(前加四个点(前加四个点(前加四个点(.);单击);单击);单击);单击“”“”按钮则删除一个按钮则删除一个按钮则删除一个按钮则删除一个缩进级。缩进级。缩进级。缩进级。 “” “”或或或或“”“”按钮:上移或者下移所选菜单项。按钮:上移或者下移所选菜单项。按钮:上移或者下移所选菜单项。
34、按钮:上移或者下移所选菜单项。 “ “插入插入插入插入” ”和和和和“ “删除删除删除删除” ”按钮:插入和删除菜单项。按钮:插入和删除菜单项。按钮:插入和删除菜单项。按钮:插入和删除菜单项。 (6 6)分隔条)分隔条)分隔条)分隔条 分隔条为菜单项间的一个水平线,当菜单项很多分隔条为菜单项间的一个水平线,当菜单项很多分隔条为菜单项间的一个水平线,当菜单项很多分隔条为菜单项间的一个水平线,当菜单项很多时,可以使用分隔条将菜单项划分成一些分组。时,可以使用分隔条将菜单项划分成一些分组。时,可以使用分隔条将菜单项划分成一些分组。时,可以使用分隔条将菜单项划分成一些分组。 如果想增加一个分隔条,选取
35、如果想增加一个分隔条,选取如果想增加一个分隔条,选取如果想增加一个分隔条,选取“ “插入插入插入插入” ”,在,在,在,在“ “标标标标题题题题” ”文本框中键入一个连字符文本框中键入一个连字符文本框中键入一个连字符文本框中键入一个连字符“ “-”-”。虽然分隔条。虽然分隔条。虽然分隔条。虽然分隔条是当作菜单控件来创建的,但不能被选取。是当作菜单控件来创建的,但不能被选取。是当作菜单控件来创建的,但不能被选取。是当作菜单控件来创建的,但不能被选取。8.2.2 运行时改变菜单属性运行时改变菜单属性1 1、使菜单命令有效或无效、使菜单命令有效或无效、使菜单命令有效或无效、使菜单命令有效或无效 所有
36、的菜单项都具有所有的菜单项都具有所有的菜单项都具有所有的菜单项都具有EnabledEnabled属性,属性,属性,属性,EnabledEnabled属性默认值为属性默认值为属性默认值为属性默认值为TrueTrue(有效)。当(有效)。当(有效)。当(有效)。当EnabledEnabled属性设属性设属性设属性设为为为为FalseFalse时,菜单项会变暗,菜单命令无效不响应时,菜单项会变暗,菜单命令无效不响应时,菜单项会变暗,菜单命令无效不响应时,菜单项会变暗,菜单命令无效不响应动作,快捷键也无效。若上级菜单无效则整个下动作,快捷键也无效。若上级菜单无效则整个下动作,快捷键也无效。若上级菜单无
37、效则整个下动作,快捷键也无效。若上级菜单无效则整个下拉菜单无效。拉菜单无效。拉菜单无效。拉菜单无效。2 2、 显示菜单控件的复选标志显示菜单控件的复选标志显示菜单控件的复选标志显示菜单控件的复选标志 使用菜单项的使用菜单项的使用菜单项的使用菜单项的CkeckedCkecked属性,可以设置复选属性,可以设置复选属性,可以设置复选属性,可以设置复选标志,如果标志,如果标志,如果标志,如果CheckedChecked属性为属性为属性为属性为TureTure表示含有复选标表示含有复选标表示含有复选标表示含有复选标志。如图志。如图志。如图志。如图8.48.4所示,单击所示,单击所示,单击所示,单击“
38、“标尺标尺标尺标尺” ”可将显示标记显可将显示标记显可将显示标记显可将显示标记显示或删除。假设示或删除。假设示或删除。假设示或删除。假设“ “标尺标尺标尺标尺” ”项的项的项的项的namename属性值为属性值为属性值为属性值为“ “BiaochiBiaochi” ”则有则有则有则有 :Private Sub Biaochi_Click() Biaoc.Checked=Not Biaoc.CheckedEnd Sub图8.4 复先选标志示例3 3、 使菜单控件不可见使菜单控件不可见使菜单控件不可见使菜单控件不可见 在运行时,要使一个菜单项不可见或可见,在运行时,要使一个菜单项不可见或可见,在运
39、行时,要使一个菜单项不可见或可见,在运行时,要使一个菜单项不可见或可见,可以从代码中设置其可以从代码中设置其可以从代码中设置其可以从代码中设置其VisibleVisible属性。当下拉菜单中属性。当下拉菜单中属性。当下拉菜单中属性。当下拉菜单中的一个菜单项不可见时,则其余菜单项会上移以的一个菜单项不可见时,则其余菜单项会上移以的一个菜单项不可见时,则其余菜单项会上移以的一个菜单项不可见时,则其余菜单项会上移以填补空出的空间。如果菜单条上的菜单项不可见,填补空出的空间。如果菜单条上的菜单项不可见,填补空出的空间。如果菜单条上的菜单项不可见,填补空出的空间。如果菜单条上的菜单项不可见,则菜单条上其
40、余的控件会左移以填补该空间。则菜单条上其余的控件会左移以填补该空间。则菜单条上其余的控件会左移以填补该空间。则菜单条上其余的控件会左移以填补该空间。 使菜单不可见也产生使之无效的作用,通过使菜单不可见也产生使之无效的作用,通过使菜单不可见也产生使之无效的作用,通过使菜单不可见也产生使之无效的作用,通过菜单、访问键或者快捷键都无法访问该控件。菜单、访问键或者快捷键都无法访问该控件。菜单、访问键或者快捷键都无法访问该控件。菜单、访问键或者快捷键都无法访问该控件。 4 4、运行时添加菜单项、运行时添加菜单项、运行时添加菜单项、运行时添加菜单项 运行时可以添加菜单项,例如,运行时可以添加菜单项,例如,
41、运行时可以添加菜单项,例如,运行时可以添加菜单项,例如,VBVB的的的的“ “文件文件文件文件” ”菜单就是根据打开的工程名添加菜单,显示出菜单就是根据打开的工程名添加菜单,显示出菜单就是根据打开的工程名添加菜单,显示出菜单就是根据打开的工程名添加菜单,显示出最近打开过的工程名,如图最近打开过的工程名,如图最近打开过的工程名,如图最近打开过的工程名,如图8.58.5所示。所示。所示。所示。图图8.58.5运行添加菜单项示例运行添加菜单项示例运行时添加菜单项运行时添加菜单项 添加菜单项必须使用控件数组。为了在运行添加菜单项必须使用控件数组。为了在运行添加菜单项必须使用控件数组。为了在运行添加菜单
42、项必须使用控件数组。为了在运行时可以添加菜单项,在设计时必须设置该菜单项时可以添加菜单项,在设计时必须设置该菜单项时可以添加菜单项,在设计时必须设置该菜单项时可以添加菜单项,在设计时必须设置该菜单项的的的的IndexIndex属性为属性为属性为属性为0 0,使它自动地成为控件数组的一,使它自动地成为控件数组的一,使它自动地成为控件数组的一,使它自动地成为控件数组的一个元素,同时也创建了一个在运行时不可见的分个元素,同时也创建了一个在运行时不可见的分个元素,同时也创建了一个在运行时不可见的分个元素,同时也创建了一个在运行时不可见的分隔条。隔条。隔条。隔条。 如果要添加或删除一个控件数组中的菜单控
43、如果要添加或删除一个控件数组中的菜单控如果要添加或删除一个控件数组中的菜单控如果要添加或删除一个控件数组中的菜单控件,可以使用件,可以使用件,可以使用件,可以使用LoadLoad或或或或UnloadUnload语句。语句。语句。语句。 【例例例例8.28.2】设计一个简单的记事本,程序启动设计一个简单的记事本,程序启动设计一个简单的记事本,程序启动设计一个简单的记事本,程序启动“ “编辑编辑编辑编辑” ”菜单中的菜单中的菜单中的菜单中的“ “粘贴粘贴粘贴粘贴” ”菜单项不可用,当用户菜单项不可用,当用户菜单项不可用,当用户菜单项不可用,当用户在文本框中输入内容后,单击在文本框中输入内容后,单击
44、在文本框中输入内容后,单击在文本框中输入内容后,单击“ “编辑编辑编辑编辑” ”菜单下的菜单下的菜单下的菜单下的“ “剪切剪切剪切剪切” ”或或或或“ “复制复制复制复制” ”菜单项,或使用对应的快捷方式,菜单项,或使用对应的快捷方式,菜单项,或使用对应的快捷方式,菜单项,或使用对应的快捷方式,可完成相应的功能,同时可完成相应的功能,同时可完成相应的功能,同时可完成相应的功能,同时“ “粘贴粘贴粘贴粘贴” ”菜单项变为可用菜单项变为可用菜单项变为可用菜单项变为可用状态。运行结果如图状态。运行结果如图状态。运行结果如图状态。运行结果如图8.68.6(a a)所示。)所示。)所示。)所示。图图8.
45、68.6(a a)【例例8.28.2】运行结果运行结果a a主菜单为主菜单为主菜单为主菜单为“ “文件文件文件文件” ”、“ “编辑编辑编辑编辑” ”和和和和“ “帮助帮助帮助帮助” ”。(1)(1)设计用户界面设计用户界面设计用户界面设计用户界面 本例界面由两部分组成:一个是菜单栏,另本例界面由两部分组成:一个是菜单栏,另本例界面由两部分组成:一个是菜单栏,另本例界面由两部分组成:一个是菜单栏,另一个是文本框。文件的菜单项同一个是文本框。文件的菜单项同一个是文本框。文件的菜单项同一个是文本框。文件的菜单项同【例例例例8.18.1】,为新,为新,为新,为新建、打开、保存、另存为、分隔线、页面设
46、置、建、打开、保存、另存为、分隔线、页面设置、建、打开、保存、另存为、分隔线、页面设置、建、打开、保存、另存为、分隔线、页面设置、打印、分隔线、退出,帮助菜单中的菜单项为索打印、分隔线、退出,帮助菜单中的菜单项为索打印、分隔线、退出,帮助菜单中的菜单项为索打印、分隔线、退出,帮助菜单中的菜单项为索引、内容、向导、分隔线、关于等。引、内容、向导、分隔线、关于等。引、内容、向导、分隔线、关于等。引、内容、向导、分隔线、关于等。 设计编辑菜单为剪切、复制、粘贴,实现对设计编辑菜单为剪切、复制、粘贴,实现对设计编辑菜单为剪切、复制、粘贴,实现对设计编辑菜单为剪切、复制、粘贴,实现对记事本中选定的文档进
47、行操作。注意根据题目要记事本中选定的文档进行操作。注意根据题目要记事本中选定的文档进行操作。注意根据题目要记事本中选定的文档进行操作。注意根据题目要求在菜单编辑器中进行菜单设计时,要将求在菜单编辑器中进行菜单设计时,要将求在菜单编辑器中进行菜单设计时,要将求在菜单编辑器中进行菜单设计时,要将“ “粘贴粘贴粘贴粘贴” ”菜单项的菜单项的菜单项的菜单项的“ “有效有效有效有效” ”复选标记复选标记复选标记复选标记“”“”去掉。剪切、去掉。剪切、去掉。剪切、去掉。剪切、复制、粘贴三者的名称分别为:复制、粘贴三者的名称分别为:复制、粘贴三者的名称分别为:复制、粘贴三者的名称分别为:EditCutEdi
48、tCut、 EditCopyEditCopy 、EditPasteEditPaste,文本框的,文本框的,文本框的,文本框的MultiLineMultiLine属性属性属性属性值设为值设为值设为值设为TrueTrue。 说明:这个程序中的编辑功能是说明:这个程序中的编辑功能是说明:这个程序中的编辑功能是说明:这个程序中的编辑功能是WindowsWindows程程程程序中常用的功能。序中常用的功能。序中常用的功能。序中常用的功能。WindowsWindows提供了一个剪切板对提供了一个剪切板对提供了一个剪切板对提供了一个剪切板对象象象象ClipboardClipboard,使用鼠标选择的文本通过
49、程序,使用鼠标选择的文本通过程序,使用鼠标选择的文本通过程序,使用鼠标选择的文本通过程序“ “复复复复制制制制” ”或或或或“ “剪切剪切剪切剪切” ”操作,选择的文本(或对象)被操作,选择的文本(或对象)被操作,选择的文本(或对象)被操作,选择的文本(或对象)被放置在放置在放置在放置在ClipboardClipboard上。其中上。其中上。其中上。其中 (1 1)Clipboard.ClearClipboard.Clear是清除剪贴板上的信息。是清除剪贴板上的信息。是清除剪贴板上的信息。是清除剪贴板上的信息。 (2 2)Clipboard.SetTextClipboard.SetText是指
50、定的是指定的是指定的是指定的ClipboardClipboard对象对象对象对象格式将文本字符串放到格式将文本字符串放到格式将文本字符串放到格式将文本字符串放到ClipboardClipboard上。上。上。上。 (3 3)Clipboard.GetTextClipboard.GetText是从是从是从是从ClipboardClipboard返回一个返回一个返回一个返回一个文本字符串文本字符串文本字符串文本字符串 。通过本例的学习,希望读者注意以下知识点的应用:通过本例的学习,希望读者注意以下知识点的应用:通过本例的学习,希望读者注意以下知识点的应用:通过本例的学习,希望读者注意以下知识点的应
51、用:菜单编辑器的使用:首先是启动菜单编辑器,然后是菜单菜单编辑器的使用:首先是启动菜单编辑器,然后是菜单菜单编辑器的使用:首先是启动菜单编辑器,然后是菜单菜单编辑器的使用:首先是启动菜单编辑器,然后是菜单编辑器中具体内容的设置(主要包括以下内容:标题、名编辑器中具体内容的设置(主要包括以下内容:标题、名编辑器中具体内容的设置(主要包括以下内容:标题、名编辑器中具体内容的设置(主要包括以下内容:标题、名称、快捷键、复选(称、快捷键、复选(称、快捷键、复选(称、快捷键、复选(CheckedChecked)属性、有效()属性、有效()属性、有效()属性、有效(EnabledEnabled)属性、移动
52、、插入、删除菜单项和分隔条的设置)。属性、移动、插入、删除菜单项和分隔条的设置)。属性、移动、插入、删除菜单项和分隔条的设置)。属性、移动、插入、删除菜单项和分隔条的设置)。运行时改变菜单属性:最常用的有在运行过程中使菜单命运行时改变菜单属性:最常用的有在运行过程中使菜单命运行时改变菜单属性:最常用的有在运行过程中使菜单命运行时改变菜单属性:最常用的有在运行过程中使菜单命令有效或无效和显示菜单控件的复选标志,本例中对菜单令有效或无效和显示菜单控件的复选标志,本例中对菜单令有效或无效和显示菜单控件的复选标志,本例中对菜单令有效或无效和显示菜单控件的复选标志,本例中对菜单项项项项“ “粘贴粘贴粘贴
53、粘贴” ”命令在程序运行过程中使用了动态变化。命令在程序运行过程中使用了动态变化。命令在程序运行过程中使用了动态变化。命令在程序运行过程中使用了动态变化。分隔条的使用:分隔条是菜单中特殊的菜单项,该菜单项分隔条的使用:分隔条是菜单中特殊的菜单项,该菜单项分隔条的使用:分隔条是菜单中特殊的菜单项,该菜单项分隔条的使用:分隔条是菜单中特殊的菜单项,该菜单项不能响应不能响应不能响应不能响应ClickClick事件,也不能被选取。分隔条作为菜单项事件,也不能被选取。分隔条作为菜单项事件,也不能被选取。分隔条作为菜单项事件,也不能被选取。分隔条作为菜单项间的一个水平行显示在菜单上,可以使用分隔条菜单项将
54、间的一个水平行显示在菜单上,可以使用分隔条菜单项将间的一个水平行显示在菜单上,可以使用分隔条菜单项将间的一个水平行显示在菜单上,可以使用分隔条菜单项将各菜单项划分成一些逻辑组。如果想增加一个分隔条,选各菜单项划分成一些逻辑组。如果想增加一个分隔条,选各菜单项划分成一些逻辑组。如果想增加一个分隔条,选各菜单项划分成一些逻辑组。如果想增加一个分隔条,选取取取取“ “插入插入插入插入” ”,在,在,在,在“ “标题标题标题标题” ”文本框中键入一个连字符文本框中键入一个连字符文本框中键入一个连字符文本框中键入一个连字符“ “-”-”, 为其命名唯一的名称。为其命名唯一的名称。为其命名唯一的名称。为其
55、命名唯一的名称。学会剪切板的使用。学会剪切板的使用。学会剪切板的使用。学会剪切板的使用。8.2.3 弹出式菜单弹出式菜单 弹出式菜单又称为快捷菜单,弹出式菜单是弹出式菜单又称为快捷菜单,弹出式菜单是弹出式菜单又称为快捷菜单,弹出式菜单是弹出式菜单又称为快捷菜单,弹出式菜单是当单击鼠标右键时出现的菜单,是显示在窗体上当单击鼠标右键时出现的菜单,是显示在窗体上当单击鼠标右键时出现的菜单,是显示在窗体上当单击鼠标右键时出现的菜单,是显示在窗体上独立于菜单的浮动式菜单,弹出式菜单显示的菜独立于菜单的浮动式菜单,弹出式菜单显示的菜独立于菜单的浮动式菜单,弹出式菜单显示的菜独立于菜单的浮动式菜单,弹出式菜
56、单显示的菜单项取决于鼠标右键按下时鼠标指针所在的位置。单项取决于鼠标右键按下时鼠标指针所在的位置。单项取决于鼠标右键按下时鼠标指针所在的位置。单项取决于鼠标右键按下时鼠标指针所在的位置。本节通过一个实例介绍弹出式菜单的设计过程。本节通过一个实例介绍弹出式菜单的设计过程。本节通过一个实例介绍弹出式菜单的设计过程。本节通过一个实例介绍弹出式菜单的设计过程。 【例例例例8.38.3】为为为为【例例例例8.28.2】添加一个弹出式菜单,当用添加一个弹出式菜单,当用添加一个弹出式菜单,当用添加一个弹出式菜单,当用户在程序的窗体上右击时,将弹出该菜单,选择其户在程序的窗体上右击时,将弹出该菜单,选择其户在
57、程序的窗体上右击时,将弹出该菜单,选择其户在程序的窗体上右击时,将弹出该菜单,选择其中的菜单项,能够实现相应的功能,如图中的菜单项,能够实现相应的功能,如图中的菜单项,能够实现相应的功能,如图中的菜单项,能够实现相应的功能,如图8.78.7(a a)所示。所示。所示。所示。图图8.7(a) 【例例8.4】运行结果运行结果1设计过程如下:设计过程如下:设计过程如下:设计过程如下:(1 1)弹出式菜单的设计)弹出式菜单的设计)弹出式菜单的设计)弹出式菜单的设计 使用使用使用使用“ “菜单编辑器菜单编辑器菜单编辑器菜单编辑器” ”创建菜单。将顶级菜单项创建菜单。将顶级菜单项创建菜单。将顶级菜单项创建
58、菜单。将顶级菜单项设为不可见。如图设为不可见。如图设为不可见。如图设为不可见。如图8.78.7(b b)所示。)所示。)所示。)所示。图图8.78.7(b b)【例例8.38.3】中的菜单编辑器中的菜单编辑器编写相应于弹出菜单关联的(释放鼠标)事件代编写相应于弹出菜单关联的(释放鼠标)事件代编写相应于弹出菜单关联的(释放鼠标)事件代编写相应于弹出菜单关联的(释放鼠标)事件代 码。码。码。码。VBVB提供了提供了提供了提供了PopuMenuPopuMenu方法来显示弹出式菜单。该方方法来显示弹出式菜单。该方方法来显示弹出式菜单。该方方法来显示弹出式菜单。该方法的格式为法的格式为法的格式为法的格式
59、为: : 对象对象对象对象. .PopupMenuPopupMenu 菜单名菜单名菜单名菜单名 ,位置常数,位置常数,位置常数,位置常数 ,横坐标,横坐标,横坐标,横坐标 ,纵坐标,纵坐标,纵坐标,纵坐标或者使用调用的方法,格式为:或者使用调用的方法,格式为:或者使用调用的方法,格式为:或者使用调用的方法,格式为: Call Call PopupMenuPopupMenu(菜单名称)(菜单名称)(菜单名称)(菜单名称)因为弹出式菜单被定义为使用鼠标右键,因此使用因为弹出式菜单被定义为使用鼠标右键,因此使用因为弹出式菜单被定义为使用鼠标右键,因此使用因为弹出式菜单被定义为使用鼠标右键,因此使用M
60、ouseDownMouseDown事件判断是不是鼠标右键被按下,事件判断是不是鼠标右键被按下,事件判断是不是鼠标右键被按下,事件判断是不是鼠标右键被按下,如果如果如果如果“ “是是是是” ”通过通过通过通过PopupMenuPopupMenu“ “弹出弹出弹出弹出” ”菜单。菜单。菜单。菜单。(2)(2)代码编写代码编写 由于弹出式菜单是作用在文本框中,所示代码必须是在文本由于弹出式菜单是作用在文本框中,所示代码必须是在文本框的相关事件中编写。框的相关事件中编写。Private Sub Text1_MouseDown(Button As Integer, Shift As Private Su
61、b Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)Integer, X As Single, Y As Single)If Button = 2 Then If Button = 2 Then PopupMenuPopupMenu PopUpPopUpEnd SubEnd SubPrivate Sub Private Sub PopCopy_ClickPopCopy_Click() ()Clipboard.SetTextClipboard.SetText Text1.SelText T
62、ext1.SelText 将文本框将文本框Text1Text1中选定的内容复制到剪切板中中选定的内容复制到剪切板中PopPaste.EnabledPopPaste.Enabled = True = TrueEnd SubEnd SubPrivate Sub Private Sub PopCut_ClickPopCut_Click() ()Text1.SelText = Text1.SelText = 将文本框将文本框Text1Text1中选定的内容删除中选定的内容删除PopPaste.EnabledPopPaste.Enabled = True = True 使使 粘贴粘贴 菜单项变为有效菜单
63、项变为有效End SubEnd SubPrivate Sub Private Sub PopPaste_ClickPopPaste_Click() ()Text1.SelText = Text1.SelText = Clipboard.GetTextClipboard.GetText 将剪切板中的数据显示在文本框将剪切板中的数据显示在文本框Text1Text1中中End SubEnd Sub(3)(3)运行结果运行结果运行结果运行结果运行程序后,在文本框中输入内容,当没有进行运行程序后,在文本框中输入内容,当没有进行运行程序后,在文本框中输入内容,当没有进行运行程序后,在文本框中输入内容,当没
64、有进行“ “剪切剪切剪切剪切” ”或或或或“ “复制复制复制复制” ”操作时,操作时,操作时,操作时,“ “粘贴粘贴粘贴粘贴” ”不可选如图不可选如图不可选如图不可选如图8.78.7(a a)所示,选中一段字符,进行了)所示,选中一段字符,进行了)所示,选中一段字符,进行了)所示,选中一段字符,进行了“ “剪切剪切剪切剪切” ”操作,则操作,则操作,则操作,则“ “粘贴粘贴粘贴粘贴” ”可用,结果如图可用,结果如图可用,结果如图可用,结果如图8.78.7(c c)所示。)所示。)所示。)所示。 图图8.7(c) 【例例8.3】运行结果运行结果2 工具栏与状态栏是工具栏与状态栏是工具栏与状态栏是
65、工具栏与状态栏是 WindowsWindows应用程序界面应用程序界面应用程序界面应用程序界面常见的组成部分。常见的组成部分。常见的组成部分。常见的组成部分。 工具栏由多个按钮构成,它提工具栏由多个按钮构成,它提工具栏由多个按钮构成,它提工具栏由多个按钮构成,它提供了对于应用程序中最常用的菜单命令的快速访供了对于应用程序中最常用的菜单命令的快速访供了对于应用程序中最常用的菜单命令的快速访供了对于应用程序中最常用的菜单命令的快速访问方式。每个按钮一般对应菜单中的一项。而状问方式。每个按钮一般对应菜单中的一项。而状问方式。每个按钮一般对应菜单中的一项。而状问方式。每个按钮一般对应菜单中的一项。而状
66、态栏主要是用于显示应用程序的运行状态。态栏主要是用于显示应用程序的运行状态。态栏主要是用于显示应用程序的运行状态。态栏主要是用于显示应用程序的运行状态。 8.3.1 8.3.1 工具栏工具栏工具栏工具栏8.3.2 8.3.2 状态栏状态栏状态栏状态栏8.3 工具栏和状态栏工具栏和状态栏8.3.1 工具栏工具栏 工具栏由若干个按钮组成,每个按钮上一工具栏由若干个按钮组成,每个按钮上一工具栏由若干个按钮组成,每个按钮上一工具栏由若干个按钮组成,每个按钮上一般都有图片,从而形象地表明该按钮的作用,般都有图片,从而形象地表明该按钮的作用,般都有图片,从而形象地表明该按钮的作用,般都有图片,从而形象地表
67、明该按钮的作用,当鼠标指向某个按钮时,还会出现文本提示以当鼠标指向某个按钮时,还会出现文本提示以当鼠标指向某个按钮时,还会出现文本提示以当鼠标指向某个按钮时,还会出现文本提示以说明该按钮的功能。说明该按钮的功能。说明该按钮的功能。说明该按钮的功能。 为窗体添加工具栏,应使用工具条为窗体添加工具栏,应使用工具条为窗体添加工具栏,应使用工具条为窗体添加工具栏,应使用工具条(ToolbarToolbar)控件和图像列表()控件和图像列表()控件和图像列表()控件和图像列表(ImageListImageList)控)控)控)控件。件。件。件。ToolbarToolbar和和和和ImageListIma
68、geList控件是控件是控件是控件是ActiveActive控件的控件的控件的控件的一部分,而不是一部分,而不是一部分,而不是一部分,而不是VBVB的内部控件,因此,在使用的内部控件,因此,在使用的内部控件,因此,在使用的内部控件,因此,在使用时必须将文件时必须将文件时必须将文件时必须将文件MSCOMTL.OCXMSCOMTL.OCX添加到工程中。添加到工程中。添加到工程中。添加到工程中。创建工具栏的步骤:创建工具栏的步骤:创建工具栏的步骤:创建工具栏的步骤: (1 1)添加)添加MSCOMCTL.OCXMSCOMCTL.OCX文件,用鼠标右键单击文件,用鼠标右键单击控件箱,选择快捷菜单中的控
69、件箱,选择快捷菜单中的“ “部件部件” ”命令,在如图命令,在如图8.8 8.8 所示的所示的“ “控件控件” ”选项卡中选择选项卡中选择“ “Microsoft Microsoft Windows Windows ConnonConnon Controls 6.0” Controls 6.0”,然后单击,然后单击“ “确定确定” ”按钮,则在控件箱中就出现了按钮,则在控件箱中就出现了ImageListImageList 和和ToolbarToolbar控件控件 。图图8.8 “部件部件”对话框对话框(2 2)创建)创建ImageListImageList控件作为要使用的图形的集合。控件作为要
70、使用的图形的集合。(3 3)创建)创建ToolbarToolbar控件,将控件,将ToolbarToolbar控件与控件与ImageListImageList控件相关联,创建控件相关联,创建ButtonButton对象。对象。(4 4)在)在ButtonClickButtonClick事件中添加代码。事件中添加代码。 。 【例例8.48.4】 以以【例例8.38.3】为基础,为应用程序添加为基础,为应用程序添加工具栏,创建如图工具栏,创建如图8.98.9(a a)所示运行界面。先从)所示运行界面。先从“ “部件部件” ”中添加中添加“ “MSCOMCTL.OCX”MSCOMCTL.OCX”文件
71、然后执行文件然后执行具体步骤如下:具体步骤如下:图8.9(a) 工具栏示例1 1、 创建创建创建创建ImageListImageList控件控件控件控件 ImageListImageList控件的作用像图像的储藏室,控件的作用像图像的储藏室,ImageListImageList控件不能独立使用,它需要控件不能独立使用,它需要ToolbarToolbar控件来控件来显示所储存的图像。显示所储存的图像。 在设计时,将在设计时,将ImageListImageList放置在窗体的任何位置,放置在窗体的任何位置,选中单击右键出现选中单击右键出现ImageListImageList属性页,如图属性页,如图
72、8.98.9(b b)所示,按照需要将图像顺序插入到所示,按照需要将图像顺序插入到ImageListImageList中。注中。注意一旦意一旦ImageListImageList关联到其他控件,就不能再删除或关联到其他控件,就不能再删除或插入图像了。插入图像了。图图8.9(b) ImageList控件属性页控件属性页2 2 、将将将将ToolbarToolbar控件与控件与控件与控件与ImageListImageList控件相关联控件相关联控件相关联控件相关联 ToolbarToolbar控件包含了一个按钮(控件包含了一个按钮(ButtonButton)对象集合,)对象集合,可以通过添加按钮(
73、可以通过添加按钮(ButtonButton)对象来创建工具栏,)对象来创建工具栏,ToolbarToolbar与与ImageListImageList控件关联的步骤如下:控件关联的步骤如下:(1 1)创建一个)创建一个ToolbarToolbar控件控件ToolbarToolbar。(2 2)用鼠标右键单击)用鼠标右键单击ToolbarToolbar控件出现弹出式菜单,选择控件出现弹出式菜单,选择“ “属性属性” ”命令,则出现命令,则出现“ “属性页属性页” ”。其中主要的属性有:。其中主要的属性有:“ “索引索引” ”文本框(对应文本框(对应IndexIndex属性)属性)该属性是该属性是
74、ButtonsButtons按钮集合的下标值,相当于按钮的序号。按钮集合的下标值,相当于按钮的序号。“ “标题标题” ”文本框(对应文本框(对应CaptionCaption属性)属性)该属性用来设置或返回按钮的标题。该属性用来设置或返回按钮的标题。“ “描述描述” ”文本框(对应文本框(对应DescriptionDescription属性)属性)该属性用于返回或设置按钮的描述信息,其属性值为字符型。该属性用于返回或设置按钮的描述信息,其属性值为字符型。说明:说明:如果按钮设置了该属性,则在程序运行过程中,双击工具栏,如果按钮设置了该属性,则在程序运行过程中,双击工具栏,可以调出可以调出“ “自
75、定义工具栏自定义工具栏” ”对话框。该对话框会显示出所对话框。该对话框会显示出所有按钮的描述内容,并可进行调整按钮的相对位置、重新有按钮的描述内容,并可进行调整按钮的相对位置、重新设置或删除按钮,加入分割符操作。设置或删除按钮,加入分割符操作。“ “关键字关键字” ”文本框(对应文本框(对应KeyKey属性)属性)该属性与索引属性相似,也是与工具栏中的按钮该属性与索引属性相似,也是与工具栏中的按钮对应的标识,用对应的标识,用于通过于通过ButtonsButtons集合来访问工具栏中的按钮。该属性值为字符型,是集合来访问工具栏中的按钮。该属性值为字符型,是可选项,其值可以为空。可选项,其值可以为
76、空。说明:说明:在程序中设置该属性时,其字符串值必须用双引号括起来。在程序中设置该属性时,其字符串值必须用双引号括起来。“ “值值” ”列表框(对应列表框(对应ValueValue属性)属性)该属性用于返回或设置按钮的状态。一般用于对开头按钮或编组按钮该属性用于返回或设置按钮的状态。一般用于对开头按钮或编组按钮的初始状态进行设置。其属性值有以下两种。的初始状态进行设置。其属性值有以下两种。0-tbrUnpressed0-tbrUnpressed:按钮未被按下,默认设置。:按钮未被按下,默认设置。1-tbrPressed1-tbrPressed:按钮被按下。:按钮被按下。“ “样式样式” ”列表
77、框(对应列表框(对应StyleStyle属性)属性) 该属性用来设置按钮的样式。其属性值及含义该属性用来设置按钮的样式。其属性值及含义如下表如下表8.18.1所示。所示。表表表表8.1 Style8.1 Style属性的取值及含义属性的取值及含义属性的取值及含义属性的取值及含义常数常数值按按钮说明明tbrDefault0普通按普通按钮按按钮按下后恢复原按下后恢复原态,如,如“新建新建”tbrCheck1开关按开关按钮按按钮按下后将保持按下状按下后将保持按下状态,如:加粗,如:加粗“tbrButtonGroup2编组按按钮一一组按按钮同同时只能一个有效,如只能一个有效,如“右右对齐”tbrSep
78、arator3分隔按分隔按钮宽度度为8个象素的特殊按个象素的特殊按钮,只是用来把它左右的按,只是用来把它左右的按钮分隔开来分隔开来tbrPlaceholder4占位按占位按钮用来安置其他控件,可用来安置其他控件,可设置按置按钮宽度(度(Width)tbrDropdown5菜菜单按按钮具有下拉式菜具有下拉式菜单,如,如“字符字符缩放放”按按钮 “ “宽度宽度” ”文本框(对应文本框(对应WidthWidth属性)属性) 该属性用于设置上位按钮的宽度。其属性值为该属性用于设置上位按钮的宽度。其属性值为数值类型。数值类型。“ “工具提示文本工具提示文本” ”列表框(对应列表框(对应ToolTipTe
79、xtToolTipText属性)属性) 该属性用于返回或设置按钮的提示信息。程序该属性用于返回或设置按钮的提示信息。程序运行时,将鼠标指针移到按钮上时,会显示该文本运行时,将鼠标指针移到按钮上时,会显示该文本框的文字信息。框的文字信息。“ “图像图像” ”框(对应框(对应ImageImage属性)属性) 该属性用于加载按钮上的图像。该属性用于加载按钮上的图像。 (3)在“属性页”的“通用”选项卡图8.9(c)的“图像列表”中,单击下拉箭头,选择“ImageList1”。 图图8.9(c) Toolbar属属性性页页“通通用用”(4 4)将)将“ “属性页属性页” ”切换到切换到“ “按钮按钮”
80、 ”选项卡,创建按选项卡,创建按钮(钮(ButtonButton)对象,如图)对象,如图8.98.9(d d)所示。)所示。图图8.9(d) Toolbar属属性性页页“按按钮钮”(5 5)重复创建其他按钮。创建的工具栏如图)重复创建其他按钮。创建的工具栏如图)重复创建其他按钮。创建的工具栏如图)重复创建其他按钮。创建的工具栏如图8.98.9(a a)所示。)所示。)所示。)所示。3 3 编写编写ButtonClickButtonClick事件代码事件代码 ButtonClickButtonClick事件是当单击工具栏上的某个按钮时触发事件是当单击工具栏上的某个按钮时触发的。例如:单击工具栏的
81、。例如:单击工具栏Toolbar1Toolbar1,通过按钮对象的,通过按钮对象的索引(索引(IndexIndex)属性来标识被单击的是哪个按钮。程)属性来标识被单击的是哪个按钮。程序代码如下:序代码如下:Private Sub Toolbar1_ButtonClick(ByVal Button As Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.ButtonMSComctlLib.Button) )Select Case Select Case Button.IndexButton.Index Case 1 Case
82、 1 调用新建文件可使用的过程调用新建文件可使用的过程 Case 2Case 2 打开文件打开文件 Case 3Case 3 保存文件保存文件 省略省略 End SelectEnd Select End Sub End Sub说明,说明,【例例8.48.4】主要是工具栏的建立与使用,通过主要是工具栏的建立与使用,通过例题的学习读者应注意以下知识点:例题的学习读者应注意以下知识点:掌握工具栏的建立过程:首先是从掌握工具栏的建立过程:首先是从“ “部件部件” ”中添中添加加“ “MSCOMCTL.OCX”MSCOMCTL.OCX”文件,从控件箱中将文件,从控件箱中将ImageListImageLi
83、st 和和ToolbarToolbar控件添加到窗体,然后创建控件添加到窗体,然后创建ImageListImageList控件作为要使用的图形的集合、创建控件作为要使用的图形的集合、创建ToolbarToolbar控件,将控件,将ToolbarToolbar控件与控件与ImageListImageList控件相控件相关联、创建关联、创建ButtonButton对象。最后在对象。最后在ButtonClickButtonClick事件事件中添加代码。中添加代码。在工具栏的创建过程应注意在工具栏的创建过程应注意ImageListImageList 和和ToolbarToolbar控件相关属性的设置。
84、控件相关属性的设置。对于对于ButtonClickButtonClick事件代码的编写,除了使用按钮事件代码的编写,除了使用按钮的的IndexIndex属性来标识工具按钮外,还可以使用属性来标识工具按钮外,还可以使用KeyKey属性值来检索属性值来检索ButtonButton对象,操作方法只是将索引对象,操作方法只是将索引值用值用KeyKey所对应的属性值替换而已。所对应的属性值替换而已。 8.3.2 状态栏状态栏 在一般的在一般的WindowsWindows软件的主界面底部都有一软件的主界面底部都有一个状态栏,用于反映程序执行时的各种状态数据。个状态栏,用于反映程序执行时的各种状态数据。如:
85、菜单命令的功能介绍、键盘的状态、软件的如:菜单命令的功能介绍、键盘的状态、软件的一些提示信息等等。在一些提示信息等等。在VBVB的软件设计中也可以设的软件设计中也可以设计类似的状态栏。状态栏的设置是通过计类似的状态栏。状态栏的设置是通过StatusBarStatusBar控件来实现的。控件来实现的。 状态栏控件由若干个称为状态栏控件由若干个称为PanelPanel的对象构成,的对象构成,每一个每一个PanelPanel对象既能包含文本又能包含图片,对象既能包含文本又能包含图片,PanelPanel对象在状态栏中又称为窗格。在一个状态栏对象在状态栏中又称为窗格。在一个状态栏中最多可以包含中最多可
86、以包含1616个这样的窗格,默认只有个这样的窗格,默认只有1 1个窗个窗格。格。 【例例8.58.5】为为【例例8.48.4】的的简简单单记记事事本本应应用用程程序序增增加加一一个个状状态态栏栏。该该状状态态栏栏由由4 4个个窗窗格格构构成成,它它们们分分别别显显示示当当前前记记事事本本状状态态,系系统统当当前前的的上上日日期期与与时时间间,如如图图8.108.10(a a)所示。)所示。 图图8.10(a) 状态栏示例状态栏示例1具体步骤如下:具体步骤如下:1 1 、状态栏的创建、状态栏的创建 在窗体上添加工具箱的在窗体上添加工具箱的StatusBarStatusBar 控件:双击控件:双击
87、StatusBarStatusBar,在窗体的底部就会出现一个状态栏。,在窗体的底部就会出现一个状态栏。说明:状态栏控件也包含在说明:状态栏控件也包含在MSCOMCTL.OCXMSCOMCTL.OCX文件文件中,一般如果能创建工具栏即可创建状态栏。中,一般如果能创建工具栏即可创建状态栏。2 2 、状态栏的设置、状态栏的设置 状态栏的设置主要包括状态栏的外观设置、状态栏的设置主要包括状态栏的外观设置、创建需要的窗格、设置窗格的属性等。选中单击创建需要的窗格、设置窗格的属性等。选中单击右键则出现如图右键则出现如图8.108.10(b b)所示的对话框。)所示的对话框。图图8.10(b) Statu
88、sBar属性页属性页 选择选择选择选择“ “窗格窗格窗格窗格” ”选项卡,单击选项卡,单击选项卡,单击选项卡,单击“ “插入窗格插入窗格插入窗格插入窗格” ”命命命命令,依次添加令,依次添加令,依次添加令,依次添加4 4个个个个“ “窗格窗格窗格窗格” ”,第一个文本值为,第一个文本值为,第一个文本值为,第一个文本值为“ “文文文文本编辑本编辑本编辑本编辑” ”,其它的均为空。样式值分别为,其它的均为空。样式值分别为,其它的均为空。样式值分别为,其它的均为空。样式值分别为0-0-sbrText(sbrText(文本或位图文本或位图文本或位图文本或位图) ),6-sbrDate(6-sbrDat
89、e(以以以以SystemSystem格格格格式显示当前日期式显示当前日期式显示当前日期式显示当前日期) ),5-sbrTime5-sbrTime(以(以(以(以SystemSystem格式格式格式格式显示当前时间),显示当前时间),显示当前时间),显示当前时间),0-sbrText(0-sbrText(文本或位图文本或位图文本或位图文本或位图) )。其它。其它。其它。其它属性如图属性如图属性如图属性如图8.108.10(b b)所示)所示)所示)所示 。状态栏主要属性如下:状态栏主要属性如下:(1 1)“ “索引索引” ”( (对应对应IndexIndex属性属性) )和和“ “关键字关键字”
90、 ”(对应(对应KeyKey属性)属性)文本框文本框这两个属性的作用与工具栏相应属性基本相同,主要用来标识这两个属性的作用与工具栏相应属性基本相同,主要用来标识状态栏中不同的窗格。状态栏中不同的窗格。(2 2)“ “文本文本” ”框(对应框(对应TextText)该属性用来在窗格中显示需要的信息。该属性用来在窗格中显示需要的信息。(3 3)“ “工具提示文本工具提示文本” ”(对应(对应ToolTipTextToolTipText属性)文本框属性)文本框该属性用来返回或设置窗格中的提示信息,与工具栏相应选项该属性用来返回或设置窗格中的提示信息,与工具栏相应选项的作用基本相同。的作用基本相同。(
91、4 4)对齐)对齐” ”下拉列表(对应下拉列表(对应AlignmentAlignment属性)属性)该属性用来返回或设置窗体中的位置。其属性值有以下几种:该属性用来返回或设置窗体中的位置。其属性值有以下几种:0-strLeft0-strLeft:文本在位图的左侧,以左对齐方式显示。:文本在位图的左侧,以左对齐方式显示。1-sbrCenter1-sbrCenter:文本在位图的右侧,以右对齐方式显示。:文本在位图的右侧,以右对齐方式显示。2-sbrRight2-sbrRight:文本在位图的左侧,以右对齐方式显示。:文本在位图的左侧,以右对齐方式显示。(5 5)样式)样式” ”下拉列表框(对应下
92、拉列表框(对应StyleStyle属性)属性)该属性用来设置状态栏中显示信息的数据类型,其属性值有该属性用来设置状态栏中显示信息的数据类型,其属性值有以下几种:以下几种:0-stText0-stText:文本或位图。:文本或位图。1-sbrCaps1-sbrCaps:显示:显示Caps LockCaps Lock的状态。的状态。2-sbrNum2-sbrNum:显示:显示Num LockNum Lock的状态。的状态。3-strIns3-strIns:显示:显示InsertInsert键的状态。键的状态。4-sbrScrl4-sbrScrl:显示:显示Scroll LockScroll Loc
93、k的状态。的状态。5-sbrTimet5-sbrTimet:以:以SystemSystem格式显示当前时间。格式显示当前时间。6-strDate6-strDate:以:以SystemSystem格式显示当前日期。格式显示当前日期。(6 6)“ “斜面斜面” ”列表框(对应列表框(对应BevelBevel属性)属性)该属性用来设置该属性用来设置PanelPanel对象的斜面样式。其属性值有以下几种:对象的斜面样式。其属性值有以下几种:0-stNoBevel0-stNoBevel:窗格暗淡无光平面样式。:窗格暗淡无光平面样式。1-sbrInsert1-sbrInsert:窗格显示凹进样式。:窗格显
94、示凹进样式。2-sbrRaised2-sbrRaised:窗格显示凸起样式。:窗格显示凸起样式。(7 7)“ “自动调整大小自动调整大小” ”列表框(对应列表框(对应AutoSizeAutoSize属性)属性) 该属性用来设置状态栏是否能够自动调整大小。该属性用来设置状态栏是否能够自动调整大小。其属性值有以下几种:其属性值有以下几种:0-strNoAutoSize0-strNoAutoSize:该窗格的宽度始终由:该窗格的宽度始终由WidthWidth属属性指定。性指定。1-sbrSpring1-sbrSpring:当父窗体大小改变,产生了多余的:当父窗体大小改变,产生了多余的空间时,所有具有
95、该属性设置的窗格均分空间,空间时,所有具有该属性设置的窗格均分空间,但宽度不会小于但宽度不会小于MinWidthMinWidth属性指定的宽度。属性指定的宽度。2-sbrCentent2-sbrCentent:窗格的宽度与其内容自动匹配。:窗格的宽度与其内容自动匹配。 3 3 、在运行中设置状态栏、在运行中设置状态栏、在运行中设置状态栏、在运行中设置状态栏 由于状态栏一般需要反映程序运行的一些状态由于状态栏一般需要反映程序运行的一些状态数据,所以状态栏中相应窗格的内容显然是需要根数据,所以状态栏中相应窗格的内容显然是需要根据实际情况进行动态更新的。据实际情况进行动态更新的。 状态栏包含有一个窗
96、格对象的集合状态栏包含有一个窗格对象的集合PanelsPanels,该,该集合的成员是每个窗格。要引用某个窗格既可以通集合的成员是每个窗格。要引用某个窗格既可以通过窗格的索引值过窗格的索引值IndexIndex,也可以通过每个窗格的关,也可以通过每个窗格的关键字键字KeyKey。在第四个窗格中显示所选择的工具栏的。在第四个窗格中显示所选择的工具栏的项目,可使用如下程序:项目,可使用如下程序:Private Sub Toolbar1_ButtonClick(ByVal Button As Private Sub Toolbar1_ButtonClick(ByVal Button As MSCom
97、ctlLib.ButtonMSComctlLib.Button) )Select Case Select Case Button.IndexButton.Index Case 1 Case 1 StatusBar1.Panels(4) = StatusBar1.Panels(4) = Button.KeyButton.Key Case 2 Case 2 StatusBar1.Panels(4) = StatusBar1.Panels(4) = Button.KeyButton.Key 打开文件打开文件 Case 3Case 3 StatusBar1.Panels(4) = StatusBar1
98、.Panels(4) = Button.KeyButton.Key 保存文件保存文件 、省略、省略End SelectEnd Select End Sub End Sub本例主要是状态栏的建立与使用,通过本例主要是状态栏的建立与使用,通过【例例8.58.5】的的学习读者应注意以下知识点:学习读者应注意以下知识点:状态栏的建立:设计时在窗体上增加状态栏的建立:设计时在窗体上增加StatusbarStatusbar控控件后,打开其件后,打开其“ “属性页属性页” ”对话框,选择对话框,选择“ “窗格窗格” ”标签,进行相应的设置,标签,进行相应的设置,在运行过程中改变状态栏,本例主要是对于状态在运
99、行过程中改变状态栏,本例主要是对于状态栏的第四个窗格,当单击工具栏上不同的按钮时,栏的第四个窗格,当单击工具栏上不同的按钮时,在第四个窗格内将显示不同的内容。在第四个窗格内将显示不同的内容。8.4 通用对话框通用对话框 在在在在WindowsWindows及其系列应用软件中,有许多对话框外观及其操作都及其系列应用软件中,有许多对话框外观及其操作都及其系列应用软件中,有许多对话框外观及其操作都及其系列应用软件中,有许多对话框外观及其操作都很相似,如:很相似,如:很相似,如:很相似,如:“ “打开打开打开打开” ”对话框、对话框、对话框、对话框、“ “另存为另存为另存为另存为” ”对话框、对话框、
100、对话框、对话框、“ “颜色颜色颜色颜色” ”对话框、对话框、对话框、对话框、“ “字体字体字体字体” ”对话框、对话框、对话框、对话框、“ “打印打印打印打印” ”对话框等。实际上,对话框等。实际上,对话框等。实际上,对话框等。实际上,VBVB也提供了用来制也提供了用来制也提供了用来制也提供了用来制作这些标准对话框的控件,这就是通用对话框控件作这些标准对话框的控件,这就是通用对话框控件作这些标准对话框的控件,这就是通用对话框控件作这些标准对话框的控件,这就是通用对话框控件(CommonDialogCommonDialog)。)。)。)。 8.4.1 8.4.1 通用对话框的使用与常用属性通用对
101、话框的使用与常用属性通用对话框的使用与常用属性通用对话框的使用与常用属性 8.4.2 “8.4.2 “打开打开打开打开” ”对话框对话框对话框对话框 8.4.3 “8.4.3 “另存为另存为另存为另存为” ”对话框对话框对话框对话框 8.4.4 “8.4.4 “颜色颜色颜色颜色” ”对话框对话框对话框对话框 8.4.5 “8.4.5 “字体字体字体字体” ”对话框对话框对话框对话框 8.4.6 “8.4.6 “打印打印打印打印” ”对话框对话框对话框对话框 8.4.7 “8.4.7 “帮助帮助帮助帮助” ”对话框对话框对话框对话框8.4.1 通用对话框的使用与常用属性通用对话框的使用与常用属性
102、 CommonDialogCommonDialog控件是控件是ActiveXActiveX控件,在使用之控件,在使用之前必须将其加入到控件工具箱中。方法前面已提到,前必须将其加入到控件工具箱中。方法前面已提到,就是在控件工具箱上右击选择就是在控件工具箱上右击选择“ “部件部件” ”命令,弹出命令,弹出“ “部件部件” ”对话框,选中对话框,选中“ “Microsoft Microsoft CommonDialogCommonDialog Control 6.0”, Control 6.0”,最后单击最后单击“ “确定确定” ”按按钮。钮。 添加后,可以像常用控件一样在窗体上使用通添加后,可以像
103、常用控件一样在窗体上使用通用对话框控件。由于该控件仅在设计时可见,在运用对话框控件。由于该控件仅在设计时可见,在运行时是不可见的。因此,可以将其放置在窗体的任行时是不可见的。因此,可以将其放置在窗体的任意位置上,而且大小也不需要(也不能)调整。意位置上,而且大小也不需要(也不能)调整。 CommonDialogCommonDialog 控件的属性很多,其属性设控件的属性很多,其属性设置的方法可以在置的方法可以在“ “属性属性” ”对话框中进行,也可以对话框中进行,也可以右击窗体上的控件选择右击窗体上的控件选择“ “属性属性” ”命令,此时屏幕命令,此时屏幕上会弹出上会弹出“ “属性页属性页”
104、”对话框如图对话框如图8.18.1(g g)所示,)所示,通过该对话框对其进行属性设置。通过该对话框对其进行属性设置。 在该对话框中有在该对话框中有5 5个选项卡,每个选项卡代表个选项卡,每个选项卡代表着不同的对话框,它们有各自不同的属性,但有着不同的对话框,它们有各自不同的属性,但有些属性是各个对话框所共有的,它们是:些属性是各个对话框所共有的,它们是:1 1 、ActionAction属性:属性: 通过在代码中设置不同的通过在代码中设置不同的ActionAction值可以产生不同的值可以产生不同的对话框。如果没有设置该属性(默认值为对话框。如果没有设置该属性(默认值为0 0),运行时),运
105、行时通用对话框不会产生任何信息,直到设置了该属性后才通用对话框不会产生任何信息,直到设置了该属性后才会出现相应的对话框。另外会出现相应的对话框。另外VBVB还提供了相应的方法来还提供了相应的方法来产生不同的对话框。产生不同的对话框。ActionAction属性值,方法与对话框的对属性值,方法与对话框的对应关系如表应关系如表8.28.2所示。所示。ActionAction属性属性值产生的生的对话框框对应的方法的方法0 0无无1 1“打开打开“文件文件对话框框ShowOpenShowOpen2 2“另存另存为”对话框框ShowSaveShowSave3 3“颜色色”对话框框ShowColorSho
106、wColor4 4“字体字体”对话框框ShowFontShowFont5 5“打印打印”对话框框ShowPrintShowPrint6 6“帮助帮助”对话框框ShowHelpShowHelp表表表表8.2 Action8.2 Action属性值,方法与对话框的对应关系表属性值,方法与对话框的对应关系表属性值,方法与对话框的对应关系表属性值,方法与对话框的对应关系表 注意:注意: 使用该控件所产生的对话框仅提供了人使用该控件所产生的对话框仅提供了人-机信息交机信息交互的界面,并不能实现真正的操作(如打开、另存、打印互的界面,并不能实现真正的操作(如打开、另存、打印等),要想实现这些具体的操作必须
107、进行相应的编程。等),要想实现这些具体的操作必须进行相应的编程。2 2 、DialogTitleDialogTitle属性:属性: 产生的对话框的标题文字,如不进行设置则会使用默产生的对话框的标题文字,如不进行设置则会使用默认的标题。认的标题。3 3、 CancelErrorCancelError属性:属性: 在每个所产生的对话框上都有在每个所产生的对话框上都有“ “取消取消” ”按钮,该属性按钮,该属性决定程序运行时,用户单击了决定程序运行时,用户单击了“ “取消取消” ”按钮后是否会产生按钮后是否会产生出错信息。该属性取出错信息。该属性取TrueTrue时,单击时,单击“ “取消取消” ”
108、按钮会产生一按钮会产生一个错误信息,同时自动将个错误信息,同时自动将ErrErr对象的对象的NumberNumber属性值设置为属性值设置为3275532755。程序中可以通过代码来访问这个属性以判断是否。程序中可以通过代码来访问这个属性以判断是否按下了按下了“ “取消取消” ”按钮,以决定程序的走向。如果该属性值按钮,以决定程序的走向。如果该属性值置为置为FalseFalse(默认),则当单击(默认),则当单击“ “取消取消” ”按钮时,不会产按钮时,不会产生任何出错信息。生任何出错信息。8.4.2 “打开打开”对话框对话框 “ “打开打开” ”对话框是当通用对话框的对话框是当通用对话框的A
109、ctionAction属性属性设置为设置为1 1时的对话框,如图时的对话框,如图8.118.11所示。所示。 “ “打开打开” ”对话框充分利用了操作系统的功能,对话框充分利用了操作系统的功能,它可以遍历整个的磁盘目录结构,找到所需要的它可以遍历整个的磁盘目录结构,找到所需要的文件,并以文件,并以“ “列表列表” ”或或“ “详细资料详细资料” ”的方式显示的方式显示出来。出来。“ “打开打开” ”对话框,除了一些基本的属性设对话框,除了一些基本的属性设置外,主要还有以下置外,主要还有以下4 4个很重要属性。个很重要属性。图图8.11 “8.11 “打开打开”对话框示例对话框示例1 1 文件名
110、称文件名称( (FileNameFileName属性属性) ) 该属性值为字符串类型,用于设置或得到用该属性值为字符串类型,用于设置或得到用户所选定的文件名。即当程序执行时,用户选定户所选定的文件名。即当程序执行时,用户选定的某个文件名将显示在的某个文件名将显示在“ “文件名文件名” ”文本框中,同文本框中,同时此文件名及相关路径将以字符串的形式赋值给时此文件名及相关路径将以字符串的形式赋值给FileNameFileName属性。属性。2 2 初始路径(初始路径(InitDirInitDir属性)属性) 该属性用来指定该属性用来指定“ “打开打开” ”对话框中的初始目对话框中的初始目录。默认设
111、置显示当前目录。初始路径在设计时录。默认设置显示当前目录。初始路径在设计时或代码编写中均可进行设置。例如:或代码编写中均可进行设置。例如: Cd1.InitDir=”D:Cd1.InitDir=”D:论文论文” ” 将对话框的初始路径设为将对话框的初始路径设为D D盘盘“ “论文论文” ”文件夹文件夹3 文件类型(文件类型(FilterFilter属性)属性) 通过通过FilterFilter属性在属性在“ “打开打开” ”对话框中设置文件对话框中设置文件的类型。该属性的值是一个字符串,由一组或多的类型。该属性的值是一个字符串,由一组或多组文件类型表达式构成,每组代表一类文件。构组文件类型表达
112、式构成,每组代表一类文件。构成规则是:成规则是: 类型说明字符串类型说明字符串| |类型通配表达式类型通配表达式| |类型说明类型说明字符串字符串| |类型通配表达式类型通配表达式 类型说明字符串为对文件类型的说明,类型类型说明字符串为对文件类型的说明,类型通配表达式表示需显示的文件类型,各组之间用通配表达式表示需显示的文件类型,各组之间用“ “|” |”符号分开。符号分开。例如:设置如图例如:设置如图8. 128. 12所示的结果,需要在所示的结果,需要在“ “打开打开” ”对话框的对话框的“ “文件类型文件类型“ “列表框中只显示列表框中只显示WordWord文档文档(扩展名为(扩展名为d
113、ocdoc)、和文本文件()、和文本文件(txttxt),则),则FilterFilter属性值应设置为:属性值应设置为:Cd1.Filter=”WordCd1.Filter=”Word文档文档|*.doc| Excel|*.doc| Excel文档文档|*.|*.xlsxls| |文本文文本文件件|*.txt|*.txt”图图8.12 “通用对话框通用对话框”的的“Filter”属性属性示例示例4 4 过滤器索引(过滤器索引(FilterIndesFilterIndes属性)属性) 该属性用于表示用户在该属性用于表示用户在“ “文件类型文件类型” ”列表框列表框中选定的文件类型的序号。例如与
114、图中选定的文件类型的序号。例如与图8. 288. 28所示相所示相对应,对应,WordWord文档的该属性值为文档的该属性值为1 1,ExcelExcel文档的该文档的该属性值为属性值为2 2,文本文件的该属性值为,文本文件的该属性值为3 3。8.4.3 “另存为另存为”对话框对话框 “ “另存为另存为” ”对话框是当通用对话框的对话框是当通用对话框的ActionAction属属性为性为2 2时的对话框,如图时的对话框,如图8.148.14所示。所示。 “ “另存为另存为” ”对话框为用户在存储文件时提供了对话框为用户在存储文件时提供了一个标准界面,供用户选择或键入所要存入文件一个标准界面,供
115、用户选择或键入所要存入文件的路径及文件名。的路径及文件名。 “ “另存为另存为” ”对话框所涉及的属性与对话框所涉及的属性与“ “打开打开” ”对对话框基本相同,只是多了一个话框基本相同,只是多了一个DefaultExtDefaultExt属性,该属性,该属性用来表示所存文件的默认扩展名。属性用来表示所存文件的默认扩展名。 图8.14 “另存为另存为”对话框对话框8.4.4 “颜色颜色”对话框对话框 “ “颜色颜色” ”对话框是当通用对话框的对话框是当通用对话框的ActionAction属性为属性为3 3时时的对话框,如图的对话框,如图8.158.15所示。所示。“ “颜色颜色” ”对话框中的
116、调色板除了提供基本颜色外,还提供对话框中的调色板除了提供基本颜色外,还提供了自定义颜色,供用户调色。对用户来说,使用该对话框,了自定义颜色,供用户调色。对用户来说,使用该对话框,可以获得非常直观的效果。可以获得非常直观的效果。 主要属性:主要属性: 颜色(颜色(ColorColor属性):属性): 该属性用于返回或设置选定的颜色。当用户在调色板该属性用于返回或设置选定的颜色。当用户在调色板中选中某种颜色时,该颜色值将赋给中选中某种颜色时,该颜色值将赋给ColorColor属性。属性。 图图8.15 “颜色颜色”对话框对话框8.4.5 “字体字体”对话框对话框 “ “字字体体” ”对对话话框框用
117、用来来设设置置并并返返回回所所用用字字体体的的名名字字、字字形形、大大小小、效效果果及及颜颜色色。对对于于“ “字字体体” ”对对话话框框必必须须先先设设置置对对话话框框的的FlagsFlags属属性性,常常用用取取值值如如表表8.38.3所所示示,然然后后在在程程序序中中将将通通用用对对话话框框的的ActionAction属属性性设设置置为为4 4,或或用用ShowFontShowFont方方法法,则则弹弹出出“ “字字体体” ”对对话话框框,如如图图8.16 8.16 所所示示。“ “字字体体” ”对对话话框框主主要属性如表要属性如表8.48.4所示。所示。 图图8.16 “字体字体”对话
118、框对话框符号常数符号常数值说明明cdlCFScreenFonts1使用屏幕字体使用屏幕字体cdlCFPrinterFonts2使用打印字体使用打印字体cdlCFBoth3使用屏幕字体和打印机字体使用屏幕字体和打印机字体cdlCFEffects256对话框中框中显示示颜色、下划色、下划线和和删除除线效果效果 属性属性项说明明1Flags显示示“字体字体”对话框之前必框之前必须设置置Flags属性,否属性,否则会会发生生不存在字体的不存在字体的错误。Flags属性属性值有很多,常用的取有很多,常用的取值如表如表8.3 所示所示 2FontName选择的字体的名称的字体的名称3FontSize选择的
119、字体的大小的字体的大小 4FontBold表示字体是否加粗表示字体是否加粗5FontItalic表示字体是否表示字体是否为斜体斜体6FontStrikethru表示字体是否加表示字体是否加删除除线7FontUnderline表示字体是否加下划表示字体是否加下划线8Max、Min设置置对话框中框中“大小大小”列表框的字号最大列表框的字号最大值和最小和最小值表表表表8. 3 “8. 3 “字体字体字体字体” ”对话框中的对话框中的对话框中的对话框中的FlagsFlags属性常用取值属性常用取值属性常用取值属性常用取值表表表表8.4 “8.4 “字体字体字体字体” ”对话框主要属性对话框主要属性对话
120、框主要属性对话框主要属性8.4.6 “打印打印”对话框对话框 “ “打印打印” ”对话框用来提供一个标准打印对话窗对话框用来提供一个标准打印对话窗口,在程序中将通用对话框的口,在程序中将通用对话框的ActionAction属性设置为属性设置为5 5,或用,或用ShowPrinterShowPrinter方法,则弹出方法,则弹出“ “打印打印” ”对话框。对话框。“ “打印打印” ”对话框并不能处理打印工作,仅是一个对话框并不能处理打印工作,仅是一个供用户选择打印参数的界面。供用户选择打印参数的界面。 “ “打印打印” ”对话框提对话框提供的属性有:供的属性有:1 1复制属性(复制属性(Copi
121、esCopies)该属性用于指定打印的份数。该属性用于指定打印的份数。2 2起始页起始页( (FronmPageFronmPage) )属性和属性和 终止页终止页( (ToPageToPage属性属性) )这两个属性用于指定打印的起始页及终止页号。这两个属性用于指定打印的起始页及终止页号。8.4.7 “帮助帮助”对话框对话框 “ “帮助帮助” ”对话框为用户提供在线帮助,在程序对话框为用户提供在线帮助,在程序中将通用对话框的中将通用对话框的ActionAction属性设置为属性设置为6 6,或用,或用ShowHelpShowHelp方法,则弹出方法,则弹出“ “帮助帮助” ”对话框。对于帮对话
122、框。对于帮助对话框,在使用之前,必须先设置对话框的助对话框,在使用之前,必须先设置对话框的HelpFileHelpFile(帮助文件的名称和位置)属性,将(帮助文件的名称和位置)属性,将HelpCommandHelpCommand(请求联机帮助的类型)属性设(请求联机帮助的类型)属性设置为一个常数,以告诉对话框要提供何种类型的置为一个常数,以告诉对话框要提供何种类型的帮助,读者可以参考帮助,读者可以参考VBVB有关资料,得到进一步说有关资料,得到进一步说明。明。本章小结本章小结 用户界面是否友好是衡量一个应用软件开发水平的重用户界面是否友好是衡量一个应用软件开发水平的重要标志。菜单,工具栏,状
123、态栏和通用对话框是用户界面要标志。菜单,工具栏,状态栏和通用对话框是用户界面的重要组成部分。菜单与工具栏将应用程序所能完成的任的重要组成部分。菜单与工具栏将应用程序所能完成的任务有机地组织起来以方便用户的使用。因此使用务有机地组织起来以方便用户的使用。因此使用VBVB开发开发应用程序时,不能不掌握好菜单与工具栏的设计。在一般应用程序时,不能不掌握好菜单与工具栏的设计。在一般的的WindowsWindows软件的主界面底部都有一个状态栏,用于反映软件的主界面底部都有一个状态栏,用于反映程序执行时的各种状态数据。状态栏的设置是通过程序执行时的各种状态数据。状态栏的设置是通过StatusBarSta
124、tusBar控件来实现的。在控件来实现的。在WindowsWindows系列应用软件中,系列应用软件中,有许多对话框的外观及其操作都很相似,有许多对话框的外观及其操作都很相似,VBVB也提供了用也提供了用来制作这些标准对话框的控件来制作这些标准对话框的控件CommonDialogCommonDialog。 通过本章的学习,要求熟练使用通过本章的学习,要求熟练使用VBVB提供的菜单设计器,提供的菜单设计器,设计用户下拉式菜单、弹出式菜单;同时要求掌握工具栏、设计用户下拉式菜单、弹出式菜单;同时要求掌握工具栏、状态栏、对话框的使用,并能将其与菜单合理的结合到应状态栏、对话框的使用,并能将其与菜单合理的结合到应用程序的界面设计中。用程序的界面设计中。