Delphi 编写ActiveX控件(OCX控件)的知识和样例
现在对每个部分介绍如下:
1、VCL构件
在Delphi中,一个ActiveX控件是由一个或者多个VCL构件经过包装以后得到的。所以,要使用Delphi来开发ActiveX控件,必须先得开发出或者选择要进行包装的VCL构件。也正是由于这个原因,我们可以将Delphi里大量优秀的VCL构件包装成ActiveX控件,从而可以在别的不能够直接使用VCL构件的开发工具(如Visual Basic、Visual C++)里也能够使用到这些控件啦!
但是,在Delphi里可以用来做ActiveX控件的VCL构件必须是TWinControl的后代。如果想用一个TGraphiControl的子类做ActiveX控件,在大多数情况下只需要把它的基类变为TCustomControl即可。有的VCL构件是被注册成非ActiveX控件的,例如EditControl,这些控件也不能做ActiveX控件。
2、类型库
类型库包含了控件的类型定义信息,提供了比接口更多的详细信息,是控件向它的宿主程序提供服务信息的一种途径。类型库的目的是为其他应用编程工具提供关于它包含的构件对象的信息。开发ActiveX控件时,Delphi把类型库信息存入一个.TLB文件中及一个对应的Pascal文件(.TLB文件的Pascal语言版本),编译时类型库将作为资源链入DLL或者EXE等中。
类型库的元素包括:
(1)类型库信息:包括类型库的总体信息和特征、当前类型库引用的其他类型库;
(2)构件类:代表整个ActiveX控件,包含了提供给客户应用的接口;
(3)接口属性和方法、事件;
(4)枚举类型:一种用作数据类型的相关常量,可以用在类型库的其他地方定义属性和方法。
Delphi提供了一个类型库编辑器,用于观察或修改类型库,可以使用它来增加、修改、删除类型库的各种元素。类型库的界面上可以看到,左边是一个树形结构,各种元素的成员作为子节点出现;右边是根据左边所选中的元素类型显示不同的页签,可以对该元素的一些属性进行编辑。