Fórum Meu prog esta louco - Está dando a msg Memória insuficiente #187019
07/10/2003
0
frmPresTre := TfrmPresTre.Create(Self);
frmPresTre.qrSimples.Preview;
frmPresTre.qrSimples.Free;
frmPresTre := Nil;
Funciona da seguinte maneira em uma tela o usuário escolhe o aluno que quer imprimi o qrSimples, depois que escolher ele executa esses comandos acima, qdo termina a última linha dos códigos acima ele chama a tela de escolher o aluno novamente e fica nesse loop até o usuário teclar esc na tela.
Até aí tudo bem. O problema é qdo o usr imprime vários relatórios (o programa fica várias vezes neste loop chamando o qrSimples) o programa trava dando a mensagem memória insuficiente.
:cry: :cry: não entendo pq está dando memória insuficiente se estou dando o comando Free :cry: :cry: :cry: :cry:
:cry: Alguém pode me ajudar? :cry:
Obrigada
Debora
Debora
Curtir tópico
+ 0Posts
07/10/2003
Vinicius2k
acredito que a melhor forma de liberar um form da memória é com o método Release (form1.Release)... tente mudar seus ´Free´ para ´Release´ talvez resolva o problema...
espero ter ajudado...
Gostei + 0
07/10/2003
Macario
Veja bem ao chamar o novo form tente usar
e de qualquer maneira vc tem que chamar o metodo close dos forms que vc instancia na memoria
espero que ajude
Gostei + 0
07/10/2003
Beppe
Ataliba.
Gostei + 0
07/10/2003
Debora
O que faço então?
Gostei + 0
07/10/2003
Beppe
Ou tente isso:
No OnClose do TfrmPresTre:
Action := caFree;
No OnShow do TfrmPresTre:
qrSimples.Preview;
Para criá-lo:
TfrmPresTre.Create(Application).ShowModal;
Ataliba.
Gostei + 0
08/10/2003
Marcioih
Se você usar o método Release ao invés de Free como o Vinicius2k disse, você só tira o Formulário da memória, os componentes contidos nele permanecem na memória.
Faça como o Macario falou, não coloque Free no quickreport mas sim no formulário!
frmPresTre := TfrmPresTre.Create(Self);
try
frmPresTre.qrSimples.Preview;
finally
frmPresTre.Free;
Até mais!
Gostei + 0
08/10/2003
Beppe
Será que ninguém sabe como utilizar Release? Bem, eu nunca vi! :cry:
O Release deve ser usado no caso de você querer liberar o form(e todos os seus subcomponentes) ativo. Ele posta uma mensagem que só executa quando todos os manipuladores de evento deste form tiverem terminada, garantindo assim que nenhum método execute usando dados já liberados(o Free libera instanteneamente).
PS: Quando chamar Release no form principal, chame Application.Terminate em seguida.
Espero que isto clarifique.
Ataliba.
Gostei + 0
08/10/2003
Adilsond
frmPresTre := TfrmPresTre.Create(Self);
try
frmPresTre.qrSimples.Preview;
frmPresTre.qrSimples.Free;
frmPresTre.qrSimples.QrPrinter := nil;
finally
FreeAndNil(frmPresTre);
end;
Mas acho que o correto neste seu caso seria voce criar apenas uma vez o seu formulario no início do form que o chamará, executar apenas o preview várias vezes e ao final do form chamador destruir o formulário que contém o relatório.
Gostei + 0
08/10/2003
Vinicius2k
algumas palavras sobre Release :
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)