选择显示字体大小

delphi控件,我们也可以(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组件中,这些代码完全通用。方法载很简单,我介绍一下消息响应。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons