Forms MDI Fecham mas não desaparecem

Delphi

27/07/2009

Boa tarde... tenho um problema um tanto curioso. Tenho um form principal que chama outros forms MDI, ate ai OK... Ele abre sem problemas nenhum, quando eu encerro ele, pelo debug eu sei que o form foi destruido, mas ele não some da tela. Pra ele sumir eu tenho q minimizar o aplicativo e maximizar... é como se faltasse dar um refresh na tela principal ou algo parecido. Alguém teve algum problema parecido?
Dsde ja agradeço.


Fabbyo

Fabbyo

Curtidas 0

Respostas

Sdph

Sdph

27/07/2009

coloque no onClose do formulario
Action := caFree;


GOSTEI 0
Facc

Facc

27/07/2009

coloque no onClose do formulario Action := caFree;


Faltou colocar

Nome_do_seu_Form := nil;r


GOSTEI 0
Fabbyo

Fabbyo

27/07/2009

Prezados no form child ja tem as duas instruções abaixo:
Action := caFree;
Nome_do_seu_Form := nil;

Mas como explicado, o form child somente desaparece se eu minimizar o form principal e maximizar ele novamente.


GOSTEI 0
Facc

Facc

27/07/2009

Como vc tá criando seus formularios?

seu form pai é MDIForm?


GOSTEI 0
Fabbyo

Fabbyo

27/07/2009

O form principal é MDIForm sim.
Eu carrego meus form a partir de uma BPL da seguinte forma:
aClass := GetClass(nmForm);
aPersistentClass := GetClass(nmForm);
{ Verifica se o formulário já foi criado em memória }
for i:= 0 to MdiChildCount - 1 do
if MDIChildren[i].ClassName = nmForm then
aForm := MDIChildren[i];

if aForm = nil then
begin
aForm := TComponentClass(aClass).Create(application.MainForm) as TForm;
aForm.Caption := fRetornaNomeForm(nmForm);
mnuJanela := TMenuItem.Create(application.MainForm);
mnuJanela.Caption := aForm.Caption;
mnuJanela.name := ´j´+TmenuItem(Sender).name;
mnuJanela.OnClick := btnClick;
try
for i := 0 to mnPrincipal.Items.Count - 1 do
if mnPrincipal.Items[i].Caption = ´Janela´ then
mnPrincipal.Items[i].Add(mnuJanela)
finally end;
end;
aForm.WindowState := wsMaximized;
aForm.BringToFront;
aForm.SetFocus;


GOSTEI 0
POSTAR