Fórum Ajuda... Estouro de recursos #161906
22/05/2003
0
Estou Criando um novo projeto e somente ao desenhar as telas já está dando problema de falta de recursos (Acompanhei pelo medidor de recursos do windows e realmente é este o problema). Estou utilisando frames, DBEdit, StaticText e PageControl. O número de DBEdit e StaticText é rasoávelmente grande e alguns frames tem em seu interior outros frames. Não há nenhuma programação por trás dos componentes pois só estou desenhando as telas no momento. Quanto ao equipamento que estou usando, trata-se de um Pentium III 750, 256MB de RAM e muito espaço no HD.
Por favor, ficarei grato por qualquer possível solução.
Desde já, obrigado.
Joaomw
Curtir tópico
+ 0Posts
22/05/2003
Marconi
Estouro de recursos, quer dizer que não há memória suficiente para continuar o programa.
Veja quais programas estão carregados nela, e que voce não vai precisar e tente tirar. Antivirus, gators, etc sempre causam isto.
Este problema normalmene acontece quando voce tenta compilar um programa que tem muitas telas e elas são muito carregadas.
Para solucionar isto devemos evitar que sejam auto criadas. Voce pode controlar isto no menu Project->Options->Forms->Auto-create forms. Na lista da esquerda deixe somente o form principal da sua aplicação. Os outros deixe em Avaliable forms.
Cada vez que precisar abrir um form voce deve cria-lo antes:
....
Application.CreateForm(TForm2.form2); // criando o form que preciso.
form1.hide; // escondendo o principal
form2.showModal; // utilizando o form2
form2.free; // livrando a memória do form2
form1.show; // voltando ao principal, quando o form2 for fechado.
Estas duas últimas linhas podem ser invertidas, tanto faz.
O ideal neste caso seria não trabalhar com datamodules, colocondo em cada form as tabelas que ele vai precisar.
Quando todos os forms estão criados, cada vez que voce atualiza ou navega em uma tabela, todos os objetos de todos os forms que estão ligados a ela, também são atualizados, mesmo que não estejam sendo mostrados na tela no momento. Por isto quando voce cria e apaga os forms a medida que utiliza ou não, acaba ganhando espaço na memória e velocidade no processamento.
Espero ter entendido e ajudado.
Marconi
Gostei + 0
22/05/2003
Joaomw
FormPrincipal
frame1
frame11
frame12
frame13
frame2
frame21
frame22
frame3
frame31
frame32
frame33
frame4
Teria alguma maneira para eu utilizar forms como estou utilizando os frame sem desabilitar o nível inferior/superior mantendo-se sempre na frente do form que o chamou para que eu possa utilisar sua solução sem me desfazer da minha estrutura?
Novamente, obrigado.
Gostei + 0
22/05/2003
Marconi
Isto complica muito a manutenção, porque voce não vai enxergar o frame durante a criação.
Outra maneira seria transformar seus frames em objetos ou joga-los em uma dll. Nos dois casos vai cumplicar a manutenção.
Nunca tentei, mas estou pensando agora, se voce criasse os frames em forms diferentes, deixando em sua aplicação apenas frames vazios. Bastaria copiar o conteúdo do outro frame antes da apresentação. Os outros forms voce não abriria, apenas criava em tempo real para copiar o conteúdo dos frames, ou bastaria eles estarem na cláusula USES do seu form principal para serem acessiveis, sem jamais serem mostrados.
Devo parabeniza-lo, programas com frames ficam mais bonitos. Vou pensar em fazer algum no futuro.
Espero ter ajudado.
Marconi
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)