第8章界面设计8.1菜单的设计8.2对话框的设计8.3状态栏的设计8.4工具栏的设计8.5多文档界面设计8.6VisualBasic的工程结构第八章界面设计8.1菜单的设计8.1.1下拉式菜单8.1.2弹出式菜单8.1.3菜单事件与菜单命令第八章界面设计8.1.1下拉式菜单1.菜单系统结构下拉式菜单是一种位于窗体菜单栏的控件,使用比较方便。第八章界面设计8.1.1下拉式菜单2.菜单编辑器VisualBasic工具箱中没有菜单控件,必须使用专门的菜单编辑器来设计菜单。通常有4种方式可以打开菜单编辑器:①执行“工具”菜单中的“菜单编辑器”命令。②选中窗体后,单击鼠标右键,在弹出的快捷菜单中选择“菜单编辑器”命令。③单击工具栏里的“菜单编辑器”按钮。④选中窗体后,使用热键【Ctrl+E】。第八章界面设计8.1.1下拉式菜单3.用菜单编辑器建立菜单不管菜单有多么复杂,都可以通过菜单设计的基本方法和步骤设计出来。建立一个菜单,首先要列出菜单的组成,然后在“菜单编辑器”对话框按着菜单组成进行设计。第八章界面设计8.1.2弹出式菜单弹出式菜单是在单击鼠标右键时快速弹出的,所以它又称为快捷菜单。显示在弹出式菜单上的菜单项取决于鼠标右键按下时指针的位置,所以它还可以被称为上下文菜单。第八章界面设计8.1.2弹出式菜单弹出式菜单也要通过菜单编辑器建立,然后用PopupMenu方法弹出显示。菜单的建立方法同前面相同,一般设计快捷菜单时,要将主菜单的“可见”复选框设为不选中,子菜单项的“可见”复选框设为选中。PopupMenu方法显示弹出式菜单,其使用格式为:对象.PopupMenu菜单名,Flags,X,Y,BoldCommandPopupMenu方法具有6个参数,其中“菜单名”是菜单编辑器中定义的主菜单名(即顶层菜单里的菜单标题);X,Y为弹出式菜单在窗体上的显示位置(与Flags参数配合使用);BoldCommand用来在弹出式菜单中显示一个菜单控制;Flags参数是一个数值或符号变常量,用来指定弹出式菜单的位置及行为。这些参数除了“菜单名”是必需的外,其他的都是可选的。省略“对象”时,弹出式菜单只在窗体上显示。第八章界面设计8.1.3菜单事件与菜单命令1.菜单事件菜单控件是一种特殊的对象,它只有一个事件,即Click事件。每个菜单项(主菜单项或子菜单项)都可以接受Click事件,当用鼠标或键盘选中该菜单项时,将调用该事件。2.菜单命令编写了Click事件过程的菜单项,称为菜单命令。把每个菜单项的名字Name与Click放在一起,就可以组成该菜单项的Click事件过程。每当单击与名字相对应的菜单项时,就会执行事件过程中所定义的操作。第八章界面设计8.2对话框的设计8.2.1自定义对话框8.2.2通用对话框8.2.3通用对话框控件的使用第八章界面设计8.2.1自定义对话框自定义对话框是用户根据自己的使用需要而定义的,具有特殊的属性设置的窗体。自定义对话框的创建方法一般有两种:①使用窗体修改成对话框。②使用系统提供的“对话框”模板创建对话框。1.使用窗体修改成对话框首先,在普通窗体上,使用标签、文本框、命令按钮等控件创建用户界面,再编写相应的程序代码,来实现与用户的交互。然后,在属性窗口里把窗体的BorderStyle属性设置成3-FixedDialog(同时,最大化MaxButton属性和最小化MinButton属性都设置成False)。第八章界面设计8.2.1自定义对话框2.使用“对话框”模板创建对话框除了通过修改窗体来创建对话框外,我们还可以使用系统提供的“对话框”来创建对话框,具体方法为:首先,从“工程”下拉菜单中选择“添加窗体”选项,系统弹出“添加窗体”对话框。系统提供了一些对话框模板。选者其中一个模板,然后单击对话框中的“打开”按钮,系统就会在工程中添加一个对话框类型的窗体。接着,在新建的对话框上,再根据具体的使用需要来做一些适当修改。是用“对话框”模板创建的,其界面上只有两个命令按钮。我们可以修改其标题,可以增加一些控件的,可以删除“取消”命令按钮,然后再编写相应的程序代码,来实现人机交互。第八章界面设计8.2.2通用对话框通用对话框是VisualBasic系统为用户提供的一组标准的系统对话框。通过使用通用对话框,可以减少设计程序的许多工作量。在VisualBasic中,系统通过“通用对话框”控件向用户提供这6种对话框。“通用对话框”控件属于VisualBasic专业版和企业版所特有的ActiveX控件,位于文件“C:\Windows\System\Comdlg32.ocx”中,名称为“MicrosoftCommonDialogControl6.0”。第八章界面设计8.2.3通用对话框控件的使用在应用程序中使用“通用对话框”控件,需要将它添加到窗体中。由于在程序运行时看不见“通用对话框”控件,因此可以将它放置在窗体的任何位置。通用对话框可以提供6种形式的对话框。在显示出通用对话框前,应通过设置Action属性或调用Show方法来选择。下表给出了Show方法及Action属性的对应关系。对话框类型功能Action属性值Show方法“打开”对话框打开文件1ShowOpen“另存为”对话框保存文件2ShowSave“颜色”对话框选择颜色3ShowColor“字体”对话框选择字体4ShowFont“打印”对话框打印5ShowPrinter“帮助”对话框帮助文件6ShowHelp第八章界面设计8.3状态栏的设计状态栏用来显示应用程序的运行状态和对用户的提示信息。状态栏通常位于窗体的底部。在VisualBasic中,需要通过状态栏(StatusBar)控件,来设计程序的状态栏。StatusBar控件,也属于ActiveX控件,它位于文件C:\Windows\System32\MSCOMCTL.OCX中,名称为MicrosoftWindowsCommonControls16.0.其添加到工具箱的方法如下:从“工程”下拉菜单中选择“部件”命令,或者右击工具箱,在弹出的快捷菜单中选择“部件”命令,系统就会弹出“部件”对话框。在对话框的“控件”选项卡中,从列表框选中MicrosoftWindowsCommonControls16.0复选框。单击“确定”按钮,StatusBar控件就添加到了工具箱中。第八章界面设计8.4工具栏的设计8.4.1使用手工方式制作工具栏8.4.2使用工具栏控件制作工具栏第八章界面设计8.4.1使用手工方式制作工具栏使用手工方式制作工具栏就是在一个窗体的图片框中放置一些工具按钮。手工制作工具栏的步骤如下:(1)在窗体上添加一个图片框(或框架),作为工具栏。(2)在图片框(或框架)内部添加一些工具按钮。这些工具按钮可以是具有Picture属性的各类控件,如命令按钮、复选框、图片框和图像框。(3)为按钮或图片编写相应的程序代码,来实现执行命令的功能。第八章界面设计8.4.2使用工具栏控件制作工具栏使用工具栏控件制作工具栏,需要同时使用工具栏(Toolbar)控件和图像列表(ImageList)控件。创建工具栏的一般过程如下:(1)在窗体上添加Toolbar控件和ImageList控件。(2)用ImageList控件保存需要的图像。(3)建立Toolbar控件和ImageList控件的关联,创建按钮对象。(4)编写工具栏的相关代码。第八章界面设计8.5多文档界面设计8.5.1多文档界面(MDI)8.5.2建立多文档界面8.5.3创建MDI应用程序的菜单第八章界面设计8.5.1多文档界面(MDI)多文档界面(MDI)是指一个窗体中能够建立多个子窗体,即允许用户同时访问多个文档,每个文档显示在不同的窗口中。在VisualBasic的MDI应用程序中,MDI父窗体(容器窗体)只能有一个,而MDI子窗体则可以有多个。父窗体为应用程序中所有的子窗体提供工作空间。另外,MDI子窗体的设计与MDI父窗体的设计无关,但执行阶段,子窗体总是包含在MDI父窗体显示区域内,若超过显示范围,MDI窗体会自动出现滚动条。第八章界面设计8.5.2建立多文档界面建立多文档界面的操作步骤如下:(1)创建一个工程。单击“文件”菜单中的“新建工程”命令,新建一个工程,这时新工程已经预先建立好一个窗体Forml。(2)建立MDI窗体。选取“工程”菜单上的“增加MDI窗体”命令,弹出“添加MDI窗体”对话框。单击“打开”按钮后,新建的父窗体MDIForm1出现在工程资源管理器窗口中。(3)设定MDI窗体为启动对象。单击“工程”菜单中的“工程”属性,在启动对象栏下选择MDIForm1,将此窗体作为主程序来执行。(4)设置Forml为子窗体属性。选中Forml,在其属性窗口内将其MDIchild属性值设为True。(5)将Forml连入MDIForm1内。例如,选取MDIForm1,在其MDIForm1_load事件中加入如下代码:PrivateSubMDIForm1oad()LoadFormlEndSub其中,load方法可以加载子窗体对象Form1到父窗体中。可以用show方法来显示子窗体。例如,用语句Form1.show也可以让子窗体Form1显示在父窗体中。(6)运行程序,会发现Forml放置在MDIForm1窗体内。第八章界面设计8.5.3创建MDI应用程序的菜单MDI应用程序基本上都是通过父窗体的菜单来操作其中的子窗体。MDI父窗体和子窗体都可以拥有各自的菜单,但一般情况下,菜单是设置在MDI父窗体上的。第八章界面设计8.6VisualBasic的工程结构在VisualBasic中,我们把一个应用程序称为一个工程。所以,VisualBasic的工程结构就是应用程序的结构。VisualBasic应用程序的工程结构如图所示属性方法通用过程函数过程通用过程函数过程事件过程应用程序窗体模块类模块标准模块声明过程声明过程第八章界面设计