第5章 多窗体与MDI窗体.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实际的应用程序常包含许多窗体。如果这些窗体都由系统自动创建,会消耗大量的系统资源。因此通常在引入窗体的单元文件后,当程序运行、需要创建窗体时,动态地创建该窗体对象,而当该窗体关闭时,即将该窗体清除出内存,以保证程序的稳定运行。 ? Show方法 ? ShowModal方法 问:Show方法和ShowModal方法的差别 问:Delphi如何实现窗体重用? 系统提供的窗体模板 将自行设计窗体存储成模板 使用Frame对象 创建窗体模板 使用窗体模板 问:Copy,Inherit和use三者的区别? 使用Frame对象 使用Frame对象可以将几个组件封装在一起,工作时可以像使用普通组件一样,将这个Frame组件放置在窗体上,还可以设置这个Frame组件的属性和事件。 使用Frame对象进行组件封装 例5.2 File|New|Frame 在Frame窗体中放置组件。 File|Save保存Frame窗体的单元文件。注意保存该单元文件时要使用自定义的文件名,而不要使用默认的单元文件名unit1,因为会在以后的使用中与Form窗体的单元文件名发生冲突。 将所创建的Frame对象加入到组件选项页中。快捷菜单Add to Palette 5.3 MDI窗体 MDI(Multiple Document Interface) 多文档界面是1个能够同时处理多重文档的应用程序的用户界面和窗体结构。MDI是1个特殊的多窗体结构。普通的多个相互独立的窗体,虽然也有1个主窗体,但是这个主窗体可以是多个窗体中的任何一个窗体。对于MDI来说,只有父窗体才能被设置为主窗体。它就像1个容器一样包含着许多子窗体,父窗体与子窗体之间是一种隶属关系,而子窗体之间是1种平等关系。 利用Delphi提供的模板创建MDI (1)启动Delphi7.0,在主菜单上选择【File】| 【New】| 【Other】命令。 (2)选择“Projects”选项卡中的“MDI Application”,单击“OK”按钮。 (3)在对话框中选择合适的路径保存多文档程序的文件,单击“OK”按钮。 (4)添加组件和程序代码。 手动建立MDI父子窗体 创建父窗体 问:要使1个窗体成为父窗体,要设置哪个属性? FormStyle不同属性值的意义? 要使1个窗体成为父窗体,只需把它的FormStyle属性设置为fsMDIForm即可。 注意:(1)只能在设计阶段确定FormStyle属性 (2)应当把父窗口定义为应用程序的主窗体,否则程序编译将会出错。 创建子窗体 要使1个窗体成为子窗体,只需把它的FormStyle属性设置为fsMDIChild即可。 问:如何动态创建子窗体? 必须在Project Option对话框中将子窗口从左边的Auto-Create Forms放到右边Available Forms框中去。在需要显示子窗口处用代码来创建它。 procedure TfrmMDIParent.New1Click(Sender: TObject); var Child:TfrmMDIChild; //定义子窗体类型的变量 begin {以下过程创建新的子窗体} Child:=TfrmMDIChild.Create(self); Child.Caption:=未命名+IntToStr(MDIChildCount); //设置子窗体标题 end; 父窗口菜单作为应用程序主菜单。如果子窗口有菜单,则当子窗口在运行获得焦点时并处于最大化状态时,子窗口的菜单项将与父窗口菜单融合。创建父窗口与子窗口菜单的方法与创建普通窗体菜单相似。菜单融合是指在程序运行过程中,子菜单与父窗口菜单的相互作用。如当子窗口获得焦点时,子窗口的菜单或插入主窗口的菜单中,或替换部分或全部的父窗口菜单。 问:如何实现菜单的融合? 进行菜单融合,需设置窗体的Menu属性和菜单项的GroupIndex属性。 Menu属性 ???? Menu属性定义窗体的活动菜单。而菜单融合只针对活动菜单进行。如果窗体有多个菜单组件,运行时可通过代码对使用的菜单组件加以改变: Form1.menu:=secondmenu; GroupIndex属性 GroupIndex属性决定出现在菜单中各菜单项的位置。在菜单融合中,该属性用来控制子窗体菜单如何同应用程序主菜单合并。 ?? 数值越小,菜单的位置越靠左。 ? 如果子窗体的某菜单项的GroupIndex属性与主窗体的某菜单项的GroupIndex属性值相同

文档评论(0)

xuefei111 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档