在“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;
,并分