易截截图软件、单文件、免安装、纯绿色、仅160KB

Delphi 组件开发教程指南(5)实现类QQ的编辑框

距离上一篇系列的文章有一段时间了,假终于是放完了!现在咱继续在TEdit上做文章,同时来熟悉某些Windows的系统消息。现在我讲的是如何实现一个类似QQ编辑框的样式。
  
再讲解之前,先回馈前几篇文章有些人提出的问题。通过前几篇文章,有很多人关注,同时也有人给了一些建议。所以我这里说明一下,我这个组件编写的教程指南
过程可能不是和书上按部就班一样的讲解,我的着重点是如何编写一个组件,这个编写的着重点偏向于实现方式,也就是实现一个组件要涉及到的消息还有
Delphi
VCL的一些虚拟方法重载等等,至于有人提到的包的概念,我这里讲解的很粗略,甚至说是没有讲解,其实这个我有小括弧注释,给了一个cnpack的包的说
明文档,那个讲的非常详细的。至于这个系列的文章讲解顺序(有人说应该先建立一个包,然后在添加组件实现单元,然后注册等),而我是先实现了一个组件,然
后才建立的包,其实这个都不是问题的,编写组件的重点是在于组件的实现方式上面,这个包的建立以及注册到IDE上,只要稍微找找相关资料就能明白了,所以
我也就没详细说明!另外有人说咋没讲组件编辑器,呵呵,那是因为还不到时候,看看我这个TEdit的扩充哪里有我自定义的特殊属性需要自己编写属性编辑器
哈。所以还请暂时等待等待,总会讲到的!
   
OK,那么咱们开始正文吧!这次,我们将打造一个类似QQ的TEdit样式的编辑框。先来看看QQ的编辑框的样式,首先QQ的编辑框无论在任何系统下,他
都是他自己的呈现方式,也就是是平面的,在无皮肤的系统和有皮肤的系统下都是他自己的方式;其次,再来看看,鼠标移动上去的时候,外部多了一层边框,而且
是高亮效果,似乎是颜色模糊化的。好,现在分析清楚了,那么我们就看看这个的实现需要的一些消息或者处理过程。
   
第一步,平面效果。Windows系统有几个消息专门用来处理Windows组件的边框部位,那就是WM_NCCALCSIZE和WM_NCPAINT这
两个消息,从消息名字看来NC这个就代表着No
Client也就是非客户区域,NCCALCSIZE也就是说明了计算非客户区和客户区的消息,而WM_NCPAINT消息,也就是非客户区域的绘制触发
消息,所以就要截获这两个消息来绘制自己的边框取代Windows系统的绘制方式。在Delphi中拦截系统消息非常简单,直接在消息的处理过程后面跟一
个message关键字,然后加上消息常量就可以了!不像MFC要搞消息映射那么麻烦,声明代码如下
procedure WMNcC


相关文档:

delphi中exit,abort,break,continue 的区别

exit: 退出函数体
abort: 遇到异常,安静处理,就是不显示不提示
break: 退出当前循环体,包括for ,while, repeat等循环体
continue: 结束循环内的本次处理,继续从循环体的开始位置继续执行
Exit 是跳出当前代码块,也就是当前函数,跳出后是要继续向下执行的(如果有后续代码)。
Abort 是从 EAbort 过来的,可以激发 ex ......

Delphi的bug

最近在调试代码,发现一个问题.应该算是bug吧. 呵,如果不算bug,那就是我对其实现原理的误解.
如果把返回参数Result作为另一函数的输入参数,result的初值是不确定...
function fun(str:string):string;
begin
  fun2(result);
end; ......

Delphi TStream 详细介绍

Delphi TStream 详细介绍
Stream对象,又称流式对象,是TStream、THandleStream、TFileStream、TMemoryStream、TResourceStream和TBlobStream等的统称。它们分别代表了在各种媒介上存储数据的能力,它们将各种数据类型(包括对象和部件) 
在内存、外存和数据库字段中的管理操作抽象为对象方法,并且充分利用了面向对 ......

Delphi 组件开发教程指南(3)组件注册

在上一篇中,我们简单的实现了一个对Delphi自身的TEdit编辑框控件的一个扩充!但是我们并不能像Delphi自己的TEdit一样,能够
在设计状态下进行设计,而是非得要自己手动创建控件,然后才能使用。这个虽然说也是组件,但是却失去了组件的可设计的方便性,仅仅可作为一个类库来使用。
现在我就来介绍一下,如何让这个组件注 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号