版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多重窗体与环境应用第1页,课件共27页,创作于2023年2月第10章多重窗体与环境应用10.1多重窗体与多文档窗体VisualBasic允许在一个工程(程序)中使用多个窗体。多窗体程序一般有两种形式,单文档界面(SDI)和多文档界面(MDI)。前者又称为多重窗体界面,每个窗体都是独立的、平等的;后者所包含的多个窗体则被放置在一个(父)窗体中,父窗体为应用程序中所有的(子)窗体提供工作空间。第2页,课件共27页,创作于2023年2月10.1.1建立多重窗体应用程序多重窗体应用程序的代码是针对各个窗体编写的,因此其设计基础是单个窗体的设计。而在多重窗体应用程序中添加和删除窗体的操作需要使用“工程”菜单。1.在工程中添加窗体在当前工程中添加一个新的窗体有3种方法:在“工程”菜单中选择“添加窗体”菜单项。在工具栏中选择“添加<项>”,单击其下拉箭头,从弹出的列表中选择“添加窗体”。在工程资源管理器中的工程图标上单击鼠标右键,打开快捷菜单,选择“添加”子菜单下的“添加窗体”选项。第3页,课件共27页,创作于2023年2月图10-1“添加窗体”对话框添加的新窗体(设为第二个)被命名为Form2,后续的窗体则分别命名为Form3、Form4等等。可以在属性窗口修改新窗体的名称。2.在工程中删除窗体从工程中删除窗体的方法有两种:先选定欲删除的窗体,然后在“工程”菜单中选择“移除〈窗体名〉”。在工程资源管理器中欲删除的窗体名上单击鼠标右键,打开快捷菜单,选择“移除〈窗体名〉”。第4页,课件共27页,创作于2023年2月3.保存窗体每建立一个新的窗体,都应将窗体存盘,一个窗体保存在一个扩展名为.frm的窗体文件中。保存窗体可以在“文件”菜单中选择“保存〈窗体名〉”或“〈窗体名〉另存为”选项。对于新建立的工程,在“文件”菜单中选择“保存工程”或“工程另存为”选项,系统将自动弹出对话框,提示用户保存工程的各个文件,如标准模块文件(.bas)、窗体文件(.frm)、工程文件(.vbp)。第5页,课件共27页,创作于2023年2月4.使用工程资源管理器多重窗体实际上是单一窗体的集合,每个窗体都需要独立进行创建和修改。在设计时,利用工程资源管理器可以在各个窗体间进行切换(如图10-2所示)。图10-2“工程资源管理器”第6页,课件共27页,创作于2023年2月10.1.2多重窗体程序的执行在单窗体工程中,所有的操作都在一个窗体中完成,不需要在多个窗体间切换。而在多窗体工程中,则需要打开、关闭、显示或隐藏指定的窗体,下面介绍相应的语句和方法。1.加载与卸载窗体加载窗体是指将窗体文件装入内存,而卸载窗体是指将窗体从内存中删除。VB有两条语句专门用于对窗体进行加载与卸载的操作:Load语句和Unload语句。第7页,课件共27页,创作于2023年2月1)Load语句是加载窗体的命令,其语法格式为:Load〈窗体名〉其中〈窗体名〉即窗体的Name属性。执行Load语句后,可以引用窗体中的各对象,如控件及其各种属性,但此时窗体并没有显示出来。2)Unload语句是卸载窗体的命令,其语法格式为:Unload〈窗体名〉该语句与Load语句的功能相反,它清除内存中指定的窗体。第8页,课件共27页,创作于2023年2月2.显示与隐藏窗体窗体用Load语句加载后,并没有被显示出来。若要显示窗体,可以使用窗体的Show方法,其语法格式为: [〈窗体名〉.]Show[〈窗体模式〉]如果省略〈窗体名〉,则显示当前窗体。〈窗体模式〉用来指定窗体状态,取值为1或0。当取值为1时,窗体为“模态型”,屏幕中只有该窗体为活动窗口,其它窗口都不能被操作。当取值为0时,窗体为“非模态型”。Show方法兼有加载与显示窗体的两种功能。在执行Show方法时,若窗体不在内存中,则Show自动加载窗体并显示出来。第9页,课件共27页,创作于2023年2月若要暂时关闭窗体而不将窗体卸载,可以使用窗体的Hide方法将窗体隐藏起来,其语法格式为: [〈窗体名〉.]Hide[〈窗体模式〉]Hide方法将窗体隐藏起来,即不在屏幕上显示,但仍在内存中。说明:窗体显示时,其Visible属性为True,隐藏时Visible属性为False。也可以在代码中通过修改Visible属性来显示或隐藏窗体。第10页,课件共27页,创作于2023年2月3.启动窗体当工程包含多个窗体的时候,VB规定,必须指定其中一个窗体作为“启动窗体”。如果不指定启动窗体,则系统默认第1个建立的窗体为启动窗体。只有启动窗体才能在工程运行时自动显示出来,其他窗体必须通过Show方法才能看到。指定启动窗体的步骤是:1)选择“工程”菜单中的“〈工程名〉属性”选项,打开“工程属性”对话框。2)选择“通用”选项卡,在“启动对象”下拉列表中,选择指定的窗体作为启动窗体。3)按“确定”按钮。第11页,课件共27页,创作于2023年2月4.程序的关闭应用程序结束时,应卸载所有的窗体。若仍有隐藏的窗体存在,则程序继续运行。使用End语句结束程序,系统自动卸载工程中的所有窗体。第12页,课件共27页,创作于2023年2月10.1.3SubMain过程在一个含有多个窗体或多个工程的应用程序中,有时候需要在显示多个窗体之前对一些条件进行初始化;有时候也许要应用程序启动时不加载任何窗体。例如:可能想先运行装入数据文件的代码,然后再根据数据文件的内容决定显示几个不同窗体中的哪一个。即需要在启动程序时执行一个特定的过程。在VB中,这样的过程称为启动过程,并命名为SubMain。例如:
第13页,课件共27页,创作于2023年2月SubMain过程不能在窗体模块内,必须在标准模块中。其建立方法如下:1)选择“工程”菜单中的“添加模块”菜单项。2)在打开的“添加模块”对话框中按“打开”按钮。3)在该模块(默认名称为Module1)的代码窗口中键入:SubMain后按回车键,系统自动给出过程的开始行和结束行。4)在其中输入过程代码,并保存模块文件Module1.bas。5)选择“工程”菜单中的“工程属性”菜单项,打开“工程属性”对话框。6)选择“通用”选项卡,在“启动对象”下拉列表中,选择SubMain,并按“确定”按钮。第14页,课件共27页,创作于2023年2月10.1.4多重窗体程序应用【例10-1】为应用程序增加一个“登录”子窗体来控制非法用户的使用,如图10-4所示。图10-4“登录”子窗体Form2与应用程序窗体Form1选择“工程”菜单中的“添加窗体”菜单项,打开“添加窗体”对话框。设置对象属性如图10-4。
第15页,课件共27页,创作于2023年2月设计“登录”子窗体Form2中代码。编写命令按钮Command1(确定)的Click事件代码: PrivateSubCommand1_Click() IfLCase(Text1.Text)="abcde"Then UnloadMe '卸载当前窗体 Form1.Show Else MsgBox"对不起,口令错!" Text1.SelStart=0 Text1.SelLength=Len(Text1.Text) Text1.SetFocus EndIf EndSub第16页,课件共27页,创作于2023年2月编写命令按钮Command2(取消)的Click事件代码: PrivateSubCommand2_Click() End EndSub指定启动窗体。选择“工程”菜单中的“〈工程名〉属性”选项,打开“工程属性对话框”,选择“通用”选项卡,在“启动对象”下拉列表中,选择Form2作为启动窗体。保存窗体。第17页,课件共27页,创作于2023年2月10.1.5多文档(MDI)窗体多文档界面的应用可同时打开多个文档,每个文档都显示在自己的窗口中。包含文档的子窗体被放置在父窗体中,父窗体为应用程序中所有的子窗体提供工作空间。子窗体实际上就是MDIChild属性设置为True的普通窗体,一个应用程序可以包含多个相似或不相似的MDI子窗体。在运行时,子窗体显示在MDI窗体(父窗体)的工作区内。当子窗体最小化时,它的图标显示在MDI窗体的工作区内,而不是在任务栏中。第18页,课件共27页,创作于2023年2月创建MDI窗体的一般步骤为:1)在“工程”菜单中选择“添加MDI窗体”子菜单,系统显示“添加MDI窗体对话框”,如图10-5所示。2)选择“新建”选项卡中的“MDI”窗体,单击“打开”按钮,屏幕上出现一个名字为Mdiform1的MDI窗体(它的底色与普通窗体不同),如图10-6所示。图10-5“添加MDI窗体”对话框图10-6新添加的MDI窗体
第19页,课件共27页,创作于2023年2月3)单击工具栏上的“启动”按钮运行程序,一个空白的MDI窗体出现在屏幕上。MDI窗体与普通窗体不同,除非控件具有Align属性(如PictureBox)或者具有不可见界面(如Timer),否则不能将控件直接放置在MDI窗体上。任何时候,一个应用程序只能有一个MDI窗体。第20页,课件共27页,创作于2023年2月多文档界面的特点:1)所有子窗体均显示在MDI窗体(父窗体)的工作区中。用户可以改变、移动子窗体的大小,但被限制在MDI窗体中。2)当最小化一个子窗体时,其图标将显示于MDI窗体上而不是在任务栏中。当最小化MDI窗体时,所有子窗体也被最小化,只有MDI窗体的图标出现在任务栏中。3)当最大化一个子窗体时,其标题与MDI窗体的标题一起显示在MDI窗体的标题栏上。4)MDI窗体和子窗体可以有各自的菜单,当子窗体加载时覆盖MDI窗体的菜单。第21页,课件共27页,创作于2023年2月10.2DoEvents函数与闲置循环在一般情况下,只有当事件发生时VB才会执行相应的过程代码。这就是说,如果没有事件发生,应用程序将处于“闲置”状态。另一方面,当VB执行一个过程时,将停止对其他事件(如鼠标事件)的响应,直至过程执行完毕。也就是说,如果VB处于“忙碌”状态,事件过程只能在队列中等待,直到当前过程结束。为了改变这种顺序,VB提供了DoEvents函数。第22页,课件共27页,创作于2023年2月10.2.1DoEvents函数使用DoEvents函数,可以将应用程序的控制权交还给Windows操作系统,以便处理其他事件。当操作系统处理完队列中的事件之后,返回控制权。DoEvents函数的语法格式为: DoEvents[()]说明:1)DoEvents函数返回一个Integer,以代表VisualBasic独立版本中打开的窗体数目。2)若省略函数括号,则DoEvents可以作为语句使用。第23页,课件共27页,创作于2023年2月【例10-2】使用DoEvents,可以在执行循环的过程中进行其他操作,如图10-7所示。编写命令按钮Command1(开始循环)的Click事件代码:PrivateSubCommand1_Click()Fori=1To200000DoEventsForj=1To1000NextjLabel1.Caption=iNextEndSub 图10-7在执行循环的过程中进行其他操作第24页,课件共27页,创作于2023年2月编写命令按钮Command2(改变标题)的Click事件代码: PrivateSubCommand2_Click() Me.Caption=Label1.Caption EndSub说明:运行程序,单击“开始循环”按钮,将显示循环变量i的值。由于加了延时循环,程序的运行时间较长。如果没有DoEvents语句,则程序运行期间不能进行任何操作。有了DoEvents语句,则可以在循环的过程中进行其他操作,如移动窗体、改变窗体大小、单击“改变标题”按钮等。第25页,课件共27页,创作于2023年2月10.2.2闲置循环编写一个循环,当程序处于闲置状态时来执行该循环,这个循环称为“闲置循环”。【例10-3】编写“闲置循环”,当没有事件发生的时候,作计数循环,如图10-8所示。首先在工程中添加一个模块Module1,编写其中代码: PublicaAsLong '声明全局变量 Submain() 'Main程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026二上数学无生上课趣味课件
- 2026二上数学获奖核心素养课件
- 人教版小学四年级上册语文 25 为中华之崛起而读书 教案
- 高考数学一轮复习 讲义 第6节 第2课时 直线与双曲线的位置关系
- 郑州林塔涂料有限公司的成功案例与市场表现:从地标项目到行业份额分析
- 外科无指征治疗2026
- 垃圾分类课件下载
- 半导体底填胶:先进封装加速高可靠封装材料进入增长新周期
- 现场构件临时固定施工方法
- 2027届湖北省十堰市第六中学九上化学期末达标测试试题含解析
- 2025年医疗器械经营质量管理规范自查报告
- 模板施工劳务合同范本
- 毕业设计指导课件
- (已压缩)广东省工程勘察设计服务成本取费导则(2024版)
- 数学小讲师课件
- 监理内部安全培训记录
- 无人机测绘操控员 国家职业技能标准
- 水力发电运行值班员作业指导书
- GJB827B--2020军事设施建设费用定额
- 种植义齿制作技术
- 2025至2030年中国家用美容电器具行业发展监测及投资前景预测报告
评论
0/150
提交评论