VB对话框与菜单程序设计

上传人:lx****y 文档编号:242972807 上传时间:2024-09-13 格式:PPT 页数:107 大小:788KB
返回 下载 相关 举报
VB对话框与菜单程序设计_第1页
第1页 / 共107页
VB对话框与菜单程序设计_第2页
第2页 / 共107页
VB对话框与菜单程序设计_第3页
第3页 / 共107页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第,8,章用户界面设计,8,.1对话框设计,8,.2,菜单设计,8,.3,多文档界面应用程序,1,对话框是一种特殊的“窗体”,只有一个“关闭”按钮,不能最大化和最小化,大小一般不能改变。,一些应用程序中常常需要进行打开和保存文件、选择颜色和字体、打印等操作,这就需要应用程序提供相应的对话框以方便使用。这些对话框作为,Windows,资源,在,VB,中已被做成“公共对话框”,(Common Dialog),控件。,8.1,对话框设计,2,8.1.1,通用对话框,通用对话框是一种,ActiveX,控件 ,位于 “,Microsoft Common Dialog Control 6.0”,部件中。,8.1,对话框设计,工程,部件,Common Dialog Control 6.0,3,4,设计时,通用对话框在窗体上显示成一个图标,可以在,“属性页”,里中进行属性设置,将其设置为不同类型,,可以通过,代码,,使用,Action,属性或,Show,方法,,将通用对话框设置成不同的,具体对话框,。,8.1,对话框设计,5,8.1,对话框设计,通过在代码中设置不同的,Action,值可以产生不同的对话框。如果没有设置该属性(默认值为,0,),运行时通用对话框不会产生任何信息,直到设置了该属性后才会出现相应的对话框。,6,8.1,对话框设计,Action,属性返回或设置被显示的对话框的类型:,CommonDialogName.Action ,Value,其中,CommonDialogName,为通用对话框控件的名字,,Value,值可以取,1,6,的整数, 其含义如表示。,7,8.1,对话框设计,注意:,使用该控件所产生的对话框仅提供了人,-,机信息交互的,界面,,并不能实现真正的操作(如打开、另存、打印等),要想实现这些具体的操作必须进行,相应的编程,。,8,Show,X,方法设置被显示的对话框的类型,其语法格式为:,其中,CommonDialogName,为通用对话框控件的名字。,ShowX,方法参考表,8-1,。,CommonDialogName.ShowX,9,8.1,对话框设计,DialogTitle,属性:,产生的对话框的标题文字,如不进行设置则会使用默认的标题。,CancelError,属性:,在每个所产生的对话框上都有“取消”按钮,该属性决定程序运行时,用户单击了“取消”按钮后是否会产生出错信息。,10,8.1,对话框设计,该属性取,True,时,单击“取消”按钮会产生一个错误信息,同时自动将,Err,对象的,Number,属性值设置为,32755,。程序中可以通过代码来访问这个属性以判断是否按下了“取消”按钮,以决定程序的走向。如果该属性值置为,False,(默认),则当单击“取消”按钮时,不会产生任何出错信息。,11,“打开”对话框充分利用了操作系统的功能,它可以遍历整个的磁盘目录结构,找到所需要的文件,并以“列表”或“详细资料”的方式显示出来。文件对话框具有两种模式,即,Open,和,Save (Save As),,其中,Open,模式可以,使用户指定打开的文件,,,Save,模式可以,使用户指定保存的文件,。,1.,文件对话框,12,Action,属性:对话框类型(取值,1,或,2,),DefaultExt,属性:对话框默认的文件扩展名,DialogTitle,属性:对话框标题栏的字符串,1.,文件对话框,13,属性:,文件名称,该属性值为字符串类型,用于设置或得到用户所选定的文件名。即当程序执行时,用户选定的某个文件名将显示在“文件名”文本框中,同时此文件名及相关路径将以字符串的形式赋值给,属性。,1.,文件对话框,14,InitDir,属性:,初始路径该属性用来指定“打开”对话框中的,初始目录,。默认设置显示当前目录。初始路径在设计时或代码编写中均可进行设置。,例:,Cd1.InitDir=”E:,教材” 将对话框的初始路径设为,E,盘“教材”文件夹,1.,文件对话框,15,Filter,属性:,文件类型通过,Filter,属性在“打开”对话框中设置文件的类型。该属性的值是一个字符串,由一组或多组文件类型表达式构成,每组代表一类文件。构成规则是:,类型说明字符串,|,类型通配表达式,|,类型说明字符串,|,类型通配表达式,1.,文件对话框,16,类型说明字符串为对文件类型的说明,类型通配表达式表示需显示的文件类型,各组之间用“,|”,符号分开。,1.,文件对话框,Object.Filter,Description1|Filter1|Description2|Filter2,17,FilterIndes,属性:,过滤器索引该属性用于表示用户在“文件类型”列表框中选定的文件类型的序号。例如与图所示相对应,,Word,文档的该属性值为,1,,文本文件的该属性值为,2,。,1.,文件对话框,18,设置适当属性,使对话框的标题为,“,打开文件,”,,初始目录为,c,盘,根目录;,设置适当属性,使对话框的,“,文件类型,”,下拉式组合框中有二行:“,Word,文档”、“所有文件”,,默认的,是“所有文件”;,编写命令按钮的事件过程,使得单击按钮可以弹出,“,打开文件,”,对话框,;,例,:在窗体上画一个名称为,command1,的命令按钮,标题为,”,打开文件,“,,再画一个名称为,CD1,的通用对话框。程序运行后,若单击命令按钮,则弹出打开文件对话框,并按下列要求设置属性和代码:,19,思路:,首先,条件、是在对话框属性窗口上配置参数,可在对话框属性窗口内填写,“,对话框标题,”,、,“,初始化路径,”,的相应内容;,其次,过滤器的内容为:,Word,文档,|*.doc|,所有文件,|*.*,;且根据题意,过滤器索引值设为,2,;,另,条件是指编写代码,调用通用对话框,可采用如下程序代码:,cd1.action=1,或者,cd1.showopen,均可,20,书本,P232 【,例,8.1】,21,建立一个命令按钮,用于打开一个,Windows,应用程序,如“计算器”、“日历”等。,22,“另存为”对话框为用户在存储文件时提供了一个标准界面,供用户选择或键入所要存入文件的路径及文件名。“另存为”对话框所涉及的属性与“打开”对话框基本相同,只是多了一个,DefaultExt,属性,该属性用来表示所存文件的默认扩展名。,2.,另存为对话框,23,2.,颜色对话框,“颜色”对话框中的调色板除了提供基本颜色外,还提供了自定义颜色,供用户调色。对用户来说,使用该对话框,可以获得非常直观的效果。,Color,属性,:,用来返回选定的,RGB,颜色值。,24,2.,颜色对话框,例如,用,颜色对话框改变窗体的背景色,Private Sub Command2_Click(),Commondialog1.CancelError=false,CommonDialog1.ShowColor,Form1.BackColor = CommonDialog1.Color,End Sub,25,“字体”对话框用来设置并返回所用字体的名字、字形、大小、效果及颜色。使用字体对话框时,必须,首先设置对话框的,Flags,属性,,然后才能使用,ShowFont,方法实际显示对话框。,3.,字体对话框,26,Flags,属性值可以设置为如下,3,种情况:,cdlCFScreenFonts,:屏幕字体。,cdlCFPrinterFonts,:打印机字体。,cdlCFBoth,:可以是屏幕字体,也可以是打印机字体。,3.,字体对话框,27,书本,P235 【,例,8.4】,28,例:,29,Copys,:设置或返回打印份数,FromPage,:打印起始页,ToPage,:打印终止页,PrinterDefault,:确定在打印对话框中的选择是否用于改变系统默认的打印机设置。,4.,打印对话框,30,8.2.1,菜单设计概述,菜单提供了一种结构化的方式向使用应用程序的用户提示可用的命令。,菜单是,Windows,应用程序中十分关键的要素之一,以,分组的形式,组织多个命令或操作。,8.2,菜单设计,31,8.2.1,菜单设计概述,下拉式菜单,弹出式菜单,8.2,菜单设计,32,8.2.2,下拉式菜单设计,下拉式菜单是用户在任何时候都可以在顶端菜单条上选择后拉出的菜单。,33,8.1,菜单设计,8.2.2,下拉式菜单设计,在,Visual Basic,中,把每个菜单项看成是一个控件。菜单控件只包含一个事件,即,Click,事件。,34,8.2.2,下拉式菜单设计,主菜单名,快捷键,热键,子菜单标记,主菜单条,分隔线,菜单项,子菜单名,35,8.2,菜单设计,8.2.2,下拉式菜单设计,下拉式菜单的设计通过,菜单编辑器,来完成。打开菜单编辑器的方法:,“,工具”菜单,菜单编辑器, 组合键“,Ctrl+E”,工具栏上的“,菜单编辑器,”按钮, 鼠标右键,菜单编辑器,36,8.2.2,下拉式菜单设计,打开“菜单编辑器”:,“,Tools,”菜单 在“工具栏”上选择“菜单编辑器按钮”,37,8.2.2,下拉式菜单设计,“菜单编辑器”的使用:,菜单列表框,菜单项属性,操作按钮,38,8.2.2,下拉式菜单设计,关于下拉式菜单的说明,1,Caption,:,菜单项标题。,2,Name,:,菜单项名称。当通过代码处理菜单项时需要使用,Name,属性。,3,热键:,在菜单的,Caption,属性中在某个字母前加上“,&,”符号就可以将该字母变为热键。当文件菜单展开时,同时按下,Alt,和,O,就可以选择“打开”菜单命令。,4,ShortCut,:,快捷键, 不用打开“文件”菜单就可以通过,Ctrl+O,快捷键来选择“打开”菜单命令。“打开”菜单项的快捷键为,Ctrl+O,。,39,5,分隔条,:将菜单按功能进行分组。通过将,Caption,属性设置为“,-,”(减号、连字符)可以将菜单项设置为分隔条。,6,有效,(Enabled),检查框,:当某个菜单项的颜色变为灰色时表示该菜单项的功能被禁用。将菜单项的,Enabled,属性设置为,False,就可以禁用该菜单项。,7,可见,(Visible),检查框,:通过将菜单项的,Visible,属性设置为,False,可以隐藏该菜单项,而要重新显示该菜单项仅需将,Visible,属性重新设置为,True,。,8,复选,(Checked),检查框,:通过将菜单项的,Checked,属性设置为,True,可以在菜单项前显示复选标志。,40,1.,利用菜单编辑器定义菜单项,例:,为电子标题板增加一个下拉式菜单,利用菜单控制标题板的内容、字号、字体风格等。,41,设计菜单项:,42,例:使用,菜单控件数组,:,简化编程,用一段代码处理多个菜单项,43,弹出式菜单独立于菜单栏而显示在窗体的浮动菜单,操作时使用右键。,在弹出式菜单上显示的,内容与鼠标位置有关,。,8.2.3,弹出式菜单设计,44,与一般菜单的设计相似,弹出式菜单通过菜单编辑器建立。不同的是菜单名的,Visible,属性设置为,False,,或者在菜单编辑器中不选中“可见”复选框。,8.2.3,弹出式菜单设计,45,语法格式:,窗体名,.PopupMenu,菜单名, flags, x, y,说明,:,省略窗体名,将打开当前窗体的菜单,;,菜单名是通过,菜单编辑器,设计的菜单的名称,Flags,参数为一些常量数值的设置,包含位置常数和行为常数,表示弹出的位置和触发的键位置。,8.2.3,弹出式菜单设计,46,内部常数,位置常数,说明,vbPopupMenuLeftAlign,0(,默认,),弹出菜单的左上角位于,X,vbPopupMenuCenterAlign,4,弹出菜单上框中央位于,X,vbPopupMenuRightAlign,8,弹出菜单的右上角位于,X,8.2.3,弹出式菜单设计,47,内部常数,行为常数,说明,vbPopupMenuLeftButton,0(,默认,),菜单只接受右键单击,vbPopupMenuRightButton,2,菜单接受左、右键单击,两个常数可以相加或者以,or,相连,8.2.3,弹出式菜单设计,48,例为窗体设计一个弹出式菜单,用于设置窗体背景颜色。,实例,49,例,在窗体上添加一个文本框,通过下拉菜单实现复制、粘贴功能,实例,50,点击,“右键”显示,菜单项的时候,应先判断文本框中是否有文本被选中,确定哪些菜单项可用。,If Text1.SelLength 0 Then,mnuEditCut.Enabled = True,mnuEditCopy.Enabled = True,Else,mnuEditCut.Enabled = False,mnuEditCopy.Enabled = False,51,(,1,)剪贴板对象,Clipboard,剪贴板是内存的一部分区域,所有应用程序都能使用剪贴板中的信息。在,VB,中,所有与剪贴板有关的操作是通过,剪贴板对象,实现的。,剪贴板对象是用于暂时保存图形和文本的一种特殊的控件,它是,VB,中预先定义好的控件组。,剪贴板对象没有任何属性和事件,但通过它的一些方法可以提供对系统剪贴板的访问(即发送和接收数据)。,52,剪贴板对象的方法,Clipboard.Clear,将剪贴板清空,Clipboard.SetText Text1.SelText,将选中的,字符串,复制到剪贴板,Clipboard.SetData Data,Format,将,非文本数据,复制到剪贴板上,Clipboard.GetText,将剪贴板上的,字符串,发送到光标所在位置,Clipboard.GetData,将剪贴板上的,非文本数据,发送到光标所在位置,53,Private Sub mnuEditCut_Click(),If Text1.SelLength 0 Then,Clipboard.SetText,Text1.SelText,Text1.SelText = ,同时要让粘贴菜单项有效,mnuEditPaste.Enabled = True,End If,End Sub, Text1.SelText,表示文本框中选定的文本,Text1.SelLength,表示文本框中选定文本的长度,54,Private Sub mnuEditCopy_Click(),If Text1.SelLength 0 Then,Clipboard.SetText Text1.SelText,mnuEditPaste.Enabled = True,End If,End Sub,复制与剪切的区别是,Text1.SelText = ,同时要让粘贴菜单项有效,55,Private Sub mnuEditPaste_Click(),If Len(Clipboard.GetText) 0 Then,Text1.SelText = Clipboard.GetText,End If,End Sub,注意:,Text1.SelText=Clipboard.GetText,和,Text1.Text=Clipboard.GetText,的区别,(在光标所在位置处插入剪贴板上的数据),56,Private Sub mnuEditSel_Click(),If mnuEditSel.Checked = False Then,mnuEditSel.Checked = True,Text1.SelStart = 0, Text1.SelStart,表示文本框中选定文本的开始位置,Text1.SelLength = Len(Text1.Text),Else,mnuEditSel.Checked = False,Text1.SelLength = 0,End If,End Sub,57,Text1.Text,:表示文本框中的文本,Text1.SelText,:表示文本框中选定的文本,Text1.SelLength,:表示文本框中选定文本的长度,Text1.SelStart,:表示文本框中选定文本的开始位置,58,综合实例:,参照,WINDOWS,的记事本程序,建立一个有菜单功能的文本编辑器,59,8.3 MDI,窗体,多重窗体是指一个应用程序中有多个并列的,普通窗体,,每个窗体都是一个对象,可以有属于自己的对象、属性和事件过程,完成不同的功能。,MDI,窗体,是指一个应用程序(父窗体)中包含多个文档(子窗体),绝大多数基于,Windows,的大型应用程序都是,MDI,窗体,如,Microsoft,Excel,和,Microsoft Word,等应用程序都是,MDI,窗体程序。,MDI,窗体可以同时打开多个文档,它简化了文档之间的信息交换。,60,MDI,窗体允许创建在单个容器窗体中包含多个窗体的应用程序,允许用户同时显示多个文档,每个文档显示在它自己的窗体中。,MDI,窗体是有父子关系的窗体,可以根据窗体作用的不同,来确定窗体是父窗体还是子窗体。文档或子窗体被包含在父窗体中,父窗体为应用程序中所有的子窗体提供工作空间,用户在父窗体完成几乎所有的工作。,8.3 MDI,窗体,61,例:,Microsoft Excel,允许创建并显示不同样式的多文档窗体,每个子窗体都被限制在,Excel,父窗体的区域之内。当最小化,Excel,父窗体时,所有的文档窗体都被最小化,只有父窗体的图标显示在任务栏中。当关闭,Excel,父窗体时,所有的文档窗体都被关闭,但关闭某个文档窗口时,,Excel,父窗体不会被关闭。,8.3 MDI,窗体,62,具体什么时候选用单窗体程序,什么时候使用多重窗体或,MDI,窗体呢?这需要根据应用程序的目的,来决定使用哪种界面样式最好。,例:,日历程序最好设成单窗体程序,因为没有必要同时打开一个以上日历;,8.3 MDI,窗体,63,一个处理保险索赔的应用程序可能要设计成,MDI,窗体,,使用多文档界面样式,因为一个职员很可能会同时,处理一个以上索赔,,或者需要对两个索赔进行比较;,一个管理信息系统(,MIS,系统),需要完成的功能比较多,比如最基本的功能,添加、修改、删除和查询记录,等,这些功能的实现都需要窗体界面,而这些窗体一般都是并列使用,所以像学生成绩管理系统这样的应用程序,一般设计成,多重窗体程序,。,8.3 MDI,窗体,64,8.3 MDI窗体程序设计,1 MDI,窗体特性,2,创建,MDI,应用程序,3 MDI,窗体及子窗体,4 MDI,窗体的菜单,65,MDI,窗体程序由父窗口和子窗口组成,父窗口又称为,MDI,窗体,它被作为子窗口的容器。子窗口又称为文档窗口,它用于显示各个文档,所有的子窗口都具有相同的功能。,66,1 MDI窗体特性,在运行时,,MDI,窗体及其所有的子窗体都呈现特定的性质:,(,1,)所有子窗体均显示在,MDI,窗体的工作空间内。像其它的窗体一样,用户能移动子窗体和改变子窗体的大小,不过,它们被限制于这一工作空间内。,67,1 MDI窗体特性,在运行时,,MDI,窗体及其所有的子窗体都呈现特定的性质:,(,2,)当最小化一个子窗体时,它的图标将显示于,MDI,窗体上而不是在任务栏中。当最小化,MDI,窗体时,此,MDI,窗体及其所有子窗体将由一个图标来代表。当还原,MDI,窗体时,,MDI,窗体及其所有子窗体将按最小化之前的状态显示出来。,68,(,3,)当最大化一个子窗体时,它的标题会与,MDI,窗体的标题组合在一起并显示于,MDI,窗体的标题栏上。,(,4,)通过设定,AutoShowChildren,属性,子窗体可以在窗体加载时自动显示,(True),或自动隐藏,(False),。,1 MDI窗体特性,69,(,5,)活动子窗体的菜单(若有)将显示在,MDI,窗体的菜单栏中,而不是显示在子窗体中。,MDI,窗体程序在所谓的“以文档为中心的应用”中特别有用,在这种应用程序中,通常同时使用多个窗口来显示或编辑文档。,1 MDI窗体特性,70,2 创建MDI应用程序,前面已经学习过,可以通过“添加窗体”对话框添加窗体,但这不是,MDI,窗体,只是多个普通窗体而已。如果创建一个,MDI,窗体应用程序,可以按以下步骤执行:,(,1,)在“工程”菜单中单击“添加,MDI,窗体”菜单项,可以创建,MDI,应用程序的父窗体。,71,2 创建MDI应用程序,注意,一个应用程序只能有,一个,MDI,窗体,如果工程已经有了一个,MDI,窗体,则该“工程”菜单上的“添加,MDI,窗体”命令就不可使用。,MDI,应用程序的父窗体是,子窗体的容器,,在该窗体中可以有菜单栏、工具栏、状态栏等,但不可以有文本框等控件。菜单栏、工具栏的建立我们在后面几节中介绍。,72,(,2,)如果要创建子窗体,首先在“工程”菜单中单击“添加窗体”菜单项,创建一个普通的窗体,然后将该窗体的,MDIChild,属性设为,True,。一个应用程序可以包含许多相似或者不同样式的,MDI,子窗体,若要建立多个子窗体,则重复上述操作就可以了。,2 创建MDI应用程序,73,创建以文档为中心的应用程序,一般要求在,运行时,能提供若干子窗体以存取不同的文档,而在设计时事先创建好若干个子窗体的方法是不可取的。一般是先创建一个子窗体作为这个应用程序文档的模板,然后通过对象变量来实现。,2 创建MDI应用程序,74,例 假设已经建立了一个名称为“,frmMDIChild”,的子窗体模板,则使用下面的语句:,Dim NewDoc As New,frmMDIChild,就会为“,frmMDIChild”,建立一个新的实例,NewDoc,,新实例具有与“,frmMDIChild”,窗体相同的属性、控件和代码。,2 创建MDI应用程序,75,在运行时,子窗体显示在,MDI,父窗体工作空间之内(其区域在父窗体边框以内及标题与菜单栏之下)。在设计时,子窗体不是限制在,MDI,窗体区域之内,可以添加控件、设置属性、编写代码以及设计子窗体功能,就像在其它,Visual Basic,窗体中做的那样。,2 创建MDI应用程序,76,通过查看,MDIChild,属性或者检查工程资源管理器,可以确定窗体是否是一个,MDI,子窗体。,Visual Basic,在“工程资源管理器”中为,MDI,窗体与,MDI,子窗体显示了,特定的图标,,如下图所示。,2 创建MDI应用程序,77,“,工程资源管理器”中的,MDI,窗体、,MDI,子窗体和标准窗体,78,例,8.7,79,3 MDI窗体及子窗体,(,1,)加载,MDI,窗体及子窗体,加载子窗体时,其父窗体(,MDI,窗体)会,自动,加载并显示。而加载,MDI,窗体时,其子窗体并不会自动加载。,子窗体是缺省的启动窗体,因而在程序运行时,子窗体和,MDI,窗体两者都会加载。,80,MDI,窗体有,AutoShowChildren,属性,决定是否自动显示子窗体。如果该属性被设置为,True,,则当改变子窗体的属性(如,Caption,等)后,会自动显示该子窗体,不再需要使用,Show,方法;,3 MDI窗体及子窗体,81,如果设置该属性为,False,,则改变子窗体的属性值后,不会自动显示该子窗体,子窗体处于隐藏状态,直至用,Show,方法把它们显示出来。这就允许在子窗体变成可见之前更新标题、位置和菜单等各种细节。,3 MDI窗体及子窗体,82,(,2,)设置子窗体的大小和位置,如果,MDI,子窗体具有大小可变的边框,即,BorderStyle = 2,,在其加载时,,Windows,将决定其初始的高度、宽度和位置。,边框大小可变的子窗体,其初始大小与位置取决于,MDI,窗体的大小,,而不是设计时子窗体的大小。当,MDI,子窗体的边框大小不可变(即,BorderStyle = 0,、,1,或,3,)时,则它将用设计时的,Height,和,Width,属性被载入。,3 MDI窗体及子窗体,83,(,2,)设置子窗体的大小和位置,如果设置,AutoShowChildren,为,False,,则在,MDI,子窗体载入以后,把它设为可见状态之前,可以改变其大小和位置。,3 MDI窗体及子窗体,84,定位窗体的代码最好放在,窗体的,Load,过程中,这样会在窗体实际出现在屏幕上之前将窗体位置确定。要将窗体居中,需要在窗体的,Load,过程中简单地添加代码来计算并指定窗体左上角的位置,3 MDI窗体及子窗体,85,如下列代码所示:,Me.Left = (Screen.Width - Me.Width) / 2,Me.Top = (Screen.Height - Me.Height) / 2,利用坐标系统可以将窗体定位于屏幕或,MDI,窗体的任意位置。,3 MDI窗体及子窗体,86,(,3,),MDI,窗体程序子窗体的排列顺序和方式,在,MDI,应用程序中,缺省状态下子窗体是按照窗口,打开的,顺序排列的:当前活动窗体排在最前端,最先打开的窗体排在最底端。我们可以借助,ZOrder,方法动态地改变子窗体的排列顺序。,3 MDI窗体及子窗体,87,(,3,),MDI,窗体程序子窗体的排列顺序和方式,ZOrder,方法的语法为:,窗体名称,. ZOrder Position,其中,,Position,取值为,0,时表示对象移至最前端,为,1,时表示对象移至最底端,缺省时值为,0,。,3 MDI窗体及子窗体,88,(,3,),MDI,窗体程序子窗体的排列顺序和方式,例如,某一,MDI,应用程序有三个子窗体:,Form1,、,Form2,和,Form3,,若要将,Form3,移至最底端,则可在设计代码时加上,Form3.Zorder 1,即可。,3 MDI窗体及子窗体,89,利用,Zorder,方法我们也可以创建浮动窗体,浮动窗体总是浮动到表面,也就是说它可以被其他窗体覆盖,但马上,自动,变成当前窗口并显示在所有窗体的最上层。,3 MDI窗体及子窗体,90,要创建浮动窗体,需要在窗体上添加一个定时器控件,并将它的,Interval,属性设置为想让窗体浮现的时间,如,500,毫秒。在,Timer1_Timer,事件过程中编写如下代码,便可以使用,Zorder,方法使窗体浮动到顶部:,Private Sub Timer1_Timer(),Zorder,End Sub,3 MDI窗体及子窗体,91,使用过,Word,的用户都知道,,Word,可同时打开多个文档,并能以不同方式对文档窗口进行排列,如平铺、层叠等。这种重新排列子窗体的功能,在,MDI,应用程序中是可以通过编程来实现的。具体方法就是在相应的菜单控件的,Click,事件中调用,Arrange,方法,,使用,Arrange,方法可以重新对齐子窗体,可以层叠、水平平铺或者沿着,MDI,窗体的下部排列子窗体图标等方式来显示子窗体。,3 MDI窗体及子窗体,92,Arrange,方法的语法为:,MDI,窗体对象,. Arrange,Arrangement,其中,,Arrangement,用来指定如何排列,MDI,应用程序的子窗体,其值可以是常数或是数值,,Arrangement,的取值如下表所示。,3 MDI窗体及子窗体,93,表,Arrangement,的取值,常数,值,描述,vbCascade,0,层叠所有非最小化,MDI,子窗体,vbTileHorizontal,1,水平平铺所有非最小化,MDI,子窗体,vbTileVertical,2,垂直平铺所有非最小化,MDI,子窗体,vbArrangeIcons,3,重排最小化,MDI,子窗体的图标,3 MDI窗体及子窗体,94,例如:若“平铺”菜单项名为,mnuHorizon,,可编写如下代码,实现子窗体的平铺:,Private Sub mnuHorizon_Click(),MDIForm1.Arrange vbTileHorizontal MDIForm1,为,MDI,窗体名称,End Sub,3 MDI窗体及子窗体,95,当平铺或者层叠有着固定边框类型的子窗体时,每个子窗体都像具有可变尺寸边框那样被定位,这使得子窗体,可能重叠,。,即使,MDI,窗体被最小化,仍可以重新排列窗口和图标,当,MDI,窗体最大化时,可以看到重排的结果。,3 MDI窗体及子窗体,96,(4)维护子窗体的状态信息,当子窗体被卸载时,其中的内容也会随之消失,所以在用户决定退出,MDI,应用程序时,必须有,保存信息,的机会,让用户执行存盘操作,这样才能确保数据不会丢失。当数据没有改变而去存盘是没有意义的,因此,应用程序必须随时都能确定自上次保存以来子窗体中的数据是否有改变。,97,(4)维护子窗体的状态信息,可以通过在每个子窗体中声明一个公用变量来实现此功能,例如:,Public DataChangeed As Boolean,当子窗体中的内容改变时,可将此变量设为,True,。在保存完数据后,再设为,False,。,98,在,MDI,应用程序中,在关闭应用程序时,,Visual Basic,将试图卸载,MDI,窗体,当,MDI,窗体被卸载时,,QueryUnload,事件首先为,MDI,窗体调用,,然后再为每一个打开的子窗体调用。如果在这些,QueryUnload,事件过程中没有代码,则取消,Unload,事件,然后,每一个子窗体被卸载,最后,MDI,窗体被卸载。,(4)维护子窗体的状态信息,99,由于,QueryUnload,事件在窗体卸载之前被调用,因此在窗体卸载前可以给用户一个保存窗体、文件和一些数据的机会。我们可以在该事件过程中,判断前面声明的那个公用变量标志,然后提示用户是否执行保存操作,也可以在窗体的卸载事件(,Unload,)中判断此变量标志,这样,在,MDI,应用程序退出时就不会丢失数据了。,(4)维护子窗体的状态信息,100,4 MDI窗体的菜单,MDI,应用程序的菜单设计与一般应用程序的菜单设计方法一致,可利用,【,菜单编辑器,】,来完成,但,MDI,应用程序的菜单还有其特殊性。,在,MDI,应用程序中,每一个子窗体的菜单都显示在,MDI,窗体上,而不是在子窗体本身。当子窗体有焦点时,该子窗体的菜单(如果有的话)就代替菜单栏上的,MDI,窗体的菜单。如果没有可见的子窗体,或者带有焦点的子窗体没有菜单,则显示,MDI,窗体的菜单。,101,4 MDI窗体的菜单,MDI,应用程序使用几套菜单的情况很普遍。当打开一个文档时,应用程序显示与该类文档相关的菜单。通常,当没有可见子窗体时,会显示一个不同的菜单。,例如,当没有文件打开时,,Microsoft Excel,只显示“文件”与“帮助”菜单。当用户打开一个文件时,其他菜单就会显示出来,如“文件”、“编辑”、“视图”、“插入”、“格式”、“工具”和“窗口”等。,102,管理,MDI,应用程序中菜单的一个方法是把希望在任何时候都显示的,菜单控件放在,MDI,窗体,上,当运行该应用程序时,如果没有可见的子窗体,会自动显示,MDI,窗体菜单。把应用于子窗体的菜单控件放置到子窗体中,在运行时,只要有一个子窗体可见,这些菜单标题就会显示在,MDI,窗体的菜单栏中。,4 MDI窗体的菜单,103,虽然子窗体的菜单可替代主窗体的菜单,但在编写菜单命令的响应事件的处理时却不相同。在,Visual Basic,中,只能在,本窗体内响应菜单命令,,因此主菜单的命令处理只能在主窗体模块中进行,而子窗体的命令处理只能在子窗体模块中进行。即使子窗体的菜单显示在主窗体的菜单位置,但它还是子窗体的菜单。,4 MDI窗体的菜单,104,有些应用程序支持多种类型的文档。例如,在,Microsoft Access,中,可以打开表格、查询、窗体和其它文档类型。要在,Visual Basic,中创建这样的应用程序,应使用,两个子窗体,。设计一个带有执行工作单任务菜单的子窗体和另一个带有完成图表任务菜单的子窗体。在运行时,当工作单窗体的实例有焦点时,则显示工作单菜单,而当选取图表时,则显示图表窗体的菜单。如果所有的工作单和图表都关闭,则显示,MDI,窗体的菜单。,4 MDI窗体的菜单,105,大多数,MDI,应用程序的菜单栏中都有“窗口”这一特殊菜单项,这是一个显示所有打开的子窗体标题的特殊菜单,如下图所示。另外,有些应用程序将操纵子窗体的命令,比如“层叠”、“平铺”与“排列图标”,也放在这个菜单中。,4 MDI窗体的菜单,106,4 MDI窗体的菜单,107,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!