发信人: mark7312(小马哥)
整理人: soaringbird(2001-09-27 09:13:55), 站内信件
|
19.2.1.3 建立新部件的方法
建立新部件的方法有两种:
● 手工建立部件
● 使用Component Expert
一旦完成建立后,就得到所需的最小功能单位的部件,并可以安装在Component Palette上。安装完后,你就能将新部件放置在窗体窗口,并可在设计阶段和运行阶段进行测试。你还能为部件增加新的特征、更新选择板、重新测试。
1. 手工创建部件
显然创建部件最容易的方法是使用Component Expert。然而,你也能通过手工来完成相同步骤。
手工创建部件需要下列三步:
● 创建新的库单元
● 继承一个部件对象
● 注册部件
⑴ 创建新的库单元
库单元是Object Pascal代码的独立编译单位。每一个窗体有自己的库单元。大多数部件(在逻辑上是一组)也有自己的库单元。
当你建立部件时,你可以为部件创建一个库单元,也可将新的部件加在已有的库单元中。
① 为部件创建库单元,可选择File/New... ,在New Items对话框中选择Unit,Delphi将创建一个新文件,并在代码编辑器中打开它
② 在已有库单元中增加部件,只须选择File/OPen为已有库单元选择源代码。在该库单元中只能包含部件代码,如果该库单元中有一个窗体,将产生错误
⑵ 继承一个部件对象
每个部件都是TComponent的后代对象。也可从TControl、TGraphicControl等继承。
为继承一个部件对象,要将对象类型声明加在库单元的interface部分。
例如,建立一个最简单的从TComponent直接继承非可视的部件,将下列的类型定义加在部件单元的interface部分。
type
TNewComponent=class(TComponent)
……
end;
现在你能注册TNewComponent。但是新部件与TComponent没什么不同,你只创建了自己部件的框架。
⑶ 注册部件
注册部件是为了告诉Delphi什么部件被加入部件库和加入Component Palette的哪一页。
为了注册一个部件:
① 在部件单元的interface部分增加一个Register过程。Register不带任何参数,因此声明很简单:
procedure Register;
如果你在已有部件的库单元中增加部件,因为已有Register 过程,因此不须要修改声明。
② 在库单位的implementation部件编写Register过程为每一个你想注册的部件调用过程RegisterComponents,过程RegisterComponents带两个参数:Component Palette的页名和部件类型集。例如,注册名为TNewComponent的部件,并将其置于Component Palette的Samples页,在程序中使用下列过程:
procedure Register;
begin
RegisterComponents(´Samples´, [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语句。
你应该立刻保存库单元,并给予其有意义的名字。
---- 小马哥
美丽的梦和美丽的诗一样,都是可遇而不可求的,
常常在最没能料到的时候里出现
|
|