- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
组件开发指南
第一章 组件制作概述本章表述了组件设计的概论和编写Delphi应用程序组件的过程。 这里的材料将让你各更熟悉Delphi和它的标准组件。? #8226; Class library(类库)? #8226; Components and classes(组件和类)? #8226; Creating components(创建组件)? #8226; What goes into a component?()? #8226; Creating a new component(创建新组件)? #8226; Testing uninstalled components(卸载组件)? #8226; Testing installed components(安装组件)? #8226; Installing a component on the Component palette(在组件栏安装组件)? 要获得更多的安装新组件的信息,请参考开发者指南第 16-10页“安装组件包”一节。Delphi的组件包括VCL(虚拟组件库)和CLX(跨平台组件库)。图1.1显示了构成VCL层的所选类之间的关系。CLX 层类似于VCL 层但是 Windows 控件称为 widgets ?(因此,例如, WinControl叫TwidgetControl ), 并且有其他差别。 对一个类阶层和继承类之间的关系的更详细的讨论,请参考第2章,组件编写者的面向对象的程序设计。 针对层之间相互差别的概述, 在开发者的指南的15-7 页上WinCLX 与VisualCLX一节以及CLX 在线获取更详细的组件说明。TComponent 类在组件库是每个组件所共同拥有的祖先。 Tcomponent类提供最少而且是必要的性质和事件以使组件能在IDE上工作。 库的各类分支提供了组件其他更专业化的功能。当你创造一个新组件时,你将通过从层的现有的类类型中得到一个新类来添加到组件库中。由于组件都是类,组件的开发者处在程序开发的不同的水平上。创建新组件需要你得自新类。简要的说,在创建组件和在程序中应用组件之间存在这两个主要的区别。当我们创建组件时? ? Oslash;你所处理的是应用程序程序员几乎不涉及的类的部分? ? Oslash;你需要在你的组件里增加新的部分(比如说新的属性)由于这些差别,你需要知道更多的(程序)内部转换并且得考虑程序开发员将怎样使用你所编写的组件。一个组件可能是一个程序中你想要在设计期内使用的任何方案的组成部分。创建一个新组件意味着从一个已知存在的类获得。你能以这几种方式重构一个新组件:修改已存在的控制方式? ? 创建窗口控制方式? ? 创建图形控制方式? ? 子类窗口控制方式? ? 创建非可视组件你也可以通过那些不能在 Form 上操作的组件重构类,比如 TregInifile 和 Tfont。最简单的创建组件的方式是在一个已存在的组件上自定义。你能从任何一个在组件库中存在的组件上重构一个新组件。一些控制方式,例如 List Boxes 和 Grids,基于数个不通的主题。这样的话,组件库包含了从自定义的版本得到的抽象类(在此类中,以 custom 为其名,如 TcustomGrid)。例如,你想创建一个不含有标准 TlistBox 类某些属性的特定的 ListBox。你不能移除(隐藏)一个继承自祖先类的属性,因此,你需要从 TlistBox 之上的类得到你的组件。组件库提供了 TcustomListBox - 它实现了 ListBox 的属性但并不完全将这些属性全部都显示出来 ― 而不是迫使你从 TwinControl(或者是 CLX 应用程序中的TwidgetControl)类上重新编写所有的 ListBox 功能。当你从像 TcustomListBox 那样的抽象类上得到新组件时,你可以在你的组件上发布你想要的那些属性,而把你不需要的留下“藏”起来。第3章,“Creating properties”解释了发布继承属性的方法。? ? 第9章,“Modifying an existing component”和第11章,“Customizing a grid”演示了如何修改组件中已存在控制方式的例子。在组件库中的窗口控制是在运行期出现的对象,用户能与之互动。每个窗口控制都有通过 Handle 属性进行处理的窗口句柄,这些句柄能够被操作系统所识别和控制。如果使用了VCL 控制,句柄就允许控制接收输入焦点并且能被 Widows API 函数所使用。CLX 控制是基于窗口小部件的控制方式。每个基于窗口部件的控制都具有一个通过以小窗口为基础的 Handle 属性处理的句柄。所有的窗口控制都源于 TwinControl 类(
文档评论(0)