Fui além e consegui resolver o problema, ao menos em uma primeira avaliação consigo usar a tecla TAB para alternar entre os elementos de um formulário da página.
Segue abaixo a solução:
- Essa estratégia utiliza a biblioteca JQquery, portanto inclua o seguinte trecho no seu HTML para carregar a biblioteca:
<script
src="https://code.jquery.com/jquery-3.4.1.min.js"
integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="
crossorigin="anonymous">
</script>
- Criar a expressão
focusable
na biblioteca JQuery:
<script>
jQuery.extend(jQuery.expr[':'], {
focusable: function (el, index, selector) {
return $(el).is('a, button, :input, [tabindex]');
}
});
</script>
- Criar a função Javascript que irá mudar o foco para o próximo elemento na página:
<script>
function onNextElement() {
var $canfocus = $(':focusable');
var index = $canfocus.index(document.activeElement) + 1;
if (index >= $canfocus.length) index = 0;
$canfocus.eq(index).focus();
};
</script>
**Note que essa última função utiliza a biblioteca JQuery carregada no passo 1 e utiliza a expressão focusable
criada no passo 2.
-
No Studio, navegue até Ferramentas > Gerenciar ActiveX
e registre a biblioteca Microsoft WebBrowser
.
-
Em uma tela adicione um objeto WebBrowser
.
-
No evento KeyUp
da respectiva tela, adicione o seguinte script:
'Verifica se a tecla TAB foi pressionada
If KeyCode = 9 Then
Set Browser = Item("WebBrowser1") 'Seleciona o objeto WebBrowser presente na tela
Browser.SetFocus() 'Muda o foco novamente para o objeto WebBrowser
Browser.Navigate "javascript:onNextElement()" 'Executa a função "onNextElement" presente na página
End if
Toda vez que a tecla TAB
é pressionada, o E3 devolve o foco para o objeto WebBrowser
presente na tela e executa a função javascript onNextElement()
presente no documento que está sendo exibido no WebBrowser
.
No meu caso funcionou perfeitamente. Como eu já utilizo a biblioteca JQuery em praticamente todas páginas, essa estratégia atende perfeitamente minhas necessidades. Caso você não utilize a biblioteca JQuery, tente substituir a função onNextElement() por outra escrita totalmente em Commom Javascript.
Essa estratégia pode ser adaptada também para alternar entre objetos de tela que não estejam em um formulário, para isso basta alterar a expressão focusable
declarada na biblioteca JQuery.