2009-08-13 7 views
1

Je dois créer un plugin dans Delphi Prism pour l'application qui est déjà en Delphi. J'ai lu tout sur Hydra 3.0 dans www.remobjects.com et j'ai quelques questions.créer un plugin dans Delphi Prism en utilisant Hydra (Remobjects)

  1. Pouvez-vous s'il vous plaît me donner un exemple comment créer des interfaces personnalisées pour la communication entre Delphi Host et .Net Plugin. (Soit en C# ou Delphi Prism)

  2. quel est le rôle de ModuleController à Hydra plugin et comment ça marche là-bas?

  3. Rôle du composant Manager?

Merci beaucoup à l'avance.

Répondre

1

Je commence tout juste le voyage "Hydra" mais je ferai de mon mieux pour répondre à vos questions.

Q1. Celui-ci est difficile à répondre sans plus d'informations sur votre situation. Avez-vous accès à la base de code Delphi? Est-ce que vous ajoutez un plugin à une application existante qui a déjà des plugins, ou commencez-vous simplement à ajouter le framework de plugin Hydra à votre application? Pour l'instant je suppose que vous ajoutez un nouveau plugin à une application hôte existante et vous avez le fichier .pas contenant les interfaces personnalisées que vous allez utiliser pour vos communications entre l'hôte et votre plugin. Si c'est le cas, ce qui suit devrait fonctionner pour vous.

  • Vous devez démarrer un nouveau projet "RemObjects Hydar" -> "Plugin Module" dans Visual Studio.
  • Importer le fichier .pas qui contient les interfaces de communication en allant "Outils" -> "Hydra" -> "Importer Interfaces de l'unité Delphi"
  • Ajouter un nouveau "RemObjects Hydra" -> « (non) visuelle Plugin "item à votre projet
  • Ajoutez l'interface à votre nouvelle classe de plugin et implémentez les méthodes de l'interface.

Cela devrait être à ce sujet. Votre application hôte pourra maintenant interroger votre plugin pour voir quelle (s) interface (s) il implémente puis appeler les méthodes dont il a besoin.

C'est quelque chose comme ce que votre fichier d'interface importée devrait ressembler à

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

C'est quelque chose comme ce que votre classe de plug-in devrait ressembler à

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. Autant que je sache, le contrôle du module est responsable de l'enregistrement de tous les plugins dans votre module plugin avec l'application hôte. Vous pouvez également l'utiliser depuis votre ou vos plugin (s) pour communiquer avec l'application hôte.

Q3. Je suppose que vous faites référence au THYModuleManager. Ceci est utilisé (entre autres) pour charger tous vos plugins à l'exécution.

Espérons que ça aide.

Questions connexes