Thema: Delphi Hydra 3.0 Plugin

Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Hydra 3.0 Plugin

  Alt 17. Sep 2007, 15:16
Das ging mir jetzt etwas schnell. Könntest du das Vorgehen noch mal etwas detaillierter beschreiben?

Aber ich habe noch Probleme mit deinem obigen Code. Ich habe jetzt ein Interface deklariert:
Delphi-Quellcode:
unit PluginInterface;

interface

uses
  uHYIntf;

type
  IPluginInterface = interface(IHYVisualPlugin)
    ['{D728C6B3-837B-4D40-AE99-A8FBD71D7CE8}']
    function GetVersion: String;
  end;

implementation

end.
Und dieses in meinen Plugin.dll Code eingebunden:
Delphi-Quellcode:
type
  THydraVisualPlugin = class(THYVisualPlugin, IPluginInterface)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
  protected
  public
    function GetVersion: String;
  end;
Implementation:
Delphi-Quellcode:
function THydraVisualPlugin.GetVersion: String;
begin
  Result := '1.0';
end;
Aber in der Host-Anwendung muss ich jetzt das machen, um auf die Interfacemethode des Plugins zu zugreifen:
Delphi-Quellcode:
procedure TMainForm.btnLoadPlgClick(Sender: TObject);
begin
  with HYModuleManager1 do
  begin
    LoadModule(ExtractFilepath(ParamStr(0)) + 'HydraPluginLib.dll');
    CreateVisualPlugin('HydraVisualPlugin', FPluginForm);
    FPluginForm.ShowParented(pnlPluginArea);
    // FPlugin := FPluginForm as IPluginInterface; // löst AV aus beim Schliessen der Anwendung;
  end;
end;

procedure TMainForm.Button1Click(Sender: TObject);
begin
  // ShowMessage(FPlugin.GetVersion); // geht nicht, GetVersion unbekannt. FPlugin als IHYVisualPlugin deklariert
  ShowMessage((FPluginForm as IPluginInterface).GetVersion);
end;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat