第十九章Delphi自定义部件开发

上传人:平*** 文档编号:18162716 上传时间:2017-11-13 格式:DOC 页数:25 大小:94.62KB
返回 下载 相关 举报
第十九章Delphi自定义部件开发_第1页
第1页 / 共25页
第十九章Delphi自定义部件开发_第2页
第2页 / 共25页
第十九章Delphi自定义部件开发_第3页
第3页 / 共25页
第十九章Delphi自定义部件开发_第4页
第4页 / 共25页
第十九章Delphi自定义部件开发_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《第十九章Delphi自定义部件开发》由会员分享,可在线阅读,更多相关《第十九章Delphi自定义部件开发(25页珍藏版)》请在金锄头文库上搜索。

1、3. 创建新的消息处理方法因为 Delphi只为大多数普通 Windows消息提供了处理方法,所以当你定义自己的消息时,就要创建新的消息处理方法。用户自定义消息的过程包括两个方面: 定义自己的消息 声明新的消息处理方法 定义自己的消息许多标准部件为了内部使用定义了消息。定义消息的最一般的动因是广播信息和状态改变的通知。定义消息过程分两步: 声明消息标识符 声明消息记录类型 声明消息标识消息标识是整型大小的常量。Windows 保存了小于 1024的消息用于自己使用,因此当声明自己的消息时,你应当大于 1024。常量 WM_USER代表用于自定义消息的开始数字。当定义消息标准时,你应当基于 WM

2、_USER。某些标准 Windows控制使用用户自定义范围的消息,包括 ListBox、ComboBox、EditBox和 Button。如果从上述部件中继承了一个部件,在定义新的消息时,应当检查一下 Message单元是否有消息用于该控制。定义消息的方法如下:ConstWM_MYFIRSTMESSAGE=WM_USER+0;WM_MYSECONDMESSAGE=WM_USER+1; 声明消息记录类型如果你想给予自定义消息的参数有含义的名字,就要为该消息声明消息记录类型。消息记录是传给消息处理方法的参数的类型。如果不使用消息参数或者想使用旧风格参数,可以使用缺省的消息记录。声明消息记录类型要遵

3、循下列规则 以消息名命名消息记录类型,以 T打头 将记录中第一个域命名为 Msg,类型为 TMsgPraram 将接着的两个字节定义为 word 以响应 word大小的参数 将接着的四个字节与 long参数匹配 将最后的域命名为 Result,类型为 Longint下面是 TWMMouse的定义typeTWMMouse=recordMsg: TMsgParam; 第一个是消息 ID Keys: Word; wParam case Integer of 定义 lParam的两种方式 o: (Xpos: Integer; 或者以 x,y 座标 Ypos: Integer);1: (Pos : TP

4、oint; 或者作为单个点 Result: Longint; ) 最后是 Result域 end;TWMMouse使用变长记录定义了相同参数的不同名字集。 声明新的消息处理方法有两类环境需要你定义新的消息处理方法: 自定义新部件需要处理没有被标准部件处理的 Windows消息 已定义了自定义部件使用的新消息声明消息处理方法的办法如下: 在部件声明中的 protected部分声明方法 将方法做成过程 以要处理的消息名命名方法 但不带下划线 传递一个命名为 Message的 var参数,类型为消息记录类型 编写用于该部件的特别处理代码 调用继承的消息方法下面是用于用户自定义消息 CM_CHANGE

5、COLOR的消息处理代码:typeTMyComponent=class(TControl)protectedprocedure CMChangeColor(var Message:TMessage);message CM_CHANGECOLOR;end:procedure TMyComponent.CMChangeColor(var Message: TMessage);begincolor := Message lParam;inherited;end;19.2.2.4 注册部件编写部件及其属性、方法和事件只是部件创建过程的一部分。尽管部件具有这些特征就可用,但部件真正功能强大的是在设计时操

6、作它们的能力。使部件在设计时可用需要经过如下几步: 用 Delphi注册部件 增加选择板位图 提供有关属性和事件的帮助 存贮和读取属性1. 用 Delphi注册部件为了让 Delphi识别自定义部件,并将它们放置于 Component Palette上,你必须注册每一个部件。注册一个部件要在部件所在单元里加入 Register方法,这包括两个方面的内容: 声明注册过程 实现注册过程一旦安装了注册过程,就可以将部件安装在选择板上。注册过程要在部件所在单元中写一个过程,该过程必须以 Register命名。Register必须出现在库单元的 interface部分,这样 Delphi就能定位它。在

7、Register过程中,可以为每个部件调用过程 RegisterComponents。下面的代码演示了建立和注册部件的概略方法:unit MyBtns;interfacetype 声明自定义部件 procedure Register;Implementationprocedure Register;begin 注册部件 end;end.在 Register过程中,必须注册每一个要加入 Component Palette的部件,如果库单元包含若干部件,就要将它们一次性注册。注册一个部件时,为部件调用 RegisterComponents过程。RegisterComponents 告诉 Delph

8、i两件有关所注册的部件的事:: 要注册部件所在的 Component Palette的页名 要安装的部件的名字选择板的页名是个字符串。如果你所给名字的页不存在,Delphi 就用该名字创建新的页。下面的 Register过程注册了一个名为 TMyComponent的部件,并将其放在名为“Miscellaneous”的 Component Palette页上。procedure Register;beginRegisterComponents(Miscellaneous, TFirst, TSecond);end;也可以在相同的页上,或者在不同的页上,一次注册多个部件:procedure Reg

