引言:
VCL中的Shape是个很不错的控件,可以选择几种图形,以满足我们的需求,但有时候就是觉得它的可选图形少了一点,比如我们想要一个三角形,它却没有。
摘要:
接下来要动手来做一个组件了,我想了一个计数器组件,功能方面是比较简单的,但这不是本章的重点,这一章的重点是说明一个组件的制作全过程。在其中可以学到很多组件制作的技巧,当然这些也是我从书上学得的。好了,开始制作吧: 这是一个可以计数的组件,为了简单,我以秒为单位,当开始时,他就从0开始增加,并显示出来,到3600时,它又回到0,如此循环。当然它也可以停止,暂停,继续。另外,他还有一个时间事件,即可......
摘要:
// a:=stringtoguid({000208fb-0000-0000-c000-000000000046});// ichart 和 chart接口各自具有不同的guid根本不相容// a:=stringtoguid({000208fb-0001-0000-c000-000000000046});}// stringtoguid 用于将 字符串guid转换为 tguid// guidto......
组件制作之三(图形控件)
vcl中的shape是个很不错的控件,可以选择几种图形,以满足我们的需求,但有时候就是觉得它的可选图形少了一点,比如我们想要一个三角形,它却没有.于是就想到来扩展一下这个控件,名为shapeex.其实扩展的功能不多,只是增加了一些图形.而类也并不是继承自tshape,而是继承自tgraphiccontrol,这样可以让我们彻底看看图形控件的做法.tshape也是继承自tgraphiccontrol.而我们的扩展控件功能是基于shape的扩展,所以当然里面的代码几乎取之tshape,只是加了一些扩展图形的代码,但又有什么关系呢,vcl源码是最好的学习资源,我们何不取之用之. 【程序编程相关:
简易对象垃圾回收框架 for Delph】 【推荐阅读:
一个值得大家来考虑的DLL问题】 【扩展信息:
插件管理框架 for Delphi(二)】 很多东西我们已经在上面说过了,这里不多说了,我要直入图形控件的重点.图形控件不是封装windows的控件,而是delphi自己画出来的,那么它肯定有一个画控件的函数.这个函数就是: paint; 看一下vcl源码,可以知道它定义在tgraphiccontrol.中: procedure paint; virtual; 这是一个虚函数,那么它的实现是怎么样的呢,点击看它的实现如下: procedure tgraphiccontrol.paint; begin end; 里面什么码也没有,这个很容易理解,因为它不可能知道他的子类的图形是什么样子的.所以设为虚函数,由它的子类来覆盖它. 那么是谁调用了这个函数来引起画控件呢.windows有一个wm_paint;消息,当一切引起重画的条件发生,则会发送这条消息,再看看tgraphiccontrol,果然有截获这个消息: procedure wmpaint(var message: twmpaint); message wm_paint; 在处理函数里面,调用了paint方法,从而实现了画图形控件可能: procedure tgraphiccontrol.wmpaint(var message: twmpaint); begin if message.dc <> 0 then begin canvas.lock; try canvas.handle := message.dc; try paint; //调用了这个函数来画图形控件 ...
下一页 摘要:
str:=table1.tablename;query1.close;query1.sql.clear;query1.sql.add(format(select * from %s,[str]));query1.open;
......