在下正在尝试编写一个控件,
想继承属性编辑器Colnedit,却无法打开Colnedit.pas的窗体,
猜测是应先打开ToolWnds.pas,
但搜遍了VCL的源代码都没有找到ToolWnds.pas连ToolWnds.dcu都没有,
猜测应该是在designide.dcp包里,是关于设计期包和运行期包的问题,
但不知如何解决,请各位高手赶快救我!

解决方案 »

  1.   

    注:\source\property Editors\colnedit.pas,不能打开其窗体
      

  2.   

    找到了点资料:自从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%的情况事实上很容易解决。你的运行时代码事实上没有使用设计时代码;问题是没有合适的分开。