DelphiDelphi自定义控件开发(2)

2019-08-29 22:59

在“Contents”上单击鼠标右键,选择“New”->“BitMap”:

在Width,Height中都填入24,点“OK”即可。

可以在Bitmap1上点右键选择“Rename”为位图重命名为TURLLABEL,然后双击TURLLABEL,就可以像使用“画图”一样为您的控件设计图标了。 7、注册组件。

点击Componet->Install Componet进行自定义组件安装,此时将出现组件安装对话框。 在Unit FilName 中输入控件单元文件的文件名(包括路径),点击“OK”,在弹出的Package Editor 中按下Install按钮。如果安装成功系统就会提示安装成功。关闭Package Editor时,会提示您是否保存修改,点击Yes即可。

安装成功,建立一个测试程序。将URLLabel控件放到窗体上,设定Url属性为

http://www.sohu.com 运行程序,点击此Label,就会弹出浏览器打开http://www.sohu.com这个网址。

思考题:

1、如何为控件添加一个图标?

2、Delphi中的控件的共同基类是哪个类?

3、请做一个编辑框控件,当控件中输入的字符串是网址(以http://开头)且用户在编辑框上

按回车时,用浏览器打开此网址。

Delphi控件开发浅入深出(二)

二、控件开发纵览

通过开发上边这个控件,我们已经对Delphi控件开发有了基本的认识。下面我们将系统的讲述一下控件开发的知识。

制作控件第一件事就是选择适当的 Delphi对象类型作为父对象,以派生新的对象。子对象可以继承父对象的全部非 private部件,但不能摆脱不需要的部件。因此,所选父对象应尽可能多地包含子对象所需的属性、事件和方法,但不应包含子对象不需要的东西。Delphi必须从Tcomponent或Tcomponent的子类派生。TComponent是所有 Delphi控件的基点,但若直接从 TComponent 派生新控件,很多东西就需要自己从头做起。一般只有非可视控件才直接从 TComponent派生。 Delphi提供了若干专门用于制作控件(可视控件)的对象类型,都是从 TControl和 TWinControl派生而来。

TControl的子类型用于非窗口式控件, TWinControl的子类型则用于窗口式控件。除非特殊需要,一般不直接从 TControl和TWinControl派生新控件,而是从其子类型派生。这样可以充分利用原有的属性、事件和方法,减少很多工作量。在这些控件类型中,非通用的属性、事件和方法都声明为 protected。这样可以禁止控件用户访问,又能被子类型继承和修改。在新控件中,可以简单地把继承来的属性和事件重新声明为 published,使控件用户能在设计期通过对象编辑窗口访问,也可以进而修改属性的默认值和读写方式,或是重载( override)事件处理子过程和其他控件方法,以修改其中的程序代码。重声明可以放宽访问权限,但不能相反,例如,不可能把 published属性重声明为 private或 protected。

Delphi控件也是Delphi的类,所有的控件都有特定的结构。一般控件包括三大组成部分:属性、方法和事件,下面先介绍初学控件开发的最难懂的属性部分,其他部分我们将在以后章节为大家介绍。

属性主要部分就是属性的读写方法(或读写字段)。前面的例子用的是读写字段,也就是对属性的读写都通过对字段的读写来完成。下面为大家讲解一下读写方法的使用方法:

TmyComponent = class(TComponent) Private

Fcount: Integer;

Procedure SetCount(Avalue: Integer);

Pulbished

Property Count: Integer read Fcount write SetCount; End;

这个例子中当执行MyComponent1.Count := 1;这样的代码时,将会导致SetCount方法执行,并且参数Avalue被指定为1;当执行 I := MyComponent1.Count;方法时,会将 Fcount的值返回给I。

属性的声明语法允许属性声明的Read和Write部分用访问方法取代对象私有数据域。属性的读方法是不带参数的函数,返回同属性相同类型的值。通常读方法以Get开头。属性的写方法总是带一个参数的过程。写方法常常以Set开头。

思考题:

1、 如何为控件添加属性?

2、 从TwinControl类派生的控件的特点是什么?

Delphi控件开发浅入深出(三)

三、开关控件TlincoSwitch

用过Delphi1(好古老的东东呀!)的人相信都记得这个开关控件,不知道当初Borland为什么把这么一个在开发普通应用程序中应用不到的工控控件放到Delphi中,而且在Delphi2及其以后的版本中再也没有见过它的身影。让我们怀着怀旧的心情把这位“开国元老”请出来吧!

1、建立位图资源文件:

用Image Editor建立一个Res文件,并在文件中分别建立下面两个位图别命名为SWITCHON、SWITCHOFF。保存此Res到控件单元所在目录下。 2、写控件代码。 unit LincoSwitch; interface uses

SysUtils, Classes, Controls, Graphics, Windows; type

TLincoSwitch = class(TCustomControl) private

FIsOn: Boolean;

FPicOn: Graphics.TBitmap; FPicOff: Graphics.TBitmap;

procedure FSetIsOn(AValue: Boolean); protected

procedure Click;override; procedure Paint;override; public

constructor Create(AOwner: TComponent);override; destructor Destroy;override; published

property IsOn: Boolean read FIsOn write FSetIsOn; property OnClick; property OnKeyDown; property OnKeyPress; property OnKeyUp; property OnCanResize; property OnDblClick; property OnMouseDown; property OnMouseMove; property OnMouseUp; property OnMouseWheel; property OnResize;

,并分


DelphiDelphi自定义控件开发(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:四川省情复习试题及答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: