Interakce s uživatelem
Dosud jsme v našich programech používali pro komunikaci s uživatelem jen velmi jednoduché uživatelské rozhraní - vstup z klávesnice a výstup na semigrafický textový displej. Není však těžké obohatit naše programy i o standardní prvky uživatelského rozhraní Psionů.
Programy v OPL umožňují jednoduše využívat standardní prostředky uživatelského rozhraní počítačů Psion - výzvy, dialogy a menu. Obohacením naší aplikace o komunikaci s uživatelem prostřednictvím standardních dialogů nebo menu významně zjednodušíme ovládání našich programů.
Výzvy
i%=ALERT(radek1$) i%=ALERT(radek1$, radek2$) i%=ALERT(radek1$, radek2$, tlacitkoEsc$) i%=ALERT(radek1$, radek2$, tlacitkoEsc$, tlacitkoEnter$) i%=ALERT(radek1$, radek2$, tlacitkoEsc$, tlacitkoEnter$, tlacitkoMezera$)
Výzva (alert) slouží obyčejně k upozornění uživatele na nějakou činnost, kterou se chystá program vykonávat, nebo na chybu programu. Pod výzvou mohou být zobrazena 1-3 tlačítka, která může uživatel použít k zvolení další činnosti programu. Výzvu zobrazíme na displeji funkcí ALERT, které předáme jako parametry jeden až pět textových řetězců.
Předáme-li funkci ALERT jeden nebo dva textové řetězce jako v následujícím příkladu, bude zobrazeno jedno- nebo dvouřádkové upozornění uživatele, pod kterým bude jediné tlačítko. Toto upozornění zmizí z displeje poté, co uživatel stiskne klávesu Esc. Pokud předáme textové řetězce tři, bude třetí z těchto řetězců uveden jako text v tlačítku.
PROC vyzva: ALERT("Začátek programu") ALERT("Toto je", "program") ALERT("Konec", "programu", "Konec") ENDP
Předáme-li funkci ALERT čtyři textové parametry, budou pod informačními řádky zobrazena tlačítka dvě. První z nich bude označeno textem třetího parametru a bude reagovat na klávesu Esc; ve druhém z nich bude text čtvrtého parametru a bude reagovat na klávesu Enter. Funkce ALERT vrátí pořadové číslo tlačítka (v souboru CONST.OPH jsou návratové hodnoty definovány jako KAlertEsc% a KAlertEnter%).
INCLUDE "Const.oph" PROC vyzvasparametrem: LOCAL r% DO r%=ALERT("Vyber si", "", "Konec", "Znova") UNTIL r%=KAlertEsc% ENDP
Přidáme-li parametr pátý, objeví se nám mezi prvním a druhým tlačítkem ještě tlačítko třetí, reagující na mezerník. Příslušná konstanta, kterou funkce ALERT po jeho stisknutí vrátí, je KAlertSpace%.
Dialogy
V jazyce OPL můžeme velmi snadno používat jednoduché dialogy. Dialog je okno na obrazovce, které je členěné po řádcích. Na každém řádku může být zobrazen text nebo okénko pro editaci textu, čísla, data, času, jména souboru atd. Na spodním řádku nebo po straně mohou být tlačítka, jejichž stisknutím dialog ukončíme. Nejsou-li v dialogu tlačítka zobrazena, lze jej ukončit stiskem klávesy Enter.
Ošetření dialogu je zcela v rukou operačního systému EPOC. V programu OPL pouze definujeme, co bude na kterém řádku dialogu, a vydáme příkaz pro zobrazení dialogu na displeji. Operační systém se pak postará o správné chování dialogu, ovládací prvky na jednotlivých řádcích a kontrolu zadávaných údajů. Poté, co uživatel stiskne tlačítko Enter, Esc nebo jedno z tlačítek pro ukončení dialogu, operační systém vrátí kontrolu zpět programu OPL a předá mu změněné hodnoty.
dINIT text$ dINIT text$, atributy%
Při každém použití musíme dialog definovat znova - definice nemohou být nikde uloženy. Definice jednotlivých řádků dialogu začíná příkazem dINIT. Za příkazem dINIT může následovat titulek dialogu (zobrazen úplně nahoře) a atributy popisující celkové chování dialogu. Definice končí příkazem DIALOG, který zobrazí dialog na displeji a vrátí hodnotu informující náš program o tom, jak byl dialog ukončen.
Důležité atributy, které mohou být uvedeny za dINIT, jsou: KDlgButRight% pro umístění tlačítek vpravo vedle dialogu, KDlgNoTitle% pro vynechání řádku s titulkem, KDlgFillScreen% (roztáhne dialog na celý displej) a KDlgDensePack%. Poslední z uvedených atributů způsobí, že mezi řádky dialogu budou menší mezery a na obrazovku se tak vejde více informací.