Digite à frente, facilitado

Tradução automática de Deepl

Se estiver interessado na interface do utilizador, pode já ter utilizado os eventos On before keystroke e On after keystroke. Ficará certamente satisfeito por saber que o tratamento destes eventos foi grandemente melhorado com o 4D v18 R5. Além disso, foi criado um novo comando para determinar se existe um input contínuo quando o evento On before keystroke é gerado. Vamos descobrir mais!

HDI: Digite à frente facilitado

entradas de texto

Quando introduz texto, o sistema pode intervir para o ajudar, independentemente da língua ou do sistema operativo. Por exemplo, tome o caso de caracteres acentuados em francês ou espanhol: “ê”. “ü” “ñ”. Para introduzir estes caracteres em macOS, a forma mais simples é manter premida a chave correspondente, o que faz aparecer uma caixa de diálogo:

Para seleccionar a letra desejada, é necessário utilizar as teclas de setas e depois validar a sua escolha com a tecla “return” ou “enter”:

blank

A partir de 4D v18 R5, os eventos On before keystroke e On after keystroke só são gerados quando este tipo de diálogo do sistema (também conhecido como IME) é validado. Não há necessidade de receber os códigos correspondentes às teclas de setas e à tecla de validação quando apenas a letra final é importante!

caixas de listagem

As caixas de listagem também receberam um melhoramento. O evento On before keystroke é gerado assim que a caixa de listagem se concentra quando uma chave é digitada, mesmo que nenhuma célula esteja a ser introduzida. Isto permite-nos saber que teclas foram premidas e torna possível programar decisões tais como iniciar uma nova pesquisa ou alterar a selecção actual!

MoRE INFO com um novo comando

Como sabe se um evento foi gerado durante uma entrada real ou simplesmente porque a caixa de listagem tinha o foco no momento em que uma tecla foi premida no teclado? A resposta é muito simples: o novo comando Is editing text . Retorna True se o utilizador estiver a introduzir valores num objecto de forma de entrada, e False em todos os outros casos.

Amostra de código

Este exemplo simples mostra como realizar uma consulta assim que qualquer letra entre A e Z é digitada no teclado(todos os outros caracteres são ignorados nesta amostra).

É claro que a consulta não pode ser executada enquanto uma célula está a ser modificada. É por isso que utilizamos o novo comando Is editing text antes de executar qualquer nova consulta.

var $char : Text
Case of
:(
FORM Event .
code=On Before Keystroke)
If (Not(Is editing text)) // check not in input mode
$char :=Keystroke
Form.people:=
ds .people.query("firstname = :1 ou lasttname = :1";$char+"@")
End if
End case

Outro exemplo?

O seguinte GIF animado mostra o que pode ser feito usando este evento numa caixa de listagem, sem a ajuda de quaisquer outros botões ou áreas de entrada(as letras que aparecem no GIF animado são apenas mostradas para mostrar quais as teclas que foram digitadas no teclado).

blank

Encontre mais detalhes sobre o comando no centro doc!

Conclusão

Esta funcionalidade ajuda a criar uma interface mais fácil de utilizar e temos a certeza de que, como programador, a utilizará para melhorar ainda mais a sua experiência de utilizador!

Para mais informações, sinta-se à vontade para verificar a documentação!

Roland Lannuzel
- Proprietário do produto & Especialista 4D - Depois de estudar electrónica, a Roland entrou nas TI industriais como desenvolvedor e consultor, construindo soluções para clientes com uma variedade de bases de dados e tecnologias. No final dos anos 80, apaixonou-se pela 4D e utilizou-a para escrever aplicações comerciais que incluem sistemas de contabilidade, facturação e correio electrónico. Juntando-se à empresa em 1997, as valiosas contribuições de Roland incluem a concepção de especificações, ferramentas de teste, demonstrações, bem como formação e palestras para a comunidade 4D em muitas conferências. Ele continua a moldar activamente o futuro da 4D, definindo novas características e ferramentas de desenvolvimento de bases de dados.