MDI Package em Delphi 2009

Delphi

21/07/2009

Bom dia...

Estou tendo um problema para trabalhar com formulários MDI aramazenados em BPL no delphi 2009. Quando compilo e rodo dá um erro dizendo que não existe um form pai criado. Se eu faço o mesmo exemplo e compilo na versão 7 do delphi, funciona sem problemas.

Alguem ja teve este problema no delphi 2009 ou trabalha com forms MDI em package BPL?

Desde já agradeço...

Segue abaixo um exemplo do que estou querendo fazer... ou no link https://www.devmedia.com.br/articles/viewcomp.asp?comp=6339

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus;

type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
erter1: TMenuItem;
ert1: TMenuItem;
procedure ert1Click(Sender: TObject);
//TExecutarChild: procedure;
private
ModuloDoPacote: HModule;
//ExecutarChild : TExecutarChild;
procedure CarregarPacote;
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
ExecutarChild: procedure;
implementation

{$R *.dfm}


procedure TForm1.CarregarPacote;
begin
//Tenta carregar o pacote...
ModuloDoPacote := LoadPackage(´BPLMDI.bpl´);

//se carregou, tenta localizar o procedure
if ModuloDoPacote <> 0 then
try
@ExecutarChild := GetProcAddress(ModuloDoPacote, ´ExecutarChild´);
except
ShowMessage (´Pacote não Encontrado´);
end;
end;


procedure TForm1.ert1Click(Sender: TObject);
begin
//Se o pacote não estiver carregado ele cerrega.
if ModuloDoPacote = 0 then CarregarPacote;

//se o procedimento estiver colocado na memória ele executa o procedimento
if Assigned(ExecutarChild) then ExecutarChild;
end;

end.




FORMULÁRIO DA BPL
nit MDIChild;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Label1: TLabel;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure ExecutarChild;
begin
TForm2.Create(Application);
end;


procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;


exports
ExecutarChild;


end.


Fabbyo

Fabbyo

Curtidas 0
POSTAR