刷新RIDL的实现不会生成OLE控制代理类声明

时间:2013-07-17 00:55:06

标签: delphi activex delphi-xe2 ocx

我已将Delphi 2005 OCX项目转换为XE2,这导致原始TLB更改为RIDL。使用View | XE2中的类型库类似于Delphi 2005,我可以看到所有的接口和属性/方法。

最初的2005项目已经有一个从原始TLB生成的_TLB.pas单元,但是我需要添加一个新属性,所以我继续将其添加到RIDL并选择“Refresh Implementation”选项。

然而,虽然原始_TLB.pas包含一个接近结尾的部分,如下所示:

// *********************************************************************//
// OLE Control Proxy class declaration
// Control Name     : TTransControlSHX
// Help String      : TransControlSHX Control
// Default Interface: ITransControlSHX
// Def. Intf. DISP? : No
// Event   Interface: ITransControlSHXEvents
// TypeFlags        : (34) CanCreate Control
// *********************************************************************//
  TTransControlSHX = class(TOleControl)

从RIDL生成的新_TLB.pas文件不包含此部分。

我如何取回它?没有它,我使用OCX的应用程序都抱怨TTransControlSHX是一个未声明的标识符。

1 个答案:

答案 0 :(得分:1)

旧版本的Delphi在COM的TLB pas文件中创建了OLE代理类,但是当您要编写客户端代码以使用该COM对象时,必须导入类型库(选择&#34) ;作为单位")并且你将在THAT TLB pas文件中拥有你的OLE代理类。