2

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

最初的 2005 年项目已经有一个从原始 TLB 生成的 _TLB.pas 单元,但我需要添加一个新属性,所以我继续对 RIDL 执行此操作并选择“刷新实现”选项。

然而,虽然原始的 _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 是未声明的标识符。

4

1 回答 1

1

旧版本的 Delphi 在 COM 的 TLB pas 文件中创建了 OLE 代理类,但是当您想编写客户端代码以使用该 COM 对象时,您必须导入类型库(选择“作为单元”),您将拥有该 TLB pas 文件中的 OLE 代理类。

于 2017-11-14T16:03:27.723 回答