查看: 83|回复: 0

Delphi自定义组件

[复制链接]

2

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-7-22
发表于 2022-2-4 13:19:00 | 显示全部楼层 |阅读模式

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文件

 



来源:https://www.cnblogs.com/AP0606436/p/15862721.html
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部