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

 


Responder a