在Delphi6中,DesignEditors.pas中uses的Proxies在编译时提示不存在,不知为何,请各位知道能提示在下。如果是缺少文件还请能顺便提供相关文件给我。
谢谢!我在设计可视化控件的bject Inspector属性时遇到这问题。
谢谢!我在设计可视化控件的bject Inspector属性时遇到这问题。
解决方案 »
- delphi datetime和MS SQL日期转换问题。求助!
- 快乐
- delphi 从mysql表中读取数据 然后把结果集写入listbox中 用什么控件比较好?adoquery行不行?
- delphi的小型管理软件得行情如何?
- 关于DrawGrid.Canvas.TextRect的输出文字换行问题,请指教.
- 招聘贴:不买也看看吧
- 用Insert Into 插入记录时,如果记录已经存在,想覆盖的话,要怎么办???
- 已知两个矩形区域范围,如何判断两个矩形区域是否有交集?
- 高分求答。如何在DBNavigator提交按钮中加入条件。
- 无奈!!!!
- 大侠救命:OleVariant数据的问题
- 求成都市Delphi(or BCB,或愿意转用此两语言)程序员一名,不要求N年经验
procedure RegisterComponentEditor(ComponentClass: TComponentClass; ComponentEditor: TComponentEditorClass);
当然,用户在注册前要定义自己的属性编辑器,下面是一个例子:
TOutlookBarEditor = class(TComponentEditor)
function GetVerb(Index: Integer): string; override;
function GetVerbCount: Integer; override ;
procedure Edit; override;
procedure ExecuteVerb(Index: Integer); override;
end; 其中最关键的部分在于对RegisterComponentEditor的引用。
在Delphi5.0中,可以直接将$(DELPHI)\Source\ToolsAPI目录下的DsgnIntf.pas文件拷贝到控件的设计目录下或者拷贝到$(DELPHI)\Lib目录即可。
在Delphi6.0中,Delphi将文件分解成DesignIntf.pas和DesignEditors.pas两个文件,所以引用时要将$(DELPHI)\Source\ToolsAPI目录下的DesignIntf.pas和DesignEditors.pas两个文件拷贝到控件的设计目录下或者拷贝到$(DELPHI)\Lib目录。
当然,如果你的Delphi Package的搜索路径或者Delphi IDE的搜索路径可以搜索到$(DELPHI)\Source\ToolsAPI目录就省去此麻烦。 但是,在Delphi 6.0中,如果就此编译,会出现找不到Proxies.dcu文件的问题。因为Proxies被编译了,在Delphi的目录中根本就找不到此相关文件,它已经被编译到designide.dcp文件中,解决方案很简单,就是在你的Package中引用designide.dcp文件即可,具体作法是:
Project->View Source->在requires部分加入对designide的引用即可。 由于此部分文件只是在设计期间才有效,所以你的Package在设计时就要注意:
不要在运行期间将在进行期间使用的文件加入对DesignIntf.pas和DesignEditors.pas两个文件的引用,否则依然会出现找不到Proxies.dcu文件的问题,要将文件脱离! 当然,如果你的Package要在Delphi 5.0及Delphi6.0下同时能运行,那就要下点功夫通过编辑器的版本进行控制,Delphi 6.0的编辑器版本是VER140,Delphi 5.0的编辑器版本是VER130,下面是本人的一个真实的引用文件:
uses
Classes, {$IFDEF VER140}DesignIntf, DesignEditors{$ELSE}DsgnIntf{$ENDIF}; Package部分由于版本不同而对不同的版本要进行不同的设计,再此就不叙述了!
其它补记:由于Delphi 5.0和Delphi 6.0对过程及参数的定义区域不同而出现错误,所以在编写两个版本的Package时一定要注意引用虚函数时出现的问题。例如对TControl控件的SetAutoSize(Value: Boolean)过程的引用:
在Delphi 5.0中定义为:
private
procedure SetAutoSize(Value: Boolean);
而在Delphi 6.0中定义为:
protected
procedure SetAutoSize(Value: Boolean); virtual;
此时的定义要根据自己的实际情况定义了,可不能随便定义了!作者:Starfarm--->Docn Hank([email protected])