Fórum Forms MDI Fecham mas não desaparecem #372819

27/07/2009

0

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

Responder

Posts

27/07/2009

Sdph

coloque no onClose do formulario
Action := caFree;


Responder

Gostei + 0

28/07/2009

Facc

coloque no onClose do formulario Action := caFree;


Faltou colocar

Nome_do_seu_Form := nil;r


Responder

Gostei + 0

28/07/2009

Fabbyo

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.


Responder

Gostei + 0

28/07/2009

Facc

Como vc tá criando seus formularios?

seu form pai é MDIForm?


Responder

Gostei + 0

28/07/2009

Fabbyo

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;


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar