Visual-Basic程序设计课件第6章 应用程序界面设计_第1页
Visual-Basic程序设计课件第6章 应用程序界面设计_第2页
Visual-Basic程序设计课件第6章 应用程序界面设计_第3页
Visual-Basic程序设计课件第6章 应用程序界面设计_第4页
Visual-Basic程序设计课件第6章 应用程序界面设计_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

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

文档简介

第6章应用程序界面设计应用软件的开发不仅要考虑其功能的完备性和先进性,还必须具有良好的用户界面。在应用程序中使用菜单和工具栏是改善用户界面的一个重要手段。一个应用程序的菜单和工具栏设计得好,不仅能使系统美观,而且使操作更简便,并能避免操作失误而造成的严重后果。本章介绍VisualBasic的菜单和工具栏的设计技术。6.1.1认识菜单

菜单(Menu)是Windows应用程序不可缺少的组成部分。菜单以分组的形式组织多个命令或操作,使用户界面变得更加整洁而美观,为用户灵活操作应用程序提供了便捷的手段。1.菜单的分类在Windows环境下,菜单分为下拉式菜单和快捷菜单两种形式。(1)下拉式菜单。一种典型的窗口式菜单,一般由应用程序窗口菜单栏中的主菜单、子菜单以及子菜单中的菜单项和菜单项分隔条组成,如图6-1所示。程序运行时,一旦用户用鼠标或键盘选择某主菜单项,将立即弹出一个下拉的子菜单。

正常情况下,下拉式菜单只显示主菜单,用鼠标单击或用热键可以下拉各级子菜单。程序的各种功能由各级子菜单中的菜单项(菜单命令)完成。图6-1所示是一个二级菜单的实例,其中右边带有三角形的菜单项表示还可以打开下一级子菜单。在VisualBasic中,最多可以建立六级菜单。(2)弹出式菜单。快捷菜单又称“上下文菜单”或“弹出式菜单”,是一种可以显示在窗体任何位置并独立于菜单栏的浮动式菜单。一般通过在某一区域单击鼠标右键的方式激活特定的快捷菜单,鼠标单击的区域不同,弹出的菜单内容一般也不同。例如,字处理软件Word中的菜单是下拉式菜单,将光标指向Word文档窗体中的任意位置单击右键所弹出的快捷菜单,则是弹出式菜单。图6-1下拉式菜单的组成2.菜单的组成菜单包括菜单栏、菜单标题、菜单项等几部分。菜单栏在窗口标题栏的下方,一般包含多个菜单标题;菜单标题是菜单栏中的项目,通常又称主菜单,在一个菜单标题中一般还包括多个菜单项,可以用下拉的方式打开;菜单项隶属于菜单标题,可以包含菜单命令、分隔线和下一级子菜单标题。与其它可视化对象一样,可以对发生在菜单上的事件编写事件过程。在程序设计时,VB的菜单又可以称为菜单控件,即每一个菜单项相当于一个控件,有其属性。菜单控件只有Click事件,即只能编写响应菜单控件单击事件的事件过程。在VisualBasic中,菜单被看作是一种特殊控件,每一个主菜单、子菜单项以及菜单项分隔条都是一个控件,这些控件同样拥有一组定义其外观与行为的属性和事件。设计或运行菜单时,用户可以对其属性进行设置或调用。例如:Name属性用于在设计时定义菜单的名称,Caption属性用于设置菜单的显示标题,Visible属性用于决定菜单是否可见等。所有的菜单控件都能够响应Click事件,运行应用程序时,用鼠标或键盘选中某一菜单,系统立即调用该菜单的Click事件,实现其相应的功能。注意:VB中的菜单必须与窗体关联,只有在打开一个窗体后,才能定义该窗体中的菜单。3.菜单编辑器(MenuEditor)

“菜单编辑器”是VisaulBasic系统提供的一个简单实用的工具,可用于交互地设计应用程序菜单,如添加新菜单、修改或重排已有菜单、删除已有菜单或给菜单添加特殊的效果等。在集成开发环境的菜单栏上选择“工具→菜单编辑器...”选项,或在标准工具栏上单击“菜单编辑器”按钮,可以弹出“菜单编辑器”对话框,如图6-2所示。图6-2菜单编辑器

在“菜单编辑器”的帮助下,只需要很少的程序代码,就能设计出美观实用的应用程序菜单。利用菜单编辑器可以创建新的菜单,也可以对已有菜单进行菜单项的增加、修改和删除,并重新编辑。

“菜单编辑器”分为两大部分:菜单的属性设置部分和编辑菜单部分。编辑区用于设置或修改各菜单项的相关属性并进行编辑,显示区列表显示已定义的菜单和菜单项。

1.菜单属性设置(1)“标题”(Caption)文本框:对应于Caption属性,用于输入菜单项或菜单标题的名称(Caption),输入的菜单标题也会在“菜单控件”列表框中显示出来。如果当前菜单项要设置为一个菜单项分隔条,必须在此输入一个连字符”-”号。如果输入时在某个字母前键入一个”&”符号,该字母就即成为访问键。例如,输入“文件(&F)”,则F为“文件”菜单的访问键,程序运行时在窗体上将看到的菜单项标题显示为“文件(F)”,这表示用户可以通过同时按下键盘上的Alt键和F键来选中该菜单项。

注意:每一个主菜单项和子菜单项都可以定义一个访问键,但是同一级菜单项的访问键不能重复。例如,MicrosoftWord中主菜单项“表格”与“文件”主菜单项下的“另存为”子菜单项的访问键均为A,而在“文件”主菜单的一级子菜单中,决不会出现另一个子菜单项的访问键也为A的情况。(2)“名称”(Name)文本框:对应于Name属性,用于输入菜单控件名称(Name)。与窗体中的其它对象一样,窗体中的每一个菜单项或菜单标题对象都是窗体中的控件,必须为每个菜单控件命名。

(3)“索引”(Index)文本框:对应于Index属性,用于设置菜单控件数组中某成员的索引值(即下标)。可以为几个连续的菜单项定义相同的控件名,并为每个菜单项加上索引值(0、1、2、…),组成菜单控件数组。菜单控件数组指的是一组具有相同菜单名称、而又具有不同属性值的菜单控件,它们共享事件过程,例如,Menu1(0)、Menu1(1)、Menu1(2)……等。菜单控件数组中,每一个成员的索引值应是唯一的,所有成员必须属于同一级菜单项,并且各成员在菜单控件列表框中是连续的,即其索引值必须以0、1、2…的次序设置。利用菜单控件数组,通过编写程序代码,就可以在程序运行时实现菜单项的动态增减。

