组件制作之四(定制外观)[3]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 linzhengqun 的 blog

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

procedure tcoolmemo.wmnccalcsize (var message: twmnccalcsize);

begin

  inherited;

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

end;

 

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

drawborder;

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

 

另外,相比于memo,它的扩展了这样的功能:设置边距和获得光标的位置。这两个对应的性属为marginposition。他们都是public的,不可以在对象察看器中看到。

我们一个个来说

边距设置

property margin:byte read fmargin write setmargin default 0;

其中setmargin函数中发送了两个消息:

//该消息取得输入区的尺寸

本文关键:组件制作之四(定制外观)
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top