COMO SABER Q UM CONTROLE ESTA COM O FOCO

USUARIO.EXCLUIDOS 17/04/2004 22:40:04
#21138
Pessoal, no evento click() de um menu, eu gostaria de saber se meu GRID está com o foco. Se tiver, faça isso, caso contrário, faça isso:

private sub MEUMENU_click()
if MEUGRID.TACOMOFOCO = true then
'commandos
'commandos
else
'commandos
'commandos
endif

falow!!
USUARIO.EXCLUIDOS 17/04/2004 23:04:11
#21146
Resposta escolhida
Ao clicar em um menu qualquer, o controle perde o foco, que passa ao próprio menu. Dessa forma, não é possível obter qual era o foco antes da ação.
O que eu poderia sugerir é que no evento GotFocus do grid você ativasse um flag, desativando-o no GotFocus dos demais controles do Form (exceto os menus, claro).
USUARIO.EXCLUIDOS 17/04/2004 23:25:45
#21150
Hehehe!
Flag (bandeira ou sinalizador) é normalmente uma variavel booleana que se utiliza para marcar uma dada condição que, por outros meios, não se tem como identificar. Por exemplo, em um form de acesso ao sistema, utiliza-se um flag para liberar o acesso, consistindo-se o nome do usuário e a senha. Se ambos os campos combinarem com o digitado, marca-se o flag como verdadeiro, caso contrário, como falso. Após X número de tentativas, se o flag continuar como falso, encerra-se a aplicação, sem permitir o acesso.
No caso do foco, é similar. Você cria uma variável com escopo no formulário e a deixa sempre como false, inclusive no GotFocus de todos controles.
No GotFocus do Grid, você a marca como True.
Assim, ao acessar o menu, basta verificar essa variável: Se for verdadeira, o último foco foi no Grid, caso contrário, em algum outro controle.
Mais simples do que parece, não é mesmo?
P.S.: Vez em quando eu me "empolgo" com o jargão... Desculpe.
Tópico encerrado , respostas não são mais permitidas