1

我有一个已导入 Delphi XE2 并为其创建 TLB 文件的第 3 方 Active X .ocx 文件。

Active X 库是一个“非可视”组件,但如果拖放到表单上则会显示为图像。

我想在 Active X 库中调用这个组件,并且可以很好地访问它的方法和属性,但不知道如何访问它的事件。我想我也许可以将它添加到数据模块中,但这似乎不能作为工具面板中的选项使用。这应该可能吗?

我尝试通过执行以下操作来添加事件:actX3Party := T3Party.Create(nil); actX3Party.On3PartyEvent := myEventHandler;

但不知道如何使“myEventHandler”成为事件处理程序,因为没有表单。

谢谢

4

1 回答 1

1

您不需要表单来实现事件处理程序。你所需要的只是一堂课。您可以使用实例方法或类方法来实现事件处理程序。自然,如果您选择使用实例方法,那么您需要实例化一个实例。

所以,决定你是要使用实例方法还是类方法。然后创建一个定义事件处理程序的类。如果您使用实例方法,请实例化该类。最后,将您的处理程序分配给事件。

例如:

type
  TMyClass = class
  public
    class procedure MyHandler1(Sender: TObject);
    procedure MyHandler2(Sender: TObject);
  end;

我不知道你的事件收到什么参数,所以上面只是举例说明。显然你需要实现这些方法。

您可以立即使用类过程:

actX3Party.On3PartyEvent := TMyClass.MyHandler1;

对于实例方法,创建一个实例:

myInstance := TMyClass.Create;
actX3Party.On3PartyEvent := myInstance.MyHandler2;

如果将事件处理程序分配给 ActiveX 控件的代码存在于一个类中,那么您不需要另一个类。您可以在该类中实现您的处理程序。

因此,再一次,事件处理程序不需要在表单中实现。它们只是一个类的方法。

于 2013-09-20T06:21:38.073 回答