GARANTIR DESCONTO

Fórum Forçar Foco em Form aberto com Show... #460693

11/11/2013

0

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

Responder

Posts

21/11/2013

Rafael Mota

Alguém pode me ajudar?
Responder

Gostei + 0

21/11/2013

Marcos Oliveira

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

Att,

Marcos
Responder

Gostei + 0

21/11/2013

Rafael Mota

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.
Responder

Gostei + 0

22/11/2013

Augusto Angelim

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;

Responder

Gostei + 0

22/11/2013

Rafael Mota

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) .

Responder

Gostei + 0

24/09/2015

Olmiro Callai

Mota estou passando pelo mesmo problema, voce conseguiu resolver ?
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar