【问题标题】:create a plugin in Delphi Prism using Hydra (Remobjects)使用 Hydra (Remobjects) 在 Delphi Prism 中创建插件
【发布时间】:2009-08-13 15:01:14
【问题描述】:
我必须在 Delphi Prism 中为已经在 Delphi 中的 Application 创建一个插件。
我已在 www.remobjects.com 上阅读了有关 Hydra 3.0 的所有信息,并有一些疑问。
您能否举个例子,如何为 Delphi Host 和 .Net Plugin 之间的通信创建自定义接口。(在 C# 或 Delphi Prism 中)
ModuleController 在 Hydra 插件中的作用是什么?它是如何工作的?
管理器组件的角色?
非常感谢。
【问题讨论】:
标签:
delphi
delphi-prism
oxygene
【解决方案1】:
我自己刚刚开始“九头蛇”之旅,但我会尽力回答您的问题。
第一季度。如果没有有关您的情况的更多信息,这很难回答。您可以访问 Delphi 代码库吗?您是在向已有插件的现有应用程序添加插件,还是刚刚开始将 Hydra 插件框架添加到您的应用程序?现在我猜你正在向现有的主机应用程序添加一个新插件,并且你有一个 .pas 文件,其中包含你将用于主机和插件之间通信的自定义接口。如果是这种情况,那么以下内容应该适合您。
- 您需要在 Visual Studio 中启动一个新的“RemObjects Hydar”->“插件模块”项目。
- 通过“工具”->“Hydra”->“从 Delphi 单元导入接口”导入包含通信接口的 .pas 文件
- 在您的项目中添加一个新的“RemObjects Hydra”->“(Non-)Visual Plugin”项
- 将接口添加到新插件类并实现接口的方法。
应该差不多了。您的主机应用程序现在将能够查询您的插件以查看它实现了哪些接口,然后调用它需要的方法。
这类似于您导入的接口文件的外观
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;
第二季度。据我所知,模块控件负责将插件模块中的所有插件注册到主机应用程序中。您还可以从插件中使用它与宿主应用程序通信。
第三季度。我假设您指的是 THYModuleManager。这用于(除其他外)在运行时加载所有插件。
希望对您有所帮助。