VB对话框与菜单程序设计_第1页
VB对话框与菜单程序设计_第2页
VB对话框与菜单程序设计_第3页
VB对话框与菜单程序设计_第4页
VB对话框与菜单程序设计_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

1、第第8章用户界面设计章用户界面设计 8.1对话框设计对话框设计8.2菜单设计菜单设计8.3多文档界面应用程序多文档界面应用程序对话框是一种特殊的对话框是一种特殊的“窗体窗体”,只有一个,只有一个“关闭关闭”按钮,按钮,不能最大化和最小化,大小一般不能改变。不能最大化和最小化,大小一般不能改变。一些应用程序中常常需要进行打开和保存文件、选择颜色一些应用程序中常常需要进行打开和保存文件、选择颜色和字体、打印等操作,这就需要应用程序提供相应的对和字体、打印等操作,这就需要应用程序提供相应的对话框以方便使用。这些对话框作为话框以方便使用。这些对话框作为windows资源,资源,在在vb中已被做成中已被

2、做成“公共对话框公共对话框”(common dialog)控件。控件。8.1对话框设计对话框设计8.1.1通用对话框通用对话框通用对话框是一种通用对话框是一种activex控件控件 ,位于,位于 “microsoft common dialog control 6.0”部件中。部件中。8.1对话框设计对话框设计工程工程部件部件 common dialog control 6.0 设计时,通用对话框在窗体上显示成一个图设计时,通用对话框在窗体上显示成一个图标,可以在标,可以在“属性页属性页”里中进行属性设置,将其里中进行属性设置,将其设置为不同类型,设置为不同类型,可以通过可以通过代码代码,使用

3、,使用action属性或属性或show方法方法,将,将通用对话框设置成不同的通用对话框设置成不同的具体对话框具体对话框。8.1对话框设计对话框设计8.1对话框设计对话框设计通过在代码中设置不同的通过在代码中设置不同的action值可以产生不同的对话值可以产生不同的对话框。如果没有设置该属性(默认值为框。如果没有设置该属性(默认值为0),运行时通用),运行时通用对话框不会产生任何信息,直到设置了该属性后才会出对话框不会产生任何信息,直到设置了该属性后才会出现相应的对话框。现相应的对话框。8.1对话框设计对话框设计action属性返回或设置被显示的对话框的类型:属性返回或设置被显示的对话框的类型:

4、commondialogname.action value其中其中commondialogname为通用对话框控件的名字,为通用对话框控件的名字,value值可以取值可以取16的整数,的整数, 其含义如表示。其含义如表示。 8.1对话框设计对话框设计注意:注意:使用该控件所产生的对话框仅提供了人使用该控件所产生的对话框仅提供了人-机信息机信息交互的交互的界面界面,并不能实现真正的操作(如打开、另存、,并不能实现真正的操作(如打开、另存、打印等),要想实现这些具体的操作必须进行打印等),要想实现这些具体的操作必须进行相应的编相应的编程程。 showx方法设置被显示的对话框的类型,其语方法设置被显

5、示的对话框的类型,其语法格式为:法格式为: 其中其中commondialogname为通用对话框控件的为通用对话框控件的名字。名字。showx方法参考表方法参考表8-1。 commondialogname.showx8.1对话框设计对话框设计dialogtitle属性:属性:产生的对话框的标题文字,如不产生的对话框的标题文字,如不进行设置则会使用默认的标题。进行设置则会使用默认的标题。cancelerror属性:属性:在每个所产生的对话框上都有在每个所产生的对话框上都有“取消取消”按钮,该属性决定程序运行时,用户单击按钮,该属性决定程序运行时,用户单击了了“取消取消”按钮后是否会产生出错信息。

6、按钮后是否会产生出错信息。8.1对话框设计对话框设计该属性取该属性取true时,单击时,单击“取消取消”按钮会产生一个错按钮会产生一个错误信息,同时自动将误信息,同时自动将err对象的对象的number属性值设置属性值设置为为32755。程序中可以通过代码来访问这个属性以判。程序中可以通过代码来访问这个属性以判断是否按下了断是否按下了“取消取消”按钮,以决定程序的走向。按钮,以决定程序的走向。如果该属性值置为如果该属性值置为false(默认),则当单击(默认),则当单击“取消取消”按钮时,不会产生任何出错信息。按钮时,不会产生任何出错信息。 “打开打开”对话框充分利用了操作系统的功能,它对话框

