Voila la solution :
Code de la DLL :
library Project1;
uses
SysUtils,
Classes,Forms,
Unit2 in 'Unit2.pas' {Frame2: TFrame};
{$R *.res}
procedure CreateFrame(aOwner:TComponent;var Frame:TFrame); export;
begin
Frame := TFrame2.Create(aOwner);
end;
exports CreateFrame;
begin
end.
Code de la TFrame (pour exemple) :
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TFrame2 = class(TFrame)
GroupBox1: TGroupBox;
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.dfm}
end.
Voici le code de l'appli qui charge la dll :
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure CreateFrame(aOwner:TComponent;var Frame:TFrame); external 'Project1.dll';
procedure TForm1.FormCreate(Sender: TObject);
var f : TFrame;
begin
CreateFrame(self,f);
f.ParentFont := False;
f.Parent := self;
end;
procedure TForm1.FormDestroy(Sender: TObject);
var c : TControl;
begin
while ControlCount > 0 do
begin
c := Controls[0];
c.Parent := nil;
c.Free;
end;
end;
end.
J'espère que cela vous sera utile.
Merci pour votre aide :)