Premium

Získejte všechny články
jen za 89 Kč/měsíc

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

V tomto dílu si povíme, co jsou to výzvy, jak je definujeme a využíváme v našich programech.

5.2. Výzvy

Výzvy (anglicky alerts) bývají zobrazeny ve spodní části displeje. Umožňují informovat uživatele o důležitých krocích programu (třeba vytvoření databáze), varovat jej před nevratnými operacemi (vymazání databáze) nebo nechat jej učinit jednoduchá rozhodnutí. Na displeji může výzva vypadat například takto:

V souboru prostředků aplikace je výzva definována pomocí klíčového slova ALERT. Pro úplný popis definice se podívejte do druhé kapitoly. Zde si uvedeme jen dva příklady definice:

Definice Výzva
ALERT ID VyzvaPokus
INFORMATION
BEGIN
    TITLE "Informace"
    MESSAGE "Zajimavy text."
    BUTTONS "OK" 
END
ALERT ID VyzvaPokus
HELPID TextNapovedy
DEFAULTBUTTON 1
WARNING
BEGIN
    TITLE "Informace"
    MESSAGE "Prvni radek.\n"             "Druhy radek."
    BUTTONS "ANO" "NE" 
END

Můžeme mít čtyři typy výzev. Tyto typy jsou odlišeny ikonou, která je zobrazena vlevo v rámečku. Výzvy mohou být:

  •  Informace - slouží ke zpravení uživatele o akcích naší aplikace, které nemohou poškodit data. Příkladem je informace o autorovi programu nebo o tom, že je databáze prázdná (klíčové slovo je INFORMATION). Tyto výzvy mají většinou jen jedno tlačítko, označené OK.
     
  •  Dotaz - ptá se uživatele na akce, při kterých nemohou být poškozena data. Tento druh výzev většinou mívá více tlačítek, kterými uživatel může vybrat požadovanou akci. Za příklad může sloužit potvrzení při kopírování záznamu z jedné databáze do druhé.
     
  •  Varování - upozorňuje uživatele na to, že se aplikace chystá provést nevratnou operaci, které však uživatel může zabránit. Obvykle bývají vespod dvě tlačítka, označená ANO-NE. U tohoto typu výzev nesmíme nikdy zapomenout uvést správné číslo tlačítka za DEFAULTBUTTON - stisk tohoto tlačítka bude simulován v případě, že uživatel ukončí naši aplikaci v okamžiku zobrazení výzvy.
     
  •  Chyba - informuje uživatele o chybě, která v programu nastala. Většinou se tento druh výzev používá pro závažnější chyby, ke kterým dojde při běhu aplikace.

Funkce pro zobrazení výzvy na displeji je velmi přímočará:

UInt16 FrmAlert(UInt16 cislo)

Zobrazí na displeji výzvu a čeká na stisknutí tlačítka.

Vstupní parametry
  • cislo - jednoznačná identifikace výzvy
Vrácená hodnota
  • pořadové číslo stisknutého tlačítka počítáno zleva

Použití funkce FrmAlert() je jednoduché. Chceme-li zobrazit výzvu na displeji, voláme funkci FrmAlert() s požadovaným číslem výzvy tak, jak byla definována v souboru prostředků aplikace. Funkce vrátí index stisknutého tlačítka - první tlačítko zleva má číslo 0, druhé 1 a třetí 2.

Výzva zůstane na displeji až do okamžiku, kdy uživatel stiskne některé z tlačítek. Ukončíme-li aplikaci v okamžiku, kdy je výzva zobrazena, záleží na nastavení simulovaného stisku tlačítka za příkazem DEFAULTBUTTON. Pokud je simulovaný stisk tlačítka nastaven, program nečeká na akci uživatele a simuluje stisknutí příslušného tlačítka. Prohlédněte si následující definici výzvy v rámečku a zamyslete se nad tím, co je špatně:

ALERT ID VyzvaPokus
DEFAULTBUTTON 0
WARNING
BEGIN
    TITLE "Smazání databáze"
    MESSAGE "Přejete si smazat databázi (není možné vrátit!)"
    BUTTONS "ANO" "NE" 
END

Pokud se tato výzva objeví na displeji a uživatel stiskne tlačítko s obrázkem domečku, které slouží pro opuštění aplikace, stane se velmi nepěkná věc. Operační systém bude simulovat stisk tlačítka za DEFAULTBUTTON, v tomto případě tlačítka číslo O a textem "ANO". Aplikace, ve které se tato výzva vyskytuje, nepozná, že stisk tlačítka byl pouze simulován operačním systémem, a smaže databázi. Potom bude teprve zpracována událost appStopEvent a aplikace se ukončí.

5.3 Výzva s uživatelským textem

Výzvy, které jsme definovali v předchozí části, nemůžeme během běhu naší aplikace měnit. Operační systém PalmOS nám však poskytuje možnost, jak do textu výzvy vkládat jeden až tři řetězce přímo za chodu programu. Stačí kdekoliv v textu výzvy uvést kombinace znaků ^1, ^2 nebo ^3 a pro zobrazení výzvy využít funkci FrmCustomAlert().

UInt16 FrmCustomAlert(UInt16 cislo, const Char *s1, const Char *s2, const Char *s3)

Vstupní parametry
  • cislo - jednoznačná identifikace výzvy
  • s1 - řetězec, kterým bude nahrazena kombinace znaků ^1 v textu výzvy nebo NULL
  • s2 - řetězec, kterým bude nahrazena kombinace znaků ^2 v textu výzvy nebo NULL
  • s3 - řetězec, kterým bude nahrazena kombinace znaků ^3 v textu výzvy nebo NULL
