我已将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是一个未声明的标识符。
答案 0 :(得分:1)
旧版本的Delphi在COM的TLB pas文件中创建了OLE代理类,但是当您要编写客户端代码以使用该COM对象时,必须导入类型库(选择&#34) ;作为单位")并且你将在THAT TLB pas文件中拥有你的OLE代理类。