Snadné psaní dopředu

Automaticky přeloženo z Deepl

Pokud vás zajímá uživatelské rozhraní, možná jste již použili události On before keystroke a On after keystroke. Jistě vás potěší, že obsluha těchto událostí byla ve verzi 4D v18 R5 výrazně vylepšena. Kromě toho byl vytvořen nový příkaz, který při generování události On before keystroke zjišťuje, zda probíhá vstup. Pojďte se dozvědět více!

HDI: Snadné zadávání dopředu

textové vstupy

Při zadávání textu může systém zasáhnout a pomoci vám bez ohledu na jazyk nebo operační systém. Vezměme si například případ znaků s diakritikou ve francouzštině nebo španělštině: „ê“. „ü“ „ñ“. Chcete-li tyto znaky zadat v systému MacOS, nejjednodušší je podržet příslušnou klávesu, což způsobí zobrazení dialogového okna:

Chcete-li vybrat požadované písmeno, musíte použít klávesy se šipkami a poté potvrdit svou volbu klávesou „return“ nebo „enter“:

blank

Od verze 4D v18 R5 jsou události On before keystroke a On after keystroke generovány pouze po potvrzení tohoto typu systémového dialogu (tzv. IME). Není třeba přijímat kódy odpovídající klávesám se šipkami a ověřovací klávese, když je důležité pouze poslední písmeno!

seznamová pole

Vylepšení se dočkaly také seznamové boxy. Událost On before keystroke je generována, jakmile má pole seznamu při zadání klávesy fokus, a to i v případě, že není zadávána žádná buňka. Díky tomu víme, které klávesy byly stisknuty, a můžeme tak programově rozhodovat, například zahájit nové vyhledávání nebo změnit aktuální výběr!

MoRE INFO s novým příkazem

Jak zjistíte, zda byla událost vygenerována během skutečného zadávání, nebo jen proto, že pole seznamu mělo v okamžiku stisknutí klávesy na klávesnici fokus? Odpověď je velmi jednoduchá: nový příkaz Is editing text . Ten vrací hodnotu True, pokud uživatel zadává hodnoty do objektu vstupního formuláře, a False ve všech ostatních případech.

Ukázka kódu

Tento jednoduchý příklad ukazuje, jak provést dotaz, jakmile je na klávesnici napsáno libovolné písmeno mezi A a Z(všechny ostatní znaky jsou v této ukázce ignorovány).

Dotaz samozřejmě nelze provést, pokud je buňka upravována. Proto před provedením jakéhokoli nového dotazu použijeme nový příkaz Is editing text.

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("jméno = :1 nebo příjmení = :1";$char+"@")
End if
End case

Další příklad?

Následující animovaný GIF ukazuje, co lze pomocí této události provést v poli se seznamem bez pomoci dalších tlačítek nebo vstupních oblastí(písmena, která se na animovaném GIFu zobrazují, jsou zobrazena pouze proto, aby bylo vidět, jaké klávesy byly na klávesnici napsány).

blank

Další podrobnosti o příkazu najdete v centru dokumentů!

Závěr

Tato funkce pomáhá vytvořit uživatelsky přívětivější rozhraní a jsme si zcela jisti, že ji jako vývojáři využijete k dalšímu vylepšení uživatelského prostředí!

Pro více informací se neváhejte podívat do dokumentace!

Roland Lannuzel
- Product Owner & 4D Expert - Po studiu elektroniky se Roland věnoval průmyslovým IT jako vývojář a konzultant, který vytvářel řešení pro zákazníky s různými databázemi a technologiemi. Koncem 80. let se zamiloval do 4D a používal jej při psaní podnikových aplikací, které zahrnovaly účetní, fakturační a e-mailové systémy. nakonec se připojil ke společnosti v roce 1997 a Rolandův cenný přínos zahrnuje návrh specifikací, testovacích nástrojů, demoverzí a také školení a přednášky pro komunitu 4D na mnoha konferencích. Nadále aktivně utváří budoucnost 4D definováním nových funkcí a nástrojů pro vývoj databází.