delphi自定义部件开发一(编辑修改稿)内容摘要:

程 RegisterComponents,过程 RegisterComponents 带两个参数:Component Palette 的页名和部件类型集。 例如,注册名为 TNewComponent的部件,并将其置于 Component Palette 的 Samples 页,在程序中使用下列过程: procedure Register。 begin RegisterComponents(39。 Samples39。 , [TNewComponent])。 end。 一旦注册完毕, Delphi 自动将部件图标显示在 Component Palette 上。 2. 使用 Component Expert(部件专家) 你能使用 Component Expert 创建新部件。 使用 Component Expert 简化了创建新部件最初阶段的工作,因为你只需描述三件事: ● 新部件的名字 ● 祖先类型 ● 新部件要加入的 Component Palette 页名 Component Expert 执行了手工方式的相同工作: ● 建立新的库单元 ● 继承得到新部件对象 ● 注册部件 但 Component Expert 不能在已有单元中增加部件。 可选择 File/New... ,在 New Items 对话框中选择 Component,就打开Component Expert 对话框。 填完 Component Expert 对话框的每一个域后,选择 OK。 Delphi 建立包括新部件和 Register 过程的库单元,并自动增加 uses 语句。 你应该立刻保存库单元,并给予其有意义的名字。 . 测试未安装的部件 在将新部件安装在 Component Palette 之前就能测 试部件运行时的动作。 这对于调试新部件特别有用,而且还能用同样的技术测试任意部件,无论该部件是否出现在 Component Palette 上。 从本质上说,你通过模仿用户将部件放置在窗体中的 Delphi 的动作来测试一个未安装的部件。 可按下列步骤来测试未安装的部件 1. 在窗体单元的 uses 语句中加入部件所在单元的名字 2. 在窗体中增加一个对象域来表示部件 这是自己增加部件和 Delphi 增加部件的方法的主要不同点。 你将对象域加在窗体类型声明底部的 public 部分。 Delphi 则会将对象域 加在底部声明的上面。 你不能将域加在 Delphi 管理的窗体类型的声明的上部。 在这一部分声明的对象域将相应在存储在 DFM 文件中。 增加不在窗体中存在的部件名将产生 DFM文件无效的错误。 3. 附上窗体的 OnCreate 事件处理过程 4. 在窗体的 OnCreate 处理过程中构造该部件 当调用部件的构造过程时,必须传递 Owner 参数(由 Owner 负责析构该部件)一般说来总是将 Self 作为 Owner 的传入参数。 在 OnCreate 中, Self 是指窗体。 5. 给 Component 的 Parent 属性赋值 设置 Parent 属性往往是构造部件后要做的第一件事时。 Parent 在形式上包含部件,一般来说 Parent 是窗体或者 GoupBox、 Panel。 通常给 Parent 赋与Self,即窗体。 在设置部件的其它属性之前最好先给 Parent 赋值。 6. 按需要给部件的其它属性赋值 假设你想测试名为 TNewComponent 类型的新部件,库单元名为 NewTest。 窗体库单元应该是这样的; unit Unitl。 interface uses SysUtils, Windows, Messages, Classes, Grophics, Controls, Forms, Dialogs, Newtest。 type Tforml = class(TForm) procedure FormCreate(Sender: TObject)。 private { private 申 明 } public { public 申 明 } NewComponent: TNewComponent。 end。 var Forml: TForml。 implementation {$R *.DFM } procedure ( Sender: TObject )。 begin NewComponent := ( Self )。 := Self。 := 12。 end。 end. 编写部件的面向对象技术 部件使用者在 Delphi 环境中开发,将遇到在包含数据和方法的对象。 他们将在设计阶段和运行阶段操作对象,而编写部件将比他 们需要更多的关于对象的知识,因此,你应当熟悉 Delphi 的面向对象的程序设计。 1. 建立部件 部件用户和部件编写者最基本的区别是用户处理对象的实例,而编写者创建新的对象类型。 这个概念是面向对象程序设计的基础。 例如,用户创建了一个包含两个按钮的窗体,一个标为 OK,另一个标为 Cancel,每个都是 TButton 的实例,通过给 Text、 default 和 Cancel 等属性赋不同的值,给 OnClick 事件赋予不同的处理过程,用户产生了两个不同的实例。 建立新部件一般有两个理由 ● 改变类型的缺省情况,避 免反复 ● 为部件增加新的功能 目的都是为了建立可重用对象。 如果从将来重用的角度预先计划和设计,能节省一大堆将来的工作。 在程序设计中,避免不必要的重复是很重要的。 如果发现在代码中一遍又一遍重写相同的行,就应当考虑将代码放在子过程或函数中,或干脆建立一个函数库。 设计部件也是这个道理,如果总是改变相同的属性或相同的方法调用,那应创建新部件。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。