Forms MDI Fecham mas não desaparecem
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.
Dsde ja agradeço.
Fabbyo
Curtidas 0
Respostas
Sdph
27/07/2009
coloque no onClose do formulario
Action := caFree;
Action := caFree;
GOSTEI 0
Facc
27/07/2009
coloque no onClose do formulario
Action := caFree;
Faltou colocar
Nome_do_seu_Form := nil;r
GOSTEI 0
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.
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
27/07/2009
Como vc tá criando seus formularios?
seu form pai é MDIForm?
seu form pai é MDIForm?
GOSTEI 0
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;
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