Detectar mudança de plano
Ando tendo a [b:6a2793e4e6]NECESSIDADE[/b:6a2793e4e6] de criar um evento para quando o programa é deixado de lado para ser feito outra coisa, tipo, por exemplo, o user alterna para outro programa, nesse momento algo deve acontecer paralisando o andamento da aplicação.
O problema não é deixar o form em [i:6a2793e4e6]fsStayOnTop[/i:6a2793e4e6], e sim saber quando a aplicação deixa de estar em primeiro plano...
Desde já agradaço uma possível ajuda..
Um abraço,
Richard
O problema não é deixar o form em [i:6a2793e4e6]fsStayOnTop[/i:6a2793e4e6], e sim saber quando a aplicação deixa de estar em primeiro plano...
Desde já agradaço uma possível ajuda..
Um abraço,
Richard
Richard Lima
Curtidas 0
Respostas
Deus
20/12/2003
Bem, isso é simples.. basta você adicionar o seguinte procedimento à sua aplicação:
Que vai ser ativado caso a aplicação receba uma mensagem do tipo [i:ae2774bdc0]WM_ACTIVATE[/i:ae2774bdc0]. Agora, é só verificar se a aplicação foi ativada ou não:
Atenção: [b:ae2774bdc0]NÃO[/b:ae2774bdc0] coloque nada que tire o foco da janela no código (tipo um [i:ae2774bdc0]ShowMessage[/i:ae2774bdc0], [i:ae2774bdc0]MessageDlg[/i:ae2774bdc0] ou [i:ae2774bdc0]MessageBox[/i:ae2774bdc0]) pois se não você vai gerar uma exceção que vai impedi-lo de voltar à aplicação. Use isso apenas para registrar o evento num log, ou ligar / desligar um timer, qualquer coisa que [b:ae2774bdc0]NÃO[/b:ae2774bdc0] mexa com o foco da aplicação. Ok? :) Espero ter ajudado! :) Abraços, dEUS.
procedure SaiudaAplicacao(var Msg: TWMActivate); message WM_ACTIVATE;
Que vai ser ativado caso a aplicação receba uma mensagem do tipo [i:ae2774bdc0]WM_ACTIVATE[/i:ae2774bdc0]. Agora, é só verificar se a aplicação foi ativada ou não:
procedure TForm1.SaiudaAplicacao(var Msg: TWMActivate); begin WA_INACTIVE: begin // Faz o que tem pra fazer quando sair; end; WA_ACTIVE: begin // Faz o que tem pra fazer quando sair; end; end; end;
Atenção: [b:ae2774bdc0]NÃO[/b:ae2774bdc0] coloque nada que tire o foco da janela no código (tipo um [i:ae2774bdc0]ShowMessage[/i:ae2774bdc0], [i:ae2774bdc0]MessageDlg[/i:ae2774bdc0] ou [i:ae2774bdc0]MessageBox[/i:ae2774bdc0]) pois se não você vai gerar uma exceção que vai impedi-lo de voltar à aplicação. Use isso apenas para registrar o evento num log, ou ligar / desligar um timer, qualquer coisa que [b:ae2774bdc0]NÃO[/b:ae2774bdc0] mexa com o foco da aplicação. Ok? :) Espero ter ajudado! :) Abraços, dEUS.
GOSTEI 0
Deus
20/12/2003
Corrigindo o código do [i:374c92437d]procedure TForm1.SaiudaAplicacao(var Msg: TWMActivate)[/i:374c92437d], que saiu [b:374c92437d]todo[/b:374c92437d] errado... :oops:
Agora sim. ;) Mil perdões pelo erro. :) Abraços, dEUS.
procedure TForm1.SaiudaAplicacao(var Msg: TWMActivate); begin case (Msg.Active) of WA_INACTIVE: begin // Faz o que tem pra fazer quando sair; end; WA_ACTIVE: begin // Faz o que tem pra fazer quando voltar; end; end; end;
Agora sim. ;) Mil perdões pelo erro. :) Abraços, dEUS.
GOSTEI 0
Richard Lima
20/12/2003
Exatamente o que eu procurava, que bom que foi simples :)
ora ora.. quem diria.. ´recebi uma ajuda de deus!´ hohohoho brincadeira
obrigado de verdade!
isso realmente é de grande utilidade pra mim...
um grande abraço.
ora ora.. quem diria.. ´recebi uma ajuda de deus!´ hohohoho brincadeira
obrigado de verdade!
isso realmente é de grande utilidade pra mim...
um grande abraço.
GOSTEI 0