Ir para conteúdo
Fórum Script Brasil
  • 0

Dll + Datamodule


Renato_agito10

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0
que?¿!

eheh explique direito não da pra entender nada o que você quer fazer ...

Você quer saber, como fazer com que as DLLs utilizem o datamodule do EXE?

isso mesmo.. quero que todos os meus forms que estao em dll utilizem o datamodule que esta no executavel da minha aplicação.

tem como fazer isso???

Link para o comentário
Compartilhar em outros sites

  • 0

Opa

É o que eu realmente não sei é como seria feita a linkagem dos forms da DLL

com o DataModule do EXE, agora vamos esperar o Thales nos mostrar que

deve ser algo bem difícil já que por padrão, utilizando o Object Inspector não

seria possível... acredito eheh

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, eu não entendo muito de DataModule. Mas o que acontece se você tentar acessar pela referencia dele normalmente ->

Função da dll ->

procedure FacaAlgoComDM(DM : TDataModule); stdcall;
begin
  DoSomething(DM);
end;
chamando a função ->
FacaAlgoComDM(DataModule1);
O que há de errado nisso? Ou melhor, crie uma variavel global na dll e coloque a referencia para seu DataModule lá.
var
  DMGlobal : TDataModule;

Procedure InitDMGlobal(DM : TDataModule); stdcall;
begin
  DMGlobal:=DM;
end;

Algum problema nisso?

Editado por Thales Pontes Martins
Link para o comentário
Compartilhar em outros sites

  • 0

Opa

É eu também não manjo muito de DataModule, sei somente que serve para

armazenar componentes e facilitar a linkagem entre os forms, por exemplo,

você coloca no DataModule os componentes de conexão com o BD e depois

em todos os forms da sua aplicação você faz um "link" com os componentes do

DataModule, primeiro para não precisar colocar vários componentes nos forms

e segundo para melhor organização, agora do jeito que você passou realmente

da pra usar mas não sei se da para fazer um "link" entre os forms da DLL e os

componentes do DataModule do EXE, até porque este link é visual usando o

Object Inspector e passando como paramêtro será que da pra retornar os

componentes que estão no DataModule? eu acho que não ehehe...

Mas sou suspeito a falar, não testei e também não uso DataModules rsr

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
até porque este link é visual usando o

Object Inspector e passando como paramêtro será que da pra retornar os

componentes que estão no DataModule? eu acho que não ehehe...

Claro que dá. porque não daria?

Variaveis globais na dll ->

type
  TDMClass = class of TDataModule;

var
  DMGlobal : Pointer;
  DMClass : TDMClass;

Procedure InitDMGlobal(DMcl : TDMClass; DM : Pointer); stdcall;
begin
  DMGlobal:=DM;
  DMClass:=DMcl;
end;
Para chamar ->
InitDMGlobal(TDataModule1, Pointer(DataModule1));
Para acessar o DataModule ->
(TObject(DMGlobal) as DMClass).Table1................

Existe algum erro nisto?

Editado por Thales Pontes Martins
Link para o comentário
Compartilhar em outros sites

  • 0

Opa

Se existe algum erro eu não sei porque não testei e estou sem o Delphi

em casa, mas foi muito inteligente essa maneira que você passou, espero que de certo!

Mas não deve ter porque você com certeza testou antes de postar rsr

Certeza que outras pessoas vão procurar por isto futuramente...

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
Se existe algum erro eu não sei porque não testei e estou sem o Delphi

em casa, mas foi muito inteligente essa maneira que você passou, espero que de certo!

Mas não deve ter porque você com certeza testou antes de postar rsr

Putz, não testei não. Há meses que eu não abro o Delphi, e pra testar isso aí deve dar um trabalho. Por isso que joguei verde perguntando se há algum erro, rsrsrs. Espero que o nosso colega Renato teste e nos diga.

É, existe um erro sim. A dll nem compila. Mas existem mais 2 soluções que funcionam. 1º colocar na lista uses da dll a unit da DataModule para poder acessar os componentes pelo nome dos campos tipo DM.Table1, ou usar a propriedade components do DataModule que guarda referencia para todos os componentes. No primeiro caso o código ficaria mais fácil mais seria preciso recompilar todas as dll's cada vez que você modificar algo no DataModule. No 2º caso isso não é necessário.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...