bonjour à tous,
j'ai un frame dans un paquet d'execution que je voudrais instancier dans mon appli.
je charge le bpl (apparement pas de problème) mais à la récupération de la class elle est introuvable.
Sources :
voila le code du frame :
unit uCustomPluginFrame;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TCustomPluginFrame = class(TFrame)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
constructor Create(AOwner: TComponent); override;
property Caption;
end;
implementation
{$R *.dfm}
{ TCustomPluginFrame }
constructor TCustomPluginFrame.Create(AOwner: TComponent);
begin
inherited;
end;
procedure TCustomPluginFrame.Button1Click(Sender: TObject);
begin
Edit1.Text := DateToStr(Now);
end;
Initialization
RegisterClass(TCustomPluginFrame);
Finalization
UnregisterClass(TCustomPluginFrame);
end.
là celui de l'appli :
unit uMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Déclarations privées }
Module: THandle;
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
MaClasse: TPersistentClass;
Frame: TFrame;
begin
Module := LoadPackage('TestPlugin.bpl'); //chargement du paquet
if Module = 0 then
raise Exception.Create('Package inconnu');
MaClasse := GetClass('TCustomPluginFrame'); //récupération de la classe
if MaClasse = nil then
raise Exception.Create('Classe non trouvée');
Frame := TFrame(MaClasse).Create(Self); //instanciation du frame
Frame.Parent := Self;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnloadPackage(Module); //libération du paquet
end;
end.
GetClass me renvoie nil alors qu'à priori TCustomPluginFrame est enregistré au chargement du paquet.
quel est le problème ?
à terme j'aurais une classe générique connue de mon appli, et N classes dérivant de cette dernière que je voudrais charger quand j'en ai besoin. Peut-être que la méthode des paquet n'est pas appropriée.
merci d'avance pour vos réponses.
[}:)] PhoenyX [}:)]