(4)“快捷键”(ShortCutKey)列表框:提供一个快捷键列表,包括Ctrl+A、Ctrl+B、…、Ctrl+Z、F1、F2、…、F12、Ctrl+Fl、Ctrl+F2、…、Ctrl+F12等复合键,供用户为某菜单项选择快捷键。缺省值为none,表示不设置快捷键。快捷键的一般格式是组合键Ctrl+“字母键”。除主菜单项外,任何一个菜单项都可以有快捷键。一旦选定了一个快捷键,该快捷键必须是唯一的,即不能与本应用程序中的其他任何级别菜单项的快捷键重复。程序运行时,快捷键会自动出现在菜单项标题的右边,按下快捷键即可立即选中所对应的菜单项,就像用鼠标直接单击该菜单项那样执行相应的事件程序。通常,应该为程序中频繁使用的菜单项指定快捷键。快捷键与访问键都可以使用户更便捷地操作菜单,但是要注意二者之间的差别。(5)“帮助上下文ID”(HelpContextID)文本框:对应于HelpContextID属性,在设计帮助菜单时,输入帮助文件的上下文的标识符,即Help文件的上下文的ID号。⑹“协调位置”(NegotiatePosition)列表框:对应于菜单控件的NegotiatePosition属性,确定该菜单在窗体中是否或如何出现。每个菜单控件都有NegotiatePosition属性,该属性决定在激活链接或嵌入的对象菜单时,窗体顶层菜单中哪些菜单显示,哪些菜单不可见。该属性有四个可选的值:

0-None:缺省值,菜单项不显示。

1-Left:菜单项左显示。

2-Middle:菜单项居中显示。

3-Right:菜单项右显示。⑺“复选”(Checked)复选框:对应于Checked属性。用于设置当该菜单项显示时,是否在其左边出现一个提示性标记“√”,表示该菜单项是否被选中。如果选定该检查框,则相应该菜单项控件的Checked属性值变为True,反之为False。⑻“有效”复选框:用于设置菜单控件的Enabled属性。菜单控件的Enabled属性决定该菜单项在菜单中是否有效。若某菜单项无效,则呈暗色,表示不可用。如Word的“文件”菜单中,当未打开文件时,菜单中的“关闭”菜单项是无效的;打开某个文件后,菜单中的“关闭”菜单项变成有效。⑼“可见”(Visible)复选框:决定菜单项是否可见,对应于Visible属性。如果选中该检查框,表示Visible属性值为True,运行时该菜单项可见,反之不可见。若一个菜单项不可见,则该菜单项的所有子菜单都是不可见的。⑽“显示窗口列表”(WindowList)复选框:用于设置菜单控件的WindowList属性。只适用于多文档(MDl)界面,用于设定在菜单控件上是否显示所打开的MDI子窗体标题列表。在菜单中只能有一个菜单项的该检查框被选中。

2.菜单的编辑(1)“菜单控件”列表框:列出当前窗体中已建立的菜单控件。从列表框中选取一个已存在的菜单项,可以编辑该菜单的属性。菜单控件在列表框中的位置决定了该控件是菜单标题、菜单项、子菜单标题,还是子菜单项。位于列表框中与左边界平齐的菜单控件:作为菜单标题显示在菜单栏中。在列表框中被“....”缩进的菜单控件:作为菜单项出现在其前导菜单标题的菜单上,单击其前导的菜单标题时才会在该菜单上显示。缩进的菜单控件:如果后面还紧跟着再次缩进的一些菜单控件,将成为一个子菜单的标题。在子菜单标题以下缩进的各个菜单控件,将成为该子菜单的菜单项。

(2)编辑命令:包括左、右、上、下箭头命令按钮和编辑命令按钮,用于编辑“菜单控件”列表框中的菜单控件。左、右箭头命令按钮:用于编辑菜单控件的缩进级,每单击一次右箭头按钮,将使该菜单控件缩进一级。在菜单编辑器中每缩进一级,在菜单控件前加四个点(....);每单击一次左箭头按钮,删除(或减少)菜单控件的一个缩进级。上、下箭头命令按钮:用于将条形光标所在菜单控件移到所需位置,上箭头将所选菜单项向上移动,下箭头将所选菜单项向下移动。

“下一个”命令按钮:将光标移到下一个菜单项,当条形光标处于菜单控件列表的末尾时按“下一个”按钮,则添加一个新的菜单项,且缩进级与上一个菜单项相同。

“插入”命令按钮:用于插入一个菜单项。单击“插入”按钮,在条形光标所在的菜单项前面插入一个菜单项,插入的菜单项的缩进级与插入前的菜单项的缩进级相同。

“删除”命令按钮:用于删除一个菜单项。单击“删除”按钮,删除条形光标所在的菜单项。菜单控件是窗体中对象,与VB中的其它对象一样,具有定义其外观与行为的属性。菜单控件的属性可用“菜单编辑器”设置,也可以在程序中用赋值语句设置。6.1.2创建下拉式菜单

菜单编辑器提供了创建应用程序菜单的工具,可以方便地在菜单栏建立下拉式菜单。在编辑菜单时,逐项地输入、编辑和设定要建立的菜单和菜单项属性,即可在窗体上建立下拉菜单。[例6-1]设计如图6-3所示的下拉式菜单。当选择“显示”主菜单下的“日期”子菜单时,在窗体上显示当前的日期;选择“显示”菜单下的“时间”子菜单时,在窗体上显示当前时间;选择“退出”子菜单,结束程序运行;选择“帮助”菜单下的“关于”子菜单,弹出图6-4所示的消息对话框。图6-3日期/时间显示程序

图6-4关于对话框

[分析]

应用程序通常都有菜单。对于大型的应用程序,在设计菜单之前,首先需要将完整的菜单结构在草图上先画出来,并详细列出菜单的组成,然后再进入VB集成开发环境中进行具体创建。创建下拉式菜单的步骤如下:(1)在应用程序工程中,打开要建立下拉式菜单的窗体。(2)打开菜单编辑器,进行菜单编辑。(3)在代码窗口中编写各菜单、菜单项所对应的Click事件过程。(4)运行程序,测试各个菜单项的功能。(5)保存工程。

[设计菜单结构]

假设本例的菜单数据如表6-1所示。

表6-1应用程序菜单结构菜单项标题名称级别备注主菜单项1显示(&D)MnuDisplay主菜单子菜单项11日期(&D)Mnudate一级子菜单快捷键为<Ctrl>+<D>子菜单项12时间(&T)Mnutime一级子菜单快捷键为<Ctrl>+<T>子菜单项13-Mnul3一级子菜单分隔条子菜单项14退出(&X)Mnuexit—级子菜单快捷键为<Ctrl>+<X>主菜单项1帮助(&H)Mnuhelp主菜单子菜单项21关于(&A)Mnuabout一级子菜单快捷键为<Ctrl>+<A>[编辑菜单]

