DsgnIntf.dcu 使用很多控件不能在d6上运行,谁能总结一下如何使用DsgnIntf.dcu 控件能在d6上用(200分)

  • 主题发起人 主题发起人 hhzwyn
  • 开始时间 开始时间
H

hhzwyn

Unregistered / Unconfirmed
GUEST, unregistred user!
DsgnIntf.dcu 使用很多控件不能在d6上运行,谁能总结一下:
如何使用DsgnIntf.dcu 控件能在d6上用
 
关注!
为什么许多程序都要这个单元,而DELPHI5却不提供!
 
在delphi5中,用windows的查找功能,查找DsgnIntf.pas ,将这个文件拷入delphi5/lib目录即可,
也可以建一个工程,将DsgnIntf.pas这个单元编译到delphi5/lib目录中

在delphi6中,用windows的查找功能,查找DesignIntf.pas (注意:d6将DsgnIntf.pas 改名为
DesignIntf.pas了) ,将这个文件改名为DsgnIntf.pas , 同时打开这个单元将单元名从
unit DesignIntf 改为unit DsgnIntf, 最后拷入delphi6/lib目录即可;
也可以建一个工程,将DsgnIntf.pas这个单元编译到delphi6/lib目录中。

然后就搞定了
 
用windows的查找功能,查找DsgnIntf.pas

搞漏了,查找的目录是 ...../Borland/delphi5 或者...../Borland/delphi6

 
BORLAND是这么说的:
六. 单元DsgnIntf改名及相关变化

程序中对于DsgnIntf的引用,需要改为对一个新的单元的引用:DesignIntf。可能还得加上DesignEditors、Editors 和RTLConsts 几个单元到你的引用列表中。除此之
外你还得将designide加入到你的包的Requires的列表中。另外,对dsnide50的引用可能得手动改为DesignIde,如果Delphi没有自动更改的话。

任何引用了IDesigner的运行期包,需要改为IDesignerHook以防止运行期时对于designide单元的引用要求。在运行期代码中,IDesignerHook 功能足够使用,
无需担心。设计期时可以使用IDesigner,如以下代码一样:

var



RealDesigner: IDesigner;

...

SomeDesignerHook.QueryInterface(IDesigner,RealDesigner);

...

来获得IDesignerHook 提供的IDesigner的接口。IDesinerHook的使用只需要引用Classes和Forms两个单元。但是IDesigner还得加上DesignIntf单元
,由于该单元被包含在许多其它包中,而其中的一些包可能是不能二次分发的。
 
DesignEditors 編譯不能通過
 
to hhzwyn:
你还得将designide加入到你的包的Requires的列表中;
 
对于不是包中uses的dsgnintf怎么办?
我有一个用Delphi5编写的累类似与Delphi IDE界面的程序
可是当改Uses dsgnintf为designintf和designeditors时
因为Designeditors单元uses了proxies时不能通过
可是程序并没有requires列表
该怎么解决?
 
其实,我认为这几个.pas主要是给特性编辑器用的,并不是程序运行时候用的。
如果没有包,你也不打算安装它到IDE的话,你还要这几个东西做什么?
 
这么多人没一个说到正点上
将DsgnIntf改成{$IFDEF VER140} DesignIntf, DesignEditors {$ELSE} DsgnIntf {$ENDIF}就一切OK了
 
DesignIntf, DesignEditors 替代DSGNINTF 然后在控件的REQUIRES列表中加上DESIGNIDE,
如果以前引用了VCL50.DCP则用VCL.DCP ,RTL.DCP 替代,
次说明在DELPHI帮助理由说明,英文不好的话,(同我一样)到WWW.CSDN.NET上有翻译的中文版
 
这是D5的README文件:
DSGNINTF.DCU is no longer shipped with Delphi.
Thus, component developers should consider
segregating design-time code into separate units
from runtime code. Runtime code should not refer
to those units.

If this approach is not feasible, you do have the
option of compiling DSGNINTF.PAS (located in
your /source/toolsapi/ directory). This should be
considered a stopgap measure, however, and may
not be available as an option in future releases.
>>>>>>
所以BORLAND在发布D5时就有言在先!你如果在Runtime Library里用了DSGNINTF.DCU
就违反了他的版权许可(咱们大部分好象用的是D板,早就反了).
你如果有D5的控件想在D6中使用,经过楼上的方法处理,还可能有缺少Proxies.DCU
的问题,所以一定要有Source,把他重新打包,把设计库和运行库分开,
只在设计库程序中Uses DesignIntf,designeditors, 另外把DesignNide加到Requires列表
还有一个笨办法:设计一个空的Proxies.pas文件
(to zeroworld)Package分为Contains文件和Requires文件两部分
 
我要出分了
 
{$IFDEF DELPHI6}DesignIntf, DesignEditors, VCLEditors,{$ELSE} DsgnIntf,{$ENDIF}
 
To See and Study Delphi Help System ! You can get rid it of easily !
 
后退
顶部