Delphi控件,我们也可以(2)

2008-02-23 07:19:54来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

1 2 下一页

实践第一步——分析和设计

  Delphi为我们提供的组件中,有一个Label控件,它完成了最基本的单行文本标签功能。不过它的功能实在是太有限啦,总是在那里灰不溜秋地趴着。现在我们给它增加点动态效果,让它成为一个可以在鼠标经过时改变外表的标签——TouchLabel。也就是说,在Label的基础上,我们要给它添加几个属性,使鼠标经过时,标签的的文字效果会变为我们指定的样子。那么,我们要扩充的功能分为以下几部分:

1、两个属性及其对应的属性编辑器,为它指定MouseMoving时的背景色和前景色。

2、在鼠标经过标签上时,改变标签的外观。

3、鼠标移出后,把外观改为原来的样子。

分析这三个功能,需要用到以下的技术:

  自义属性,事实上把属性定义为Publish类型,并为它指定对应的Read和Write方法,它就会出现在属性编辑器中。现在我们把这两个属性命名为TouchBKColor和TouchFont。现在看一下我的属性定义:

property TouchBKColor : TColor Read GetTouchBKColor Write SetTouchBKColor

stored isStoreTouchBKColor default clWindow;

property TouchFont : TFont Read FTouchFont Write SetTouchFont

stored isStoreTouchFont;

  stored是标识这个属性是否要保存在程序的.dfm中以做持久化,通常它由一个返回值为 Boolean 类型的函数来控制。这里是isStoreTouchBKColor 和isStoreTouchFont。而default是用来为这个属性指定一个默认值。另外,我还定义了一个属性来判断是否需要让这个Touch功能生效。就是

property ChangeWhileTouch : Boolean Read isStoreTouchFont

Write isStoreTouchFont default True;

  这些代码并不复杂,我直接将它们附在后面,在这里就不多占篇幅了。只有两点要指出,一个是在属性本身的Read和Write方法中不可以对属性本身进行读写,否则会引起无穷递归。还有一个是属性本身不保存信息,通常的做法是在读写方法中操作某一私有字段。

  “事件”响应,这不是平时我们所用的事件响应,而是为鼠标进出控件编写对应的代码。在VCL和CLX中,采用的是不同的方法。VCL的消息体系和Windows的消息体系比较接近,我们要找出鼠标进出控件的消息,写对应的消息响应代码。而CLX是基于著名的C 跨平台类库QT开发的。所以它采用的是QT的信号——槽机制。好在CLX可视控件的基础类TControl为我们封装了MouseEnter和MouseLeave,我们只要重载这两个成员方法,写上我们自己的代码。而在VCL和CLX的TouchLabel组件中,这些代码完全通用。方法载很简单,我介绍一下消息响应。

上一篇: delphi实例编程之--制作可随处拖放的工具栏
下一篇: 关于VisiBroker For Delphi的使用(1)

1 2 下一页

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:好玩实用:Delphi模拟QQ窗体伸缩功能

下一篇:一个实际的OLE服务器的开发