在窗体设计器中打开并选定要建立菜单的窗体Form1,打开菜单编辑器,按照表6-1在菜单编辑器中编辑菜单。例如,在定义好第一个主菜单项“显示(D)”后,单击菜单编辑器中“下一个”按钮,在空白的标题输入框、名称输入框中依次输入“日期(&D)”和“Mnudate”,选择快捷键Ctrl+D,且选中“有效”、“可见”检查框,该菜单项即出现在菜单编辑器显示区中,接着单击右箭头按钮,使之向右缩进,设定为一级子菜单,完成子菜单项“日期(&T)”的编辑工作。依次编辑各个菜单项。菜单编辑完成后,单击“确定”按钮,关闭菜单编辑器,新建菜单出现在窗体Form1上,但这时并不能真正起作用。[编写Click事件过程]

对有关的菜单项编写相应的Click事件过程,使相应菜单项完成具体功能。本例中,需对“日期”、“时间”、“退出”和“关于”三个菜单项的Click事件进行编程,以实现所要求的功能。分隔条一般在菜单中只起分组或分隔的作用,不需对其编程。选定窗体Form1,打开代码窗口,在对象列表框中依次找到nmudate、mnutime、mnuexit和mnuabout菜单项名称,并选择Click事件编写事件过程的代码。程序代码如下:

PrivateSubmnudate_Click()Print”今天是:”&Year(Date)&“年”&Month(Date)&“月”&Day(Date)&“日”

EndSubPrivateSubmnutime_Click()Print”现在是北京时间:“&TimeEndSubPrivateSubmnuexit_Click()EndEndSubPrivateSubmnuabout_Click()MsgBox”作者:许静”+Chr(10)+Chr(10)+“2000年12月1日”,,”关于”

EndSub[运行结果]运行程序,测试菜单功能是否正常。如果有问题,则终止程序执行,检查菜单设计与代码是否正确,修改后再运行,直至应用程序正确为止。程序运行结果如图6-5所示。图6-5日期/时间显示程序运行界面[总结与提高]

1.用“菜单编辑器”创建菜单控体的基本步骤:(1)选取要建立菜单的窗体;(2)在菜单栏上选择“工具→菜单编辑器”选项,或在“工具栏”上单击“菜单编辑器”按钮。(3)在“标题”文本框输入第一个菜单的标题。用(&)字符指定某个字符作为该菜单项的热键。(4)在“名称”文本框中输入菜单控件的名称(Name属性)。(5)单击左箭头或右箭头按钮,改变该菜单控件的缩进级。⑹设置菜单控件的其他属性。⑺选取“下一个”按钮,再建一个菜单控件;或单击“插入”按钮,在选取的控件前增加一个菜单控件;也可以单击上箭头或下箭头按钮,在现有菜单控件中移动控件。⑻完成窗体所有的菜单控件的建立后,选取“确定”可关闭菜单编辑器。用上述方法创建的菜单标题将显示在窗体上。程序设计时,单击一个菜单标题,可下拉其相应的菜单项;再单击菜单项,可以打开代码窗口。注意:为提高代码可读性和易维护性,设置菜单的Name属性时,应该遵循命名约定或方法。在VisualBasic中,一般用前缀来标识对象(即菜单控件用mnu),其后紧跟顶层菜单的名称(如File)。对于子菜单,其后再紧跟该子菜单的标题(如mnuFileOpen等)。2.设置菜单项标题的原则(1)菜单项的标题最好唯一,但不同菜单中相似操作项目可以重名。(2)菜单标题可以是单词、复合词或者多个词。应尽量简短而又能表达一定的意义。(3)每一个菜单项都应设置热键字符,热键字符应使用菜单标题的第一个字母;同一级菜单中的两个菜单标题中不能用同一个热键字符。(4)如果命令在完成前还需要附加信息,应在标题后面加省略号(…)。例如,显示一个对话框的命令(“另存为…”,“选项…”)。

3.设置菜单分隔条分隔符条可把菜单项划分成若干个逻辑组,分隔条作为菜单项间的一个水平行显示在菜单上。以连字符(-)作为Caption属性的菜单控件为菜单设置一个分隔符条。在菜单编辑器中创建分隔符条的方法如下:(1)在菜单编辑器中选取“插入”按钮,在要分隔开来的菜单项之间插入一个菜单控件。(2)如有必要,单击右箭头按钮,使新菜单项缩进到与其隔开的菜单项同级。(3)在“标题”文本框中键入字符“-”,并设置“名称”属性。(4)插入其它分隔条,完成后单击“确定”按钮,关闭菜单编辑器。

注意:虽然分隔符条是作为菜单控件来创建的,但不响应Click事件,也不能被选取。作为分隔符条的菜单项属性不能设置为复选、无效,也不能设置快捷键或带有子菜单项。

4.设置热键和快捷键通过定义热键和快捷键可使用键盘对应用程序的菜单命令进行访问,以提高操作速度。(1)设置热键在菜单标题中用标记字符&说明用哪一个字母作为热键字符。例如,若使用&D,将在菜单的括号中显示一个带下划线的字母D,则字符D为热键。热键允许在按下Alt键的同时键入一个字符来打开一个菜单。一旦菜单打开,通过按下所赋值的热键字符可选取菜单。例如,在Word中按下Alt+E键,可打开“编辑”菜单,再按P键,可选取“粘贴”菜单项。在菜单编辑器中给菜单控件设置热键的方法如下:①选取要赋值热键的菜单项。②在“标题”文本框中,在作为热键字符的前面直接键入一个“&”字符。

注意:菜单中不能使用重复的热键。若多个菜单项使用同一热键,则退出菜单编辑器时会出错。

(2)设置快捷键按下快捷键时可以立刻运行一个菜单命令。使用热键需要三步操作:先按住Alt键,再按菜单标题访问字符,再按菜单项访问字符。快捷键提供一种键盘单步执行菜单命令的快捷访问方法,可以为频繁使用的菜单项指定一个快捷键。为菜单项设置快捷键的方法如下:①选取菜单项。②在“快捷键”下拉列表框中选取功能键或者键的组合。若要删除快捷键,可直接选取快捷键列表框中的“(none)”。6.1.3创建快捷菜单

快捷菜单可以根据单击鼠标右键时的位置灵活改变弹出的菜单内容,使用户操作更快捷。[例6-2]利用快捷菜单变换窗体的背景色。

