1、第七章第七章 菜单设计与多文档界面菜单设计与多文档界面(MDI)7.1对话框设计对话框设计7.2菜单设计菜单设计7.3 多重窗体与多文档界面多重窗体与多文档界面7.4工具栏设计工具栏设计7.5 实例分析实例分析7.1对话框设计对话框设计“通用对话框通用对话框”控件是控件是ActiveX控件,使用时要添加控件,使用时要添加到工具箱。添加方法有如下两种。到工具箱。添加方法有如下两种。(1)选择选择“工程工程”“部件部件”命令,弹出命令,弹出“部件部件”对话对话框,在框,在“控件控件”选项卡中选择选项卡中选择Microsoft Common Dialog Control 6.0,单击,单击“确定确定
2、”按钮,即可将按钮,即可将“通用对话框通用对话框”控件添加到控件工具箱中。如图控件添加到控件工具箱中。如图7-1所示。所示。(2)在控件工具箱空白处右键单击,选择在控件工具箱空白处右键单击,选择“部件部件“命命令,同样弹出令,同样弹出“部件部件”对话框,后续操作同对话框,后续操作同1。7.1对话框设计对话框设计 通用对话框可提供通用对话框可提供六种形式的对话框六种形式的对话框,在显示出,在显示出这些对话框之前需要通过调用这些对话框之前需要通过调用Show方法来选择。方法来选择。见表见表7-1。表表7-1 通用对话框的方法列表通用对话框的方法列表方法方法对话框类型对话框类型ShowOpen打开文
3、件对话框打开文件对话框ShowSave保存文件对话框保存文件对话框ShowColor颜色对话框颜色对话框ShowFont字体对话框字体对话框ShowPrinter打印对话框打印对话框ShowHelpWindows帮助对话框帮助对话框例如:例如:CommonDialog1.ShowOpen 在应用程序使用在应用程序使用“通用对话框通用对话框”控件时,控件时,需要将其添加到窗体中,同时在窗体上画出的需要将其添加到窗体中,同时在窗体上画出的图标大小是固定不变的,该图标在程序运行时图标大小是固定不变的,该图标在程序运行时消失,因此可将它放在窗体的任何位置。消失,因此可将它放在窗体的任何位置。7.1对话
4、框设计对话框设计 思考:该控件与哪个控件类似?每种对话框都有自己的每种对话框都有自己的特殊属性特殊属性,这些属性可以,这些属性可以在代码中设置,也可以通过在代码中设置,也可以通过“属性页属性页”进行设置。进行设置。“属性页属性页”可通过以下方法打开:在可通过以下方法打开:在属性窗口属性窗口中中选择选择“自定义自定义”,点击后面的,点击后面的“”按钮,就会按钮,就会弹出弹出“属性页属性页”对话框,如图对话框,如图6-2所示。所示。“打开文件打开文件”对话框是对话框是“通用对话框通用对话框”控控件最常用的界面之一。在该对话框内可以用来件最常用的界面之一。在该对话框内可以用来遍历磁盘的整个目录,指定
5、相应文件所在的驱遍历磁盘的整个目录,指定相应文件所在的驱动器、文件夹以及文件名、扩展名等。也可以动器、文件夹以及文件名、扩展名等。也可以在初始化时预先设置要查找的路径或文件的扩在初始化时预先设置要查找的路径或文件的扩展名等,如图展名等,如图7-2所示所示,其属性页各选项含义其属性页各选项含义如下:如下:7.1对话框设计对话框设计 1.对话框标题对话框标题(DialogTitle):用来指定对话用来指定对话框的标题内容。框的标题内容。“打开打开”对话框的默认值对话框的默认值为为“打开打开”。2.文件名称文件名称(FileName):用来设置用来设置“打开打开”对话框中对话框中“文件名文件名”的初
6、始值。的初始值。3.初始化路径初始化路径(InitDir):指定对话框中显示指定对话框中显示的初始路径。若不设置该项,则显示系统的初始路径。若不设置该项,则显示系统默认路径。默认路径。4.过滤器过滤器(Filter):指定在对话框中显示的文件类型。该指定在对话框中显示的文件类型。该值由一对或多对字符串组成,每对字符串之间用值由一对或多对字符串组成,每对字符串之间用“|”隔隔开,其开,其格式为:格式为:对话框名对话框名.Filter=描述符描述符1|过滤符过滤符1|描述符描述符2|过滤符过滤符2 例如:例如:CommonDialog1.Filter=“AllFile(*.*)|*.*|(.jpg
7、)|.jpg|(.vbp)|.vbp”描述符和过滤符必须成对出现,描述符是在描述符和过滤符必须成对出现,描述符是在“打开文件打开文件对话框对话框”中中“文件类型文件类型”下拉列表中的文字说明;过滤下拉列表中的文字说明;过滤符符.jpg表示选择后缀为表示选择后缀为.jpg的所有文件,的所有文件,*.*表示选择所有表示选择所有文件等。文件等。5.过滤器索引过滤器索引(FilterIndex):用来指定默认的过滤器。用用来指定默认的过滤器。用Filter设置多个过滤符之后,每个过滤符都有一个值,这设置多个过滤符之后,每个过滤符都有一个值,这些值从些值从1开始。开始。例如:例如:CommonDialo
8、g1.FilterIndex=2 结合结合中例子,该语句表示打开对话框后,在中例子,该语句表示打开对话框后,在“文件类文件类型型”中显示的是中显示的是“.jpg”。例如:例如:CommonDialog1.ShowOpen在程序中调用在程序中调用ShowOpen方法显示方法显示“打开文件对话框打开文件对话框”格式为:控件名格式为:控件名.ShowOpen“保存文件保存文件”对话框顾名思义是用来保存文件时打对话框顾名思义是用来保存文件时打开的对话框,它与开的对话框,它与“打开文件打开文件”对话框结构类似,对话框结构类似,如图如图7-4所示。对话框标题为所示。对话框标题为“另存为另存为”,该对话框,
9、该对话框也能遍历磁盘的整个目录,找到所需要保存文件的也能遍历磁盘的整个目录,找到所需要保存文件的位置。位置。颜色对话框是颜色对话框是“通用对话框通用对话框”所能显示的第所能显示的第3种对话框,如图种对话框,如图6-5所示。在颜色调色板中提供了基本颜色,还提供了用户自所示。在颜色调色板中提供了基本颜色,还提供了用户自定义颜色,用户可以自己调色。定义颜色,用户可以自己调色。7.1对话框设计对话框设计Text1.ForeColor=CommonDialog1.Color通过颜色对话框设置通过颜色对话框设置文本框的文字颜色。文本框的文字颜色。“字体字体”对话框设置并返回所有字体的名字、样式、大小、颜对
10、话框设置并返回所有字体的名字、样式、大小、颜色效果等,打开的色效果等,打开的“字体字体”对话框如图对话框如图7-6所示。所示。7.1对话框设计对话框设计在使用在使用CommonDialog控控件选择字体之前,件选择字体之前,必须先设置标志必须先设置标志(Flag)属性。属性。在在“打印打印”对话框可以选择打印机,打印机的属性可以通过对话框可以选择打印机,打印机的属性可以通过“打印打印”对话框的对话框的“属性属性”按钮进行设置。打开的按钮进行设置。打开的“打印打印”对对话框如图话框如图7-7所示。所示。7.1对话框设计对话框设计例例【7-1】使用通用对话框的例子。使用通用对话框的例子。分析:在窗
11、体上增添一个文本框分析:在窗体上增添一个文本框text1,一个通用对话框控件,一个通用对话框控件commondialog1,5个命令按钮个命令按钮command1command5,其,其Caption属性分别为属性分别为“打开打开”、“保存保存”、“字体修改字体修改”、“颜颜色修改色修改”和和“打印打印”。设计界面如图设计界面如图7-9所示。所示。7.1对话框设计对话框设计对各个按钮编写对各个按钮编写Click事件过程如下。事件过程如下。Private Sub Command1_Click()CommonDialog1.Filter=所有文件所有文件|*.*|文本文件文本文件(*.txt)|*
12、.txt|位图文件位图文件(*.bmp)|*.bmpCommonDialog1.FilterIndex=2CommonDialog1.ShowOpenEnd SubPrivate Sub Command2_Click()CommonDialog1.ShowSaveEnd SubPrivate Sub Command3_Click()CommonDialog1.ShowFontText1.FontName=CommonDialog1.FontNameText1.FontBold=CommonDialog1.FontBoldText1.FontSize=CommonDialog1.FontSize
13、End Sub7.1对话框设计对话框设计Private Sub Command4_Click()CommonDialog1.ShowColorText1.ForeColor=CommonDialog1.ColorEnd SubPrivate Sub Command5_Click()CommonDialog1.ShowPrinterFor i=1 To 3 Printer.Print Text1.TextNextPrinter.EndDocEnd Sub7.2 菜单设计菜单设计“菜单编辑器菜单编辑器”是是VB提供的一种用来建立菜单栏的工具,利用该工具提供的一种用来建立菜单栏的工具,利用该工具可以
14、方便快捷的建立起菜单。可以方便快捷的建立起菜单。“菜单编辑器菜单编辑器”可以通过以下方式打开:选择可以通过以下方式打开:选择“工具工具”菜单下的菜单下的“菜菜单编辑器单编辑器”命令,或者点击工具栏中的命令,或者点击工具栏中的“菜单编辑器菜单编辑器”按钮,都可以按钮,都可以打开如图打开如图7-10所示所示“菜单编辑器菜单编辑器”窗口。窗口。“菜单编辑器菜单编辑器”对话框对话框分为两部分:上半部分分为两部分:上半部分是是控件属性控件属性区,用来设区,用来设置属性,下半部分为置属性,下半部分为菜菜单编辑区单编辑区,用来显示用,用来显示用户设置的菜单和菜单项。户设置的菜单和菜单项。属性区的各个属性含义
15、如表属性区的各个属性含义如表7-3所示。所示。名称名称说明说明标题标题(Caption)输入该项内容可建立菜单名或命令名。输入该项内容可建立菜单名或命令名。名称名称(Name)设置菜单项的名称,相当于控件的设置菜单项的名称,相当于控件的Name属性,属性,用于在程序中访问菜单用于在程序中访问菜单索引索引(Index)设置菜单控件数组中的下标设置菜单控件数组中的下标快捷键快捷键(Shortcut)设置与菜单等价的快捷键设置与菜单等价的快捷键复选复选(Checked)选中此内容时,表示该菜单项当前处于活动选中此内容时,表示该菜单项当前处于活动状态状态有效有效(Enabled)设置菜单项是否可用设置
16、菜单项是否可用可见可见(Visible)设置菜单项是否可见设置菜单项是否可见表表7-3 菜单控件的主要属性菜单控件的主要属性7.2 菜单设计菜单设计 名称名称功能功能 每次单击都把选中的菜单项左每次单击都把选中的菜单项左/右移一右移一个等级,一共可创建个等级,一共可创建4个子菜单等级个子菜单等级每次单击都把选中的菜单项在同级菜每次单击都把选中的菜单项在同级菜单中向上单中向上/下移动一个位置下移动一个位置下一个下一个选定下一个菜单项选定下一个菜单项插入插入在光标所在处插入一个空白菜单项在光标所在处插入一个空白菜单项删除删除删除光标所在行的菜单项删除光标所在行的菜单项表表7-4编辑区各部分功能编辑
17、区各部分功能7.2 菜单设计菜单设计 例例【7-2】创建一个简易文本编辑器。创建一个简易文本编辑器。设计方法:在窗体上放置一个通用对话框设计方法:在窗体上放置一个通用对话框CommonDialog1和一个文本和一个文本框框Text1,然后按图,然后按图7-11所示设计菜单,设计方法如上述所示。所示设计菜单,设计方法如上述所示。编写文件菜单下编写文件菜单下“打开打开”和和“保存保存”两个菜单项的两个菜单项的Click事件代码:事件代码:Private Sub open_Click()CommonDialog1.Filter=所有文件所有文件|*.*|文本文件文本文件(*.txt)|*.txt|位
18、图文件位图文件(*.bmp)|*.bmpCommonDialog1.FilterIndex=2CommonDialog1.ShowOpenEnd SubPrivate Sub save_Click()CommonDialog1.ShowSaveEnd Sub编写视图菜单下的编写视图菜单下的“颜色颜色”菜单项的菜单项的Click事件代码:事件代码:Private Sub color_Click()CommonDialog1.ShowColorText1.ForeColor=CommonDialog1.colorEnd Sub编写视图菜单下的编写视图菜单下的“字体大小字体大小”菜单项下的两个子菜单
19、项的菜单项下的两个子菜单项的Click事件代码:事件代码:Private Sub sixteen_Click()Text1.fontsize=16End SubPrivate Sub twenty_Click()Text1.fontsize=20End Sub编写视图菜单下的编写视图菜单下的“字体风格字体风格”菜单项下的两个子菜单项的菜单项下的两个子菜单项的Click事件代码:事件代码:Private Sub kai_Click()Text1.FontName=楷体楷体_GB2312End SubPrivate Sub li_Click()Text1.FontName=隶书隶书End Sub菜
20、单是菜单是VB中的一个控件,因此也能对菜单应用控件数组的概中的一个控件,因此也能对菜单应用控件数组的概念。菜单控件数组同其他控件数组一样,也是需要依靠念。菜单控件数组同其他控件数组一样,也是需要依靠Index值来判断选中的哪个菜单项。值来判断选中的哪个菜单项。如果将例如果将例7-2中的同一级菜单改成使用菜单控件数组,可将菜中的同一级菜单改成使用菜单控件数组,可将菜单项设置进行如下修改:将单项设置进行如下修改:将“文件文件”菜单下的菜单下的“打开打开”和和“保保存存”的索引的索引(Index)值分别设置为值分别设置为1和和2,将二者的名称,将二者的名称(Name)值均改为值均改为files;将;
21、将“字体大小字体大小”菜单下的菜单下的“16”和和“20”的索的索引引(Index)值分别设置为值分别设置为1和和2,将二者的名称将二者的名称(Name)值都改为值都改为size;将;将“字体风格字体风格”菜单下的菜单下的“隶书隶书”和和“楷体楷体”的索引的索引(Index)值分别设置为值分别设置为1和和2,将二者的名称,将二者的名称(Name)值都改为值都改为style,具体设置如表,具体设置如表7-6所示。所示。7.2 菜单设计菜单设计所有的菜单控件都具有所有的菜单控件都具有Enabled属性,当该属性为属性,当该属性为False时,菜单项变为灰色,点击时不响应任何操作,快捷键的时,菜单项
22、变为灰色,点击时不响应任何操作,快捷键的访问也无效。例如,要使例访问也无效。例如,要使例6-2中的中的“打开打开”菜单项无效,菜单项无效,可以先进行如下设置:可以先进行如下设置:Open.Enabled=False在运行时该菜单项就变成灰色,不响应鼠标或键盘的任在运行时该菜单项就变成灰色,不响应鼠标或键盘的任何操作。何操作。如果要使菜单项在运行时隐藏起来,可以利用如果要使菜单项在运行时隐藏起来,可以利用Visiable属性达到这一目的。例如:属性达到这一目的。例如:Open.visiable=False在运行时,在运行时,“打开打开”这一菜单项就不可见。这一菜单项就不可见。弹出式菜单的设计方法
23、如下:先使用菜单编辑器设计一个一般的菜单,弹出式菜单的设计方法如下:先使用菜单编辑器设计一个一般的菜单,然后用然后用VB提供的提供的PopupMenu方法来显示弹出菜单。该方法的使用方法来显示弹出菜单。该方法的使用形式如下:形式如下:窗体名窗体名.PopupMenu 菜单名,标志,菜单名,标志,X,Y其中,菜单名是必须的,后面的其他几个参数是可选的。菜单名是指其中,菜单名是必须的,后面的其他几个参数是可选的。菜单名是指用右键单击时要显示的菜单的名称用右键单击时要显示的菜单的名称(Name),X和和Y参数指定弹出菜单参数指定弹出菜单显示的位置,标志参数用于进一步定义弹出菜单的位置和性能,其取显示
24、的位置,标志参数用于进一步定义弹出菜单的位置和性能,其取值含义如表值含义如表6-7所示。所示。7.2 菜单设计菜单设计值值说明说明位置位置0菜单左上角位于菜单左上角位于X4菜单上框中央位于菜单上框中央位于X8菜单右上角位于菜单右上角位于X性能性能0(默认)(默认)右键单击触发弹出菜单右键单击触发弹出菜单2左键、右键均可触发弹左键、右键均可触发弹出菜单出菜单例如,在例例如,在例【7-2】中,右键单击文本框时弹出中,右键单击文本框时弹出“字体风格字体风格”菜单,可添菜单,可添加如下代码:加如下代码:Private Sub Text1_MouseDown(Button As Integer,Shif
25、t As Integer,X As Single,Y As Single)If Button=2 Then PopupMenu fontstyle,6End Sub运行后界面如图运行后界面如图7-12所示。其中所示。其中Button2 表示按下鼠标右键,参数表示按下鼠标右键,参数6是是4与与2的和。的和。7.2 菜单设计菜单设计例例7-3 设计一个可以改变窗体背景颜色的弹出菜单。设计一个可以改变窗体背景颜色的弹出菜单。首先打开菜单编辑器,如图首先打开菜单编辑器,如图7-13 建立一个名为建立一个名为mnucolor的菜单,并取的菜单,并取消消“可见可见”选择。选择。7.2 菜单设计菜单设计菜单
26、控件数组属性设置。菜单控件数组属性设置。7.2 菜单设计菜单设计标题标题(Caption)菜单名菜单名(Name)索引索引说明说明设置背设置背景色景色mucolormucolor菜单项菜单项1红色红色redred1 1菜单项菜单项11绿色绿色greengreen2 2菜单项菜单项12蓝色蓝色blueblue3 3菜单项菜单项13编写如下代码:编写如下代码:首先检查是否单击了鼠标右键,如果是单击右键则把首先检查是否单击了鼠标右键,如果是单击右键则把mnucolor菜单显示菜单显示为一个弹出式菜单。为一个弹出式菜单。Private Sub Form_MouseUp(Button As Intege
27、r,Shift As Integer,X As Single,Y As Single)If Button=2 Then PopupMenu mnucolor End IfEnd Sub7.2 菜单设计菜单设计Private Sub red_click()Form1.BackColor=&HFFEnd SubPrivate Sub green_click()Form1.BackColor=&HFF00&End SubPrivate Sub blue_click()Form1.BackColor=&HFF0000End Sub7.2 菜单设计菜单设计创建多重窗体界面创建多重窗体界面应用程序界面是用
28、户和应用程序交互的主要操作之一,在应用程序界面是用户和应用程序交互的主要操作之一,在VB中,中,应用程序的界面一般分为单文档应用程序的界面一般分为单文档SDI(Single Document Interface)界面和多文档界面和多文档MDI(Multiple Document Interface)界界面。前者又称为多重窗体界面,每个窗体是独立的、平等的;后面。前者又称为多重窗体界面,每个窗体是独立的、平等的;后者所包含的所有窗体都在一个父窗体中,父窗体为所有的子窗体者所包含的所有窗体都在一个父窗体中,父窗体为所有的子窗体提供工作空间,像提供工作空间,像Microsoft Excel就是此种类
29、型,它能够在一就是此种类型,它能够在一个工作簿中打开多个工作表。个工作簿中打开多个工作表。7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 1.添加窗体添加窗体方法一:单击方法一:单击“工程工程”菜单下的菜单下的“添加窗体添加窗体”命令,即可在当前工程中添加命令,即可在当前工程中添加一个窗体。一个窗体。方法二:在方法二:在“工程资源管理器工程资源管理器”窗口单击右键,选择窗口单击右键,选择“添加添加”命令中的命令中的“添添加窗体加窗体”,也可在当前工程中添加一个窗体。,也可在当前工程中添加一个窗体。新添加的窗体可以通过新添加的窗体可以通过“工程资源管理器工程资源管理器”窗口查看,例如在
30、一个新的空白窗口查看,例如在一个新的空白窗体添加一个窗体,新添加的窗体被命名为窗体添加一个窗体,新添加的窗体被命名为Form2,如图,如图7-15所示在所示在“工程工程资源管理器资源管理器”窗口查看。如果添加了多个窗体,系统默认的命名是窗口查看。如果添加了多个窗体,系统默认的命名是Form3、Form4等等。等等。创建多重窗体界面创建多重窗体界面7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 2.删除窗体删除窗体方法一:选中要删除的窗体,点击方法一:选中要删除的窗体,点击“工程工程”菜单下的菜单下的“移除移除”即可。即可。方法二:在方法二:在“工程资源管理器工程资源管理器”窗口中,选
31、中要删除的窗体窗口中,选中要删除的窗体名,右键单击选择名,右键单击选择“移除移除”命令。命令。3.多个窗体间的切换多个窗体间的切换在一个应用程序中,如果有多个窗体,可通过在一个应用程序中,如果有多个窗体,可通过“工程资源管工程资源管理器理器”窗口进行切换,双击要打开的窗体名即可将该窗体设窗口进行切换,双击要打开的窗体名即可将该窗体设置为当前活动窗体。置为当前活动窗体。创建多重窗体界面创建多重窗体界面7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 4.多重窗体的加载多重窗体的加载加载窗体是指将窗体文件装入内存,卸载窗体指将窗体从内存中删除。加载窗体是指将窗体文件装入内存,卸载窗体指将窗
32、体从内存中删除。加载窗体命令如下:加载窗体命令如下:Load 执行该命令后,可以引用窗体中的各对象,但此时窗体并没有显示出来。执行该命令后,可以引用窗体中的各对象,但此时窗体并没有显示出来。卸载窗体命令:卸载窗体命令:Unload 调用调用Load语句加载窗体后,窗体并没有被显示出来,若要显示出窗体,语句加载窗体后,窗体并没有被显示出来,若要显示出窗体,可通过如下语句:可通过如下语句:窗体名窗体名.Show 如果省略如果省略“窗体名窗体名”,则显示当前窗体。,则显示当前窗体。Show方法同时具有加载和显示两种功能,如果窗体没有被加载而要显示,方法同时具有加载和显示两种功能,如果窗体没有被加载而
33、要显示,则先将窗体加载,再显示出来。如果要将窗体暂时关闭而不从内存中卸载,则先将窗体加载,再显示出来。如果要将窗体暂时关闭而不从内存中卸载,可以调用可以调用Hide方法实现:方法实现:窗体名窗体名.Hide 创建多重窗体界面创建多重窗体界面7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 5.多重窗体的启动多重窗体的启动应用程序中如果包含多个窗体,应用程序中如果包含多个窗体,VB需要指定一个窗体为首先要启动的窗需要指定一个窗体为首先要启动的窗体。若要设置一个窗体为启动窗体,可通过如下方法设置:选择体。若要设置一个窗体为启动窗体,可通过如下方法设置:选择“工程工程”菜单中的菜单中的“工程
34、名属性工程名属性”命令,打开如图命令,打开如图7-16所示对话框所示对话框(这里打开的是这里打开的是“工程工程1属性属性”),在,在“通用通用”选项卡中找到选项卡中找到“启动对象启动对象”,在下拉列表框,在下拉列表框中选择要作为启动窗体的窗体名,然后单击中选择要作为启动窗体的窗体名,然后单击“确定确定”即可。即可。创建多重窗体界面创建多重窗体界面7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 应用程序在运行时如果想要先执行一段代码,然后根据代码的执行情应用程序在运行时如果想要先执行一段代码,然后根据代码的执行情况来确定先加载哪个窗体,这种情况下就需要使用况来确定先加载哪个窗体,这种情
35、况下就需要使用Sub Main过程作为过程作为首先的启动对象。首先的启动对象。Sub Main过程可在图过程可在图7-16的的“启动对象启动对象”中设置,中设置,然后在标准模块中建立。然后在标准模块中建立。Sub Main过程的建立方法如下:过程的建立方法如下:1.点击点击“工程工程”菜单下的菜单下的“添加模块添加模块”命令,在打开的对话框中选择命令,在打开的对话框中选择“模块模块”为当前的工程添加一个模块,模块默认名字为为当前的工程添加一个模块,模块默认名字为Module1。2.在在“工程资源管理器工程资源管理器”中双击中双击Module1,打开相应的代码窗口。,打开相应的代码窗口。3.在代
36、码窗口输入在代码窗口输入Sub Main,按,按Enter键后系统将自动添加上过程的开键后系统将自动添加上过程的开始和结尾。始和结尾。4.在其中编写过程代码,并保存模块文件在其中编写过程代码,并保存模块文件Module1.bas。由于系统并不能直接识别出由于系统并不能直接识别出Sub Main过程而将其首先执行,所以在过程而将其首先执行,所以在Sub Main过程编写完毕后,需要打开过程编写完毕后,需要打开“工程工程”菜单下的菜单下的“工程属性工程属性”对话框把对话框把Sub Main过程设置为启动对象,这样程序在运行时会首先执过程设置为启动对象,这样程序在运行时会首先执行行Sub Main过
37、程,根据过程中的代码执行情况显示或加载相关的窗体。过程,根据过程中的代码执行情况显示或加载相关的窗体。创建多重窗体界面创建多重窗体界面7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 多文档界面可以在一个窗体中打开多个子窗体,父窗体为每个子窗体多文档界面可以在一个窗体中打开多个子窗体,父窗体为每个子窗体提供工作空间,子窗体被放置在父窗体中,最小化时其图标显示在父窗体提供工作空间,子窗体被放置在父窗体中,最小化时其图标显示在父窗体中而不是任务栏中。在创建多文档界面时,首先要创建一个中而不是任务栏中。在创建多文档界面时,首先要创建一个父窗体即创建父窗体即创建一个一个MDI窗体窗体,然后再创
38、建子窗体,子窗体实际就是将一个普通的窗体的,然后再创建子窗体,子窗体实际就是将一个普通的窗体的MDIChild属性设置为真的。创建属性设置为真的。创建MDI窗体的步骤如下:窗体的步骤如下:选择选择“工程工程”菜单下的菜单下的“添加添加MDI窗体窗体”命令,里面只有一个默认选项,命令,里面只有一个默认选项,单击单击“打开打开”命令,出现如图命令,出现如图7-17所示窗体。此时在所示窗体。此时在“工程资源管理器工程资源管理器”中同时显示出中同时显示出MDI窗体。窗体。7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 创建创建MDI子窗体的步骤如下:子窗体的步骤如下:1.打开一个已有的普通窗
39、体,或者添加一个新的窗体。打开一个已有的普通窗体,或者添加一个新的窗体。2.将这个普通窗体的将这个普通窗体的MDIChild属性设置为真。属性设置为真。一个工程中只能有一个一个工程中只能有一个MDI窗体,一个窗体,一个MDI窗体中可以有多个子窗窗体中可以有多个子窗体,这些子窗体的显示或隐藏需要调用体,这些子窗体的显示或隐藏需要调用7.1.3节的各种方法来操作。节的各种方法来操作。子窗体最小化时的图标不是放置在任务栏中,而是放置在父窗体子窗体最小化时的图标不是放置在任务栏中,而是放置在父窗体中,子窗体可以在父窗体中任意移动、最小化或最大化,但不能中,子窗体可以在父窗体中任意移动、最小化或最大化,
40、但不能超出父窗体的范围。父窗体和子窗体都可以有各自的菜单。超出父窗体的范围。父窗体和子窗体都可以有各自的菜单。7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 例例【7-4】为当前工程添加为当前工程添加1个个MDI窗体窗体MDIForm1和和3个普通窗体个普通窗体Form2、Form3和和Form4,并把这,并把这3个普通窗体的个普通窗体的MDIChild属性设置为属性设置为True。再添。再添加一个普通窗体加一个普通窗体Form1,Form1中有一个命令按钮中有一个命令按钮Command1,设置其,设置其Caption属性为属性为“显示显示MDI多文档界面多文档界面”,要求单击该按钮
41、后显示多文档,要求单击该按钮后显示多文档界面,显示的多文档界面如图界面,显示的多文档界面如图 7-18所示。所示。7.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 为为Command1编写事件过程:编写事件过程:Private Sub Command1_Click()MDIForm1.ShowForm2.ShowForm3.ShowForm4.ShowEnd Sub此时如果单击每个此时如果单击每个MDI子窗体右上角的子窗体右上角的“最小化最小化”按钮,那么该窗体最小按钮,那么该窗体最小化后的图标就会出现在其父窗体的下面而不是任务栏中。化后的图标就会出现在其父窗体的下面而不是任务栏中。7
42、.3 多重窗体与多文档界面设计多重窗体与多文档界面设计 7.4 工具栏设计工具栏设计ToolBar控件是一种控件是一种ActiveX控件,使用前需要将其添加到工具箱中,添控件,使用前需要将其添加到工具箱中,添加方法如下:加方法如下:在工具箱空白处单击右键,选择在工具箱空白处单击右键,选择“部件部件”命令,打开命令,打开“部件部件”对话框中的对话框中的“控件控件”选项卡,选择选项卡,选择Microsoft Windows Common Controls 5.0,单,单击击“确定确定”按钮后,工具箱中就会出现相应的控件,如图按钮后,工具箱中就会出现相应的控件,如图7-21所示。所示。ToolBar
43、控件控件(1)在)在ToolBar控件中添加按钮控件中添加按钮将将ToolBar控件添加到窗体后,右键单击工具栏选择控件添加到窗体后,右键单击工具栏选择“属性属性”命令,打开如命令,打开如图图7-18所示的所示的“按钮按钮”选项卡。点击选项卡。点击“插入按钮插入按钮”为工具栏添加按钮,为工具栏添加按钮,“索索引引”中的数字是当前按钮在中的数字是当前按钮在ToolBar控件中的索引值,用于标识该按钮;在控件中的索引值,用于标识该按钮;在“标题标题”中输入的文字是按钮上显示的文字;用户可以在中输入的文字是按钮上显示的文字;用户可以在“关键字关键字”文本框文本框中输入文字以帮助确认这个按钮;中输入文
44、字以帮助确认这个按钮;“样式样式”决定了按钮的行为特点,共有决定了按钮的行为特点,共有5中中样式:样式:0TbrDefault 普通按钮,按下后自动弹回,如普通按钮,按下后自动弹回,如“保存保存”按钮按钮1TbrCheck 开关按钮,按下后需要再次按下才能弹回,如开关按钮,按下后需要再次按下才能弹回,如“加粗加粗”按钮按钮2TbrButtonGroup编组按钮,一组按钮只能选择一个,如编组按钮,一组按钮只能选择一个,如“左对齐左对齐”按按钮钮3TbrSeparator 分隔按钮,可以将其他按钮分隔开分隔按钮,可以将其他按钮分隔开4TbrPlaceholder占位按钮,在占位按钮,在ToolBa
45、r控件中占一个位置以便显示其他控件中占一个位置以便显示其他控件控件7.4 工具栏设计工具栏设计ToolBar控件控件(2)为按钮添加图像)为按钮添加图像插入图像时需要用到插入图像时需要用到ImageList控件,这个控件为控件,这个控件为ToolBar控件提供图片。控件提供图片。在窗体上添加一个在窗体上添加一个ImageList控件,右键单击该控件选择控件,右键单击该控件选择“属性属性”命令,命令,在打开的对话框中选择在打开的对话框中选择“图像图像”选项卡,单击选项卡,单击“插入图片插入图片”按钮建立图片按钮建立图片列表,选择要插入的图片,列表,选择要插入的图片,VB给这些图片一个索引值。这样
46、就完成了图给这些图片一个索引值。这样就完成了图片列表的建立。片列表的建立。接着就可以在接着就可以在ToolBar控件和控件和ImageList控件之间建立一个连接。控件之间建立一个连接。右键单右键单击工具栏,在弹出的击工具栏,在弹出的“属性页属性页”对话框中选择对话框中选择“通用通用”选项卡,在选项卡,在“图像图像列表列表”下拉列表框中选择下拉列表框中选择“ImageList1”即可建立起连接。然后打开即可建立起连接。然后打开ToolBar控件的控件的“属性页属性页”中的中的“按钮按钮”选项卡选项卡,在,在“图像图像”中输入图片中输入图片的索引值的索引值,这样就完成了为当前按钮选择图片的操作。,这样就完成了为当前按钮选择图片的操作。7.4 工具栏设计工具栏设计ToolBar控件控件StatusBar控件控件StatusBar控件能够提供状态栏,通常显示在窗体的底部,用它可以显控件能够提供状态栏,通常显示在窗体的底部,用它可以显示出程序的运行状态,如光标的位置、系统时间等。将示出程序的运行状态,如光标的位置、系统时间等。将StatusBar控件控件添加到窗体后,右键单击状态栏,打开如图添加到窗体后,右键单击状态栏,打开如图7-24所示的所示的“属性页属性页”对对话框,选择话框,选择“窗格窗格”选项卡,就可以进行设计了。选项卡,就可以进行设计了。7.4 工具栏设计工具栏设计