使用Hydra(Remobjects)在Delphi Prism中创建一个插件

时间:2009-08-13 15:01:15

标签: delphi delphi-prism oxygene

我必须在已经在Delphi中的Delphi Prism for Application中创建一个插件。 我已经在www.remobjects.com上阅读了有关Hydra 3.0的所有信息并且有一些疑问。

  1. 请举例说明如何为Delphi Host和.Net插件之间的通信创建自定义接口(在C#或Delphi Prism中)

  2. ModuleController在Hydra插件中的作用是什么以及它在那里如何运作?

  3. 经理组件的角色?

  4. 非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我刚开始参加“九头蛇”之旅,但我会尽力回答你的问题。

Q1。如果没有关于你的情况的更多信息,这个很难回答。你有权访问Delphi代码库吗?您是否已将插件添加到已有插件的现有应用程序中,或者您刚刚开始将Hydra插件框架添加到您的应用程序中?现在我猜你正在为现有的主机应用程序添加一个新的插件,你有.pas文件,其中包含你将用于主机和插件之间通信的自定义接口。如果是这种情况,那么以下内容对您有用。

  • 你需要开始一个新的“RemObjects Hydar” - > Visual Studio中的“插件模块”项目。
  • 通过“工具” - >导出包含通信接口的.pas文件“Hydra” - > “从Delphi单元导入接口”
  • 添加新的“RemObjects Hydra” - > “(非)视觉插件”项目到您的项目
  • 将接口添加到新的插件类并实现接口的方法。

那应该是关于它的。您的主机应用程序现在可以查询您的插件以查看它实现的接口,然后调用它所需的方法。

这类似于导入的界面文件应该是什么样的

type
  {$REGION Attributes}
  [Guid('9D445B3E-CA9F-4C67-815A-F5EC6BAB5D60')]
  {$ENDREGION}
  IMyInterface = public interface(IHYCrossPlatformInterface)
    method MyMethod(const MyInput: String; out MyOutput: String);
  end;

这就像你的插件类应该是什么样的

type
  [Plugin, NonVisualPlugin]
  MyPlugin = public partial class(RemObjects.Hydra.NonVisualPlugin, IMyInterface)
  private
  protected
    method Dispose(aDisposing: boolean); override;
    method MyMethod(const MyInput: String; out MyOutput: String);
  public
    constructor;
  end;

Q2。据我所知,模块控件负责使用宿主应用程序注册插件模块中的所有插件。您也可以从插件中使用它与主机应用程序进行通信。

Q3。我假设你指的是THYModuleManager。这用于(除其他事项外)在运行时加载所有插件。

希望有所帮助。