新)第四章 文本编辑器的设计(一).docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章介绍多文本界面(MDI)(MPI)技术;VCL库中TMemo,TEdit 控件以及有关文本编辑的常用对话框的使用。我们开发的MPIEdit.dpr是一个文本编辑的实用程序,可实现如下功能:   ● MDI的编辑环境   ● MPI的编辑环境   ● 创建打开、编辑、保存文件   ● 查找、替换文件中指定的字符串   ● 复制、粘贴、剪切字符串   ● 设置文件字体大小   ● 打印文件    本章将通过MPIEdit实用程序逐一介绍在Delphi中如何实现上述功能。   文本编辑器是一种常用的应用程序。用户在编辑器中编辑多种文件,在多个文件之间进行数据交换,对文件进行各种属性设置,并按自己要求打印文件。  4.1 多文本界面    多文本界面是一种在一个应用程序中同时打开两个或更多文件的界面形式。例如在字处理程序可同时打开多个文件,用户可在多个文件中方便地进行切换. MDI应用程序提供了一种方便的方式,使得用户在同一工作区域内对多个文档进行观察和交换数据。MDI工作区域可分为父窗体和子窗体,在Dephi的MDI应用程序中,父窗体通常是程序的主窗体。   在MDI中,父窗体之外的窗体称为子窗体,文档或其它数据在子窗体打开。这些文档可以是相同的文件格式,或在应用程序支持下也可以是不同的文件格式。   在设计阶段,可创建 MDI 父窗体作为应用程序主窗体, 亦可创建子窗体样板。Delphi允许创建多个子窗体类型,但MDI应用程序只支持其中的一种。   本节讲述创建MDI应用程序的基本步骤:   ● 创建主窗口   ● 创建子窗口   ● 创建主窗口菜单   ● 融合菜单   ● 运行时创建子窗口  4.1.1 创建父窗口    在MDI应用程序中,主窗口为应用文档提供一个工作区域。这个区域可打开一个或多个子窗口,创建父窗口是建立MDI应用程序的第一步。   创建父窗口与其它窗口类似,不同之处在于设置窗体的FormStyle属性。   FormStyle属性可决定一个窗体是父窗口还是子窗口,或不是MDI类型。 只能在设计阶段确定FormStyle。在Object Inspector窗口中将FormStyle属性设置成fsMDIForm。值得注意的是应当把父窗口定义为应用程序的主窗体,否则程序编译会出错。  4.1.2 创建子窗口    设计阶段可创建子窗口的样板,用户在运行进使用样板的实例。子窗口是缺省可见的,如果应用程序在运行进创建子窗口,不要让Delphi自动地创建。   创建子窗口时将窗体的FormStyle属性设置为fsMDIChild。如果程序在运行时创建子窗口,则   1. 选择OPtions|Project菜单,系统弹出自动创建列表对话框;   2. 在自动创建列表中选中子窗口;   3. 单击按钮将子窗口移至可得到(Available)窗体列表;   4. 并单击OK按钮退出。 4.1.3 创建应用程序菜单与菜单融合    父窗口的菜单应作为应用程序主菜单。如果子窗口有菜单, 则当子窗口在运行获得焦点并最大化时,子窗口的菜单项将融合父窗口菜单。   创建父窗口与子窗口菜单的方法与创建普通窗体菜单类似, 详细步骤见第一章。菜单融合是指程序运行过程中,子菜单与父窗口菜单的相互作用。 如当子窗口获得焦点时,子窗口的菜单或插入主窗口的菜单中,或将替换部分或全部的父窗口菜单。   进行菜单融合需设置的两个属性:   ● 窗体的Menu属性   ● 菜单项的GroupIndex属性 ?????? Menu属性定义窗体的活动菜单,而菜单融合只对活动菜单进行。如果窗体有多个菜单部件,运行时可通过以下代码进行改变:   Form1.Menu := SecondMenu;  ??????? GroupIndex属性决定出现在菜单条中各菜单项的位置,在菜单融合中,GroupIndex 将 决定融合菜单是插入还是替换主窗体菜单条中的菜单。   GroupIndex的缺省值是0,可以用下规则确定其值:   1. 数值越小,菜单的位置越靠左。   例如:GroupIndex为0的菜单将出现在菜单条中的最左端。随着GroupIndex数值的增大,菜单项依次向右排列。   2. 若需替换主菜单中的某一菜单项,则将子菜单相应菜单项的GroupIndex设为与之相等的值。这条规则适合一个或多个菜单项。例如,主菜单中的Edit菜单项的GroupIndex 的值为1。将子菜单的一个或多个菜单项的GroupIndext的值设为1,则在运行时,这些菜单项替换主窗口的Edit菜单。   将同一窗体的多个菜单项的GroupIndex设为相同值,原有的排列顺序在菜单融合时将保持 不变。   3. 若要在菜单融合时插入菜单项,需在主菜单中预留数值“位置”。例如,主

文档评论(0)

daixuefei + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档