delphi中的delphi非可视事件处理

时间:2013-09-20 05:45:22

标签: delphi events activex ocx

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

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

我想在Active X库中调用此组件,并且可以正常访问其方法和属性,但不知道如何访问其事件。 我想我也许可以将它添加到数据模块中,但这似乎不是作为工具选项板中的选项提供的。这有可能吗?

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

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

谢谢

1 个答案:

答案 0 :(得分: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控件的代码存在于类中,则不需要其他类。您可以在该课程中实现处理程序。

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