1.组件设计基础
a.编写组件步骤:
1)确定一个祖先类
TObject:直接从TObject继承下来的类不是组件。有些以此为基类的对象在设计期不需要使用,如TIniFile
TComponent:这是非可视组件的起点,它的特点是在设计时能够以流的方式在IDE上存取
TGraphicControl:创建一个不需要窗口句柄、但要在屏幕上显示的组件时,用这个类作为祖先类
TWinControl:所有需要窗口句柄的组件,都应以该类为基类。该类提供了Windows组件的一般属性和事件
TCustomControl:该类是从TWinControl继承下来的。它具有Canvas属性和Paint()方法,能够控制组建的外观。也用于需要句柄的组件
TCustomClassName:VCL中有些类的属性是不公开的,它们用来作为组件的祖先类。可以以它为祖先类创建出自定义组件,每个组件公开自己的属性
TComponentName:一个现有的组件,譬如TEdit、TPanel或TScrollBox。与其创建一个新的组件,不如扩展一个现有的组件。大部分自定义组件都是这样的
2)创建一个组件单元。
通过选择Component|New Component菜单命令来打开组件专家。在组件专家里,输入组件的祖先类名、组件的类名、组件显示在的面板页和组件的单元名。
点击OK,Delphi会自动创建组件单元,该单元有组件类的声明和注册过程
3)在新组件中添加属性、方法和事件。
(1)加入简单类型的属性:简单类型的属性是指数字、字符串和字符
property InterProp:Integer read FInterProp write SetInterProp;
(2)加入枚举型的属性:例如枚举属性Align,大部分可视的组件都有这个属性
type
TEnumProp=(epZero,epOne,epTwo);
property EnumPeop:TEnumProp read FEnumPeop write SetEnumPeop;
(3)加入集合型的属性
要在Object Inspect中编辑集合型的属性,可以把这个属性展开。这样,集合型的每个元素就好像布尔类型的属性
type
TSetOption=(pone,ptwo,pthree);
TSetOptions=set of TSetOption;
property Options:TSetOptions read FOptions write SetOptions;
4)测试该组件
5)在Delphi中注册该组件。
6)为该组件建立帮助文件。
b:组件包
优点:
1.减少代码
2.使应用程序更容易分发
3.包容组件
c.包文件
.dpk包的源文件 这个文件时包编辑器创建的,可以把它当作Delphi的项目文件(.dpr文件)
.dcp运行期/设计期包的符号文件 这是个编译过的包文件,它包含包的符号信息及IDE需要的头信息
.dcu编译过的单元 包中包含一个单元,就会有一个.dcu文件
.bpl运行期\设计期包的库文件 这就是运行期\设计期包,相当于DLL。如果这是个运行期包,就必须把它与应用程序一起分发(如果应用程序使用了运行期包的话)。如果是个设计期包,就必须把它分发给需要用它编程的程序员。请注意,必须分发单元的源代码或者一个.dcp文件