Forçar Foco em Form aberto com Show...
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?
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
Curtidas 0
Respostas
Rafael Mota
11/11/2013
Alguém pode me ajudar?
GOSTEI 0
Marcos Oliveira
11/11/2013
Você já tentou usar a função "BringToFront"?
Att,
Marcos
Att,
Marcos
GOSTEI 0
Rafael Mota
11/11/2013
Você já tentou usar a função "BringToFront"?
Att,
Marcos
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
11/11/2013
Para colocar o Foco no objeto...
Então seu código ficaria:
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
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) .
pois coloco o mesmo código em um Speedbutton e funciona(o form abre com o foco) .
GOSTEI 0
Olmiro Callai
11/11/2013
Mota estou passando pelo mesmo problema, voce conseguiu resolver ?
GOSTEI 0