Package, abre form mas não libera
12/05/2008
0
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
Posts
13/05/2008
Rodc
13/05/2008
Eniorm
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
13/05/2008
Rodc
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;
13/05/2008
Eniorm
amanhã posto os resultados
14/05/2008
Eniorm
realmente, troquei o FreeAndNil(NomeForm) por
Release; NomeForm := Nil
resolveu :D
Clique aqui para fazer login e interagir na Comunidade :)