Inicialmente, crie uma aplicação do tipo dll ( File/New/Other), em seguinda selecione a opção DLL Wizard (Figura 1). Click em Ok e uma Unit padrão de criação de DLL deverá ser criada como um novo projeto.

Figura 1 - Criando a DLL.
Após criada a unit da Dll, crie um novo formulário normalmente.
Este será adicionado automaticamente no projeto da dll.
Renomeie a propriedade Name do formulário para “FRMPrincipalDLL”(Fig.
2), e crie o formulário conforme desejar, inicalmente ( neste artigo
) não vamos acessar nenhum banco de dados.

Figura 2 - Novo Form no projeto da dll
Salve a toda a aplicação e na unit da dll, inclua
no uses a unit Windows e Forms e a função descrita a baixo:
function AbreFormularioPrincipalDLL: TForm stdcall; export;
begin
Result := TFRMPrincipalDLL.Create(Application);
end;
exports
AbreFormularioPrincipalDLL;
O código completo da Dll fica o seguinte:
library MinhaPrimeiraDLL;
uses
SysUtils,
Classes,
Windows,
Forms,
UnFRMPrincipalDLL in 'UnFRMPrincipalDLL.pas' {FRMPrincipalDLL};
{$R *.res}
function AbreFormularioPrincipalDLL: TForm stdcall; export;
begin
Result := TFRMPrincipalDLL.Create(Application);
end;
exports
AbreFormularioPrincipalDLL;
begin
end.
O trecho de código comentado que vem por padrão quando se cria
um
novo projeto de DLL foi retirado, pois não há necessidade do mesmo.
Agora basta compilar que o arquivo será gerado.

FIgura 3 - Arquivo gerado após compilação
Pronto, nossa Dll está criada.
Agora vamos criar a nossa aplicação que vai acessar o formulário
da Dll. Para isso, crie uma aplicação simples (File, New, Application).
No Formulário principal, coloque somente um botão:

Figura 4 - Formulário da aplicação principal
Inclua uma variavel do Tipo TForm logo abaixo da declaração
do Formulário e
inclua a seguinte assinatura das(s) função(s) da dll na seção
implementation:
var
Form1: TForm1;
FormDll: TForm;
implementation
{$R *.dfm}
function AbreFormularioPrincipalDLL: TForm; external 'MinhaPrimeiraDLL.dll';
Após isso, no OnClick do botão criado anteriormente, inclua
o seguinte código:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
LoadLibrary('MinhaPrmeiraDLL.dll');
if not assigned(FormDll) then
FormDll := AbreFormularioPrincipalDLL;
FormDll.Show;
FormDll.Tile;
end;
O Código da Unit que acessa Dll ficará Assim:
unit UnFRMPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
FormDll: TForm;
implementation
{$R *.dfm}
function AbreFormularioPrincipalDLL: TForm; external 'MinhaPrimeiraDLL.dll';
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
LoadLibrary('MinhaPrmeiraDLL.dll');
if not assigned(FormDll) then
FormDll := AbreFormularioPrincipalDLL;
FormDll.Show;
FormDll.Tile;
end;
end.
E pronto! Temos uma aplicação que acessa um formulário
embutido em uma Dll:

Figura 5 - Aplicação DLL pronta.
Espero que todos tenham conseguido e
sugestões para novos artigos serão muito bem vindas.
Djonatas Tenfen
Contato: djonatas.tenfen@gmail.com
|