Vrácená hodnota
  • pořadové číslo stisknutého tlačítka počítáno zleva

Funkce FrmCustomAlert() je velmi citlivá na chyby programátora. Pokud uvedeme v textu výzvy kombinaci znaků stříška a číslice 1 až 3, tak musíme uvést příslušný parametr s1s3. Naopak, pokud danou kombinaci znaků neuvedeme, tak musí mít příslušný parametr hodnotu NULL. Pokud uvedeme špatnou kombinaci parametrů a speciálních kombinací v textu výzvy, může dojít k havárii operačního systému PalmOS.

Nahrazení kombinace znaků stříška a písmeno funguje jen v textu výzvy. V současné verzi PalmOS není způsob, jak za běhu programu měnit text, který se zobrazuje v titulku výzvy. Příklad definice výzvy s možností vložit uživatelský text je v následujícím rámečku:

ALERT ID VyzvaPokus
INFORMATION
DEFAULTBUTTON 0
HELPID TextNapovedy
BEGIN
    TITLE "Informace"
    MESSAGE "Toto je text" ^1 (^2)"
    BUTTONS "OK" 
END

V našem programu můžeme volat například funkci FrmCustomAlert(VyzvaPokus, "Pokus", "druhy", NULL) a dostaneme výzvu stejnou jako ta, která je na následujícím obrázku:

Pro svoji jednoduchost jsou výzvy často používány v aplikacích pro operační systém PalmOS. Můžeme jejich prostřednictvím sdělovat uživatelům důležité informace, nebo je nechat rozhodovat o důležitých akcích programu. Nejčastější dvě chyby při jejich použití jsou špatný počet nenulových parametrů u funkce FrmCustomAlert() a neuvedení správné deklarace DEFAULTBUTTON při definici výzvy.


Příště si povíme o různých chybách, které mohou nastat při běhu programu, a o způsobech, jak se s nimi vypořádat.

  • Nejčtenější

Neomezená data dává O2 ještě levněji než dříve. S odměnou jsou za hubičku

15. dubna 2024  7:02

Základní datově neomezený tarif za cenu nižší, než standardně stojí tarif s 12 GB dat? U O2 na...

Doma si natáhnete neviditelné kabely k internetu. Huawei ukázal inovace

17. dubna 2024

Huawei na každoroční roadshow ukázal v Praze své inovace pro letošní rok. Vedle průmyslových...

{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...}

K mobilu teď dostanete televizi zdarma a levnější jsou také iPhony

16. dubna 2024,  aktualizováno  10:12

Výrobci mobilních telefonů se už zase začínají předhánět ve výhodných nabídkách. Přímé slevy jsou...

Apple ukázal, že přejít na iPhone 15 Pro z předchůdce nemá smysl

11. dubna 2024

Apple na svém webu zveřejnil nástroj pro snadné srovnání vybraných modelů iPhonu. Uživatelé...

{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...}

Čínský smartphonový standard dorazil do Česka. Není co vytknout, ani cenu

17. dubna 2024  7:02

Motorola představila hned tři modely z top řady Edge. První se začne prodávat model Edge 50 Pro,...

Ultra smartphone i odlehčená novinka. Motorola zahustila nabídku

18. dubna 2024

Společně s modelem Pro se na český trh chystají ještě další dvě novinky od Motoroly. Jednou je...

Čínský smartphonový standard dorazil do Česka. Není co vytknout, ani cenu

17. dubna 2024  7:02

Motorola představila hned tři modely z top řady Edge. První se začne prodávat model Edge 50 Pro,...

Doma si natáhnete neviditelné kabely k internetu. Huawei ukázal inovace

17. dubna 2024

Huawei na každoroční roadshow ukázal v Praze své inovace pro letošní rok. Vedle průmyslových...

K mobilu teď dostanete televizi zdarma a levnější jsou také iPhony

16. dubna 2024,  aktualizováno  10:12

Výrobci mobilních telefonů se už zase začínají předhánět ve výhodných nabídkách. Přímé slevy jsou...

Akční letáky
Akční letáky

Prohlédněte si akční letáky všech obchodů hezky na jednom místě!

Náhle zemřel zpěvák Maxim Turbulenc Daniel Vali, bylo mu 53 let

Ve věku 53 let zemřel zpěvák skupiny Maxim Turbulenc Daniel Vali. Letos by se svou kapelou oslavil 30 let na scéně....

Vykrojené trikoty budí emoce. Olympijská kolekce Nike je prý sexistická

Velkou kritiku vyvolala kolekce, kterou pro olympijský tým amerických atletek navrhla značka Nike. Pozornost vzbudily...

Rohlík pro dítě, nákup do kočárku. Co v obchodě projde a kdy už hrozí právník?

V obchodech platí pravidla, která občas zákazník nedodržuje. Někdy se navoní parfémem, aniž by použil tester, nebo...

Charlotte spí na Hlaváku mezi feťáky, dluží spoustě lidí, říká matka Štikové

Charlotte Štiková (27) před rokem oznámila, že zhubla šedesát kilo. Na aktuálních fotkách, které sdílela na Instagramu...

Ve StarDance zatančí Vondráčková, Paulová, hvězda Kukaček i mistryně světa

Tuzemská verze celosvětově mimořádně úspěšné soutěže StarDance britské veřejnoprávní televizní společnosti BBC se už na...