Package, abre form mas não libera
Muito estranho...
Acontece que, ao tentar fechar o form2 este não é liberado... eis os codigos que uso atualmente
no modulo.bpl
no botão do form1 para abrir o form2
no evento OnClose de ambos os forms
acontece que ao fechar o form2 (que foi instanciado pelo botão do form1), o form2 não é liberado pelo FreeAndNil no evento OnClose, somente o form1
muito estranho não? alguém sabe?
abraços
aplicativo.exe | |-> modulo.bpl (abre um form1) | |-> este form1 tem um botao que abre outro form2 contido no mesmo modulo.bpl
Acontece que, ao tentar fechar o form2 este não é liberado... eis os codigos que uso atualmente
no modulo.bpl
procedure AbreForm; begin if form1 = Nil then form1 := tform1.Create(Nil); form1.Show; end; ... exports AbreForm;
no botão do form1 para abrir o form2
if form2 = nil then form2 := tform2.Create(Nil); form2.Show;
no evento OnClose de ambos os forms
// no form1 FreeAndNil(Form1); // no form2 FreeAndNil(Form2);
acontece que ao fechar o form2 (que foi instanciado pelo botão do form1), o form2 não é liberado pelo FreeAndNil no evento OnClose, somente o form1
muito estranho não? alguém sabe?
abraços
Eniorm
Curtidas 0
Respostas
Eniorm
12/05/2008
vamos dar um [b:1736f4c778]up[/b:1736f4c778] :D
GOSTEI 0
Rodc
12/05/2008
Você está tentando destruir o form2 dentro do OnClose dele mesmo? Neste caso o correto seria usar o Release().
GOSTEI 0
Eniorm
12/05/2008
é exatamente isso
FreeAndNil no onClose do form2
seguinto o método normal com MDI sem estar modularizado em pacotes bpl, posso por o FreeAndNil apenas no onClose que funciona.
Vou testar mas acho que a diferença entre o Release e o FreeAndNil não iria interferir... mas vou testar pra ver...
se eu usar Release, tenho que acrescentar o form2 := Nil
usando o FreeAndNil ele já libera e seta o ponteiro do form para nil
FreeAndNil no onClose do form2
seguinto o método normal com MDI sem estar modularizado em pacotes bpl, posso por o FreeAndNil apenas no onClose que funciona.
Vou testar mas acho que a diferença entre o Release e o FreeAndNil não iria interferir... mas vou testar pra ver...
se eu usar Release, tenho que acrescentar o form2 := Nil
usando o FreeAndNil ele já libera e seta o ponteiro do form para nil
GOSTEI 0
Rodc
12/05/2008
[quote:64281ca982=´Enio Marconcini´]se eu usar Release, tenho que acrescentar o form2 := Nil
usando o FreeAndNil ele já libera e seta o ponteiro do form para nil[/quote:64281ca982]
Então faça o código abaixo no OnClose que é a mesma coisa que o FreeAndNil():
usando o FreeAndNil ele já libera e seta o ponteiro do form para nil[/quote:64281ca982]
Então faça o código abaixo no OnClose que é a mesma coisa que o FreeAndNil():
Release(); Form2 := nil;
GOSTEI 0
Eniorm
12/05/2008
é oq eu vou testar hj a noite pra saber se resolve :D
amanhã posto os resultados
amanhã posto os resultados
GOSTEI 0
Eniorm
12/05/2008
opa galera!
realmente, troquei o FreeAndNil(NomeForm) por
resolveu :D
realmente, troquei o FreeAndNil(NomeForm) por
Release; NomeForm := Nil
resolveu :D
GOSTEI 0