第8章多重窗体与环境应用 81建立多重窗体应用程序 8.2多重窗体应用程序的执行与保存 83VB工程结构 8.4闲置循环与 Do Events语句
第8章 多重窗体与环境应用 8.1 建立多重窗体应用程序 8.2 多重窗体应用程序的执行与保存 8.3 VB工程结构 8.4 闲置循环与Do Events语句
8建立多重窗体应用程序 建立多重窗体应用程序,首先应该在工程中添加多个与用户 交互的窗体;然后再设计这多个窗体之间的调用关系,以及窗体 的加载、卸载、删除等操作;还包括各个窗体自身的功能实现。 811多重窗体的添加 添加窗体的方法有四种: (1)单击“工程”菜单中的“添加窗体”命令,如图8-1。 (2)直接点击工具栏的“添加窗体”按钮。 (3)单击工具栏的“添加窗体”按钮旁边的下拉菜单箭头, 在出现的菜单中选择“添加窗体”,如图8-2。 snal Basic[设计 工程1-■ icrosoft visual Basic 工程)格式@)调试)运 文件)编辑)视图)工程P)格 际加窗体( 百品易单 添加M窗体[ s添加窗体1 调添加模块⑩) Gnen标加窗体 添加类模块 atep(调添加模块⑩) 添加用户控件0 决A添加类模块) 图8-1通过菜单添加窗体 图8-2通过工具栏添加窗体
建立多重窗体应用程序,首先应该在工程中添加多个与用户 交互的窗体;然后再设计这多个窗体之间的调用关系,以及窗体 的加载、卸载、删除等操作;还包括各个窗体自身的功能实现。 8.1.1多重窗体的添加 添加窗体的方法有四种: (1)单击“工程”菜单中的“添加窗体”命令,如图8-1。 (2)直接点击工具栏的“添加窗体”按钮。 (3)单击工具栏的“添加窗体”按钮旁边的下拉菜单箭头, 在出现的菜单中选择“添加窗体”,如图8-2。 图8-1 通过菜单添加窗体 图8-2 通过工具栏添加窗体 8.1 建立多重窗体应用程序
(4)工程资源管理器中,单击鼠标右键弹出快捷菜单,选择 添加子菜单的“添加窗体”项,如图8-3所示。 工程工程1 国 工程1程1 白窗体 B For 国查看对象B) 国查看代码) 的属性窗口a) 白际加窗体〔) 添加 添加MI窗体〔 保存Form1() 图8-3通过工程资源管理器添加窗体 任选这四种方法当中的一种操作,在出现的“添加窗 体”对话框中,选择“新建”选项卡中的“窗体”,单击 “打开”按钮可以新建一个窗体,或者选择“现存”选项 卡浏览并加载其它已经存在的窗体,如图8-4
图8-3 通过工程资源管理器添加窗体 (4)工程资源管理器中,单击鼠标右键弹出快捷菜单,选择 添加子菜单的“添加窗体”项,如图8-3所示。 任选这四种方法当中的一种操作,在出现的“添加窗 体”对话框中,选择“新建”选项卡中的“窗体”,单击 “打开”按钮可以新建一个窗体,或者选择“现存”选项 卡浏览并加载其它已经存在的窗体,如图8-4
新建|现存 因体 n公 Web browser Dial Log ir Splash Tip of the ODBC Log In Options 打开 帮助Q 厂不再显示这个对话框QD 图8-4添加窗体 注意 (1)如果选择添加“现存”窗体,当出现多个窗体的名称相同 而提示不能加载时,可以改变窗体的名称再添加。 (2)添加“现存”窗体实际是在工程中包含对该文件的引用, 多个工程共享窗体,对该窗体的修改将导致其它工程中该窗体的 变化,可以通过窗体“另存为”命令以不同的文件名保存该窗体 文件以取消共享
注意: (1)如果选择添加“现存”窗体,当出现多个窗体的名称相同 而提示不能加载时,可以改变窗体的名称再添加。 (2)添加“现存”窗体实际是在工程中包含对该文件的引用, 多个工程共享窗体,对该窗体的修改将导致其它工程中该窗体的 变化,可以通过窗体“另存为”命令以不同的文件名保存该窗体 文件以取消共享。 图8-4 添加窗体
812多重窗体的设计 1.引例 学籍管理系统。 系统启动,显示登录窗体如图8-5,输入用户名和口令点击“确 定“按钮,如果用户名和口令均正确,将显示如图8-6的学籍管理 系统主窗体,同时卸载登录窗体。 请登录 学籍管理系 [区 登录 系统管理)学籍管理Q)帮助⑩ 用户名:| admin3 重新登陆F2 退出 Ctrltx 口令:* 取消 图8-5登录窗体 图8-6学籍管理系统主窗体
8.1.2 多重窗体的设计 1. 引例 学籍管理系统。 系统启动,显示登录窗体如图8-5 ,输入用户名和口令点击“确 定“按钮,如果用户名和口令均正确,将显示如图8-6的学籍管理 系统主窗体,同时卸载登录窗体。 图8-5 登录窗体 图8-6 学籍管理系统主窗体
在主窗体中,选择点击修改密码菜单项,将弹出修改密 码窗体,如图8-7 修改密码 ROI 用户名 admins 输入密码 确认密码:******* 甬言 「取消」 图8-7修改密码窗体 一般说来,多重窗体的设计可以按照以下步骤进行: (1)分析应用程序要求,划分功能模块。 (2)分别创建各模块及其包含的各个窗体。 (3)建立窗体之间的调用关系 (4)点击[工程Ⅵ属性]菜单,在[启动对象中选择系统运行时首 先执行的对象。 (5)运行应用程序
在主窗体中,选择点击修改密码菜单项,将弹出修改密 码窗体,如图8-7。 图8-7 修改密码窗体 一般说来,多重窗体的设计可以按照以下步骤进行: (1)分析应用程序要求,划分功能模块。 (2)分别创建各模块及其包含的各个窗体。 (3)建立窗体之间的调用关系。 (4)点击[工程]/[属性]菜单,在[启动对象]中选择系统运行时首 先执行的对象。 (5)运行应用程序
多窗体设计常用方法: Load 装入窗体到内存。但并不显示该窗体。 Unload 从内存中卸载窗体。只移走窗体的可视部分,而不包 括窗体的命令和程序,和该窗体模块相关联的代码还保持 在内存中。 窗体名称]Show模式 显示一个窗体。如果指定的窗体在此之前已由L0ad装 载,则显示之;如果调用Show方法时指定的窗体没有装载, ⅤB将自动装载并显示该窗体 模式可取值0(默认值)或1。当模式为0即显示无模式 窗体时,随后遇到的代码要执行,比如可以显示其它的窗 体。当模式为1即显示模式窗体时,则随后的代码直到该窗 体被隐藏或卸载时才能执行。 窗体名称],Hide 隐藏窗体,但并没有删除
多窗体设计常用方法: Load 装入窗体到内存。但并不显示该窗体。 Unload 从内存中卸载窗体。只移走窗体的可视部分,而不包 括窗体的命令和程序,和该窗体模块相关联的代码还保持 在内存中。 [窗体名称].Show [模式] 显示一个窗体。如果指定的窗体在此之前已由Load装 载,则显示之;如果调用Show方法时指定的窗体没有装载, VB将自动装载并显示该窗体。 模式可取值0(默认值)或1。当模式为0即显示无模式 窗体时,随后遇到的代码要执行,比如可以显示其它的窗 体。当模式为1即显示模式窗体时,则随后的代码直到该窗 体被隐藏或卸载时才能执行。 [窗体名称].Hide 隐藏窗体,但并没有删除
续前引例,在登录窗体输入用户名和口令,单击“确定”按钮的 代码 Private Sub Cmdok Click0 声明变量 .校验用户名和口令 I用户名或密码错误Then Msg Box"无此用户或密码错误,请重新输入!", acRitical,"错误 Else FrmMain Show 载入主窗体 Unload Me 从内存删除登录窗体 End If End sub 在学籍管理系统主窗体单击修改密码菜单项的代码: Private Sub mnu ChangePsw Click'单击修改密码菜单项 frm Psw. show 显示修改密码窗体 End Sub 在修改密码窗体单击“取消”按钮的代码: Private Sub CmdCancel click Unload me 从内存删除修改密码窗体 End Sub
续前引例,在登录窗体输入用户名和口令,单击“确定”按钮的 代码 在学籍管理系统主窗体单击修改密码菜单项的代码: Private Sub CmdOk_Click() … '声明变量 … '校验用户名和口令 If 用户名或密码错误Then MsgBox "无此用户或密码错误,请重新输入!", vbCritical, "错误" Else FrmMain.Show '载入主窗体 Unload Me '从内存删除登录窗体 End If End Sub 在修改密码窗体单击“取消”按钮的代码: Private Sub mnuChangePsw_Click() '单击修改密码菜单项 frmChangePsw.Show '显示修改密码窗体 End Sub Private Sub CmdCancel_Click() Unload Me '从内存删除修改密码窗体 End Sub
8.13多文档界面 多文档界面(MDI)与单文档界面(SDI MD指在一个父窗体下面可以同时打开多个子窗体(多个文档窗体);如word SD指只能打开一个文档。如“记事本” 1.创建和设计MD窗体及其子窗体 创建MD窗体:“工程”添加MD窗体”,在“添加MD窗体” 对话框中选择新建“MD窗体”图标,单击“打开”按钮。如图 8-8。 现存 开 厂不再显示这个对话框Q 图8-8添加MDI窗 创建子窗体:通过“工程添加窗体”创建一般的标准窗体把 MDIChild属性置为True。MD窗体可以有多个子窗体
8.1.3* 多文档界面 多文档界面(MDI)与单文档界面(SDI) MDI指在一个父窗体下面可以同时打开多个子窗体(多个文档窗体);如Word SDI指只能打开一个文档。如“记事本” 1. 创建和设计MDI窗体及其子窗体 •创建MDI窗体:“工程” |“添加MDI窗体” ,在“添加MDI窗体” 对话框中选择新建“MDI窗体”图标,单击“打开”按钮。如图 8-8。 图8-8 添加MDI窗 体 •创建子窗体:通过“工程|添加窗体”创建一般的标准窗体,把 MDIChild属性置为True 。MDI窗体可以有多个子窗体
2.MD窗体与子窗体的交互 MDI窗体的两个属性: Active form和 Active Control MD应用程序运行时,任何时候只有一个子窗体是激活的,这个 子窗体具有输入焦点。 Active Form返回活动窗体。 例如: Unload Active Form语句指关闭当前活动子窗体 Active control返回拥有焦点的控件。 例如: Active Form. Active Control. seltext引用MDI子窗体的活动控 件中的文本。 QueryUnload事件卸载MDI窗体 QueryUnload事件是在任一个卸载之前在所有窗体中发生,它提 供了停止窗体卸载的机会,在关闭一个应用程序之前确保包含在 该应用程序中的窗体中没有未完成的任务
2. MDI窗体与子窗体的交互 MDI窗体的两个属性:ActiveForm和ActiveControl。 MDI应用程序运行时,任何时候只有一个子窗体是激活的,这个 子窗体具有输入焦点。 ActiveForm返回活动窗体。 例如:Unload ActiveForm语句指关闭当前活动子窗体。 ActiveControl返回拥有焦点的控件。 例如:ActiveForm.ActiveControl.SelText引用MDI子窗体的活动控 件中的文本。 QueryUnload事件卸载MDI窗体。 QueryUnload事件是在任一个卸载之前在所有窗体中发生,它提 供了停止窗体卸载的机会,在关闭一个应用程序之前确保包含在 该应用程序中的窗体中没有未完成的任务