Delphi程序的设计及实验指导第6章 窗体的设计.ppt

Delphi程序的设计及实验指导第6章 窗体的设计.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Delphi程序的设计及实验指导第6章 窗体的设计

6.4 多文档界面设计 1.父窗体 在MDI应用程序中,父窗体用来为应用文档提供工作区,它能包含一个或多个子窗体。父窗体和普通窗体一样,一般包括标题栏、菜单栏、工具栏和状态栏,并且也可以进行与普通窗体一样的操作。所不同的是父窗体并不直接控制自己的用户区,而是在用户区上打开其他的窗体,在这些窗体上完成工作。 创建父窗体的过程与创建普通窗体的过程基本一样,只需将窗体的FormStyle属性设置为fsMDIForm,便表示创建了一个MDI的父窗体。 6.4 多文档界面设计 2.子窗体 子窗体是一个独立的窗体,显示在父窗体的用户区,没有菜单栏、工具栏和状态栏,但可以使用父窗体的这些工具。在设计阶段创建的MDI子窗体是一个模板,在运行阶段,所有的子窗体只能在父窗体边界内显示,尽管子窗体可以同时被显示,但一次只能有一个子窗体被激活。 创建子窗体的方法和普通窗体类似,只要将它的FormStyle属性设置为fsMDIChild,便表示创建了一个子窗体。 6.4 多文档界面设计 下面介绍几个与MDI应用程序中Form组件相关的事件与方法: (1)OnClose事件:该事件可用来定义窗体关闭时执行的动作。在该事件处理过程中,可以测试各种数据信息,决定该窗体是否允许关闭等。该事件有一个TCloseEvent类型的Action参数,以决定窗口将执行的动作,其取值及含义如下: caNone:不允许关闭窗体。 caHide:窗体变成隐藏状态,程序可以访问一个隐藏的窗体。 caFree:关闭窗体,释放相应的内存。 caMinimize:最小化窗体。 (2)OnCloseQuery事件:该事件在调用Close方法或选择系统菜单的Close选项时触发。它包含一个CanClose参数,用于表示是否可以关闭该窗体,该参数的默认值为true,将该参数设置为false将禁止关闭该窗体。 (3)ArrangeIcons方法:该方法只对MDI父窗体起作用,它将重新均匀地排列窗体中被最小化的子窗体,使得各子窗体不相互覆盖。 6.4 多文档界面设计 (4)Cascade方法:该方法只对MDI父窗体起作用,它使得MDI程序的每个子窗体在父窗体左上角到右下角以级联形式排列,每个窗体相互覆盖,被覆盖的窗体只显示窗体的标题,这样可以方便地选择所有的子窗体。 (5)TileMode属性:该属性定义了MDI子窗体在父窗体中的排列方式。它有两种取值: tbHorizontal:MDI子窗体水平排列。 tbVertical:MDI子窗体垂直排列。 (6)Tile方法:该方法只对MDI父窗体起作用,它根据TileMode属性中定义的各子窗体的排列方式,平铺排列MDI主窗体中的各MDI子窗体。 6.4 多文档界面设计 【例6-4】新建一个MDI应用程序,在父窗体中添加两个子窗体和1个主菜单,运行结果如图6-16所示。 步骤如下: (1)新建一个工程MDIPrj.dpr,将Form1窗体的Caption的属性值设置为“父窗体”,FormStyle属性值设置为fsMDIForm。 (2)选择File→New→VCL Form菜单命令,新建窗体Form2,将Form2的Caption属性值设置为“子窗体1”,FormStyle属性值设置为fsMDIChild。按照同样方法再新建一个子窗体Form3,将Form3的Caption属性值设置为“子窗体2”,FormStyle属性值设置为fsMDIChild。 (3)在Form1(父窗体)中添加TMainMenu组件,利用菜单组件,创建主菜单如图6-15所示。 6.4 多文档界面设计 6.4.2 多文档界面设计 在MDI应用程序中使用的菜单与其他类型的应用程序中使用的菜单稍有不同。在MDI应用程序中,子窗体共享父窗体的菜单,又由于存在多窗体,而一些子窗体中又有其特定的菜单项,于是就存在菜单合并和菜单覆盖等问题,Delphi 能够很好地解决这些问题。 1.菜单合并 TMainMenu组件有一个GroupIndex属性,该属性用来控制子窗体菜单如何同主窗体菜单合并。将子窗体某菜单项的GroupIndex属性值设置为与主窗体所有菜单项的GroupIndex属性值都不相同,则子窗体的菜单项将插入到主窗体的菜单栏中;当主窗体打开一个子窗体时,子窗体的菜单就按上述规则合并到主窗体的菜单中。 注意:菜单合并只适合于菜单栏上的菜单,而不适合于子菜单。 6.4 多文档界面设计 【例6-5】在例6-4中的子窗体1中利用菜单组件添加一个菜单Window,子窗体2中添加一个Font菜单,将子窗体1和子窗体2中的菜单与父窗体菜单合并。 步骤如下: (1)在父窗体中打开菜单设计器,如表6-4所示设置File、Edit、Help菜单项的GroupIndex属性

文档评论(0)

130****9768 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档