Josir; Pelo que entendi o problema dele, acrescento que ele deveria verificar se o datamodule já esta criado
Pois á a possibilidade de ele abrir varios forms que o usem ao mesmo tempo. So tem um problema, pois quando finalizar e dar um free no datamodule...pode estar dendo utilizado..dai da Acces violation Elazar -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Josir Gomes Enviada em: segunda-feira, 12 de junho de 2006 09:30 Para: delphi-br@yahoogrupos.com.br Assunto: [delphi-br] Re: Qual melhor forma de trabalhar com pacotes? -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Olá Ricardo, não vi o fonte para estar certo disso, mas acho que o seu problema está na criação do Datamodule (DM). Vc não pode usar a variãvel criada pela IDE na unit do DM. Vc tem que instanciar o datamodule dentro do form: type TForm1 = class(TForm) .... private DM: TDataModule1; end; procedure TForm1.Create.... begin DM := TDataModule1.Create( self ); end; procedure TForm1.Destroy.... begin DM.FecheTodososDataSets; DM.Free; inherited; end; Dessa forma, cada form terá o seu DataModule. Agora, antes de qq coisa pergunte-se: um datamodule é realmente útil ? Seria que não é mais prático ter todos os DataSets no próprio form ??? Será que vc não está complicando a sua vida, criando um Datamodule ? >Certo, o problema que faz em um e apare em outro é o seguinte, tenho >nesse pacote um formulario e um datamodulo, quando da um show no >formulário ele cria >o datamodulo, o datamodulo contem os componentes de acesso a dados, >nesse formulario tem um DBGrid que lista todos registros, ai quando eu >abro dois formularios ao mesmo tempo e navego entre os registros do >DBGrid o outro formulario aberto também muda a posição no DBGrid, tipo >se eu for no primeiro formulario para o ultimo registro, o outro >formulário que ta aberto também vai pro ultimo registro. >Eles são a mesma instancia, se eu fechar um formulário e depois tenta >fechar o outro da erro de access violation, devido ao fato de ser a >mesma instancia e o objeto não está mais em memoria. >Vou mudar a forma de criação dos formularios pra vê se vai fazer >diferença. >Você me falou que carrega todos os pacotes no inicio do programa, isso >não sobrecarrega a memória? Com certeza carregar todos os pacotes vai pesar MUITO a inicialização do sistema. O ideal é que se carregue as BPLs dinamicamente. A lógica é a seguinte: 1) No EXE, tenha apenas o menu. 2) Crie uma COMUM.DPK apenas com as variãveis globais e com os componentes da sessão do banco. 2) No Runtime Package do EXE, inclua apenas as BPLs comuns a todos os pacotes são carregadas no inicio junto com o executável (ex. VCL70, VCLDB70, as libs de componentes tipo Infopower, LMD, Rave, ReportBuilder) e a COMUM.BPL 3) Crie então pacotes separados para forms afins. Por exemplo: uma package para relatórios, uma outra para Forms de Cadastro, outra para Forms de Transação Financeira, etc. 4) A medida que vc for chamando os forms, dê LoadPackage na package que contém o form desejado. Assim, o seu executável terá um footprint inicial pequeno: de 1 a 3Mb dependendo das libraries que vc utiliza. Eu trabalho dessa forma já a uns 5 anos e nunca tive problemas sérios. Tenho aplicações com mais de 400 forms/reports e nunca tive problema de perfomance ou de memória. Vai nessa linha que dá certo. Boa Sorte, Josir. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2 (GNU/Linux) Comment: Using GnuPG with SUSE - http://enigmail.mozdev.org iD8DBQFEjV5HMfx27RYzlsgRAlCOAKCjKJ70W1qetkJdcWH7iQk63oIfKgCff28m MYC7zKZAS335aGD904Y6YN8= =4wrQ -----END PGP SIGNATURE----- _______________________________________________________ Abra sua conta no Yahoo! Mail: 1GB de espaço, alertas de e-mail no celular e anti-spam realmente eficaz. http://mail.yahoo.com.br/ -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html