Premium

Získejte všechny články mimořádně
jen za 49 Kč/3 měsíce

Programování pro PalmOS počítače krok za krokem (9)

Dnes budeme pokračovat v popisu obsahu souboru prostředků aplikace: povíme si o základním prvku uživatelského rozhraní, o formulářích.

2.3. Definování velikosti a pozice na obrazovce

Je asi zbytečné připomínat, že obrazovka Palm Pilota má rozměry 160 × 160 obrazových bodů. Souřadnice jsou na obou osách číslovány od nuly do 159, počátek číslování je v levém horním rohu displeje. Souřadnice x a y jednotlivých obrazových bodů na displeji uvádí následující obrázek:

Hlavním prvkem uživatelského rozhraní aplikací pro PalmOS jsou formuláře. Formuláře jsou v podstatě všechno to co vidíte na obrazovce a prostřednictvím čeho komunikujete s aplikací: ve formulářích vyplňujete data, vybíráte z nabídky možností, používáte tlačítka apod. V každé aplikaci pro PalmOS, která komunikuje s uživatelem, musí být použit alespoň jeden formulář. Formuláře jsou v souboru prostředků aplikace definovány za klíčovým slovem FORM a jsou složeny z jednotlivých prvků formuláře (tlačítko, přepínač, políčko pro úpravu textu apod.) Více si o formulářích povíme za chvíli.

U jednotlivých prvků formulářů je nutné uvést jejich umístění na obrazovce (souřadnice levého horního rohu) a v některých případech i jejich velikost. Při uvádění těchto údajů je možné zadat jak jednoduché aritmetické výrazy tak několik pomocných proměnných, které nám tento úkol usnadňují.

Definování pozice prvku na obrazovce a jeho velikosti v souboru prostředků aplikace následuje vždy po klíčovém slovu AT a jsou vždy uvedeny v závorkách a od sebe odděleny mezerou. Pokud uvádíme jen pozici levého horního rohu tak zadáváme na prvním místě pozici na ose X a na druhém místě pozici na ose Y. Pokud musíme zadat i velikost, následuje šířka a po ní výška. Příklad obou definic, první u nastavení velikosti celého formuláře, druhá při umístění nápisu (prvek LABEL):

FORM ID PrvniFormular AT ( vlevo nahore sirka vyska )
BEGIN
  LABEL "Text" AUTOID AT ( vlevo nahore )
END

Při uvádění pozice levého horního rohu na obrazovce můžeme použít následující pomocné proměnné, které nám usnadňují umisťování prvků formuláře a jejich zarovnávání. Formulář je v souboru prostředků aplikace definován po řádcích a předchozím prvkem se myslí ten který je uveden v souboru prostředků aplikace na řádku nad prvkem právě definovaným.

Pomocná proměnnáOznačuje
CENTER Umístí prvek formuláře horizontálně (je-li uvedena na místě souřadnice na ose X) nebo vertikálně (je-li na místě souřadnice pro osu Y) na střed obrazovky. Nemůže být použita jako součást aritmetického výrazu a nemůže být použita pro obrázky.
CENTER@číslo Umístí prvek formuláře tak, aby jeho střed byl na uvedené pozici číslo. Můžeme uvést na místě souřadnice na ose X i souřadnice na ose Y. Nemůže být použita jako součást aritmetického výrazu ani pro umisťování obrázků do formulářů.
RIGHT@číslo Může být použita jen při uvádění souřadnice na ose X - umístí prvek formuláře tak, aby byl svojí pravou hranou na uvedené pozici číslo. Nemůže být použita jako součást aritmetického výrazu ani pro umisťování obrázků.
BOTTOM@číslo Může být použita jen při uvádění souřadnice na ose Y - umístí prvek formuláře tak, aby byl svojí spodní hranou na uvedené pozici číslo. Nemůže být použita jako součást aritmetického výrazu ani pro umisťování obrázků.
PREVLEFT Pozice na ose X levé hrany předchozího prvku formuláře.
PREVRIGHT Pozice na ose X pravé hrany předchozího prvku formuláře.
PREVTOP Pozice na ose Y horní hrany předchozího prvku formuláře.
PREVBOTTOM Pozice na ose Y spodní hrany předchozího prvku formuláře.
PREVWIDTH Šířka předchozího prvku formuláře.
PREVHEIGHT Výška předchozího prvku formuláře.

