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!
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“:
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).
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!