如题
解决方案 »
- 出差比较痛苦,出差回来报销也比较痛苦。
- dbgrid 单元格取值的问题
- TSHFileOpStruct操作中的句柄如何处理
- 高分求助!!如何得到csv文件里的指定纪录行中的指定项目的内容?
- 这时你该怎么办?
- realaudio控件的问题!在线等待!!!
- 各位,谁知道ADOTABLE的FINDFIRST得用法(在线等待)
- 如何访问FTP文件夹中的ACCESS数据库,高手快来捡分!
- 谁能告诉我updatesql控件和query控件相连时的用法,最好给段代码,比如删除代码或新增代码,在线等待。。。
- dbgrideh怎样复制一行数据,但不复制标题
- 急救,checklistbox1出错
- 请教:在使用DELPHI 5 制作DLL时,如何同时生成DLL文件及LIB文件?
译(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要设法链接进去的原因。)
你说的我好象不是很明白。
1.运行时的包和设计时的包差别在哪里
2.具体我这个例子怎么做呢
选择你的组件包文件夹。
应该是这样的,楼上的好像没有看懂题意吧,还是我搞错了。
找不到DesignIntf.dcu (组件编译后的文件)
还不行啊,它有提示找不到Proxies.dcu