Při zadávání údajů o velikosti objektu (pokud jsou zapotřebí) můžeme používat následující pomocné proměnné:

Pomocná proměnnáOznačuje
AUTO Doplní šířku nebo výšku objektu automaticky podle šířky/výšky písma použitého při vykreslení objektu. Nemůže být použita jako součást aritmetického výrazu
PREVLEFT Pozice na ose X levé hrany předchozího prvku formuláře.
PREVRIGHT Pozice na ose X pravé hrany předchozího prvku formuláře.
PREVTOP Pozice na ose Y horní hrany předchozího prvku formuláře.
PREVBOTTOM Pozice na ose Y spodní hrany předchozího prvku formuláře.
PREVWIDTH Šířka předchozího prvku formuláře.
PREVHEIGHT Výška předchozího prvku formuláře.

Příklad použití pomocných proměnných v definici formuláře přes celou obrazovku (levý horní roh má souřadnice 0,0 a velikost je 160x160 obrazových bodů) a a dvou jednoduchých nápisů - první umístěný automaticky do středu obrazovky a druhý asi půl řádku (přesněji řečeno 5 obrazových bodů) pod ním (jeho levý horní roh má souřadnici X stejnou jako předchozí prvek formuláře - první nápis - a souřadnice Y je vypočtena ze spodního okraje předchozího prvku):

FORM ID PrvniFormular AT ( 0 0 160 160 )
BEGIN
    LABEL "Toto je střed" AUTOID AT ( CENTER CENTER )
    LABEL "a kus pod ním" AUTOID AT ( CENTER PREVBOTTOM+5 )
END

Druhý příklad: definice tří tlačítek (prvek BUTTON), která jsou těsně pod sebou a jsou stejně veliká - použití pomocných proměnných v definici druhého a třetího tlačítka umožní jednodušší zápis. Pokud si budeme přát změnit později umístění tlačítek na obrazovce, stačí nám změnit první řádek:

BUTTON "Stiskni" ID PrvniTlacitko AT (10 100 30 13)
BUTTON "Stiskni" ID DruheTlacitko AT (PREVLEFT PREVBOTTOM PREVWIDTH PREVHEIGHT)
BUTTON "Stiskni" ID TretiTlacitko AT (PREVLEFT PREVBOTTOM PREVWIDTH PREVHEIGHT)

Pozice prvků formuláře (tlačítek, textů apod.) na obrazovce jsou vždy relativní vzhledem k levému hornímu rohu formuláře.

2.4 Aritmetické výrazy

Kdekoliv, kde v souboru prostředků aplikace uvádíme číselnou konstantu - tj. v čísle prostředku nebo na místě souřadnice můžeme použít i aritmetický výraz s jednoduchými operátory. Tyto operátory jsou bez ohledu na typ vyhodnocovány zleva doprava; prioritu je možné ovlivnit jen závorkami. Můžeme uvést výrazy obsahující operátory:

+
(sčítání)
-
(odčítání)
*
(násobení)
/
(dělení)
( )
(závorky)

POZOR: výrazy jsou vyhodnocovány zleva doprava bez ohledu na typ operátoru (všechny operátory mají stejnou prioritu): 3+3*3 bude pokud neuvedeme závorky rovno 18. Pro vyhodnocení, na které jste zvyklé třeba z výrazů v jazyce C/C++ je nutné zapsat výraz jako 3+(3*3).

2.5. Formuláře

Formuláře jsou základním prvkem uživatelského rozhraní. Dělí se na dva základní druhy: základní formuláře (modeless) a formuláře výhradní (modal). Oba dva druhy jsou popsány a rozdíly mezi nimi zdůrazněny v následující tabulce:

Základní formuláře

Tyto formuláře tvoří hlavní "obrazovky" nebo "karty" vaší aplikace. Zaujímají celou plochu displeje a uživatel se mezi nimi může ve většině programů přepínat. Vaše aplikace dostane od operačního systému zprávu o každé akci uživatele v základním formuláři (stisknutí tlačítka, zvolení možnosti apod.)

Výhradní formuláře

Většinou bývají menší než je displej; poznáme je podle odlišného provedení titulku, vespod mají téměř vždy umístěna tlačítka. Tyto formuláře jsou orámované a objevují se jakoby "nad" základními formuláři. Zastaví provádění vaší aplikace dokud uživatel nezvolí jedno z tlačítek (později si uvedeme výzvy, které jsou vlastně zvláštním případem výhradních formulářů).

Ke každému formuláři může být definováno vlastní menu; výhradní formuláře mohou mít připojenou i nápovědu (označená písmenem (i) v pravém horním rohu). Definice formuláře v souboru prostředků aplikace je v následující tabulce (povinné definice jsou podtrženy). Připomínám, že uvnitř definice formuláře se nesmí vyskytovat komentáře.

FORM ID číslo_prostředku_formuláře  Úvodní klíčové slovo, zahajující definici formuláře.
FRAME nebo NOFRAME Pokud neuvedeme, bude rámeček okolo formuláře nakreslen (jako volba FRAME)
MODAL Toto klíčové slovo je třeba uvést pouze pro výhradní formuláře.
USABLE (nemusíte uvádět)
SAVEBEHIND nebo NOSAVEBEHIND  Pokud tuto volbu neuvedeme, bude systém uchovávat obsah obrazovky před vykreslením formuláře (volba SAVEBEHIND).
HELPID číslo_textu_nápovědy  Pokud toto klíčové slovo neuvedeme, nebude nápověda výhradního formuláře definována.
MENUID číslo_menu  Neuvedeme-li, nebude mít formulář přiřazené žádné standardní menu.
DEFAULTBTNID číslo_prostředku  Pokud neuvedeme, nebude žádné z tlačítek formuláře v případě opuštění aplikace během práce s formulářem stisknuto.
BEGIN Začátek seznamu prvků formuláře.
... prvky formuláře ...  
END Konec seznamu prvků formuláře.

Pomocí klíčových slov FRAME nebo NOFRAME určujeme, zda bude výhradní formulář na obrazovce orámován, nebo ne. Pokud ani jedno z těchto klíčových slov neuvedeme, bude rámeček automaticky vykreslen. Tato volba je však užitečná pouze pro výhradní formuláře; základní formuláře rámeček nemají. Rámeček bude nakreslen na vnějším obvodu formuláře - pokud uvedete formulář přes celý displej tak bude orámování skryté za okrajem obrazovky a nebude vidět.

Uvedeme-li v definici formuláře klíčové slovo MODAL, bude formulář zobrazen jako formulář výhradní (to jak se ve vaší aplikaci bude formulář chovat (jako základní nebo výhradní formulář), záleží jenom na vás; uživatel však vždy bude od formulářů, které budou vypadat jako výhradní formuláře očekávat, že se tak budou i chovat a proto je vhodné dodržovat v typech formulářů určitou jednotu). Pokud toto klíčové slovo neuvedeme, bude formulář zobrazen jako formulář základní.

Na tom, zda uvedeme nebo neuvedeme klíčové slovo USABLE nezáleží (pro vaši informaci: u každého prvku uživatelského rozhraní můžeme pomocí tohoto klíčového slova nastavit, zda bude při zobrazení formuláře viditelný na obrazovce; formuláře jsou automaticky vždy viditelné a proto klíčové slovo USABLE nemusíte uvádět).

Při zobrazení formuláře na obrazovce si může PalmOS zapamatovat, co bylo na displeji před tím, než se formulář objevil a po ukončení práce s formulářem obnovit obsah displeje. Tato vlastnost zrychluje práci s formuláři na úkor vyšších nároků na paměť. Pomocí klíčového slova SAVEBEHIND můžete zadat, že si přejete, aby si operační systém zapamatoval obsah obrazovky před vykreslením formuláře a po ukončení práce s formulářem jej obnovil; pokud uvedene klíčové slovo NOSAVEBEHIND tak operační systém ušetří paměť, ale když ukončíme zobrazení formuláře bude o něco déle trvat vykreslení pozadí. Pokud ani jedno z těchto klíčových slov neuvedete, tak operační systém obsah obrazovky před vykreslením formuláře uloží (jako volba SAVEBEHIND).

