繁体   English   中英

dll中的delphi非可视事件处理

[英]delphi non-visual event handling in a dll

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

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

我想在Active X库中调用此组件,并且可以很好地访问其方法和属性,但是不知道如何访问其事件。 我以为我可以将其添加到数据模块中,但是在“工具选项板”中似乎没有此选项。 应该可以吗?

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

但是不知道如何使“ myEventHandler”成为事件处理程序,因为它没有形式。

谢谢

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

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

例如:

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控件的代码存在于一个类中,则您不需要另一个类。 您可以在该类中在那里实现处理程序。

因此,再一次,事件处理程序不需要以某种形式实现。 它们只是类的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM