`
禹爸爸
  • 浏览: 80676 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Delphi中编写自定义组件

阅读更多
Delphi提供了丰富的VCL组件供编程人员使用,同时还允许编程人员根据实际需要进行自定义组件的编写。
组件的代码编写和我们平常写的类很相似,但也有几点不同,一个是需要从TComponent类继承而来,另一个是要使用Published关键字定义我们想要出现在对象观察器中的属性是事件,再一个就是我们要把这些代码添加到一个设计包中,之后通过对这个包进行编译和安装来发布我们编写的组件。
组件中事件的定义和属性定义一样,使用Property关键字,事件的类型可以使用Delphi标准的事件类型如TNofifyEvent,或者是自已定义一个事件类型,其定义方式如下:
Type
TComponentEvent
=procedure(Params)ofobject;
其中Params是根据组件需要定义的一个或多个参数,可以是任何类型的。
 
下面我们就以具体的实例来讲解如何在Delphi中编写自定义组件。首先在Delphi中新建一个包,然后在包中添加一个单元文件,在单元文件中定义如下组件类
Type
TMyComponentEvent
=procedure(Sender:TObject)ofobject;

TMyComponent
=class(TComponent)
private
FMyProperty:String;
FMyEvent:TMyComponentEvent;
procedureSetMyProperty(
constValue:String);
protected
....
public
constructorCreate;
destructorDestroy;
override;
...
published
//ThefollowingpropetyandeventwillappearinObjectInspector
propertyMyProperty:StringreadFMyPropertywriteSetMyProperty;
propertyMyEvent:TMyComponentEventreadFMyEventwriteFMyEvent;
end;
实现部分的代码就省略了,此处仅为说明组件的定义。到此就完成了一个组件的定义。接下来我们就需要将这个组件注册到Delphi中,让其他编程人员可以像使用Delphi标准组件一样在组件面板上看到我们定义的组件,并将其拖放到设计窗体上。注册组件我们需要写一个注册过程,Delphi规定这个过程名必须为Register,且没有任何参数,在这个过程中我们只需要调用在Classes单元中定义好的RegisterComponents方法(此方法需要两个参数,第一个是组件面板的名称,第二个就是要注册的组件类数组),就可以将我们写的组定注册到Delphi中并在组件面板中出现。
procedureRegister;
begin
RegisterComponents(‘PageName’,[TMyComponent]);
end;
 
编译并安装包,之后就可以在组件面板上看到我们定义的组件图标了。我们发现组件图标使用的是Delphi默认的,不形象,也不个性,我们应该如何为这个组件指定一个个性的图标呢?其实也不难,这里就要用到了Delphi自带的工具Image Editor。
我们打开Image Editor,点击New->Component Resource File,创建一个组件资源文件。此时会出现一个窗体,仅有一个“Components”结点,我们右击该节点,在弹出的上下文菜单中选择“New->Bitmap”,此时“Components”结点下会出现一个Bitmap结点,这个结点下还有一个名为“Bitmap1”的结点,即我们新建的Bitmap对象,将“Bitmap1”结点名称改为我们编写的组件名称,注意这里要全部使用大写。然后双击这个结点就可以编辑一个32×32的图像了。编辑好之后保存这个资源文件,这里又有一点要注意,就是这个资源文件需要和组件注册方法(Register方法)所在的单元文件名相同。最后将这个资源文件加入到我们创建的包中,再重新编译并安装这个包。
 
完整的代码如下:
unitMyComponentUnit;

interface

uses
SysUtils,Classes;

Type
TMyComponentEvent
=procedure(Sender:TObject)ofobject;

TMyComponent
=class(TComponent)
private
FMyProperty:String;
FMyEvent:TMyComponentEvent;
procedureSetMyProperty(
constValue:String);
protected
....
public
constructorCreate;
destructorDestroy;
override;
...
published
//ThefollowingpropetyandeventwillappearinObjectInspector
propertyMyProperty:StringreadFMyPropertywriteSetMyProperty;
propertyMyEvent:TMyComponentEventreadFMyEventwriteFMyEvent;
end;

procedureRegister;

implementation

...{TMyComponent}

constructorTMyComponent.Create;
begin
inherited;

end;

destructorTMyComponent.Destroy;
begin

inherited;
end;

procedureTMyComponent.SetMyProperty(
constValue:String);
begin
FMyProperty:
=Value;
end;

procedureRegister;
begin
RegisterComponents(‘PageName’,[TMyComponent]);
end;

end.

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:
评论

相关推荐

    Delphi“自定义组件”演示程序

    摘要:Delphi源码,其它类别,自定义组件 Delphi自制组件示例程序:“自定义组件”编写的演示程序,具体细节请参阅源代码,免费下载。 运行环境:Windows/Delphi7

    Delphi编写的日志文件记录组件源程序

    Delphi编写的日志记录组件源代码,从中可以学习自定义组件的一些技巧,如注册到组件面板、添加自定义图标等。 日志组件具有以下属性及方法: public { Public declarations } procedure AddLog(p_Info: string); /...

    Delphi支持自定义背景及滑块图片的TrackBar控件

    Delphi自带的TTrackBar控件只能显示默认的背景图片及拖动滑块,由于编制一个播放器的需要,自己编写了一可自定义图片的ImgTrackBar组件包,该组件包有两个类似TTrackBar的不同控件以适应不同的需求: 第一个控件是...

    《Delphi高手突破》原书光盘

    光盘目录:一、“对象所占内存空间大小”演示程序二、“继承”演示程序三、“异常”演示程序四、“消息分发”演示程序五、“API编写窗口程序”演示程序六、“自定义组件包”代码七、使用“自定义组件”编写的演示...

    WEB自定义打印模板控件OCX

    自己开发的基于Fastrepot组件 delphi7编写的 ocx B/S开发,C/S开发都可已使用,已有软件项目使用过,支持打印二维条码,支持用户自定义修改报表模板。

    Delphi_深度编程

    基础篇结合示例论述了Delphi的深度编程技术,其中包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;...

    Delphi5开发人员指南

    10.3.1 打印TMemo组件中的内容 267 10.3.2 打印位图 268 10.3.3 打印RTF格式的文本 269 10.4 打印窗体 269 10.5 高级打印 270 10.5.1 打印分栏报表 270 10.5.2 放弃打印进程 275 10.5.3 打印信封 275 10.5.4 抽象...

    《Delphi 深度编程及其项目应用开发》PDF书及代码

    基础篇结合示例论述了Delphi的深度编程技术,其中包括9章,分别为:理解Windows消息、进程与线程、自定义组件的编写、文件操作、创建DLL应用程序、两层数据库应用程序、多层数据库应用程序、Socket编程、串口编程;...

    Delphi 程序设计基础教程

    对话框、工具栏和状态栏设计、Delphi 多媒体应用、Delphi 异常处理与调试、数据库编程、报表与图表、 面向对象的程序设计、Delphi 自定义组件的开发、动态链接库(DLLs)编程、多线程、文件操作内容。每章 后面都提供...

    Delphi深度编程技术

    第3章 自定义组件的编写 3.1 组件的基本概念 3.1.1 属性 3.1.2 方法 3.1.3 事件 3.1.4 拥有关系 3.1.5 父子关系 3.2 组件创建实例 3.3 组件的高级技术--属性编辑器和组件编辑器 3.3.1 组件的属性编辑器 ...

    Delphi_程序设计基础教程

    对话框、工具栏和状态栏设计、Delphi 多媒体应用、Delphi 异常处理与调试、数据库编程、报表与图表、 面向对象的程序设计、Delphi 自定义组件的开发、动态链接库(DLLs)编程、多线程、文件操作内容。每章 后面都提供...

    《Delphi游戏编程导学》CHM书

    其中包含Delphi多媒体、图形图像处理、Windows API调用、自定义及第三方组件应用、数据库以及网络编程等相关知识点,使读者不仅可以从中获得Delphi编程的精髓,还能在学习过程中体味游戏的乐趣。 本书以实例导学的...

    DELPHI技巧集(集合各种开发源码)

    74 Print.htm 用Delphi编写打印程序的窍门 2K 75 Query_web.htm 基于WEB的数据库查询 10K 76 Show_form.htm 在Delphi编程中创建一个启动闪现窗口 4K 77 Subdirfind.htm 子目录级的文件查询的实现 7K 78 Api_...

    Delphi 深度编程及其项目应用开发

    DELPHI 深度编程技术 1】理解WINDOWS消息 2】进程与线程 3】自定义组件的编写 4】文件操作 5】创建DLL应用程序 6】两层数据库应用程序 7】多层数据库应用程序 8】Socket 编程 9】串口编程

    Delphi高手突破实例

    Delphi高手突破源码,包括了以下示例程序的源代码:一、“对象所占内存空间大斜演示程序,二、“继承”演示程序,三、“异常”演示程序,四、“消息分发”演示程序,五、“API编写窗口程序”演示程序,六、“自定义...

    TRichView14.5.1FS

    文档可以包含表格,图片,图像列表中的图像,任何Delphi控件。左,右,居中或分散对齐,自定义页边距和缩进,多级项目符号和编号,统一编码,背景图像,打印预览,HTML导出,RTF导出和导入,数据感知版本等等…… ...

    Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版]

    Delphi XE8 iOS与Android移动应用开发(APP开发)[完整中文版],这是一本不可多得的介绍使用delphi xe8开发iOS与Android移动应用的电子书,实用的技术开发教程与技术开发手册。 Delphi XE8跨平台开发让你使用一套...

    BmpClock 模拟时钟组件

    注意:此组件完全采用Delphi 7 编写/编译,如果用在其他 Delphi 的版本,不知道有没有问题?此组件是我学 Delphi 7 半年来第一次写的控件,有很多 BUG,自己也正在尝试改进,无奈时间和精力都有限,如果你对此代码...

    delphi EhLib 9.5.012 Full Source 专业版 .rar

    该库包含Borland Delphi版本7、9的组件和类。 Developer Studio 2006,Delphi 2007,Embarcadero RAD Studio 2009-XE10.3,Lazarus。 目录 ----------------- 总览 安装库 安装帮助 示范节目 注册和价格 其他资讯 ...

Global site tag (gtag.js) - Google Analytics