como chamar o form de uma dll?
27/08/2004
0
fiz a procedure q chama a da dll ...
mas qndo eu chamo a procedure da dll .. ele da erro ...
procedure futgame;
begin
Principal.Show;
end;
.. pensei q era erro ... mas ae mandei dar um showmessage no lugar de show pra testar e foi .. pq ele nao abre o meu form???
alguem me ajuda a carregar forms q estao numa dll?
Salsa
Posts
27/08/2004
Ipc$
Se for isso, sua procedure apenas está dando Principal.Show
Vc tem certeza que este Form(Principal) está instanciado?
27/08/2004
Nildo
Um abraço
27/08/2004
Salsa
Se for isso, sua procedure apenas está dando Principal.Show
Vc tem certeza que este Form(Principal) está instanciado?[/quote:07dfcc0ffe]
como assim esta estanciado?
27/08/2004
Ipc$
Como vc está instanciando esse objeto?
No seu .dpr existe a famosa linha: Application.CreateForm ?
Se não, então quando vc está instanciando antes de dar o .Show?
27/08/2004
Salsa
30/08/2004
Ipc$
Dei uma pesquisada aqui no fórum e não encontrei Forms MDIChild em dlls.
Bom, se vc ainda não solucionou, vê se resolve:
1-Passe o Application p/ sua dll.
2-Na dll, antes de criar o Form, salve o Application e atribua o Application da aplicação.
3-Crie o Form.
4-Na seção finalization, retorne o Application que vc salvou.
29/06/2005
Eniorm
Dei uma pesquisada aqui no fórum e não encontrei Forms MDIChild em dlls.
Bom, se vc ainda não solucionou, vê se resolve:
1-Passe o Application p/ sua dll.
2-Na dll, antes de criar o Form, salve o Application e atribua o Application da aplicação.
3-Crie o Form.
4-Na seção finalization, retorne o Application que vc salvou.[/quote:d44adab3c3]
Eu não entendi esses passos :(
29/06/2005
Massuda
[quote:bd784f8fbe=´IPC$´]1-Passe o Application p/ sua dll.
2-Na dll, antes de criar o Form, salve o Application e atribua o Application da aplicação.[/quote:bd784f8fbe]Isso é feito para que o Application da DLL seja o mesmo do Application do programa; a DLL deve ter uma procedure que permita ao programa ajustar o Application [b:bd784f8fbe]antes[/b:bd784f8fbe] de criar o form
[quote:bd784f8fbe=´IPC$´]4-Na seção finalization, retorne o Application que vc salvou.[/quote:bd784f8fbe]Como todo programador bem educado, a gente deixa as coisas como nós encontramos originalmente...
Isso tudo pode ser implementado assim na DLL:
library Exemplo; interface procedure PreparaDLL(NewApplication: TApplication; NewScreen: TScreen); ... implementation var OldApplication: TApplication; OldScreen: TScreen; procedure PreparaDLL(NewApplication: TApplication; NewScreen: TScreen); begin Application := NewApplication; Screen := NewScreen; end; initialization OldApplication := Application; OldScreen := Screen; finalization Application := OldApplication; Screen := OldScreen; end.
Outra forma [b:bd784f8fbe]mais simples[/b:bd784f8fbe] de resolver isso é usar [i:bd784f8fbe]runtime packages[/i:bd784f8fbe]. Nesse caso, tanto o EXE como a DLL deve usar pelo menos os packages padrão do Delphi. Entretanto, algumas pessoas tem dificuldade em utilizar runtime packages pois há necessidade de instalar mais arquivos do que a maioria está acostumada (e é só isso... copiar mais arquivos para a máquina).
29/06/2005
Ipc$
Lembro que dá p/ criar MDIChilds em dlls mesmo que o Form pai esteja no .exe. Tente seguir aqueles passos e ver se funciona, senão, poste o código do método ou função da dll, onde vc cria o MDIChild.
29/06/2005
Ipc$
Bom, espero que solucione o problema do colega.
Obrigado !!!
Clique aqui para fazer login e interagir na Comunidade :)