一共進行如下3步:1:新建一個工程
2:Uses DesignEditors;
3: 出錯: File not found: "Proxies.dcu"(如果是delphi7的話,則不能找到這個單元, 雖然delphi7的help文件裡有這個單元)
2:Uses DesignEditors;
3: 出錯: File not found: "Proxies.dcu"(如果是delphi7的話,則不能找到這個單元, 雖然delphi7的help文件裡有這個單元)
解决方案 »
- Undeclared identifier: 'PBindInfo'
- 谁有个个风格的图标啊 求。。。
- 急啊,在delphi中如何获取.dbf(VFP)表中的所有字段名?
- 怎么知道动态分配的数组里的元素个数,有没有bound之类的函数.
- 请教memo的一点小问题
- 简单出错,在线等……
- 关于打印的问题!救急!
- 受够了M$$$$了,破.net已经暴露了其狼子野心,想转DELPHI,有一10万行的VB程序(非ERP,逻辑非常复杂),不知好不好转化,望各位高手指教。
- 请问使用TClientDataSet的程序如何发布?
- ADO访问数据库时,如何导出数据库记录到一个新的数据库类型文件中如Excel,Access
- SQL数据恢复问题
- WebBrowser中比较棘手的问题(自动登录),请各位指点,一定高分
halfdream(哈欠) ( )
这个问题也捆饶我几天,能不能讲一下。
1,简单来说,Proxies单元没给出源码
2,Proxies代码放在DesignIDE.bpl文件中
3,DesignIDE.bpl不是一个可以再分发的包
没影响的http://lysoft.7u7.net
做组件编辑器,这个组件编辑放在另一个单元中看这里:组制作完毕,相信经过上面的讲解,以及代码的注释,应该不难理解。接下来是什么呢,给我的托盘控件来点效果,即在设计器中,当双击该组件,或右击快捷菜单第一项时,会弹出一个About对话框,来说明我的托盘组件。这个就要用到组件编辑器啦 。几本经典书中都有说及,比如Deplphi开发人员指南,我也是从那里学来的,不过却遇到了一些问题,折磨了几天才解决。这里不想详细介绍,去看一下那些书,大概也就知道了,只略说一下。其原理就是实现一个继承自TComponentEditor的子类TTrayIconEditor,并在其中覆盖以下三个方法:function GetVerbCount: Integer; override;function GetVerb(Index: Integer): string; override;procedure ExecuteVerb(Index: Integer); override;可以精略理解为:GetVerbCount指定控件快捷菜单的项数GetVerb指定快捷菜单中的相关项的名字ExecuteVerb执行点击快捷菜单项后的动作 接着在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. 至此,托盘组件完毕,拉下它放在窗体设计器中,双击,弹出对话框里面内容为:“你好,这是风做的托盘组件!!”。哈哈,你成功啦