当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: 时常想,如果一个组件能够按自己想要的外观显示,那该是件多么COOL的事啊,这一篇就要来做一个精美外观的组件,但是,做什么好呢.Button?高手突破>有关于自己定义外观的Button,以及CheckBox等的做法,Button从CustomPanel继承,重载Paint方法来画外观.如果你...
 

 

 ·生成任意位随机数的函数    »显示摘要«
    摘要:´生成任意位随机数的函数´strlong是随机数字的位数,数字型function rndnum (strlong) dim temnum randomize do while len(rndnum) < strlong temnum=cstr(chr((57-48)*rnd+48)) rndnum=rndnum&temnum loopend function ......
 ·delphi 消息机制学习笔记     »显示摘要«
    摘要: 最近几天又将李维《inside vcl》书中关于 delphi 中 windows 消息机制的实现看了一遍,这是第二遍了,本来看第一遍时已经完全看懂了,但没做笔记,害得我又看了一遍,这回下定决心写一个笔记。与此同时,我在网上游荡时幸运地看到了两篇论述 delphi 消息框架的文章,某些部分分析得相当深入,非常好的 delphi 消息机制总结。这下一来又不想写笔记了,但后来一琢磨他们这些文章写得虽......


组件制作之四(定制外观)
时常想,如果一个组件能够按自己想要的外观显示,那该是件多么cool的事啊,这一篇就要来做一个精美外观的组件,但是,做什么好呢.button? 高手突破>有关于自己定义外观的button,以及checkbox等的做法,button从custompanel继承,重载paint方法来画外观.如果你有兴趣,可以去找来看,这里就不做button了,做一个memo如何呢.?是个不错的主意.

我们先起个名字叫做tcoolmemo.以上篇已经讲了很多组件的技术,这里就只说出几个重点.其余不多说了. 【程序编程相关:Internet Explorer 编程

  【推荐阅读:JBX+WL8+Struts国际化中的一

首先,该memo从custommemo继承,它有这样外观:属于平面的,边框是可以设置颜色的线,对应的颜色变量为fedgecolor,另外,离边框以内的两个象素处,还有另一个框,当鼠标进入memo时,这个框会显示,当鼠标离开时,为个框消失,同样也可以设置颜色,对应变量为fentercolor. 【扩展信息:由一个网友的问题引发的关于API函数在V

 

那么鼠标进入与离开怎么判断呢,这里memo将截获两个delphi的内部消息:

//下面两个获得delphi的内部消息,鼠标进入与离开时发生

     procedure cmmouseenter (var message: tmessage); message cm_mouseenter;

     procedure cmmouseleave (var message: tmessage); message cm_mouseleave;

其实父类已经截获了这两个消息,并作了相应处理,所以tcoolmemo中的消息处理函数要

inherited;再作自己的处理.这里又用到了一个变量

mousein:boolean;//标识鼠标是否进入组件

 

接下来tcoolmemo还要截获两个消息:

procedure wmpaint (var message: tmessage); message wm_paint;

procedure wmnccalcsize (var message: twmnccalcsize); message wm_nccalcsize;

第一个很熟悉,当需要重画时,触发该消息,

第二个是当窗体需要计算位置与尺寸时触发,消息中包含了窗口客户区的大小,我们用这个的目的主要是将客户区缩小三个象素,以便画组件时不会画到客户区.

procedure tcoolmemo.wmnccalcsize (var message: twmnccalcsize);

begin

  inherited;

  inflaterect(message.calcsize_params^.rgrc[0], -3, -3);

end;

 

而上面几个消息处理函数,cm_mouseenter与cm_mouseleave;将引起tcoolmemo的外观变化,wm_paint保存其外观不被擦去.所以要用到一个画组件的函数,即:

drawborder;

里面用到了几个api的gdi函数.我在代码中有详细的说明,加上自己看帮助,应该是可以看懂的.

 

另外,相比于memo,它的扩展了这样的功能:设置边距与获得光标的位置.这两个对应的性属为margin,position.
...   下一页
 ·spyrius    »显示摘要«
    摘要: spyrius是mark lindner先生写的一个小程序。mark lindner先生曾经写过pingutil和cfl几个工具包。我是从gnu找到mark lindner先生的。希望这里看客经常去gnu的人也很多,并都得到自己的收获和快乐。 spyrius是一个多线程的、通用的一个超级守护进程(superdaemon)。从事linux/unix的人员应该清楚daemon的具体含义,模糊......
» 本期热门文章:

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