Apenas 1 instancia do MDIChild

Delphi

28/06/2011

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?
Ronaldo Lanhellas

Ronaldo Lanhellas

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

28/06/2011

troque

TForm(Self) := nil;

por

FrmFormulario := nil;
GOSTEI 0
Ronaldo Lanhellas

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

Ronaldo Lanhellas

28/06/2011

alguem porfavor !!
GOSTEI 0
Ronaldo Lanhellas

Ronaldo Lanhellas

28/06/2011

Alguma sugestão : (
GOSTEI 0
Wilson Junior

Wilson Junior

28/06/2011

Tente assim:
try
  if  not Assigned(FrmFormulario) then
      Application.CreateForm( TFrmFormulario, FrmFormulario )
  else
      frmFormulario.Show
  ;
finally
  FreeAndNil( frmFormulario );
end;


Espero ter colaborado.
GOSTEI 0
Emerson Nascimento

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

Ronaldo Lanhellas

28/06/2011

Muito obrigado Emerson, não havia pensado nessa possibilidade (tão simples e eficiente) . 
Resolvido !!
GOSTEI 0
José

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
POSTAR