PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum MDI Package em Delphi 2009 #372496

21/07/2009

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar