



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
vb的用户界面(二) 发布时间:2007-05-05 来源:未知 作者:未知 MDI NotePad应用程序MDI NotePad 示例应用程序是一个简单的文本编辑器,它与 MicrosoftWindows 中包含的 NotePad 应用程序相似。不过,MDI NotePad 应用程序使用的是一个多文档界面 (MDI)。在运行时,若用户需要一个新文档(用该应用程序的“文件”菜单中的“新建”命令执行),应用程序就会创建子窗体的一个新实例。这就允许按其所需创建多个子窗体或文档。在 Visual Basic 中为了创建以文档为中心的应用程序,至少需要两个窗体:一个 MDI 窗体和一个子窗体。设计时,应创建一个 MDI 窗体以容纳该应用程序,再创建一个子窗体作为这个应用程序文档的模板。要创建自己的 MDI NotePad 应用程序,请按照以下步骤执行:1. 从“文件”菜单中,选取“新建工程”命令。2. 从“工程”菜单中,选取“添加 MDI 窗体”命令来创建容器窗体。现在,这个工程应当包含一个 MDI 窗体 (MDIForm1) 和一个标准窗体(Form1)。3. 在 Form1 上创建一个文本框 (Text1)。4. 按下列方式为两个窗体和文本框设置属性。6. 在 mnuFileNew_Click 过程中增加以下代码:Private Sub mnuFileNew_Click () 创建名为 NewDoc 的窗体 Form1 的一个新实例。Dim NewDoc As New Form1 显示此新窗体。NewDoc.ShowEnd Sub这个过程创建并显示 Form1 的名为 NewDoc 的一个新实例(或其副本)。每当从“文件”菜单中选取“新建”命令时,将会创建一个与 Form1完全相同的副本(实例),它包含 Form1 所包含的所有控件和代码。7. 给 Form1 窗体的 Form_Resize 过程添加以下代码:Private Sub Form_Resize() 扩展文本框以放置当前子窗体。Text1.Height = ScaleHeightText1.Width = ScaleWidthEnd SubForm_Resize 事件过程的代码,像Form1 中的所有代码一样,能为 Form1的每一个实例所共享。当显示窗体的几个副本时,每个窗体都能识别各自的事件。当一个事件出现时,该事件过程的代码就会被调用。由于相同的代码为每个实例所共享,关于调用该代码的窗体是如何引用的,尤其是每个实例都具有相同的名字 (Form1) 时。这个问题将在本章后面的“使用 MDI 窗体及其子窗体”一节中讨论。8. 按 F5 键可运行该应用程序。提示 除了本章提到的以外,Mdinote.vbp 示例应用程序还包含许多 MDI技巧。花一些时间对该示例代码进行全面研究会找到这些技巧。Sdinote.vbp 示例应用程序是同一应用程序转换为 SDI 样式的实现;比较这两个例子可以明白 MDI 和 SDI 技巧的差别。使用 MDI 窗体及其子窗体当 MDI 应用程序在一次会话中要打开、保存和关闭几个子窗体时,应当能够引用活动窗体和保持关于子窗体的状态信息。这个主题描述了一些用来指定活动子窗体或者控件、加载和卸载 MDI 窗体及其子窗体、以及保持子窗体的状态信息的编码技巧。指定活动子窗体或控件有时要提供一条命令,它用于对当前活动子窗体上具有焦点的控件进行操作。例如,假设想从子窗体的文本框中把所选文本复制到剪贴板上。在Mdinote.vbp 示例应用程序中,“编辑”菜单上的“复制”项的 Click 事件将会调用 EditCopyProc,它是把选定的文本复制到剪贴板上的过程。由于应用程序可以有同一子窗体的许多实例,EditCopyProc 需要知道使用的是哪一个窗体。为了指定这一点,使用 MDI 窗体的 ActiveForm 属性,该属性可以返回具有焦点的或者最后被激活的子窗体。注意 当访问 ActiveForm 属性时,至少应有一个 MDI 子窗体被加载或可见,否则会返回一个错误。当一个窗体中有几个控件时,也需要指定哪个控件是活动的。像 ActiveForm属性一样,ActiveControl 属性能返回活动子窗体上具有焦点的控件。下边是副本例程的示例,从子窗体菜单、MDI 窗体菜单或者是工具栏按钮上可对它进行调用。Private Sub EditCopyProc () 将选定文本复制到剪贴板上。ClipBoard.SetText _frmMDI.ActiveForm.ActiveControl.SelTextEnd Sub假如,正在编写被多个窗体实例调用的代码,不用窗体标识符访问窗体的控件或属性是一个好办法。例如,用 Text1.Height 引用 Form1上文本框的高度,而不是使用 Form1.Text1.Height。这样,该代码总是影响当前窗体。在代码中指定当前窗体的另一种方法是用 Me 关键字。用 Me 关键字来引用当前其代码正在运行的窗体。当需要把当前窗体实例的引用参数传递给过程时,这个关键字很有用。详细信息 有关通过 Dim 语句用 New 关键字来创建多个窗体实例的信息,请参阅第五章“编程基础”中的“变量、常数和数据类型概述”,以及语言参考的“Dim 语句”。有关通过 Dim 语句用 New 关键字来创建多个窗体实例的信息,请参阅“编程基础”中的“变量、常数和数据类型概述”,和语言参考的“Dim 语句”。加载 MDI 窗体及其子窗体加载子窗体时,其父窗体(MDI 窗体)会自动加载并显示。而加载 MDI 窗体时,其子窗体并不会自动加载。在 MDI NotePad 示例中,子窗体是缺省的启动窗体,因而在程序运行时,子窗体和 MDI 窗体两者都会加载。如果在 MDI NotePad 应用程序中改变启动窗体为 frmMDI(在“工程属性”的“一般”选项卡上),然后运行应用程序,则只有 MDI 窗体被加载。当从“文件”菜单中选取“新建”命令时,才会加载第一个子窗体。AutoShowChildren 属性可用来加载隐藏状态的 MDI 子窗口,使它们处于隐藏状态直至用 Show 方法把它们显示出来。这就允许在子窗体变成可见之前更新标题、位置和菜单等各种细节。不能把 MDI 子窗体或者 MDI 窗体显示为模式窗体(用带 vbModal 参数的 Show 方法)。如果想在 MDI 应用程序中使用模式对话框,可使用MDIChild 属性设置为 False 的窗体。设置子窗体的大小和位置如果 MDI 子窗体具有大小可变的边框即 BorderStyle = 2),在其装载时,Microsoft Windows 将决定其初始的高度、宽度和位置。边框大小可变的子窗体,其初始大小与位置取决于 MDI 窗体的大小,而不是设计时子窗体的大小。当 MDI 子窗体的边框大小不可变(即 BorderStyle = 0,1 或 3)时,则它将用设计时的 Height 和 Width 属性被载入。如果设置 AutoShowChildren 为 False,则在 MDI 子窗体载入以后,把它设为可见状态之前,可以改变其位置。详细信息 请参阅语言参考的“AutoShowChildren 属性”和“ Show 方法”。维护子窗体的状态信息在用户决定退出 MDI 应用程序时,必须有保存信息的机会。为了使其能够进行,应用程序必须随时都能确定自上次保存以来子窗体中的数据是否有改变。通过在每个子窗体中声明一个公用变量来实现此功能。例如,可以在子窗体的声明部分声明一个变量:Public boolDirty As BooleanText1 中的文本每改变一次时,子窗体文本框的 Change 事件就会将boolDirty 设置为 True。可添加此代码以指示自上次保存以来 Text1 的内容已经改变。Private Sub Text1_Change ()boolDirty = TrueEnd Sub反之,用户每次保存子窗体的内容时,文本框的 Change 事件就将 boolDirty设置为 False,以指示 Text1 的内容不再需要保存。在下列代码中,假设有一个叫做“保存”(mnuFileSave) 的菜单命令和一个用来保存文本框内容的名为 FileSave 的过程:Sub mnuFileSave_Click ()保存 Text1 的内容。FileSave设置状态变量。boolDirty = FalseEnd Sub用 QueryUnload 卸载 MDI 窗体当用户决定退出应用程序时,boolDirty 标志就很有用了。当用户从 MDI 窗体的“控制”菜单中选取“关闭”,或者从提供的菜单项,例如“文件”菜单上的“退出”命令,上述情况就会出现。如果用户使用 MDI 窗体的“控制”菜单来关闭应用程序,Visual Basic 将试图卸载 MDI 窗体。当 MDI 窗体被卸载时,QueryUnload 事件首先为 MDI 窗体调用,然后再为每一个打开的子窗体调用。如果在这些 QueryUnload 事件过程中没有代码,则取消 Unload 事件,然后,每一个子窗体被卸载,最后,MDI 窗体被卸载。由于 QueryUnload 事件在窗体卸载之前被调用,因此在窗体卸载前可以给用户一个机会来保存窗体。下述代码使用 boolDirty 标志来决定是否要提醒用户在子窗体卸载之前进行保存。请注意,可以在工程的任何地方访问公共窗体级变量值。这个代码假定有一个名叫 FileSave 的过程,它将 Text1的内容保存到一个文件中。Private Sub mnuFExit_Click()当用户在 MDI 应用程序中选取“文件提出”命令时,卸载M
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 环保专员考题题库及答案
- 2025年北京市农作物种子代理销售合同书
- 全球Web3.0在电子商务平台应用趋势2025年研究报告
- 2025年华为电子材料题库及答案
- 生化期末考试试题及答案
- 砂石土工试题及答案
- 2025年杂工培训试卷及答案
- 2025标准买卖合同范本
- 2025年教师招聘之《小学教师招聘》题库高频重点提升(共100题)及答案详解(基础+提升)
- 2025年解除劳动合同范本
- 退费授权委托书
- GB/T 42676-2023半导体单晶晶体质量的测试X射线衍射法
- (完整版)贵州三年级地方课程教案
- 临床基本检查方法和检查程序课件
- 新疆五彩湾温泉二期建设项目可行性研究报告
- 红金消结片对“乳腺增生”的疗效观察
- 青海2023届高校毕业生就业报告出炉:医学和法学就业率最高
- 生理学 第九章 感觉器官的功能
- 静脉血栓栓塞症预防与护理课件
- 西门子低压电器快速选型手册
- 养羊与羊病防治技术课件
评论
0/150
提交评论