如题

解决方案 »

  1.   

    需要加入DesignIntf.pas文件所在的路径
      

  2.   

    关于把设计时代码从运行时代码中分离出来的问题  
    译(DBoy)    自从Delphi6出来以后,一个经常被提到的问题是Proxies.pas文件从源文件中消失了。
      
      这个改变是大趋势的一个部分。Borland在Delphi 5中没有装载DsgnIntf.dcu,这显然是要强迫迎合Delphi和C++Builder的许可协议。运行时代码在很多控件中常被不经意地用到。在某些方面Borland鼓励:如果你运用新的控件向导,你将发现这个向导只创建了一个单元,它把控件运行时的框架代码和注册函数放在同一个单元中。  在Delphi6中Borland更进一步,不仅用DesignIntf替换了DsgnIntf,而且属性编辑器也被放进了DesignEditors,DesignMenus,DesignWindows和其它的一些设计文件里。特别是DesignEditors使用了其它的一个名叫Proxies的IDE文件。(Proxies代码放在DesignIDE.bpl文件中。)不用说这些改变将会产生编译时的错误。  如果你的运行时代码已经与设计时代码分开了,那么就很容易修改。打开设计时包,然后选择一个目录,点击Add按钮。填写designide.dcp和点击确定。重新编译你的包,这时错误已经没有了。  如果你的设计时代码和运行时代码已经混合在一起了,那应该怎么解决呢?在Delphi里DesignIDE.bpl不是一个可以再分发的包。因此,即使是只是设计时包使用了组件的运行时代码或是只是控件dcu用了都将产生问题。  99.99%的情况事实上很容易解决。你的运行时代码事实上没有使用设计时代码;问题是没有合适的分开。  设计时包应该包括:  1、所有的注册声明。
      2、所有的属性编辑器。
      3、所有的组件编辑器。
      4、将需要DesignIDE和每一个保存组件自己的运行时包。  运行时包应该包括:  1、组件自己。
      2、任何编辑器也许会用到的组件可能自己在运行时调用的窗体。  维一有点混惑的地方是:属或组件是否使用了一个窗体。假如这个窗体在运行时对于组件是可用的,那么它应该包含在运行时包里。如果它只是在设计时可使用,那它就应该包含在设计时包里。一个常见的错误是误认这个窗体本身是一个编辑器,但事实上它不是。而是组件编辑器调用了这个窗体,它是设计时编辑器。  你应该养成一个把组件分开成两个包的习惯,即使是你只在程序中静态地进行链接,因为混合运行时和设计时代码将使你的代码膨胀。你的设计时代码在运行时不会被执行,但是链接器不会知道,所以把它也一起链接进去了。(这就是为什么DsgnIntf要设法链接进去的原因。)
      

  3.   

    加到enviroment options -> library path 中
      

  4.   

    To:CDSoftwareWj(95927) 
      你说的我好象不是很明白。
      1.运行时的包和设计时的包差别在哪里
      2.具体我这个例子怎么做呢
      

  5.   

    enviroment options -> library path
      

  6.   

    Project->Option->Directories/Conditional->Search Path->Directories->...
    选择你的组件包文件夹。
    应该是这样的,楼上的好像没有看懂题意吧,还是我搞错了。
    找不到DesignIntf.dcu (组件编译后的文件)
      

  7.   

    你把 designide.dcp加入到你的 组件包中就没有事了 hehe^^
      

  8.   

    To:CDSoftwareWj(95927) 
      还不行啊,它有提示找不到Proxies.dcu