Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Problem mit Interfaces und LoadPackage

  Alt 17. Jun 2005, 11:19
Hallo alcaeus,

interessantes Konzept. Interfaces sind hier der richtige Weg, mache Dir keine Gedanken über Referenzzählung oä: Dein System benötigt ohnehin einen Weg, Plug-ins sauber zu entladen. Wenn Du wirklich vorhast, ausschließlich Forms anzuzeigen, bekommst Du die Freigabe über das TComponent-Konzept des Owners gratis.

Ziehe in Betracht, nicht die Klasse sondern ein Objekt zurückzugeben, auf diese Weise können auch Exemplar von Klassen verwendet werden, deren Konstruktur nicht in der Oberklasse (virtuell) eingeführt ist...

Nicht nur das Hauptformular auch eine Verwaltungsinstanz könnte so in Frage kommen. In diesem Fall könnte Dein Plugin eine Fabrik zurückgeben und über diese erzeugst Du dann Deine Exemplare:
Delphi-Quellcode:
myFactory := Module.GetFactory;
myForm := myFactory.CreateForm;
myMenuItems.Add(myFactory.CreateMenuItems);
Hast Du erst einmal ein Exemplar deiner "dynamisch nachgeladenen" Klasse (egal ob über TFormClass(Module.MainFormClass).Create(Applicatio n) oder über eine Fabrik) kann Du ganz normal eine Interfacereferenz erfragen:
Delphi-Quellcode:
var
  myMainForm: IModuleMainForm;
begin
  //..
  Module.MainForm := TFormClass(Module.MainFormClass).Create(Application);
  if Supports(Module.Mainform, IModuleMainForm, myMainForm) then
    myMainForm.SetProgramStyle(AStyle);
Weiterhin viel Erfolg!
gruß, choose
  Mit Zitat antworten Zitat