[分析]

快捷菜单也是用菜单编辑器构造,操作步骤如下:(1)选定欲创建快捷菜单的窗体,打开菜单编辑器。(2)在菜单编辑器中,将要弹出的菜单按下拉式菜单的编辑方法进行编辑,同时将其对应顶级主菜单项的Visible属性设为False,即不选中“可见”复选框,使快捷菜单在程序运行时不出现在菜单栏中。(3)打开代码编辑器,编写各菜单项的Click事件过程。此外,在程序中还需要利用窗体对象的菜单弹出方法PopupMenu控制快捷菜单的显示。

PopupMenu方法的格式:

[窗体名.]PopupMenu<菜单名>[,flags1[,x][,yl[,boldcommand]说明:①窗体名表示要弹出菜单的窗体名称,默认为当前窗体。②菜单名是要弹出的菜单名称,一般是至少包含一个子菜单项的主菜单项名称。③flags为可选参数,用于设定菜单弹出的位置和行为,位置常数和行为常数分别如表6-2和表6-3所示。若同时指定这两个常数,可用“逻辑或”运算符(Or)将二者结合起来,例如:4or2。参数常数说明VbPopupMenuLeftAlign0(默认值)快捷菜单的左边定位于xVbPopupMenuCenterAlign4快捷菜单的居中定位于xVbPopupMenuRightAlign8快捷菜单的右边定位于x表6-2

flags参数中的位置常数表6-3flags参数中的行为常数参数常数说明VbPopupMenuLeftButton0(默认值)仅当使用鼠标左按钮时,快捷菜单中的项目才响应鼠标单击VbPopupMenuRightButton2不论使用鼠标右按钮还是左按钮,快捷菜单中的项目都响应鼠标单击④x和y两个可选参数用于指定快捷菜单的弹出位置,默认为在当前鼠标位置弹出菜单。⑤boldcommand参数指定在快捷菜单中标题加粗显示的菜单项名称。在一个快捷菜单中,只能设定一个菜单项加粗显示。(4)运行程序,测试快捷菜单的功能。(5)保存工程。[程序代码]PrivateSubfred_Click()Form1.BackColor=vbRedEndSubPrivateSubfgreen_Click()Form1.BackColor=vbGreenEndSubPrivateSubfblue_Click()Form1.BackColor=vbBlueEndSubPrivateSubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

‘调用快捷菜单Fcolor,并将"红色"菜单项设置为黑体显示

IfButton=2ThenPopupMenufcolor,,,,fredEndSub[总结与提高]1.菜单程序设计用菜单编辑器完成菜单设计后,关闭菜单编辑器,所创建的菜单将显示在窗体上,用鼠标单击主菜单项,可以下拉相应的菜单并显示各菜单项。菜单建立并编辑后,还必须为菜单项编写程序代码,以响应用户的操作。菜单控件有唯一的Click事件,在窗体上选取一个菜单项单击将进入代码窗口并显示菜单控件的Click事件过程。除分隔符条以外的所有菜单控件(包括无效的或不可见的菜单控件)都能识别Click事件。在代码窗口中,应该为窗体中每个菜单项的菜单控件编写一个Click事件过程。在菜单事件过程中编写的代码与在控件任何其它事件过程中编写的代码完全相同。[运行结果]如图6-6所示。图6-6窗体背景色变换界面2.设计弹出式菜单弹出式菜单又称快捷菜单,是显示于窗体或其它对象之上、独立于菜单栏的浮动式菜单(参见图6-6)。显示在弹出式菜单上的菜单项取决于鼠标右键按下时指针的位置,因此,弹出式菜单又称为上下文菜单。可以将已设计的下拉式菜单显示成弹出式菜单,首先需要确定由哪个事件触发弹出式菜单。弹出式菜单一般是通过单击鼠标右键弹出的菜单,因此,可以选用鼠标的MouseUp事件或MouseDown事件。任何的至少有一个子菜单项的菜单,运行时都可以显示为弹出式菜单。使用对象的PopupMenu方法可显示弹出式菜单。[例6-3]当用户单击一个命令按钮时,显示一个上边框在窗体中心的弹出式菜单。菜单由用户在窗体上单击鼠标右键时弹出。

[程序代码]PrivateSubForm_MouseUp(ButtonAsInteger,ShiftAsInteger,XAsSingle,YAsSingle)

IfButton=2Then

Dimxloc,yloc ‘X变量和Y变量的尺寸。

xloc=ScaleWidth/2 ‘设置X变量和Y变量到窗体中心。

yloc=ScaleHeight/2

PopupMenumnuEdit,vbPopupMenuCenterAlignOr_

vbPopupMenuRightButton,xloc,yloc ‘显示弹出式菜单。

EndIfEndSub6.2工具栏的设计

工具栏一般都含有图形工具栏按钮,它提供了对于应用程序中最常用命令的快捷访问方式。利用工具栏控件可以方便地将常用命令建成工具栏按钮,并为按钮指定图像、文字和工具提示,构成应用程序的工具栏。工具栏控件一般需要与图像列表控件配合使用,由图像列表控件提供所要显示的工具栏按钮图标。工具栏放置在窗体上时,自动位于窗体上方,并随窗体大小而改变其宽度。通过设置、修改属性,可改变工具栏的外观。工具栏控件属于ActiveX控件,其中的每一个按钮作为一个Button对象访问,所有按钮组成一个Buttons集合。6.2.1用ToolBar控件创建工具栏

ToolBar控件是VisualBasic6.0专业版和企业版中用于创建工具栏和图形工具按钮的一个控件,使用ToolBar控件来创建工具栏非常简单方便。[例6-4]为窗体Form1设计如图6-7所示的工具栏。图6-7工具栏设计界面[分析]Toolbar控件是一种ActiveX控件,一般不在控件工具箱内显示。使用ToolBar控件时,必须先将一组与其相关的控件放入控件工具箱。方法:在菜单栏上选择“工程→部件”选项,在弹出的“部件”对话框“控件”选项卡中选中“MicrosoftWindowsCommonControls6.0”项,单击“确定”按钮后,在控件工具箱中增加一组控件,包括ToolBar、TabStrip(选项卡)、StatusBar(状态栏)、ProgressBar(进度条)和ImageList(图像列表)控件等。其中,ToolBar控件用于创建工具栏,ImageList控件用于为ToolBar等控件的按钮存放图像。利用这两个控件即可创建图形工具按钮。在应用程序中创建工具栏的操作步骤:(1)在窗体中加入ImageList控件,并在其中插入合适的工具按钮图像。(2)利用ToolBar控件在窗体中创建工具栏,并在工具栏中创建一系列的按钮对象。(3)在工具栏对象的“ButtonClick”事件中设计程序,响应用户的按钮操作。[建立工程]

新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。构造用户界面,在窗体Form1上放置一个图像列表控件ImageList1和一个工具栏控件ToolBar1。

[属性设置]

(1)设置图像列表控件的属性:设计图6-7所示的工具栏,需用到3个按钮图形:打开、保存和邮件,为此,在图像列表控件中添加这3个图像(假定3个图像文件分别为open.save.outlook)。(2)设置工具栏控件ToolBar1的属性:在工具栏的的“属性页”对话框进行属性设置,如图6-8所示。图6-8工具栏“属性页”对话框中的“通用”选项卡(一)①在“通用”选项卡中的“图像列表”列表框中选择ImageList1,使该工具栏控件与ImageList1控件相关联,以便为工具栏按钮指定图片。新建立的工具栏中无工具按钮,通过工具栏的“属性页”可以在工具栏中添加工具按钮(建立Button对象),并在工具按钮上赋予ImageList中插入的图像。将图像赋给各“按钮”前,必须先将ImageList控件与Toolbar控件关联起来。建立ImageList控件与Toolbar控件关联的方法:在工具栏的“属性页”对话框中选择“通用”选项卡,在“图表列表”下拉列表框中选择ImageList控件名称(见图6-8),则建立了ImageList和Toolbar控件之间的关联。注意:将ImageList控件与Toolbar控件建立关联前,必须先向ImageList控件插入图像。一旦ImageList控件与Toolbar控件建立关联,并将其中任意图像赋给了控件,就不能再向ImageList控件中添加图像。提示:在将ImageList控件与某个Windows的公共控件关联后,就可以用图像的Index或Key属性(见表6-5)指定特定的图像。由于ListImage对象的Key属性必须是唯一的字符串,可以用Key属性代替Index属性对图像进行引用,这样可以使代码更易读。②打开“按钮”选项卡,如图6-9所示,为工具栏控件添加按钮。图6-9工具栏“属性页”对话框中的“通用”选项卡(二)

操作步骤:单击“插入按钮”按钮,添加一个按钮,其索引值自动设置为1,在“标题”、“关键字”、“描述”和“图像”文本框中分别输入“打开”、“open”、“打开文件”和“1”(即第一个按钮对应ImageList1控件的第一个图像),单击“应用”按钮保存。重复上述步骤,依次添加“保存”和“邮件”两个按钮,即在“关键字”文本框中分别输入“save”和“outlook”。最后,单击“确定”按钮,关闭“属性页”对话框,即可在窗体上看到图6-7所示的工具栏。[程序代码]

建立工具栏按钮后,要使工具栏上的每个按钮起作用,还需要进一步编写Button的Click事件过程,以响应每个按钮的操作。事件过程代码如下:

PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)Text1.FontSize=12SelectCaseButton.KeyCase“open”Text1.Text=“打开文件”

Case“save”Text1.Text=“保存文件”

Case“outlook”Text1.Text=“linlin@”EndSelectEndSub[代码说明]除占位符和分隔符外,用户单击任意按钮,都将触发工具栏的ButtonClick事件。可以用按钮的Key属性或Index属性来识别用户所按的按钮。由于在工具栏中一般包括多个工具按钮,可以采用SelectCase结构来编写按钮功能的程序代码。以上ButtonClick事件过程包括一个ComctlLib.Button按钮类对象。程序中,Case语句后用到的关键字(如open、prn等)都是“按钮”对象的Key属性值。[运行结果]如图6-7所示。[总结与提高]1.图像列表(ListImage)控件图像列表控件属于ActiveX控件,为其它公共控件(如ListView、TabStrip、ToolBar和TreeView等控件)保管图像,就象一个图像仓库。图像列表控件中保存的图像作为一个ListImages集合来访问,同时,每一个图像作为一个ListImage对象进行操作。将图像列表控件放置在窗体上的外观如图6-10所示,其大小固定,且运行时不可见。图6-10图像列表框的外观

(1)图像列表控件的常用属性和方法图像列表控件本身不能响应任何事件,但同样具有一些常用属性和方法。①常用属性:图像列表控件的常用属性见表6-4。表6-4图像列表控件常用属性属性名称说明BackColor设置或返回该控件的背景颜色ImageHeight设置或返回该控件包含的ListImage对象的高度ImageWidth设置或返回该控件包含的ListImage对象的宽度UseMaskColor决定该控件是否使用屏蔽颜色。若设置为True表示使用屏蔽颜色,否则不使用MaskColor当使用屏蔽颜色时,指定一种屏蔽的颜色ListImages该控件所包含的ListImage对象的集合②常用方法:图像列表控件的常用方法为OverLay。语法格式:图像列表控件名.Overlay(Index1,hdex2)

其中,Index1和Index2参数指定ListImages集合中的两个图像,可用图像的hdex属性(整数)或Key属性(惟一的字符串)来表示。该方法将Index2指定的图像叠加在Index1指定的图像上,生成并返回一幅复合图像。例如:setpicture1.picture=imageList1.overlay(1,2)

表示将imageList1控件中的第二个图像叠加在第一个图像上,并在图片框Picture1中显示叠加后的合成图像。这里Index1和Index2参数采用的是图像的Index属性值。此外,也可以通过Key属性引用。例如:

SetPicture1.Picture=ImageList1.Overlay(“First”,”Second”)

其中,“First”和“Second”分别为两个图像的Key属性值。(2)ListImage对象的常用属性

ListImage对象实际上为一个可在其他控件中使用的任意大小的位图或图标,是组成ListImages集合的成员,其常用属性见表6-5。表6-5ListImage对象常用属性属性名称说明Index设置或返回该对象在集合中的索引值Key设置或返回该对象的惟一的字符串标识,用于在ListImages集合中识别该对象Picture设置或返回与该对象相连的一个位图或图标文件(3)ListImages集合的常用属性和方法

ListImages集合(ListImage对象的集合)用于为其他控件提供一系列图像。集合中的每一个成员都可以通过其索引或惟一关键字来访问,当把ListImage对象添加到一个集合中时,这些索引或唯一关键字被分别存储在Index和Key属性中。

ListImages集合的常用属性为Count属性,用于返回ListImage集合中已有的图像数目。语法格式:图像列表控件名.ListImages.CountListImages集合拥有一组标准的集合方法,用来在程序运行中操作ListImage对象,实现添加或删除图像的操作。

以下是几个常用的方法:①Add方法:添加一个ListImage对象到ListImages集合中,并返回这个最新创建的对象引用。语法格式:图像列表控件名.Listlmages.Add(Index,key,picture)

其中,Index参数可选,指定要插入ListImage对象的位置。若省略则ListImage对象被添加到ListImages集合的末尾。key参数是用来标识ListImage对象的唯一关键字字符串,若该关键字不唯一,将会产生一个错误。必选参数picture决定欲添加到集合中的位图或者图标,可用LoadPicture函数加载,例如:

DimImgXAsListImageSetimgX=ImageList1.ListImages.Add(,,LoadPicture("c:\Myfile.bmp"))

此外,也可以直接将Picture对象加载到ListImage对象中,例如:

SetimgX=ImageList1.ListImages.Add(2,,Picture1.Picture)

该语句把图片框控件Picture1的图片加载到ListImage对象中,并添加该对象到ListImages集合的第二个成员处。

如果ListImages集合中还没有添加任何ListImage对象,可在添加第一个ListImage对象之前设置ImageHeight和ImageWidth属性,允许添加任意大小的图像到集合中。但是,当ImageList控件被用来向另一个Windows公用控件提供图像时,添加到集合中的图像将会以ImageHeight和ImageWidth属性指定的大小显示在相应的Windows公用控件中。一旦有一个ListImage对象被添加到集合中,ImageHeight和ImageWidth就变为只读属性。②Clear方法:清除ListImages集合中已有的全部ListImage对象,即删除图像列表控件中所装入的全部图像。语法格式:图像列表控件名.ListImages.Clear③Remove方法:从ListImages集合中删除一个ListImage对象,即删除图像列表控件中的一个图像。语法格式:图像列表控件名.ListImages.Removeindex

其中,参数index指定被删除对象在集合中的索引或关键字。例如,

ListImage1.ListImages.Remove1

执行该语句将删除Listlmages集合中的第一个ListImage对象。(4)图像列表控件的属性设置图像列表控件可以通过“属性页”对话框进行属性设置。用鼠标右键单击窗体上放置的图像列表控件,在弹出的快捷菜单中选择“属性”选项,弹出“属性页”对话框,如图6-11所示,其中包括“通用”、“图像”和“颜色”三个选项卡。图6-11图像列表控件的“属性页”对话框①“通用”选项卡(见图6-11):用于设置图形的高度和宽度(单位为像素),以及是否使用屏蔽颜色。②“颜色”选项卡:用来设置图像的背景色和屏蔽颜色,一般可采用默认值。一旦设定使用屏蔽颜色,在“颜色”选项卡中指定的屏蔽颜色在图形操作时将以透明的方式显示。③“图像”选项卡(见图6-12):用于设定图像文件的有关信息,同时还可添加或删除图像。图6-12“图像”选项卡添加图像的方法如下:单击“插入图片”按钮,弹出“选定图片”对话框,如图6-13所示。图6-13“选定图片”对话框

从中选取要添加的图片文件后,单击“打开”按钮,关闭该对话框。此时在“图像”选项卡图像栏出现刚才选定的图片,其索引值自动设置为1,并允许用户为该图像输入其关键字标识和标记。重复前两步,可添加多个对象,结果如图6-14所示。单击“确定”按钮,将全部图像保存到图像列表控件中。另外,在“图像”选项卡中选定一个图像栏内的图像后,单击“删除图片”按钮将从图像列表控件中删除该图像。图6-14添加图片后的“图像”选项卡2.工具栏控件工具栏控件一般需要与图像列表控件配合使用,由图像列表控件提供所要显示的工具栏按钮的图标。(1)工具栏控件的常用属性、方法和事件①常用属性:工具栏有许多属性,常用的属性如表6-6所示。表6-6工具栏常用属性属性名称说明Align决定工具栏控件在窗体中的显示位置及大小。默认值为0表示可以在设计时或在程序中确定大小和位置;其值为1~4,分别表示工具栏显示在窗体的顶部、底部、左边和右边,且随窗体自动调整宽度ImageList设定与本控件相关联的ImageList控件名称续表属性名称说明Style设定工具栏中按钮的外观。其值可为0~2,默认值0表示标准工具栏;1表示按钮和工具栏都是透明的,且按钮文本出现在按钮位图下面并启动热跟踪;2表示按钮和工具栏都是透明的,按钮文本出现在按钮位图右边并启动热跟踪ShowTips决定当鼠标指针在工具栏的某个按钮上暂停时,是否显示该按钮的提示文本,默认值为TrueToolTipText当ShowTips属性设为True时,设定要显示的提示文本Wrapenable决定当重新设置窗体的大小时,工具栏控件按钮是否自动换行。默认值为TrueButtons工具栏控件的Button对象集合②常用方法:工具栏的常用方法除Move、Refresh外,还有一些特殊方法,如表6-7所示。表6-7工具栏常用方法方法名称说明Customize当AllowCustomlze属性设置丁true时,调用”自定义工具栏”对话框,重新安排或隐藏工具栏上的Button对象RestoreToolbar将工具栏控件创建的工具栏恢复到自定义后的最初状态SaveToolbar在运行时,把用工具栏控件创建的工具栏的状态保存在注册表中③常用事件:工具栏控件的常用事件主要有ButtonClick和Click事件。单击工具栏控件时触发Click事件,单击工具栏上的按钮时触发ButtonClick事件,并返回一个Button参数,表示用户单击哪一个按钮。程序中一般都需要对ButtonClick事件进行编程,实现各个按钮的特定功能。(2)Button对象的常用属性在程序中,工具栏按钮对应于Button对象,其常用属性如表6-8所示。表6-8Button对象常用属性属性名称说明Caption设置或返回该对象在集合中的标题Index设置或返回该对象在集合中的索引值Key设置或返回该对象在Buttons集合中的惟一的字符串标识Image设置或返回在该对象上显示的图像,其值为该图像在图像列表控件中的Index属性值Style决定该对象的外观与状态,默认值为0表示标准按钮,值为1~5分别表示复选按钮、按钮组、分隔符、占位符和菜单按钮Enabled设置或返回该对象是否可用Visible设置或返回该对象是否可见Value设置或返回该对象的值。默认值为。表示当前未按下按钮,也末复选按钮;值为1表示当前按下或复选按钮说明:①每个按钮(Button)对象都有一个Style属性,该属性决定该按钮的行为特点,可以有五种选择。可以在“属性页”对话框“按钮”选项卡的“样式”框中设定按钮的Style属性。表6-9列出了Style属性的五个值以及它们的功能。各种样式的示例如图6-10所示。表6-9按钮的样式及其功能属性值常数值功能0tbrDefault缺省样式,按钮在单击操作后自动弹回,若按钮功能不依赖其它功能,可以使用该样式。1tbrCheck将按钮设置为复选类型,即单击按钮后不弹起,再次单击时才弹起。2tbrButtonGroup用于功能相互排斥的按钮组,即一组按钮中同一时刻只能有一个按钮有效。3tbrSeparator产生8个象素宽的按钮间的分隔符,将不同类型的按钮分开。4tbrPlaceholder占位符样式,即在Toolbar控件中占据一定的位置,以便显示如ListBox之类的其它控件。②在某些情况下,应用程序的函数可能返回不确定状态:返回的状态是两种或多种状态的混合。例如,若用户选中某个Word文档,其中一部分文本是斜体,另一部分是正常体,则代表斜体的按钮既不能按下也不能弹起;为了表示这种不确定状态,需要将MixedState属性设置为True,以产生第三种状态。可以在“属性页”对话框“按钮”选项卡(参见图6-9)中将“混合状态”设为有效。一般在程序中根据运行状况设置Mixedstate属性。tbrDefault样式按钮

tbrSeparator样式按钮

tbrPlaceholder样式产生的空白添加的组合控件

tbrCheck样式按钮

tbrButtonGroup样式按钮③在按钮样式中有一种tbrDropDown按钮样式,即下拉菜单式按钮样式,如图6-16左图所示。在这种按钮样式中,除了主按钮外,在按钮的右边还有一个带三角形的按钮。程序运行时,单击该部分时可以拉下其中隐含的菜单。下拉菜单式按钮的设计步骤如下:a)插入下拉式按钮。插入一个按钮后,选择按钮样式为5-tbrDropDown,即可创建下拉式按钮。b)插入按钮菜单。下拉式按钮中不包含菜单,还需要在按钮中设计按钮菜单。插入一个下拉式按钮后,在“按钮菜单”框中单击“插入按钮菜单”按钮,可以在按钮中插入一个菜单项。依此可以依次插入各菜单项。插入一个按钮菜单后,还应设置菜单的属性。其中,“文本”项设置菜单的标题,用“-”号设置分隔条。(3)Buttons集合的常用属性和方法与图像列表控件的ListImages集合相似,工具栏的Buttons集合也具有Count属性,用于返回Buttons集合中的按钮数目。图6-16下拉菜单按钮及设计Buttons集合的方法包括Add、Clear和Remove方法。Add方法用来添加一个Button对象到Buttons集合中,并返回这个最新创建的对象引用。语法格式:工具栏控件名.Add(Index,key,Caption,style,Image)其中,Index参数指定要插入Button对象的位置。若省略,则将Button对象添加到Buttons集合的末尾。key参数用来惟一标识Button对象。Caption参数指定将出现在Button对象之下的字符串。style参数决定Button对象的样式。Image参数以Index属性值或Key属性值指定相关联的ImageList控件内的一个ListImage对象。例如:DimbtnXAsButtonSetbtnX=Toolbarl.Buttons.Add(,”open”,,,”open”)Clear和Remove方法的用法与ListImages集合相同。(4)自定义工具栏在“属性页”对话框“通用”选项卡(参见图6-8)中选中工具栏的“允许自定义”复选框,则允许用户隐藏、显示或重新安排工具栏按钮。程序运行时,双击该工具栏将显示“自定义工具栏”对话框,如图6-17所示。此外,也可以调用Customize方法显示该对话框。若希望保存或恢复工具栏的状态,可以使用SaveToolbar或RestoreToolbar方法。在改动工具栏时触发Change事件,可用来调用SaveToolbar方法。图6-17“自定义工具栏”对话框3.工具栏的程序设计,主要编写工具栏的ButtonClick事件过程,以便对已选定的按钮作出响应。对于下拉式菜单按钮,用户单击下拉按钮中的任何菜单都将发生ButtonMenuClick事件,因此,下拉式菜单按钮程序设计主要是编写按钮菜单的ButtonMenuClick事件过程。例如:PrivateSubToolbar1_ButtonMenuClick(ByValButtonMenuAsMSComctlLib.ButtonMenu)SelectCaseButtonMenu.IndexCase1Form1.BackColor=RGB(255,0,0)Case2Form1.BackColor=RGB(0,255,0)Case3Form1.BackColor=RGB(0,0,255)Case5CommonDialog1.Flags=cdlCCRGBInitCommonDialog1.ShowColorForm1.BackColor=CommonDialog1.ColorEndSelectEndSub该过程包括一个MSComctlLib.ButtonMenu按钮菜单对象,程序中Case语句后用到的关键字(如open、prn等)都是“按钮菜单”对象的Index属性值。[例6-5]在工具栏中定义六个按钮:“打开”、“保存”、“退出”、“剪切”、“复制”和“粘贴”。[建立工程]新建工程,按默认名称保存工程为“工程1”,窗体名称保存为Form1。构造用户界面,在窗体Form1上放置一个图像列表控件ImageList1和一个工具栏控件ToolBar1。[属性设置]在表6-7指定的值在“属性页”中设置相关的内容。表6-7按钮定义索引标题关键字工具提示文本1打开Open打开文件2保存Save保存文件3剪切Cut将选定内容剪切到剪帖板4复制Copy将选定内容复制到剪帖板5粘贴Paste从剪帖板粘贴到当前位置6退出Exit结束程序运行[程序代码]设置相关属性后,输入以下示意性的程序代码:PrivateSubToolbar1_ButtonClick(ByValButtonAsMSComctlLib.Button)

