欢迎来到天天文库
浏览记录
ID:39549416
大小:312.50 KB
页数:29页
时间:2019-07-06
《Delphi组件开发指南》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、组件开发指南第一章组件制作概述本章表述了组件设计的概论和编写Delphi应用程序组件的过程。这里的材料将让你各更熟悉Delphi和它的标准组件。 •Classlibrary(类库) •Componentsandclasses(组件和类) •Creatingcomponents(创建组件) •Whatgoesintoacomponent?() •Creatinganewcomponent(创建新组件) •Testinguninstalledcompon
2、ents(卸载组件) •Testinginstalledcomponents(安装组件) •InstallingacomponentontheComponentpalette(在组件栏安装组件) 要获得更多的安装新组件的信息,请参考开发者指南第16-10页“安装组件包”一节。Delphi的组件包括VCL(虚拟组件库)和CLX(跨平台组件库)。图1.1显示了构成VCL层的所选类之间的关系。CLX层类似于VCL层但是Windows控件称为widgets (因此,例如,WinControl叫Twidge
3、tControl),并且有其他差别。对一个类阶层和继承类之间的关系的更详细的讨论,请参考第2章,"组件编写者的面向对象的程序设计"。针对层之间相互差别的概述,在开发者的指南的15-7页上"WinCLX与VisualCLX"一节以及CLX在线获取更详细的组件说明。TComponent类在组件库是每个组件所共同拥有的祖先。Tcomponent类提供最少而且是必要的性质和事件以使组件能在IDE上工作。库的各类分支提供了组件其他更专业化的功能。当你创造一个新组件时,你将通过从层的现有的类类型中得到一个新类来添加到组件库中。由于组
4、件都是类,组件的开发者处在程序开发的不同的水平上。创建新组件需要你得自新类。简要的说,在创建组件和在程序中应用组件之间存在这两个主要的区别。当我们创建组件时 Ø你所处理的是应用程序程序员几乎不涉及的类的部分 Ø你需要在你的组件里增加新的部分(比如说新的属性)由于这些差别,你需要知道更多的(程序)内部转换并且得考虑程序开发员将怎样使用你所编写的组件。一个组件可能是一个程序中你想要在设计期内使用的任何方案的组成部分。创建一个新组件意味着从一个已知存在的类获得。你能以这几种方式重构一个新组件:修
5、改已存在的控制方式 创建窗口控制方式 创建图形控制方式 子类窗口控制方式 创建非可视组件你也可以通过那些不能在Form上操作的组件重构类,比如TregInifile和Tfont。最简单的创建组件的方式是在一个已存在的组件上自定义。你能从任何一个在组件库中存在的组件上重构一个新组件。一些控制方式,例如ListBoxes和Grids,基于数个不通的主题。这样的话,组件库包含了从自定义的版本得到的抽象类(在此类中,以custom为其名,如TcustomGrid)。例如,你想创建一个不含有标准TlistBox类某些属性的
6、特定的ListBox。你不能移除(隐藏)一个继承自祖先类的属性,因此,你需要从TlistBox之上的类得到你的组件。组件库提供了TcustomListBox-它实现了ListBox的属性但并不完全将这些属性全部都显示出来―而不是迫使你从TwinControl(或者是CLX应用程序中的TwidgetControl)类上重新编写所有的ListBox功能。当你从像TcustomListBox那样的抽象类上得到新组件时,你可以在你的组件上发布你想要的那些属性,而把你不需要的留下“藏”起来。第3章,“Creatingpropert
7、ies”解释了发布继承属性的方法。 第9章,“Modifyinganexistingcomponent”和第11章,“Customizingagrid”演示了如何修改组件中已存在控制方式的例子。在组件库中的窗口控制是在运行期出现的对象,用户能与之互动。每个窗口控制都有通过Handle属性进行处理的窗口句柄,这些句柄能够被操作系统所识别和控制。如果使用了VCL控制,句柄就允许控制接收输入焦点并且能被WidowsAPI函数所使用。CLX控制是基于窗口小部件的控制方式。每个基于窗口部件的控制都具有一个通过以小窗口为基础的Ha
8、ndle属性处理的句柄。所有的窗口控制都源于TwinControl类(在VCL的TwidgetControl上)。这些控制包含了大多数标准的窗口控制,如pushbuttons(按钮),listbox(列表框)和editbox(编辑框)。当你从TwinControl(在VCL的TwdgetControl上)能直接得到一
此文档下载收益归作者所有