Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Verificar se existe algum MDI aberto


Vivendo&Aprendendo

Pergunta

Galera preciso saber se existe algum form MDI aberto. Eu uso o seguinte código para verificar:

If ActiveMDIChild = FrmAcrescimos Then

Mas preciso verificar se vários forms MDI estão abertos ou não, ai se eu fizer da maneira que estou fazendo terei que fazer inumeras comparações, gostaria de saber se existe alguma forma mais simples para isso, tipo um loop para verificar uns 20 forms se existe um deles aberto ou nenhum.

Abraço

Editado por Vivendo&Aprendendo
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0
preciso verificar se vários forms MDI estão abertos ou não

voce pode entar assim

var 
  I: Integer; 
begin
  for I := 0 to MDIChildCount - 1 do begin 
    if MDIChildren[I] is TForm then 
    begin 
       showmessage(' já existe um form da classe TForm'); 
       showmessage( MDIChildren[I] + ' é um form  MDIChild ');
    end; 
  end; 
end;

outra maneira:

http://www.webly.com.br/tutorial/net/3649/...licacao-mdi.htm

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas obrigado... esse é o caminho mesmo, mas veja se pode me ajudar ainda.

Eu coloquei o seu código no OnTimer do Timer, eu preciso que ele fique verificando se existe algum form MDI aberto, caso exista ele mudará o filme do componente ShockwaveFlash. O Código ficou assim:

procedure TFrmPrincipal.TimerTimer(Sender: TObject);
var I: Integer;
begin
  for I := 0 to MDIChildCount - 1 do
    if MDIChildren[I] is TForm then
       ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Atalhos.swf'
    else
       ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Letreiro.swf';
end;

Ele deve iniciar o sistema com o Filme Letreiro e quando eu abrir um MDI ele mudará para o Filme Atalhos e fechando os forms MDI deverá voltar o filme anterior.

Ele está abrindo o filme Atalhos certinho mas quando eu fecho o form ele deveria voltar para o outro filme e não está voltando.

Pode me ajudar?

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Veja se funciona assim:

procedure TFrmPrincipal.TimerTimer(Sender: TObject);
begin
    if MDIChildCount <> 0 then
       ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Atalhos.swf'
    else
       ShockwaveFlashLetreiro.Movie := 'C:\VirtuaPlacas - Sistema Para Fábricas de Placas\Movies\Letreiro.swf';
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,2k
×
×
  • Criar Novo...