K výhradním formulářům můžeme připojit nápovědu, přístupnou přes písmeno (i) v pravém horním rohu formuláře pomocí klíčového slova HELPID, za kterým následuje číslo prostředku, pod kterým je v souboru prostředků aplikace definován text nápovědy (definované za klíčovým slovem STRING, více v další části). Pokud toto klíčové slovo neuvedete, nebude nápověda k formuláři připojena.

Podobně i klíčové slovo MENUID slouží k připojení standardního menu. Za tímto klíčovým slovem následuje číslo prostředku, pod kterým je v souboru prostředků aplikace definované menu, které chceme u formuláře použít. Pokud tuto definici neuvedeme, nebude menu formuláře definováno a při zobrazení formuláře na obrazovce nebude aplikace na dotek perem na ikoně pro zobrazení menu reagovat. Definici menu si uvedeme dál v kapitole.

Pokud v definici formuláře uvedeme klíčové slovo DEFAULTBTNID, za kterým je číslo prostředku tlačítka formuláře, tak při opuštění aplikace v době, kdy bude tento formulář zobrazen na displeji bude příslušné tlačítko ještě před ukončením vaší aplikace jakoby "stisknuto". Takto je možné v programu zcela ignorovat možnost, že by byl program předčasně ukončen (třeba stisknutím hardwarového tlačítka pro některou z vestavěných aplikací) a ošetřit pouze tlačítka formuláře: máme-li výhradní formulář, který má na spodku tlačítka Ulož a Zruš tak podle toho, jak by měla naše aplikace zareagovat na ukončení je-li tento formulář zobrazen, nastavíme příslušné číslo prostředku jednoho z tlačítek.

Mezi klíčovými slovy BEGIN a END následuje seznam jednotlivých prvků formuláře, které budou popsány dále. Mezi těmito dvěma klíčovými slovy se nesmí vyskytovat komentáře.


Příště si uvedeme seznam a příklady použití jednotlivých prvků formuláře (tlačítka, přepínače, políčka pro vstup textu, seznamy, zaškrtávací čtverečky apod.) a ukážeme si několik jednoduchých definic formulářů.

Autor:
  • Nejčtenější

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

Huawei šokuje novým supersmartphonem s vysouvacím fotoaparátem

1. května 2024  7:02

Huawei představil novou řadu Pura, která nahrazuje dřívější řadu P. Mezi novinkami z nové řady je i...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pozor na tuto fintu. Zneužívají produkty Applu, aby se vám vetřeli do domu

2. května 2024  7:02

Zazvoní zvonek a na druhé straně se ozve neznámý člověk. Svým způsobem nic neobvyklého, kdyby však...

Umělá inteligence na nových smartphonech od Huaweie svléká lidi

5. května 2024  7:02

Na poli smartphonů je současným trendem implementace umělé inteligence. Ta nabízí stále širší...

Parádní velký tablet, kterému chybí snaha výrobce. Test Honoru Pad 9

5. května 2024

Čínský Honor se po svém stále ještě relativně nedávném návratu na globální trhy snaží dobýt...

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

Dara Rolins je po další plastice. Kritiku fanoušků nechápe, cítí se svěží

Zpěvačka Dara Rolins (51) se na čas stáhla z veřejného života. V tom období prodělala „estetický zákrok“ a na sociální...

Natáčení Přátel bylo otřesné, vzpomíná herečka Olivia Williamsová

Britská herečka Olivia Williamsová (53) si ve čtvrté sérii sitcomu Přátelé zahrála epizodní roli jedné z družiček na...

Byli vedle ní samí ztroskotanci, vzpomíná Basiková na muže Bartošové

Byly každá z jiného těsta, ale hlavně se pohybovaly na opačných pólech hudebního spektra. Iveta Bartošová byla...

Ukaž kozy, řvali na ni. Potřebovala jsem se obouchat, vzpomíná komička Macháčková

Rozstřel Pravidelně vystupuje v pořadu Comedy Club se svými stand-upy, za knihu Svatební historky aneb jak jsem se nevdala se...

Je to šílený, hodnotily firmy práci řemeslníků, kteří opravili střechu

Po zimě se často ukážou mnohé „vady na kráse“ domu, střechy nevyjímaje. Někdy nezbývá nic jiného než kompletní výměna....