Apenas 1 instancia do MDIChild
Bom, ao fechar um MDIChild utilizo o seguinte codigo :
Action := caFree; TForm(Self) := nil;
Quando vou abrir , faço o seguinte :
if not Assigned(FrmFormulario) then Application.CreateForm(TFrmFormulario, FrmFormulario) else frmFormulario.Show;
Ele funciona perfeitamente enquanto eu não fecho o formulario, quando eu fecho o formulario, e tento abrir uma nova instancia, ele vai direto para o frmFormulario.show, isto é, há uma instancia criada na memoria (mais na verdade não tem nada aberto).
o que fazer?
Action := caFree; TForm(Self) := nil;
Quando vou abrir , faço o seguinte :
if not Assigned(FrmFormulario) then Application.CreateForm(TFrmFormulario, FrmFormulario) else frmFormulario.Show;
Ele funciona perfeitamente enquanto eu não fecho o formulario, quando eu fecho o formulario, e tento abrir uma nova instancia, ele vai direto para o frmFormulario.show, isto é, há uma instancia criada na memoria (mais na verdade não tem nada aberto).
o que fazer?
Ronaldo Lanhellas
Curtidas 0
Respostas
Emerson Nascimento
28/06/2011
troque
TForm(Self) := nil;
por
FrmFormulario := nil;
TForm(Self) := nil;
por
FrmFormulario := nil;
GOSTEI 0
Ronaldo Lanhellas
28/06/2011
Utilizo um form modelo onde preciso utilizar codigos genericos, mais tentei no form especializado usar o código que voce sugeriu e também não funcionou
GOSTEI 0
Ronaldo Lanhellas
28/06/2011
alguem porfavor !!
GOSTEI 0
Ronaldo Lanhellas
28/06/2011
Alguma sugestão : (
GOSTEI 0
Wilson Junior
28/06/2011
Tente assim:
Espero ter colaborado.
try if not Assigned(FrmFormulario) then Application.CreateForm( TFrmFormulario, FrmFormulario ) else frmFormulario.Show ; finally FreeAndNil( frmFormulario ); end;
Espero ter colaborado.
GOSTEI 0
Emerson Nascimento
28/06/2011
tente assim:
if not Assigned(FrmFormulario) or not FrmFormulario.Showing then Application.CreateForm(TFrmFormulario, FrmFormulario)else frmFormulario.Show;
GOSTEI 0
Ronaldo Lanhellas
28/06/2011
Muito obrigado Emerson, não havia pensado nessa possibilidade (tão simples e eficiente) .
Resolvido !!
Resolvido !!
GOSTEI 0
José
28/06/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0