Renato_agito10 Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 Estou trabalhando com DLL e gostaria de saber como eu coloco o DataModule no meu executavel onde chamam os forms que esta em Dll para que todas as Dll's utilizem o datamodule?Obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Renato_agito10 Postado Março 15, 2007 Autor Denunciar Share Postado Março 15, 2007 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??? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 15, 2007 Denunciar Share Postado Março 15, 2007 OpaNão acredito que seja possível, não quer dizer que não seja, pois nãohá como linkar um datamodule diretamente entre um EXE e uma DLLAgora se houver como também gostaria de saber eheheabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Março 16, 2007 Denunciar Share Postado Março 16, 2007 Na minha concepção é perfeitamente possivel. Que tipo de erro ocorre quando você acessa a DataModule pela DLL? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Renato_agito10 Postado Março 19, 2007 Autor Denunciar Share Postado Março 19, 2007 Na minha concepção é perfeitamente possivel. Que tipo de erro ocorre quando você acessa a DataModule pela DLL?Ola ferroviario, Ainda não encontrei uma forma de como fazer isso se você tiver alguma sugestão eu aceito.. não sei como colocar nesse estilo.obrigado. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 19, 2007 Denunciar Share Postado Março 19, 2007 OpaÉ o que eu realmente não sei é como seria feita a linkagem dos forms da DLLcom o DataModule do EXE, agora vamos esperar o Thales nos mostrar quedeve ser algo bem difícil já que por padrão, utilizando o Object Inspector nãoseria possível... acredito ehehabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Março 19, 2007 Denunciar Share Postado Março 19, 2007 (editado) 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 Março 19, 2007 por Thales Pontes Martins Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 20, 2007 Denunciar Share Postado Março 20, 2007 OpaÉ eu também não manjo muito de DataModule, sei somente que serve paraarmazenar componentes e facilitar a linkagem entre os forms, por exemplo,você coloca no DataModule os componentes de conexão com o BD e depoisem todos os forms da sua aplicação você faz um "link" com os componentes doDataModule, primeiro para não precisar colocar vários componentes nos formse segundo para melhor organização, agora do jeito que você passou realmenteda pra usar mas não sei se da para fazer um "link" entre os forms da DLL e oscomponentes do DataModule do EXE, até porque este link é visual usando oObject Inspector e passando como paramêtro será que da pra retornar oscomponentes 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 rsrabraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Março 20, 2007 Denunciar Share Postado Março 20, 2007 (editado) até porque este link é visual usando oObject Inspector e passando como paramêtro será que da pra retornar oscomponentes 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 Março 20, 2007 por Thales Pontes Martins Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Churc Postado Março 20, 2007 Denunciar Share Postado Março 20, 2007 OpaSe existe algum erro eu não sei porque não testei e estou sem o Delphiem 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 rsrCerteza que outras pessoas vão procurar por isto futuramente...abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Thales Pontes Martins Postado Março 20, 2007 Denunciar Share Postado Março 20, 2007 Se existe algum erro eu não sei porque não testei e estou sem o Delphiem 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 rsrPutz, 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Renato_agito10
Estou trabalhando com DLL e gostaria de saber como eu coloco o DataModule no meu executavel onde chamam os forms que esta em Dll para que todas as Dll's utilizem o datamodule?
Obrigado.
Link para o comentário
Compartilhar em outros sites
11 respostass a esta questão
Posts Recomendados
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.