救救我吧,尊敬的大虾们,
我在D6中使用JUstOne组件,调试过程中,我在JustOne单元文件中引用DsgnIntf,结果找不到这个文件,我将Dsgnintf换成DesignIntf和DesignEditors后,又找不到Proxies文件。该怎么解决?谢谢

解决方案 »

  1.   

    Delphi 6.0中属性编辑器的解决方案 
    Delphi中用户可以自己声明属性编辑器在程序设计期间对第三方控件进行设计,对属性编辑器的声明可以在注册控件的时候通过RegisterComponentEditor过程进行定义,具体为:
    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在设计时就要注意:<BR>不要在运行期间将在进行期间使用的文件加入对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部分由于版本不同而对不同的版本要进行不同的设计,再此就不叙述了!