‘用关键字属性判断选择的操作

SelectCaseButton.KeyCase"Open"MsgBox"选择“打开”按钮!"Case"New"MsgBox"选择“新建”按钮!"Case"Save"MsgBox"选择“保存”按钮!"Case"Cut"MsgBox"选择“剪切”按钮!"Case"Copy"MsgBox"选择“复制”按钮!"Case"Paste"MsgBox"选择“粘贴”按钮!"Case"Exit"MsgBox"选择“退出”按钮!"EndEndSelectEndSub[代码说明]Button是工具栏按钮集合Buttons的一个对象。该对象能够通过“按钮”窗口中的“插入按钮”和“删除按钮”从集合中插入或删除。程序运行时,单击工具栏上的按钮,触发工具栏的ButtonClick事件,并将Button对象作为参数传递到事件过程中。程序根据按钮的Index或Key属性值执行相应的程序。本例采用Button.Key的值作为SelectCase的条件。[运行结果]如图6-18所示。图6-18程序运行示意6.2.2用CoolBar控件创建工具栏

在VisualBasic6.0中,还可以用CoolBar控件创建工具栏。用CoolBar控件可以创建类似MicrosoftInternetExplorer中的工具栏,并可由用户自行配置该工具栏。CoolBar是VisualBasic6.0中的一个ActiveX控件,一般不在工具箱内显示。在菜单栏上选择“工程→部件”选项,在弹出的“部件”对话框中选中MicrosoftWindowsCommonControls6.0,单击“确定”按钮,可以在工具箱中加入CoolBar控件。限于篇幅,这里不详细介绍CoolBar控件的使用,读者可参考VisualBasic6.0的手册或MSDN库中的“控件参考”。6.3多重窗体与多文档界面(MDI)的设计

