AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Hydra 3.0 Plugin

Ein Thema von hanspeter · begonnen am 3. Sep 2007 · letzter Beitrag vom 17. Sep 2007
Antwort Antwort
Seite 2 von 2     12
Benutzerbild von Luckie
Luckie

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

Re: Hydra 3.0 Plugin

  Alt 17. Sep 2007, 16:24
Ah, so geht es. Ich hatte auch FPlugin fälschlicherweise nicht als IPluginInterface deklariert.

Jetzt fehlt mir nur noch, wie man vom Plugin auf eine Methode der Hostanwendung zugreifen kann. Das habe ich noch nicht so ganz verstanden. Das geht wahrscheinlich auch wieder über Interfaces. Aber wie mache ich das Interface im Plugin bekannt?

Danke schon mal für deine hervorragende Hilfe.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#12

Re: Hydra 3.0 Plugin

  Alt 17. Sep 2007, 16:44
Zitat von Luckie:
Ah, so geht es. Ich hatte auch FPlugin fälschlicherweise nicht als IPluginInterface deklariert.

Jetzt fehlt mir nur noch, wie man vom Plugin auf eine Methode der Hostanwendung zugreifen kann. Das habe ich noch nicht so ganz verstanden. Das geht wahrscheinlich auch wieder über Interfaces. Aber wie mache ich das Interface im Plugin bekannt?
Das geht genauso.
Das Interface in beiden einbinden. Im Host also

Delphi-Quellcode:
type
  TForm1 = class(TForm, ICanClosePlugin)

Im Plugin dann (Host as ICanClosePlugin).Machewas Im Demobeispiel "SelfClose" ist ein ausprogrammiertes Beispiel, wie man vom Plugin auf den Host zugreift.
Hier lauert eine kleine Falle.
Das Plugin darf nicht als Antwort zerstört werden, da ja dann das Programm nicht weis, wohin zurück.
Deshalb wird hier Close erst angemeldet und später über einen Timer realisiert.

Gruß
Peter
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Hydra 3.0 Plugin

  Alt 17. Sep 2007, 16:52
Hm, da hab eich noch eine Lücke irgendwo.
Interface:
Delphi-Quellcode:
type
  IPluginInterface = interface(IHYVisualPlugin)
    ['{D728C6B3-837B-4D40-AE99-A8FBD71D7CE8}']
    function GetName: String;
    function GetVersionString: String;
    function GetVersionMajor: Cardinal;
    function GetVersionMinor: Cardinal;
    function GetAuthor: String;
    function GetComment: String;
    function GetDescription: String;
  end;

  IHostInterface = interface
    ['{1BA2CA86-4EED-411C-ABA1-D1BD1F6B3E96}']
    function GetID: Cardinal;
  end;
Host:
Delphi-Quellcode:
type
  TMainForm = class(TForm, IHostInterface)
    HYModuleManager1: THYModuleManager;
    pnlPluginArea: TPanel;
    btnLoadPlg: TButton;
    btnUnloadPlg: TButton;
    Memo1: TMemo;
    procedure btnUnloadPlgClick(Sender: TObject);
    procedure HYHydraAction1Execute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure btnLoadPlgClick(Sender: TObject);
  private
    { Private declarations }
    FPluginForm: IHYVisualPlugin;
    FPlugin: IPluginInterface;
    function GetID: Cardinal;
  public
    { Public declarations }
  end;

// ...;
// ...;

function TMainForm.GetID: Cardinal;
begin
  Result := 42;
end;
Plugin:
Delphi-Quellcode:
procedure THydraVisualPlugin.Button1Click(Sender: TObject);
begin
  ShowMessage(IntToStr((FHost as IHostInterface).GetID));
end;
Aber da bekomme ich eine AV. Im Plugin muss noch was fehlen.

Ich werde mir das Beispiel noch mal angucken, aber erst morgen, jetzt ist Feierabend.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz