在delphi中编写控件的基本方法(1)
[ 作者: 雷小园 添加时间: 2001-5-5 18:01:08 ]
来源:www.ccidnet.com
作为delphi程序员,要想进一步提高编程水平就必须掌握控件的编写方法,本篇文章将通过一个简单的例子来为初学者介绍编写控件的一些基本方法和模式。
这个例子控件叫tleilabel,是在tlabel的基础上增加两个实用的功能:一是使文字具有立体形状,二是使文字具有超链接属性。下面就让我们一步步来实现这些功能。
一、使文字具有立体形状
首先定义类型t3deffect和属性style3d分别如下:
t3deffect=(normal,raised,lowered, shadowed);
property style3d:t3deffect read fstyle3d write setstyle3d default normal;
再在private中定义变量:“fstyle3d:t3deffect;”,并设置setstyle3d()方法如下,这也是写方法的一般格式:
procedure tleilabel.setstyle3d(value: t3deffect);
begin
if fstyle3d <> value then
begin
fstyle3d := value;
invalidate; //表示控件将重画
end;
end;
另外对于带阴影的文字还要定义阴影的偏移量shadexoffset和shadeyoffset:
property shadowxoffset: integer read fxoffset write setfxoffset default 5;
property shadowyoffset: integer read fyoffset write setfyoffset default -5;
写方法setfxoffset()、setfyoffset()和上面的setstyle3d()类似。
要重画控件一般要重载paint方法,此处只是重画文字,我们只需重载dodrawtext方法。
dodrawtext的声明放在protected中:
procedure dodrawtext(var rect: trect; flags: longint); override;
此处dodrawtext()根据四种类型(正常、凸起、凹进和阴影)分别画出不同的文字。
二、使文字具有超链接属性
定义一个属性url表示要链接的网址或email地址。
property url : string read furl write seturl;
写方法seturl如下:
procedure tleilabel.seturl(value: string);
begin
if furl <> value then furl := value ;
if furl <> '' then
cursor := crhandpoint;
end;
当点击此label时要打开浏览器或收发邮件工具,这便要重载click方法。
procedure click; override;
procedure tleilabel.click;