在Windows的应用程序开发中,常常要求能同时打开多个文档窗口。为实现应用程序的多窗口程序设计,VisualBasic允许在一个工程中建立多个窗体。VB中的多窗体设计分两种:多重窗体(MutipleForm)和多文档界面(MutipleDocumentInterface,简称MDI)。6.3.1创建MDI应用程序

[例6-6]建立一个简单的文本编辑器,使其与Windows中自带的笔记本(NotePad)应用程序相似。要求在程序运行时,可以用“文件”菜单中的“新建”选项创建多个子窗体或文档窗口。

[分析]

在多重窗体程序中,每个窗体可以有自己的界面和程序代码,分别完成不同的操作。利用多重窗体,可以较灵活地设计比较复杂的对话框,从而能代替由CommonDialog、InputBox或MsgBox所提供的标准对话框。多文档界面(MDI)允许同时打开多个文档进行操作,而且每个文档都有各自的窗口。MDI应用程序一般由一个父窗体和多个子窗体构成,包含文档的子窗体被放置在父窗体中,父窗体为所有的子窗体提供工作空间。父窗体又称为MDI窗体,负责管理其中的每个子窗体及其对它们的操作。子窗体实际上是普通窗体,但要将MDIChild属性设置为True。多个子窗体的样式可以相同或不同。注意:一个MDI应用程序只能有一个MDI窗体。程序运行时,子窗体将显示在MDI窗体的工作区内,当最小化子窗体时,其窗体图标亦显示在父窗体的工作区内,如图6-19所示。图6-19MDI窗体界面MDI窗体和每一个子窗体都可以有菜单,但子窗体的菜单显示在MDI窗体上。一旦某个子窗体获得焦点,其菜单(假设有)取代父窗体上的菜单显示在菜单栏上。只有当带焦点的子窗体没有菜单或不存在可见子窗体时,才会显示MDI窗体本身的菜单。创建MDI应用程序的方法与普通应用程序十分相似。为创建以文档为中心的应用程序,至少需要两个窗体:一个MDI窗体和一个子窗体。设计时,创建一个MDI窗体容纳该应用程序,创建一个子窗体作为这个应用程序文档的模板。[建立工程](1)在菜单栏上选择“文件→新建工程”选项,新建一个“标准EXE”类型的工程。(2)创建MDI窗体:在菜单栏上选择“工程→添加MDI窗体”选项,弹出“添加MDI窗体”对话框,如图6-23所示。在“新建”选项卡中选择“MDI窗体”后,单击“打开”按钮,即可在工程中添加一个默认名称为MDIForm1的MDI窗体,其外观几乎与一般窗体相同,只是窗体的标题、背景色和在工程资源管理中显示的图标不同。图6-23“添加MDI窗体”对话框此时,工程中包含一个MDI窗体(MDIForm1)和一个标准窗体(Form1)。(3)利用菜单编辑器建立MDI窗体的菜单,方法与窗体的菜单设计完全相同。(4)向MDI窗体中添加子窗体:在工程中建立一个普通窗体,修改MDIChild属性为True,表示该窗体为一个MDI子窗体。可以在窗体上添加控件、设置属性、编写代码或设计子窗体功能。提示:可以创建多个MDI子窗体,其样式可以互不相同。多数MDI应用程序中,打开的子窗体的形式结构是完全相同的,一般可采用定义窗体数组的方式来实现。例如,在带有子窗体Form1的MDI窗体工程中添加一个标准模块Module1,并在其中编写以下代码:OptionExplicitPublicchildformcountAsIntegerPublicnewchildform(10)ASNewForm1其中,childformcount为保存当前打开子窗体数目的变量;newchildform为继承Form1所有控件及其属性、事件和方法的子窗体数组,此后在程序中就可以仍然用Show方法动态显示、处理这些子窗体。例如:newchildform(1).Show可以根据需要为子窗体设计菜单。[属性设置](1)将Form1的MDIChild属性设置为“True”,并在Form1上创建一个文本框(Text1)。(2)按表6-8为两个窗体和文本框控件设置属性。对象属性设置值MDIForm1CaptionMDINotePadForm1Caption无标题MDIChildTrueText1MultiLineTrueTextText1Left0Top0(3)用“菜单编辑器”为MDIForm1创建一个“文件”菜单(见表6-9)。标题名称缩进文件mnuFile否新建mnuFileNew是[程序代码]建立和设计MDI应用程序的父窗体和子窗体后,就可以编写程序代码,可以像单一窗体一样编写MDI应用程序的窗体和控件的程序代码。1.mnuFileNew_Click事件过程程序代码PrivateSubmnuFileNew_Click()