7、充分利用了操作系统的功能,它可以遍历整个的磁盘目录结构,找到所需要的文可以遍历整个的磁盘目录结构,找到所需要的文件,并以件,并以“列表列表”或或“详细资料详细资料”的方式显示出的方式显示出来。文件对话框具有两种模式,即来。文件对话框具有两种模式,即open和和save (save as),其中,其中open模式可以模式可以使用户指定打开使用户指定打开的文件的文件,save模式可以模式可以使用户指定保存的文件使用户指定保存的文件。1. 文件对话框文件对话框 action属性:对话框类型(取值属性:对话框类型(取值1或或2)defaultext属性:对话框默认的文件扩展名属性:对话框默认的文件扩展

8、名dialogtitle属性:对话框标题栏的字符串属性:对话框标题栏的字符串1. 文件对话框文件对话框 filename属性:属性:文件名称该属性值为字符串类型,用于设置或得到用户所选定的文件名。即当程序执行时,用户选定的某个文件名将显示在“文件名”文本框中,同时此文件名及相关路径将以字符串的形式赋值给filename属性。1. 文件对话框文件对话框 initdir属性:属性:初始路径该属性用来指定“打开”对话框中的初始目录。默认设置显示当前目录。初始路径在设计时或代码编写中均可进行设置。例:cd1.initdir=”e:教材”将对话框的初始路径设为e盘“教材”文件夹1. 文件对话框文件对话框

9、 filter属性:属性:文件类型通过filter属性在“打开”对话框中设置文件的类型。该属性的值是一个字符串,由一组或多组文件类型表达式构成,每组代表一类文件。构成规则是:类型说明字符串|类型通配表达式|类型说明字符串|类型通配表达式1. 文件对话框文件对话框 类型说明字符串为对文件类型的说明,类型通配表达式表示需显示的文件类型,各组之间用“|”符号分开。1. 文件对话框文件对话框 object.filterdescription1|filter1|description2|filter2 filterindes属性:属性:过滤器索引该属性用于表示用户在“文件类型”列表框中选定的文件类型的序

10、号。例如与图所示相对应,word文档的该属性值为1,文本文件的该属性值为2。1. 文件对话框文件对话框 设置适当属性,使对话框的标题为设置适当属性,使对话框的标题为“打开文件打开文件”,初始,初始目录为目录为c c盘盘根目录;根目录; 设置适当属性,使对话框的设置适当属性,使对话框的“文件类型文件类型”下拉式组合框下拉式组合框中有二行:中有二行:“wordword文档文档”、“所有文件所有文件”,默认的默认的是是“所有所有文件文件”; 编写命令按钮的事件过程,使得单击按钮可以弹出编写命令按钮的事件过程,使得单击按钮可以弹出“打打开文件开文件”对话框对话框;例例:在窗体上画一个名称为:在窗体上画

11、一个名称为command1command1的命令按钮,标题为的命令按钮,标题为”打开文件打开文件“,再画一个名称为,再画一个名称为cd1cd1的通用对话框。程序运行的通用对话框。程序运行后,若单击命令按钮,则弹出打开文件对话框,并按下列要后,若单击命令按钮,则弹出打开文件对话框,并按下列要求设置属性和代码:求设置属性和代码:思路: 首先,条件、是在对话框属性窗口上配置参数,可在对话框属性窗口内填写“对话框标题”、“初始化路径”的相应内容; 其次,过滤器的内容为:wordword文档文档| |* *.doc|.doc|所有文件所有文件| |* *. .* *;且根据题意,过滤器索引值设为2 2;

12、 另,条件是指编写代码,调用通用对话框,可采用如下程序代码: cd1.action=1cd1.action=1 或者 cd1.showopencd1.showopen 均可书本p232【例8.1】u建立一个命令按钮,用于打开一个建立一个命令按钮,用于打开一个windows应用程序,如应用程序,如“计计算器算器”、“日历日历”等。等。“另存为另存为”对话框为用户在存储文件时提供了一对话框为用户在存储文件时提供了一个标准界面,供用户选择或键入所要存入文件的个标准界面,供用户选择或键入所要存入文件的路径及文件名。路径及文件名。“另存为另存为”对话框所涉及的属性与对话框所涉及的属性与“打开打开”对话对

13、话框基本相同,只是多了一个框基本相同,只是多了一个defaultext属性,属性,该属性用来表示所存文件的默认扩展名。该属性用来表示所存文件的默认扩展名。2.另存为对话框另存为对话框 2. 颜色对话框颜色对话框 “颜色颜色”对话框中的调色板除了提供基本颜色外,还对话框中的调色板除了提供基本颜色外,还提供了自定义颜色,供用户调色。对用户来说,使提供了自定义颜色,供用户调色。对用户来说,使用该对话框,可以获得非常直观的效果。用该对话框,可以获得非常直观的效果。ucolor属性属性:用来返回选定的用来返回选定的rgb颜色值。颜色值。 2. 颜色对话框颜色对话框 例如,用例如,用颜色对话框改变窗体的背

14、景色颜色对话框改变窗体的背景色privatesubcommand2_click()commondialog1.cancelerror=falsecommondialog1.showcolorform1.backcolor=commondialog1.colorendsub “字体字体”对话框用来设置并返回所用字体的名字、对话框用来设置并返回所用字体的名字、字形、大小、效果及颜色。使用字体对话框时,字形、大小、效果及颜色。使用字体对话框时,必须必须首先设置对话框的首先设置对话框的flags属性属性,然后才能使用,然后才能使用showfont方法实际显示对话框。方法实际显示对话框。3. 字体对话框

15、字体对话框 flags属性值可以设置为如下属性值可以设置为如下3种情况:种情况: cdlcfscreenfonts:屏幕字体。:屏幕字体。 cdlcfprinterfonts:打印机字体。:打印机字体。 cdlcfboth:可以是屏幕字体,也可以是打印:可以是屏幕字体,也可以是打印机字体。机字体。 3. 字体对话框字体对话框 书本p235【例8.4】例:例:copys:设置或返回打印份数:设置或返回打印份数frompage:打印起始页:打印起始页topage:打印终止页:打印终止页printerdefault :确定在打印对话框中的选择:确定在打印对话框中的选择是否用于改变系统默认的打印机设置

16、。是否用于改变系统默认的打印机设置。4. 打印对话框打印对话框8.2.1菜单设计概述菜单设计概述菜单提供了一种结构化的方式向使用应用程序菜单提供了一种结构化的方式向使用应用程序的用户提示可用的命令。的用户提示可用的命令。菜单是菜单是windows应用程序中十分关键的要素之应用程序中十分关键的要素之一,以一,以分组的形式分组的形式组织多个命令或操作组织多个命令或操作。8.2菜单设计菜单设计8.2.1菜单设计概述菜单设计概述下拉式菜单下拉式菜单弹出式菜单弹出式菜单8.2菜单设计菜单设计8.2.2下拉式菜单设计下拉式菜单设计u下拉式菜单是用户在任下拉式菜单是用户在任何时候都可以在顶端菜单何时候都可以

17、在顶端菜单条上选择后拉出的菜单。条上选择后拉出的菜单。8.1菜单设计菜单设计8.2.2下拉式菜单设计下拉式菜单设计在在visual basic中,把每个菜单项看成是一个中,把每个菜单项看成是一个控件。菜单控件只包含一个事件,即控件。菜单控件只包含一个事件,即click事件。事件。8.2.2下拉式菜单设计下拉式菜单设计主菜单名主菜单名快捷键快捷键热键热键子菜单标记子菜单标记主菜单条主菜单条分隔线分隔线菜单项菜单项子菜单名子菜单名8.2菜单设计菜单设计8.2.2下拉式菜单设计下拉式菜单设计下拉式菜单的设计通过下拉式菜单的设计通过菜单编辑器菜单编辑器来完成。打来完成。打开菜单编辑器的方法:开菜单编辑

18、器的方法: “工具工具”菜单菜单菜单编辑器菜单编辑器 组合键组合键“ctrl+e”ctrl+e” 工具栏上的工具栏上的“菜单编辑器菜单编辑器”按钮按钮 鼠标右键鼠标右键菜单编辑器菜单编辑器8.2.2下拉式菜单设计下拉式菜单设计打开打开“菜单编辑器菜单编辑器”:“tools”菜单菜单 在在“工具栏工具栏”上选择上选择“菜单编辑器按钮菜单编辑器按钮”8.2.2下拉式菜单设计下拉式菜单设计“菜单编辑器菜单编辑器”的使用:的使用:菜单列表框菜单列表框菜单项属性菜单项属性 操作按钮操作按钮8.2.2下拉式菜单设计下拉式菜单设计关于下拉式菜单的说明关于下拉式菜单的说明1caption:菜单项标题。菜单项标

19、题。2name:菜单项名称。当通过代码处理菜单项时需菜单项名称。当通过代码处理菜单项时需要使用要使用name属性。属性。3热键:热键: 在菜单的在菜单的caption属性中在某个字母前加上属性中在某个字母前加上“&”符号就可以将该字母变为热键。当文件菜单展开符号就可以将该字母变为热键。当文件菜单展开时,同时按下时,同时按下alt和和o就可以选择就可以选择“打开打开”菜单命令。菜单命令。4shortcut:快捷键,快捷键, 不用打开不用打开“文件文件”菜单就可菜单就可以通过以通过ctrl+o快捷键来选择快捷键来选择“打开打开”菜单命令。菜单命令。“打打开开”菜单项的快捷键为菜单项的快捷键

20、为ctrl+o。5分隔条分隔条:将菜单按功能进行分组。通过将:将菜单按功能进行分组。通过将caption属性设置为属性设置为“-”(减号、连字符)可以将菜单项设置为(减号、连字符)可以将菜单项设置为分隔条。分隔条。6有效有效(enabled)检查框检查框:当某个菜单项的颜色变为:当某个菜单项的颜色变为灰色时表示该菜单项的功能被禁用。将菜单项的灰色时表示该菜单项的功能被禁用。将菜单项的enabled属性设置为属性设置为false就可以禁用该菜单项。就可以禁用该菜单项。7可见可见(visible)检查框检查框:通过将菜单项的:通过将菜单项的visible属属性设置为性设置为false可以隐藏该菜单

21、项,而要重新显示该菜可以隐藏该菜单项,而要重新显示该菜单项仅需将单项仅需将visible属性重新设置为属性重新设置为true。8复选复选(checked)检查框检查框:通过将菜单项的:通过将菜单项的checked属性设置为属性设置为true可以在菜单项前显示复选标可以在菜单项前显示复选标志。志。1. 利用菜单编辑器定义菜单项利用菜单编辑器定义菜单项 例:为电子标题板增加一个下拉式菜单,利用菜单控制标题板的内容、字号、字体风格等。设计菜单项:例:使用菜单控件数组:n简化编程,用一段代码处理多个菜单项弹出式菜单独立于菜单栏而显示在窗体的浮动菜单弹出式菜单独立于菜单栏而显示在窗体的浮动菜单,操作时使

22、用右键。,操作时使用右键。在弹出式菜单上显示的在弹出式菜单上显示的内容与鼠标位置有关内容与鼠标位置有关。8.2.3弹出式菜单设计弹出式菜单设计 与一般菜单的设计相似,弹出式菜单通过菜与一般菜单的设计相似,弹出式菜单通过菜单编辑器建立。不同的是菜单名的单编辑器建立。不同的是菜单名的 visible属性设属性设置为置为false,或者在菜单编辑器中不选中,或者在菜单编辑器中不选中“可见可见”复选框。复选框。8.2.3弹出式菜单设计弹出式菜单设计语法格式:窗体名.popupmenu菜单名菜单名,flags,x,y说明:n省略窗体名,将打开当前窗体的菜单;n菜单名是通过菜单编辑器设计的菜单的名称nfl

23、ags参数为一些常量数值的设置,包含位置常数和行为常数,表示弹出的位置和触发的键位置。8.2.3弹出式菜单设计弹出式菜单设计内部常数内部常数位置常数位置常数说明说明vbpopupmenuleftalign0(默认默认)弹出菜单的左上角位于弹出菜单的左上角位于xvbpopupmenucenteralign4弹出菜单上框中央位于弹出菜单上框中央位于xvbpopupmenurightalign8弹出菜单的右上角位于弹出菜单的右上角位于x8.2.3弹出式菜单设计弹出式菜单设计内部常数内部常数行为常数行为常数说明说明vbpopupmenuleftbutton0(默认默认)菜单只接受右键单击菜单只接受右键

24、单击vbpopupmenurightbutton2菜单接受左、右键单击菜单接受左、右键单击两个常数可以相加或者以两个常数可以相加或者以or相连相连 8.2.3弹出式菜单设计弹出式菜单设计50例为窗体设计一个弹出式菜单,用于设置窗体例为窗体设计一个弹出式菜单,用于设置窗体背景颜色。背景颜色。 51例例 在窗体上添加一个文本框,通过下拉菜单实在窗体上添加一个文本框,通过下拉菜单实现复制、粘贴功能现复制、粘贴功能 点击“右键”显示菜单项的时候,应先判断文本框中是否有文本被选中,确定哪些菜单项可用。if text1.sellength 0 then mnueditcut.enabled = true

25、mnueditcopy.enabled = true else mnueditcut.enabled = false mnueditcopy.enabled = false(1)剪贴板对象clipboard 剪贴板是内存的一部分区域,所有应用程序都能使用剪贴板中的信息。在vb中,所有与剪贴板有关的操作是通过剪贴板对象实现的。 剪贴板对象是用于暂时保存图形和文本的一种特殊的控件,它是vb中预先定义好的控件组。 剪贴板对象没有任何属性和事件,但通过它的一些方法可以提供对系统剪贴板的访问(即发送和接收数据)。 剪贴板对象的方法clipboard.clear 将剪贴板清空clipboard.sette

26、xt text1.seltext 将选中的字符串复制到剪贴板clipboard.setdata data,format 将非文本数据复制到剪贴板上clipboard.gettext 将剪贴板上的字符串发送到光标所在位置clipboard.getdata 将剪贴板上的非文本数据发送到光标所在位置privatesubmnueditcut_click()iftext1.sellength0thenclipboard.settexttext1.seltexttext1.seltext=同时要让粘贴菜单项有效mnueditpaste.enabled=trueendifendsubtext1.seltex

27、t表示文本框中选定的文本text1.sellength表示文本框中选定文本的长度privatesubmnueditcopy_click()iftext1.sellength0thenclipboard.settexttext1.seltextmnueditpaste.enabled=trueendifendsub复制与剪切的区别是text1.seltext=同时要让粘贴菜单项有效privatesubmnueditpaste_click()iflen(clipboard.gettext)0thentext1.seltext=clipboard.gettextendifendsub注意:text1

28、.seltext=clipboard.gettext 和 text1.text=clipboard.gettext的区别 (在光标所在位置处插入剪贴板上的数据)privatesubmnueditsel_click()ifmnueditsel.checked=falsethenmnueditsel.checked=truetext1.selstart=0text1.selstart表示文本框中选定文本的开始位置text1.sellength=len(text1.text)elsemnueditsel.checked=falsetext1.sellength=0endifendsubtext1.t

29、ext:表示文本框中的文本text1.seltext:表示文本框中选定的文本text1.sellength:表示文本框中选定文本的长度text1.selstart:表示文本框中选定文本的开始位置综合实例:综合实例:参照参照windows的记事本程序,建立一个有的记事本程序,建立一个有菜单功能的文本编辑器菜单功能的文本编辑器8.3mdi窗体 mdi窗体允许创建在单个容器窗体中包含多个窗体允许创建在单个容器窗体中包含多个窗体的应用程序,允许用户同时显示多个文档,每个窗体的应用程序,允许用户同时显示多个文档,每个文档显示在它自己的窗体中。文档显示在它自己的窗体中。mdi窗体是有父子关窗体是有父子关系

30、的窗体,可以根据窗体作用的不同,来确定窗体是系的窗体,可以根据窗体作用的不同,来确定窗体是父窗体还是子窗体。文档或子窗体被包含在父窗体中父窗体还是子窗体。文档或子窗体被包含在父窗体中,父窗体为应用程序中所有的子窗体提供工作空间,父窗体为应用程序中所有的子窗体提供工作空间,用户在父窗体完成几乎所有的工作。用户在父窗体完成几乎所有的工作。8.3mdi窗体例:例: microsoft excel 允许创建并显示不同样式的多文允许创建并显示不同样式的多文档窗体,每个子窗体都被限制在档窗体,每个子窗体都被限制在 excel 父窗体的区域父窗体的区域之内。当最小化之内。当最小化 excel父窗体时,所有的

31、文档窗体都父窗体时,所有的文档窗体都被最小化,只有父窗体的图标显示在任务栏中。当关被最小化,只有父窗体的图标显示在任务栏中。当关闭闭excel父窗体时,所有的文档窗体都被关闭,但关父窗体时,所有的文档窗体都被关闭,但关闭某个文档窗口时,闭某个文档窗口时,excel父窗体不会被关闭。父窗体不会被关闭。8.3mdi窗体 具体什么时候选用单窗体程序,什么时候使用多重窗体具体什么时候选用单窗体程序,什么时候使用多重窗体或或mdi窗体呢?这需要根据应用程序的目的,来决定使用哪窗体呢?这需要根据应用程序的目的,来决定使用哪种界面样式最好。种界面样式最好。例:例: 日历程序最好设成单窗体程序,因为没有必要同

32、时打开一个日历程序最好设成单窗体程序,因为没有必要同时打开一个以上日历;以上日历;8.3mdi窗体一个处理保险索赔的应用程序可能要设计成mdi窗体,使用多文档界面样式,因为一个职员很可能会同时处理一个以上索赔,或者需要对两个索赔进行比较;一个管理信息系统(mis系统),需要完成的功能比较多,比如最基本的功能添加、修改、删除和查询记录添加、修改、删除和查询记录等,这些功能的实现都需要窗体界面,而这些窗体一般都是并列使用,所以像学生成绩管理系统这样的应用程序,一般设计成多重窗体程序多重窗体程序。8.3mdi窗体8.3mdi窗体程序设计1mdi窗体特性2创建mdi应用程序3mdi窗体及子窗体4mdi

33、窗体的菜单 mdi窗体程序由父窗口和子窗口组成窗体程序由父窗口和子窗口组成,父窗口又称为,父窗口又称为mdi窗体,它被作为子窗窗体,它被作为子窗口的容器。子窗口又称为文档窗口,它用于口的容器。子窗口又称为文档窗口,它用于显示各个文档,所有的子窗口都具有相同的显示各个文档,所有的子窗口都具有相同的功能。功能。1mdi窗体特性在运行时,mdi窗体及其所有的子窗体都呈现特定的性质:(1)所有子窗体均显示在mdi窗体的工作空间内。像其它的窗体一样,用户能移动子窗体和改变子窗体的大小,不过,它们被限制于这一工作空间内。1mdi窗体特性在运行时,mdi窗体及其所有的子窗体都呈现特定的性质:(2)当最小化一

34、个子窗体时,它的图标将显示于mdi窗体上而不是在任务栏中。当最小化mdi窗体时,此mdi窗体及其所有子窗体将由一个图标来代表。当还原mdi窗体时,mdi窗体及其所有子窗体将按最小化之前的状态显示出来。(3)当最大化一个子窗体时,它的标题会与mdi窗体的标题组合在一起并显示于mdi窗体的标题栏上。(4)通过设定autoshowchildren属性,子窗体可以在窗体加载时自动显示(true)或自动隐藏(false)。1mdi窗体特性(5)活动子窗体的菜单(若有)将显示在mdi窗体的菜单栏中,而不是显示在子窗体中。mdi窗体程序在所谓的“以文档为中心的应用”中特别有用,在这种应用程序中,通常同时使用

35、多个窗口来显示或编辑文档。1mdi窗体特性2创建mdi应用程序前面已经学习过,可以通过“添加窗体”对话框添加窗体,但这不是mdi窗体,只是多个普通窗体而已。如果创建一个mdi窗体应用程序,可以按以下步骤执行:(1)在“工程”菜单中单击“添加mdi窗体”菜单项,可以创建mdi应用程序的父窗体。2创建mdi应用程序注意,一个应用程序只能有一个一个mdi窗体,如果工程已经有了一个mdi窗体,则该“工程”菜单上的“添加mdi窗体”命令就不可使用。mdi应用程序的父窗体是子窗体的容器子窗体的容器,在该窗体中可以有菜单栏、工具栏、状态栏等,但不可以有文本框等控件。菜单栏、工具栏的建立我们在后面几节中介绍。

36、(2)如果要创建子窗体,首先在“工程”菜单中单击“添加窗体”菜单项,创建一个普通的窗体,然后将该窗体的mdichild 属性设为属性设为true。一个应用程序可以包含许多相似或者不同样式的mdi子窗体,若要建立多个子窗体,则重复上述操作就可以了。2创建mdi应用程序创建以文档为中心的应用程序,一般要求在运行时运行时能提供若干子窗体以存取不同的文档,而在设计时事先创建好若干个子窗体的方法是不可取的。一般是先创建一个子窗体作为这个应用程序文档的模板,然后通过对象变量来实现。2创建mdi应用程序例假设已经建立了一个名称为“frmmdichild”的子窗体模板,则使用下面的语句:dimnewdocas

37、newfrmmdichild就会为“frmmdichild”建立一个新的实例newdoc,新实例具有与“frmmdichild”窗体相同的属性、控件和代码。2创建mdi应用程序在运行时,子窗体显示在mdi父窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。在设计时,子窗体不是限制在mdi窗体区域之内,可以添加控件、设置属性、编写代码以及设计子窗体功能,就像在其它visualbasic窗体中做的那样。2创建mdi应用程序通过查看mdichild属性或者检查工程资源管理器,可以确定窗体是否是一个mdi子窗体。visualbasic在“工程资源管理器”中为mdi窗体与mdi子窗体显示了特

38、定的图标,如下图所示。2创建mdi应用程序“工程资源管理器”中的mdi窗体、mdi子窗体和标准窗体例8.73mdi窗体及子窗体(1)加载mdi窗体及子窗体加载子窗体时,其父窗体(mdi窗体)会自自动动加载并显示。而加载mdi窗体时,其子窗体并不会自动加载。子窗体是缺省的启动窗体,因而在程序运行时,子窗体和mdi窗体两者都会加载。mdi窗体有autoshowchildren属性,决定是否自动显示子窗体。如果该属性被设置为true,则当改变子窗体的属性(如caption等)后,会自动显示该子窗体,不再需要使用show方法;3mdi窗体及子窗体如果设置该属性为false,则改变子窗体的属性值后,不会

39、自动显示该子窗体,子窗体处于隐藏状态,直至用show方法把它们显示出来。这就允许在子窗体变成可见之前更新标题、位置和菜单等各种细节。3mdi窗体及子窗体(2)设置子窗体的大小和位置如果mdi子窗体具有大小可变的边框即borderstyle=2,在其加载时,windows将决定其初始的高度、宽度和位置。边框大小可变的子窗体,其初边框大小可变的子窗体,其初始大小与位置取决于始大小与位置取决于 mdi 窗体的大小窗体的大小,而不是设计时子窗体的大小。当mdi子窗体的边框大小不可变(即borderstyle=0、1或3)时,则它将用设计时的height和width属性被载入。3mdi窗体及子窗体(2)

40、设置子窗体的大小和位置如果设置autoshowchildren为false,则在mdi子窗体载入以后,把它设为可见状态之前,可以改变其大小和位置。3mdi窗体及子窗体定位窗体的代码最好放在窗体的窗体的load过程中,这样会在窗体实际出现在屏幕上之前将窗体位置确定。要将窗体居中,需要在窗体的load过程中简单地添加代码来计算并指定窗体左上角的位置3mdi窗体及子窗体如下列代码所示:me.left=(screen.width-me.width)/2me.top=(screen.height-me.height)/2利用坐标系统可以将窗体定位于屏幕或mdi窗体的任意位置。3mdi窗体及子窗体(3)m

41、di窗体程序子窗体的排列顺序和方式在mdi应用程序中,缺省状态下子窗体是按照窗口打开的打开的顺序排列的:当前活动窗体排在最前端,最先打开的窗体排在最底端。我们可以借助zorder方法动态地改变子窗体的排列顺序。3mdi窗体及子窗体(3)mdi窗体程序子窗体的排列顺序和方式zorder方法的语法为:窗体名称.zorderposition其中,position取值为0时表示对象移至最前端,为1时表示对象移至最底端,缺省时值为0。3mdi窗体及子窗体(3)mdi窗体程序子窗体的排列顺序和方式例如,某一mdi应用程序有三个子窗体:form1、form2和form3,若要将form3移至最底端,则可在设

42、计代码时加上form3.zorder1即可。3mdi窗体及子窗体利用zorder方法我们也可以创建浮动窗体,浮动窗体总是浮动到表面,也就是说它可以被其他窗体覆盖,但马上自动自动变成当前窗口并显示在所有窗体的最上层。3mdi窗体及子窗体要创建浮动窗体,需要在窗体上添加一个定时器控件,并将它的interval属性设置为想让窗体浮现的时间,如500毫秒。在timer1_timer事件过程中编写如下代码,便可以使用zorder方法使窗体浮动到顶部:privatesubtimer1_timer()zorderendsub3mdi窗体及子窗体使用过word的用户都知道,word可同时打开多个文档,并能以不

43、同方式对文档窗口进行排列,如平铺、层叠等。这种重新排列子窗体的功能,在mdi应用程序中是可以通过编程来实现的。具体方法就是在相应的菜单控件的click事件中调用arrange方法,使用arrange方法可以重新对齐子窗体,可以层叠、水平平铺或者沿着mdi窗体的下部排列子窗体图标等方式来显示子窗体。3mdi窗体及子窗体arrange方法的语法为:mdi窗体对象.arrangearrangement其中,arrangement用来指定如何排列mdi应用程序的子窗体,其值可以是常数或是数值,arrangement的取值如下表所示。3mdi窗体及子窗体表 arrangement的取值常数值描述vbca

44、scade0层叠所有非最小化mdi子窗体vbtilehorizontal1水平平铺所有非最小化mdi子窗体vbtilevertical2垂直平铺所有非最小化mdi子窗体vbarrangeicons3重排最小化mdi子窗体的图标3mdi窗体及子窗体例如:若“平铺”菜单项名为mnuhorizon,可编写如下代码,实现子窗体的平铺:privatesubmnuhorizon_click()mdiform1.arrangevbtilehorizontalmdiform1为mdi窗体名称endsub3mdi窗体及子窗体当平铺或者层叠有着固定边框类型的子窗体时,每个子窗体都像具有可变尺寸边框那样被定位,这使得子窗体可能重叠可能重叠。即使mdi窗体被最小化,仍可以重新排列窗口和图标,当mdi窗体最大化时,可以看到重排的结果。3mdi窗体及子窗体(4)维护子窗体的状态信息当子窗体被卸载时,其中的内容也会随之消失,所以在用户决定退出mdi应用程序时,必须有保存信息保存信息的机会,让用户执行存盘操作,这样才能确保数据不会丢失。当数据没有改变而去存盘是没有

温馨提示

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

评论

0/150

提交评论