Klávesové zkratky na tomto webu - základní
Přeskočit hlavičku portálu


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

aktualizováno 
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ší

LG V30
LG začalo určovat trendy. Ukazuje, jak má vypadat moderní smartphone

Z nenápadného výrobce se stal jeden z určujících producentů chytrých telefonů. Chystaná novinka to zanedlouho potvrdí.  celý článek

TP-Link Neffos X1 Max
Vyrábí hlavně routery, teď se vrhli na smartphony. A docela jim to jde

Při pohledu na značku TP-Link si mnoho z nás vzpomene na logo na domácím routeru, ovšem asi málokdo si ji spojí se smartphonem. To se však může brzy změnit,...  celý článek

Podobu iPhonu 8 potvrdil řetězec McDonald’s.
Hamburgerový král prozradil podobu iPhonu 8 s vykrojeným displejem

Představení chystaného výročního iPhonu se blíží. Řada vlastností už byla potvrzena. Nyní přichází další, a to od neočekávaného zdroje. Vzhled telefonu...  celý článek

Alcatel Pop 4 (6)
Smartphonový Obr XXL za rozumné peníze. Test Alcatel Pop 4 (6)

Značka Alcatel dodává na trh celou řadu cenově atraktivních smartphonů, které přitom nesahají ke zbytečným kompromisům. Na první pohled je takovým přístrojem i...  celý článek

Android 8 se bude jmenovat po sušenkách Oreo
Android O se bude jmenovat po slepovaných sušenkách

Už je to (skoro) jasné. Nový Android, zatím známý jako O, se bude jmenovat po slepované sušence Oreo. Alespoň tomu vše nasvědčuje.   celý článek

Další z rubriky

Aplikace Donald Draw: Executive Doodle umožní vytvořit (nejen) vlastní...
Vžijte se do kůže Donalda Trumpa. Vytvořte vlastní exekutivní příkaz

V aplikačních obchodech lze vybírat z nepřeberného množství mobilních aplikací, od užitečných až po zábavné. Do druhé kategorie spadají vesměs i aplikace,...  celý článek

Záchranná služba představila ve středu oficiální mobilní aplikaci, pomůže...
Aplikaci české záchranky používá už 330 tisíc lidí, čekají ji vylepšení

Aplikaci Záchranka, která v naléhavých případech umožňuje přivolat si pomoc přes mobil, čekají v dubnu inovace. Spustí se zdokonalené funkce pro neslyšící a...  celý článek

Find Wifi funkce na Facebooku
Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi síti.  celý článek

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

Všechny akční letáky na jednom místě!

Najdete na iDNES.cz



mobilní verze
© 1999–2017 MAFRA, a. s., a dodavatelé Profimedia, Reuters, ČTK, AP. Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků a fotografií je bez souhlasu MAFRA, a. s., zakázáno. Provozovatelem serveru iDNES.cz je MAFRA, a. s., se sídlem
Karla Engliše 519/11, 150 00 Praha 5, IČ: 45313351, zapsaná v obchodním rejstříku vedeném Městským soudem v Praze, oddíl B, vložka 1328. Vydavatelství MAFRA, a. s., je členem koncernu AGROFERT.