DimNewDocAsNewForm1 '创建名为NewDoc的窗体Form1的一个新实例。

NewDoc.Show '显示此新窗体。EndSub该过程以Form1为模板创建并显示Form1中名为NewDoc的一个新实例(副本)。每当从“文件”菜单中选取“新建”命令时,将会创建一个与Form1完全相同的副本(实例),包括Form1所包含的所有控件和代码。2.Form1窗体的Form_Resize过程程序代码Text1.Height=ScaleHeightText1.Width=ScaleWidthForm_Resize事件过程的代码象Form1中所有代码一样,能为Form1的每一个实例所共享。当显示窗体的几个副本时,每个窗体都能识别各自的事件。由于相同的代码为每个实例所共享,当一个事件出现时,该事件过程的代码就会被调用。[运行结果]程序设计完成后,程序运行结果如图6-20所示。在菜单栏上选择“文件→新建”选项,弹出一个新的子窗体,如图6-21所示。通过调试后保存工程。图6-20MDINotePad程序运行结果

图6-22弹出一个新的子窗体[练习]调用VisualBasic提供的MDI实例应用程序。(1)在VB文件夹下的Sample\Pguide\Mdi文件夹中打开Mdinote.vbp工程。(2)运行该应用程序,观察运行情况。(3)对程序中的“新建”、“关闭”、编辑命令、窗口及“工具栏”、“字体”等命令或功能进行操作,观察运行情况及效果。(

温馨提示

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

评论

0/150

提交评论