gpt4 book ai didi

delphi - 如何在DLL(Delphi/TJVPluginManager + TJvPlugin)中实现回调方法

转载 作者:行者123 更新时间:2023-12-03 19:45:22 24 4
gpt4 key购买 nike

我正在构建一个使用插件的应用程序。我正在使用出色的JVCL插件框架。我首先开始使用软件包插件。它像一个魅力一样工作,但有一个很大的缺点:需要给运行时bpl(23Mo)。所以我切换到DLL插件。

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

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

预先感谢

BR

斯蒂芬·维兹比奇(Stephane Wierzbicki)

最佳答案

基本概念非常简单。回调方法是指向传递给某些代码的方法的指针,以便可以在特定时间调用它,以允许您自定义其行为。如果您有任何使用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),以便编译器可以告诉它它是方法指针而不是方法调用,但这并不总是必需的。

关于delphi - 如何在DLL(Delphi/TJVPluginManager + TJvPlugin)中实现回调方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1839217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com