19.2.2.4 注册部件
编写部件及其属性、方法和事件只是部件创建过程的一部分。尽管部件具有这些特征就可用,但部件真正功能强大的是在设计时操作它们的能力。
使部件在设计时可用需要经过如下几步:
● 用Delphi注册部件
● 增加选择板位图
● 提供有关属性和事件的帮助
● 存贮和读取属性
1. 用Delphi注册部件
为了让Delphi识别自定义部件,并将它们放置于Component Palette上,你必须注册每一个部件。
注册一个部件要在部件所在单元里加入Register方法,这包括两个方面的内容:
● 声明注册过程
● 实现注册过程
一旦安装了注册过程,就可以将部件安装在选择板上。
注册过程要在部件所在单元中写一个过程,该过程必须以Register命名。Register必须出现在库单元的interface部分,这样Delphi就能定位它。在Register过程中,可以为每个部件调用过程RegisterComponents。
下面的代码演示了建立和注册部件的概略方法:
unit MyBtns;
interface
type
… { 声明自定义部件 }
procedure Register;
Implementation
procedure Register;
begin
… { 注册部件 }
end;
end.
在Register过程中,必须注册每一个要加入Component Palette的部件,如果库单元包含若干部件,就要将它们一次性注册。
注册一个部件时,为部件调用RegisterComponents过程。RegisterComponents告诉Delphi两件有关所注册的部件的事::
● 要注册部件所在的Component Palette的页名
● 要安装的部件的名字
选择板的页名是个字符串。如果你所给名字的页不存在,Delphi就用该名字创建新的页。
下面的Register过程注册了一个名为TMyComponent的部件,并将其放在名为“Miscellaneous”的Component Palette页上。
procedure Register;
begin
RegisterComponents('Miscellaneous', [TFirst, TSecond]);
end;
也可以在相同的页上,或者在不同的页上,一次注册多个部件:
procedure Register;
begin
RegisterComponents('Miscellaneous', [TFirst, TSecond]);
RegisterComponents('Assorted', [TThird]);
end;
2. 增加Component Palette上的位图
每个部件都需要一个位图来在Component Palette上代表它。如果安装时没有描述自己的位图,则Delphi会自动套用缺省位图。
因为选择板位图只有在设计时需要,所以没有必要将它们编译进库单元。而是将它们提供在与库单名相同的Windows资源文件中,扩展名为.DCR。用Delphi的位图编辑器来生成资源文件,每个位图边长24个象素。
为每个要安装的库单元提供一个选择板位图文件,在每个文件中为每个要注册的部件提供一个位图。位图图象名与部件名相同,将文件放在与库单元相同的目录中,这样在安装部件时Dephi就能发现位图。
例如,如果你在ToolBox单元中创建一个名为TMyControl的部件,就需要建立名为TOOLBOX.DCR的资源文件,文件中包含名为TMyControl的位图。
3. 提供有关属性和事件的帮助
当在窗体中选择一个部件或在Object Inspector中选择事件或属性时,能够按F1得到有关这一项的帮助。如果创建了相应的Help文件的话,自定义部件的用户能得到有关你的部件的相应的文档。
因为Delph使用了特殊的Help引擎支持跨多个Help文件处理主题搜索,所以你能提供关于自定义部件的小的Help文件,用户不需要额外的步骤就能找到你的文档。你的Help成了Delphi Help系统的一部分。
要给用户提供帮助,要理解下列两方面:
● Delphi怎样处理HELP请求
● 将HELP插入Delphi
⑴ Delphi怎样处理HELP请求
Delphi基于关键词查询HELP请求。就是说,当用户在窗体设计窗口的已选部件上按F1键时,Delpdi将部件的名字转换成一个关键词,然后调用Windows Help引擎查找那个关键词的帮助主题。关键词是Windows Help系统的标准部分。实际上 ,WinHelp使用Help中的关键词产生Search对话框中的列表。因为用于上下文敏感搜索中的关键词不是实际供用户读的,所以要输入关键词的替代词。
例如,一个查找名为TSomething的部件的详细信息的用户可能打开WinHelp的Search对话框并输入TSomething。但不会使用用于窗体设计窗口的上下文查找的替代形式class-TSomething。因此,这个特殊的关键词Class-TSomething对用户是不可见的,以免弄乱了搜索列表。
⑵ 将Help插入Delphi
Delphi提供了创建和插入Windows Help文件的工具,包括Windows Help编译器HC.EXE。为自定义部件建立Help文件的机制与建立任何Help文件没什么不同,但需要遵循一些约定以与库中其它Help兼容。
保持兼容性的方法如下:
● 建立Help文件
● 增加特殊的注脚
● 建立关键词文件
● 插入Help索引
当你为自定义部件建立完Help,有下列几个文件:
● 编译过的Help(.HLP)文件
● Help关键词(.KWF)文件
● 一个或多个Help源文件(.RTF)
● Help工程文件(.HLJ)