Clique para saber mais...
  Home     Download     Produtos / Cursos     Revista     Vídeo Aulas     Fórum     Contato   Clique aqui para logar | 06 de Outubro de 2026
  Login

Codinome
Senha
Salvar informações

 Esqueci minha senha
 Novo Cadastro

  Usuários
124 Usuários Online

  Revista ActiveDelphi
 Assine Já!
 Edições
 Sobre a Revista

  Conteúdo
 Apostilas
 Artigos
 Componentes
 Dicas
 News
 Programas / Exemplos
 Vídeo Aulas

  Serviços
 Active News
 Fórum
 Produtos / Cursos

  Outros
 Colunistas
 Contato
 Top 10

  Publicidade

  [Artigos]  Criando Formulários em DLL e chamandos em Aplicações
Publicado por ActiveDelphi : Quarta, Agosto 16, 2006 - 09:14 GMT-3 (5777 leituras)
Comentários 5 Comentários   Enviar esta notícia a um amigo Enviar para um amigo   Versão para Impressão Versão para impressão
Djonatas Tenfen 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



Comentários Comentários
   Ordem:  
Comentários pertencem aos seus respectivos autores. Não somos responsáveis pelo seus conteúdos.


por: Visitante : Set 20, 2006 - 11:38
Muito boa a matéria porém seria mais útil se utilizasse um compartialhamento de conexão ao banco de dados


por: Whaterfox (jean_carlo@hotmail.com) : Set 14, 2009 - 05:05
(Informações sobre o membro | Enviar uma mensagem) http://
Olá, sei que o artigo já foi lançado a muito tempo, mas gostaria se alguem ler e puder ajudar, me dar um adica de como fazer o form que está dentro da DLL interagir com o programa, por exemplo: ao clicar no botao sair, alem de fechar o form, mudar o caption do form principal da aplicaçao. Agradeço se alguem puder me ajudar.


por: herry2009 (edleyrocha@hotmail.com) : Jan 24, 2010 - 02:38
(Informações sobre o membro | Enviar uma mensagem) http://http://
Amigo funciou sem problemas mas e depois para limpar o forme da memoria junto com a dll ..?


por: claudiocjr (roelll@terra.com.br) : Jun 17, 2010 - 09:00
(Informações sobre o membro | Enviar uma mensagem) http://
Ola

Utilizei este artigo em minha aplicação
funciona perfeitamente,mas como posso fazer
pra destruir da memoria.

Fica sempre recidente na memoria, dai
tenho que reinicializar o micro

grato

Cláudio



por: vicentefirtline (vicentecoimbra030@gmail.com) : Set 05, 2018 - 11:39
(Informações sobre o membro | Enviar uma mensagem)
Mesmo depois de anos esse conteúdo me ajudou
muito grato pelo compartilhamento de conhecimento
valeu!
  Edição 112

Revista ActiveDelphi

  50 Programas Fontes


  Produtos

Conheça Nossos Produtos

Copyright© 2001-2016 – Active Delphi – Todos os direitos reservados