当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: VCL中的Shape是个很不错的控件,可以选择几种图形,以满足我们的需求,但有时候就是觉得它的可选图形少了一点,比如我们想要一个三角形,它却没有。
 

 

 ·ini文件的读写     »显示摘要«
    摘要:function readinifile(filename,section,ident:string):string;? //读取配置文件var? ini:tinifile;begin? ini:=tinifile.create(filename);? result:=ini.readstring(section,ident,);? ini.free;end; procedure writein......
 ·dunit的感悟     »显示摘要«
    摘要:dunit的感悟 dunit的texttestrunner方式测试 在dunit的texttestrunner测试方式中需在工程文件中引用texttestrunner而非guitestrunner。 在dunit的texttestrunner测试方式中,dunit提供了trunnerexitbehavior数据类型,在dunit中trunnerexitbehavior的定义如下: t......


组件制作之三(图形控件)
vcl中的shape是个很不错的控件,可以选择几种图形,以满足我们的需求,但有时候就是觉得它的可选图形少了一点,比如我们想要一个三角形,它却没有.于是就想到来扩展一下这个控件,名为shapeex.其实扩展的功能不多,只是增加了一些图形.而类也并不是继承自tshape,而是继承自tgraphiccontrol,这样可以让我们彻底看看图形控件的做法.tshape也是继承自tgraphiccontrol.而我们的扩展控件功能是基于shape的扩展,所以当然里面的代码几乎取之tshape,只是加了一些扩展图形的代码,但又有什么关系呢,vcl源码是最好的学习资源,我们何不取之用之.

【程序编程相关:专家访谈: Carol Rigdon,I

【推荐阅读:J2EE环境中的DB2Informati

  【扩展信息:跨多个数据源的 J2EE 开发: 细节探

很多东西我们已经在上面说过了,这里不多说了,我要直入图形控件的重点.图形控件不是封装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;   //调用了这个函数来画图形控件


...   下一页
 ·在delphi中调用chm帮助文件     »显示摘要«
    摘要:在delphi中,要调用chm文件可以通过引用hhctrl.ocx文件的函数htmlhelpa实现。 不过在这里,我们也可以使用api函数shellexecute来打开chm帮助文件。 在网上找到的资料,通常以 shellexecute(self.handle,open,help.chm,, ,sw_show);? 的方式来实现。 但有个不足,就是不能打开指定的帮助页面,所显示的是帮助文......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE