1

我正在构建一个使用插件的应用程序。我正在使用优秀的 JVCL 插件框架。我第一次开始使用包插件。它就像一个魅力,但有一个很大的缺点:需要给运行时 bpl (23Mo)。所以我切换到DLL插件。

我需要从 hostapplication 调用一个方法(具有 3 个参数的过程),但我不知道该怎么做。OBones 在 Jedi newgroup 中解释了使用回调函数,但我不知道如何实现这一点。

有人可以解释一下或者更好,给我一个例子吗?您可以获取 JVCL 1SimplePlugin 演示并更新它。

提前致谢

BR

斯蒂芬·维尔兹比奇

4

1 回答 1

3

基本概念非常简单。回调方法是指向您传递给某些代码的方法的指针,以便它可以在特定时间调用它以允许您自定义其行为。如果您对 Delphi 有任何经验,那么您已经熟悉了不同名称的回调方法:“事件处理程序”。

在你的插件中尝试这样的事情:

type
   TMyEvent = procedure(param1, param2, param3: integer) of object;

procedure AddCallback(callback: TMyEvent);

此过程将获取传入的 TMyEvent 方法指针并将其存储在某处。假设在一个名为 FCallback 的变量中。当它调用您的应用程序时,代码将如下所示:

if assigned(FCallback) then
   FCallback(param1, param2, param3);

当您设置插件时,您可以像这样从您的应用程序中调用它:

MyPlugin.AddCallback(self.callbackProc);

有时你需要在它前面放一个@(@self.callbackProc),这样编译器就可以知道它是一个方法指针而不是一个方法调用,但这并不总是必要的。

于 2009-12-03T11:17:04.660 回答