9、ister;beginRegisterComponents(Miscellaneous, TFirst, TSecond);RegisterComponents(Assorted, TThird);end;2. 增加 Component Palette上的位图每个部件都需要一个位图来在 Component Palette上代表它。如果安装时没有描述自己的位图,则 Delphi会自动套用缺省位图。因为选择板位图只有在设计时需要,所以没有必要将它们编译进库单元。而是将它们提供在与库单名相同的 Windows资源文件中,扩展名为.DCR。用 Delphi的位图编辑器来生成资源文件,每个位图边长 24

10、个象素。为每个要安装的库单元提供一个选择板位图文件,在每个文件中为每个要注册的部件提供一个位图。位图图象名与部件名相同,将文件放在与库单元相同的目录中,这样在安装部件时 Dephi就能发现位图。例如,如果你在 ToolBox单元中创建一个名为 TMyControl的部件,就需要建立名为 TOOLBOX.DCR的资源文件,文件中包含名为 TMyControl的位图。3. 提供有关属性和事件的帮助当在窗体中选择一个部件或在 Object Inspector中选择事件或属性时,能够按 F1得到有关这一项的帮助。如果创建了相应的 Help文件的话,自定义部件的用户能得到有关你的部件的相应的文档。因为

11、Delph使用了特殊的 Help引擎支持跨多个 Help文件处理主题搜索,所以你能提供关于自定义部件的小的 Help文件,用户不需要额外的步骤就能找到你的文档。你的 Help成了 Delphi Help系统的一部分。要给用户提供帮助,要理解下列两方面: Delphi 怎样处理 HELP请求 将 HELP插入 Delphi Delphi 怎样处理 HELP请求Delphi基于关键词查询 HELP请求。就是说,当用户在窗体设计窗口的已选部件上按 F1键时,Delpdi 将部件的名字转换成一个关键词,然后调用 Windows Help引擎查找那个关键词的帮助主题。关键词是 Windows Help系

12、统的标准部分。实际上 ,WinHelp 使用 Help中的关键词产生 Search对话框中的列表。因为用于上下文敏感搜索中的关键词不是实际供用户读的,所以要输入关键词的替代词。例如,一个查找名为 TSomething的部件的详细信息的用户可能打开 WinHelp的 Search对话框并输入 TSomething。但不会使用用于窗体设计窗口的上下文查找的替代形式 class-TSomething。因此,这个特殊的关键词 Class-TSomething对用户是不可见的,以免弄乱了搜索列表。 将 Help插入 DelphiDelphi提供了创建和插入 Windows Help文件的工具,包括 Wi

13、ndows Help编译器 HC.EXE。为自定义部件建立 Help文件的机制与建立任何 Help文件没什么不同,但需要遵循一些约定以与库中其它 Help兼容。保持兼容性的方法如下: 建立 Help文件 增加特殊的注脚 建立关键词文件 插入 Help索引当你为自定义部件建立完 Help,有下列几个文件: 编译过的 Help(.HLP)文件 Help 关键词(.KWF)文件 一个或多个 Help源文件(.RTF) Help 工程文件(.HLJ)编译过的 Help文件和关键词文件应当与库单元在同一目录。 建立 Help文件你可以使用任何的工具创建 Windows Help文件。Delphi 的多文

14、件搜索引擎,可以包含任何数目的 Help文件的要素。在编译的 Help文件之外,你应当拥有 RTF源文件,这样才能生成关键词文件。为使自定义部件的 Help同库中其它部件一起工作,要遵循下列约定: 每个部件有占一页的帮助部件帮助页应当给出部件目的的简单描述,然后列出最终用户可用的属性、事件和方法的描述。应用开发者通过在窗体上选择部件并按 F1访问这一页。部件帮助页应当有一个用于关键词搜索的“”脚注,脚注中包含部件名。例如,TMemo的关键词脚注读作TMemo Component 部件增加和修改的每一个属性,事件和方法应当有一页帮助属性、事件或方法的帮助页应当指出该项用于哪个部件,显示声明语法和

15、描述它的使用方法。属性、事件或方法的帮助页应当有一个用于关键词搜索的“”脚注,该脚注中包含该项的名字和种类。例如,属性 Top的关键词脚注为“Top property”。Help 文件的每一页也需要用于多文件索引搜索的特殊脚注。 增加特殊脚注Delphi需要特殊的搜索关键词以区别用于部件的帮助页和其它项目。你应当为每一项提供标准的关键词搜索项。但你也需要用于 Delphi的特殊脚注。要为来自 Object Inspector窗口或代码编辑器 F1的搜索增加关键词,就得为 Help文件帮助页增加B脚注。“B”脚注与用于标准 WinHelp关键词搜索的“K”脚注很相象,但它们只用于 Delphi搜索引擎。下表列出怎样为每种部件帮助页建立“B”脚注:表 19.7 部件帮助页搜索注脚帮助页类型 B脚注内容 示 例 主部件页 class_+部件类型名 class_TMemd一般属性或事件页 prop_+属性名 prop_WordWrapevent_+事件名 event_OnChange部件特有的属性 prop_+部件类型名 prop_TMemoWordWrap或事件页 +属性名 event_+部件类型名 event_TMemoOnChange+事件名区别一般帮助页和部件特有的帮助页是很重要

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号