打印本文 打印本文 关闭窗口 关闭窗口
组件制作之五(托盘组件)
作者:武汉SEO闵涛  文章来源:敏韬网  点击数3615  更新时间:2009/4/23 18:34:08  文章录入:mintao  责任编辑:mintao
接着在Register方法中调用RegisterComponentEditor(TMyTray,TTrayIconEditor);

第一个参数为组件类名,第二个为组件编辑器的类名。

而上面的方法必须引用DesignIntf,DesignEditors。

 

当我在我的组件单元这样做之后出现问题了,编译安装没有问题。我建立测试程序,并拉一个托盘组件,双击它,可以出现About对话框,右击菜单第一项也没有问题。可是当我运行测试程序时,却出现了这样的编译错误:

[Fatal Error] Unit1.pas(7): File not found: ''''DesignEditors.dcu''''

 

这让我痛苦了好几天,书上是这么说的,应该没有什么错误呀。后来经过摸索,才找到了解决之道。

解决的办法就是将组件编辑器类放在另一个单元中,并在这个单元引用我的托盘组件单元。

并安装之。这才可以正常运行,这个编辑器单元如下:

 

unit AboutTray;

 

interface

 

uses

  SysUtils,Classes,DesignIntf,DesignEditors,Forms,

  MyTray;

 

type

 TTrayIconEditor = class (TComponentEditor)

    function GetVerbCount: Integer; override;

    function GetVerb(Index: Integer): string; override;

    procedure ExecuteVerb(Index: Integer); override;

  end;

 

procedure Register;

 

implementation

 

///////TTrayIconEditor////////////////////////

procedure TTrayIconEditor.ExecuteVerb(index:integer);

begin

 case index of

 0: application.MessageBox(''''你好,这是风做的托盘组件!!'''',''''关于'''');

 end;

end;

 

function TTrayIconEditor.GetVerb(index:integer):String;

begin

  case index of

    0:Result:=''''About MyTray'''';

  end;

end;

 

function TTrayIconEditor.GetVerbCount:integer;

begin

  Result:=1;

end;

 

 

procedure Register;

begin

  RegisterComponentEditor(TMyTray,TTrayIconEditor);

end;

 

end.

 

至此,托盘组件完毕,拉下它放在窗体设计器中,双击,弹出对话框

里面内容为:“你好,这是风做的托盘组件!!”。哈哈,你成功啦

 

 

做为组件制作的最后一个内容,我想用一个包来把我的所有组件单元包含起来,并放在我自己新建的一个面板中。

这样做之前,要把以前安装下去的组件删除。知道怎么样删除,如果不知道,请看我在第一篇中说的。

然后在打开所有的组件单元,把RegisterComponents(‘Samples'''', [TCoolMemo]);里面的

Samples改为Wind。然后保存

接着,在IDE中点File-》New-》Other…

弹出来的New Items对话框,选中New页面,并选中其中的Package,

这里弹出一个新建的包编辑器。

先在IDE中点File-》Save。将包编辑器保存。保存在组件的单元所在的文件夹中

我的所有组件单元都放在Delphi7\MyCom文件夹中。因此这个包当然也保存在这里。

 

然后,点包编辑器上边的Add,将所有的组件单元加进去,当然也保括上面说的组件编辑器单元啦。

加进去后,点包编辑器上边的Compile,编译完毕,再点Insall。

成功,看看面板。所有以前做过的组件全在Wind面板中了。

而这时候,我的任务也完毕了。

 

 

结语

 

这次的组件之旅终于走完了,也许有人会笑我浅薄,认为这么简单的东西,有必要拿出来么。也许是比较简单吧,但一定有人会需要的,相信我的文章会给他们帮助的。因为这些是我曾经学到的知道,遇到的问题并解决它。所以我个人觉得是很珍贵的。并且经过写这几篇,我把这些知识记得更牢了。这种利己利人的事,何乐而不为呀。

在此,谢谢大家的阅读,也许下次还有机会再见面,不过现在要说再见了。祝你们愉快。

上一页  [1] [2] [3] [4] [5] [6] [7] 

打印本文 打印本文 关闭窗口 关闭窗口