Forçar Foco em Form aberto com Show...

Delphi

11/11/2013

Olá pessoal!

Tenho uma aplicação em que abro os forms usando o showmodal, mas tem um único form que abro
usando apenas o Show, estou tendo um problema no evento OnKeyDow deste form.
Exemplo: Digamos que eu tenha um algorítimo chamado pelo F12 no OnKeyDow do FormPrincipal e um outro algorítimo também chamado pelo F12
no OnKeyDow do FormAtendimentos(esse é o form que abro usando o Show), se eu pressionar F12 no FormAtendimentos ele executa o algorítimo que está
no FormPrincipal, a não ser que eu dê um clique no Formatendimentos.
Sei que isso está acontecendo pq o Formatendimentos ao ser chamado pelo show não está recebendo o foco ou não está ficando "ativo", mas já tentei fazê-lo receber
o foco e não consegui.
A última maneira que tentei foi essa SetForegroundWindow(Formatendimentos.Handle);

Alguém pode me ajudar?
Rafael Mota

Rafael Mota

Curtidas 0

Respostas

Rafael Mota

Rafael Mota

11/11/2013

Alguém pode me ajudar?
GOSTEI 0
Marcos Oliveira

Marcos Oliveira

11/11/2013

Você já tentou usar a função "BringToFront"?

Att,

Marcos
GOSTEI 0
Rafael Mota

Rafael Mota

11/11/2013

Você já tentou usar a função "BringToFront"?

Att,

Marcos


Ainda não havia tentado, mas infelizmente ainda não deu certo. O que me deixa mais intrigado é que, se eu chamar o Form atendimento através do atalho ele vem com o foco
 if (Key = VK_F7) and AC_SUPORTE_HELP_DESK.Enabled = True then
             begin
               if not VerificaPermissao('0014','Help Desk',iCodUsu,False,Self) then
               Exit;
               FormAtendimentos:= TFormAtendimentos.Create(self);
              FormAtendimentos.Show;
             end;

Só não vem se eu clicar no botão(o botão tem o mesmo código, com exceção da primeira linha). Se tiver mais alguma ideia, agredeço.
GOSTEI 0
Augusto Angelim

Augusto Angelim

11/11/2013

Para colocar o Foco no objeto...

if NomeDoForm.CanFocus then
   NomeDoForm.SetFocus



Então seu código ficaria:

if (Key = VK_F7) and AC_SUPORTE_HELP_DESK.Enabled = True then
            begin
              if not VerificaPermissao('0014','Help Desk',iCodUsu,False,Self) then
              Exit;
              FormAtendimentos:= TFormAtendimentos.Create(self);
             FormAtendimentos.Show;
             // Controle do FOCO
             if FormAtendimentos.CanFocus then 
                FormAtendimentos.SetFocus;
             //
            end;

GOSTEI 0
Rafael Mota

Rafael Mota

11/11/2013

Pessoal, por incrível que pareça, acho que tem algo haver com componente Action Manager,
pois coloco o mesmo código em um Speedbutton e funciona(o form abre com o foco) .

GOSTEI 0
Olmiro Callai

Olmiro Callai

11/11/2013

Mota estou passando pelo mesmo problema, voce conseguiu resolver ?
GOSTEI 0
POSTAR