Como saber quando o form recebe o foco

13/12/2007

8

Boa Tarde

A minha duvida e o seguinte digamos que tenho 2 forms um chamado TELA1 e o outro TELA2 e as duas estao abertas e posso alternar entre elas com o ALT + TAB. O que gostaria de saber e quando a TELA1 esta com o foco ou a TELA2 .

Grato


Responder

Posts

14/12/2007

Rodc

Com o evento OnActivate()


Responder

14/12/2007

Jaimesk

Certo onActivate so e executado 1 vez quando eu crio o form na primeira vez. No meu caso e o seguinte eu abro a TELA1 e dentro dela chamo a TELA2, ai vo ficar alternando entre as duas telas ou seja as duas serao criadas uma so vez e alternadas com o alt+tab quantas vezes o usuario quiser. Ai preciso saber em que momento elas vao receber o foco.


Responder

14/12/2007

Rodc

Você testou? Eu testei aqui e funciona corretamente!


Responder

14/12/2007

Massuda

Mexo com Delphi, mas isso também se aplica no CBuidler...

Cada form tem um OnActivate() que é disparado sempre que o form recebe o foco mas o objeto Application também tem um OnActivate(), que é disparado quando o programa recebe o foco.

Quando você alterna entre programas (usando Alt+Tab por exemplo), é gerado o evento OnActivate() ao Application, mas não é gerado o OnActivate() do form.


Responder

14/12/2007

Jaimesk

O problema que estou tendo e que estou fazendo uma rotina TEF e do meu sistema vai para a tela das bandeira de cartao realiza a transacao ai volta o foco pra minha aplicacao ai e nesse momento e q preciso saber quando minha tela e mostrada na frente novamente porque as vezes as tela das bandeira demora um pouco pra ser fechada.


Responder

14/12/2007

Massuda

Então você deve usar o evento Application.OnActivate.


Responder

14/12/2007

Jaimesk

Consegui o codigo e o seguinte:

HWND TelaAtual, TelaDaFrente;
TelaAtual = Form1->Handle;
TelaDaFrente = GetForegroundWindow();
if (TelaAtual == TelaDaFrente )
{ // a tela se tornou a da frente
Application->MessageBox(´A Tela Esta na Frente de Todas´,´´);
}
else
{ // a tela se tornou a da frente
Application->MessageBox(´A Tela Esta Atraz de Outra´,´´);
}


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira