ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Delphi自定义组件

2022-02-04 13:32:09  阅读:172  来源: 互联网

标签:文件 自定义 Delphi 组件 期包 单元 属性


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

 

标签:文件,自定义,Delphi,组件,期包,单元,属性
来源: https://www.cnblogs.com/AP0606436/p/15862721.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有