Saber se um Form MDI esta aberto

Delphi

22/08/2017

Ola eu uso windows 10 e delphi berlim, meu sistema é baseado em MDI form, gostaria de sabe como faço para identificar de um form MDI child esta aberto.

Eu uso a seguinte procedure para abrir um form:
procedure AbreForm(aClasseForm: TComponentClass; aForm: TForm);
begin
Application.CreateForm(aClasseForm, aForm);
TForm(aForm).Show;
end;

obrigado.
Wilton Júnior

Wilton Júnior

Curtidas 0

Melhor post

Natanael Ferreira

Natanael Ferreira

22/08/2017

Para este código funcionar:
If (aForm = nil) then
{Código }
end;

Você precisa setar nil ao form ao fechar, exemplo:
form1.Destroy; 
form1:=Nil; ;
GOSTEI 1

Mais Respostas

Luiz Vichiatto

Luiz Vichiatto

22/08/2017

GOSTEI 0
Wilton Júnior

Wilton Júnior

22/08/2017

eu já tentei isso

if FrmProduto <> nil then
showmessage(aberto);

tentei aaté assigned

Eu preciso saber se o forma esta aberto.
GOSTEI 0
Luiz Vichiatto

Luiz Vichiatto

22/08/2017

Este é o trecho de código que funciona planamente no sistema que tenho em mãos, detalhe é que sempre inicio
		if frmMain = nil then
		begin
			frmMain := TfrmMain.Create(self);
			frmMain.WindowState := wsMaximized;
			frmMain.Showmodal;
		end


outro trecho que também é significativo no sistema

      if qrlfBloquetos <> nil then
         with qrlfBloquetos do
         begin
            qryNotasBloqueto.Active := false;
            qryBloqueto.Active      := false;
            tbBanco.Active          := false;
            tbLoja.Active           := false;
         end;
      FreeAndNil( qrlfBloquetos );
GOSTEI 0
Luiz Vichiatto

Luiz Vichiatto

22/08/2017

Acho que é este ActiveMDIChild, mas não sei como utilizar, que não utilizo este método. Veja se ajuda este código
for n:=0 to (MainForm.MDIChildCount-1)
begin
  If MainForm.MDIChildren[n].Active then
  begin
    // do your thing here
  end;
end;
GOSTEI 0
POSTAR