积木首页 | 500多种网页特效 | 函数手册 | 广播电台 | 高清晰图片素材 | 服务器合租 | 万年历 | 网友最新浏览记录
程序开发 网页设计 搜索引擎 特效代码 操作系统 防范病毒 黑客技术 图形图象 电脑硬件 网络技术 服 务 器 数 据 库 网文精粹
您的位置:积木首页 >> 程序开发频道 >> delphi >> 正文:
标题:Delphi自定义部件开发(三)
时间:2005-12-10 来源:互联网摘选 浏览数:
 

3. 创建新的消息处理方法

因为Delphi只为大多数普通Windows消息提供了处理方法,所以当你定义自己的消息时,就要创建新的消息处理方法。

 用户自定义消息的过程包括两个方面:

  定义自己的消息

声明新的消息处理方法

 

定义自己的消息

许多标准部件为了内部使用定义了消息。定义消息的最一般的动因是广播信息和状态改变的通知。

  定义消息过程分两步:

  ● 声明消息标识符

声明消息记录类型

 

声明消息标识

消息标识是整型大小的常量。Windows保存了小于1024的消息用于自己使用,因此当声明自己的消息时,你应当大于1024

  常量WM_USER代表用于自定义消息的开始数字。当定义消息标准时,你应当基于WM_USER

  某些标准Windows控制使用用户自定义范围的消息,包括ListBoxComboBoxEditBoxButton。如果从上述部件中继承了一个部件,在定义新的消息时,应当检查一下Message单元是否有消息用于该控制。

  定义消息的方法如下:

 

  Const

WM_MYFIRSTMESSAGE=WM_USER+0;

WM_MYSECONDMESSAGE=WM_USER+1;

 

声明消息记录类型

  如果你想给予自定义消息的参数有含义的名字,就要为该消息声明消息记录类型。消息记录是传给消息处理方法的参数的类型。如果不使用消息参数或者想使用旧风格参数,可以使用缺省的消息记录。

  声明消息记录类型要遵循下列规则

以消息名命名消息记录类型,以T打头

将记录中第一个域命名为Msg,类型为TMsgPraram

将接着的两个字节定义为word 以响应word大小的参数

将接着的四个字节与long参数匹配

将最后的域命名为Result,类型为Longint

 

下面是TWMMouse的定义

 

type

TWMMouse=record

Msg: TMsgParam; { 第一个是消息ID }

Keys: Word; { wParam }

case Integer of { 定义lParam的两种方式 }

o: (

Xpos: Integer; { 或者以xy座标 }

Ypos: Integer);

1: (

Pos : TPoint; { 或者作为单个点 }

Result: Longint; ) { 最后是Result }

end;

 

TWMMouse使用变长记录定义了相同参数的不同名字集。

  ⑵ 声明新的消息处理方法

  有两类环境需要你定义新的消息处理方法:

  ● 自定义新部件需要处理没有被标准部件处理的Windows消息

已定义了自定义部件使用的新消息

 

声明消息处理方法的办法如下:

在部件声明中的protected部分声明方法

将方法做成过程

以要处理的消息名命名方法 但不带下划线

传递一个命名为Messagevar参数,类型为消息记录类型

编写用于该部件的特别处理代码

调用继承的消息方法

 

下面是用于用户自定义消息CM_CHANGECOLOR的消息处理代码:

 

type

TMyComponent=class(TControl)

protected

procedure CMChangeColor(var Message:TMessage);

message CM_CHANGECOLOR;

end:

 

procedure TMyComponent.CMChangeColor(var Message: TMessage);

begin

color := Message lParam;

inherited;

end;

 

19.2.2.4 注册部件

 

  编写部件及其属性、方法和事件只是部件创建过程的一部分。尽管部件具有这些特征就可用,但部件真正功能强大的是在设计时操作它们的能力。

  使部件在设计时可用需要经过如下几步:

  ● Delphi注册部件

增加选择板位图

提供有关属性和事件的帮助

存贮和读取属性

 

1. Delphi注册部件

为了让Delphi识别自定义部件,并将它们放置于Component Palette

[1] [2] [3] [4] [5] [6] 下一页


(责任编辑:笑虎)
关于本站 | 广告服务 | 联系我们 | 版权申明 | 强强联盟 | 投稿热线 | 网站地图 | 申请链接
Copyright ©2005-2006 Gimoo.net All rights reserved. 积木网 版权所有
E-mail:gimoohr@gmail.com 京ICP备05050695号