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

aktualizováno 
V dnešním díle si povíme o prvním, nejjednodušším způsobu jak rolovat obsahem políčka nahoru a dolů pomocí opakovacích tlačítek.

4.14. Funkce pro jednoduché posouvání políčka

V prvních verzích operačního systému PalmOS se vyskytoval jen jediný způsob posouvání políčka nahoru a dolů. Bylo jím použití opakovacích tlačítek s trojúhelníčky směřujícími nahoru a dolů. Pokud pohyb textu daným směrem nebyl možný, byla tlačítka zobrazena v šedé barvě (vytečkována).

Operační systém počítačů Palm Pilot obsahuje několik funkcí, které tento způsob rolování políčka významně zjednodušují. První si uvedeme funkci FldScrollable(), která ověřuje, zda je možné text v políčku posunout příslušným směrem nahoru nebo dolů.

Boolean FldScrollable(const FieldType* políčko, WinDirectionType směr)

Zjistí, zda je možné textem v políčku posunout příslušným směrem.

Vstupní parametry
  • políčko - ukazatel na datovou strukturu políčka
  • směr - tato konstanta může nabývat hodnoty
    • winUp zajímá-li nás rolování textu v políčku směrem nahoru
    • winDown pro posuv textu směrem dolů
Vrácená hodnota
  • true - políčko je možné daným směrem posunout
  • false - políčko není možné posunout

Pokud jsme voláním funkce FldScrollable() ověřili, že je text v políčku možné posunout nahoru nebo dolů, můžeme zavolat funkci FldScrollField(), která text v políčku posune. Funkce FldScrollField() posune text v políčku a obnoví obsah displeje. Pokud políčko není možno zadaným směrem posunout, funkce skončí, aniž by cokoliv udělala.

void FldScrollField(FieldType* políčko, UInt16 početŘádků, WinDirectionType směr)

Posune text v políčku nahoru nebo dolů.

Vstupní parametry
  • políčko - ukazatel na datovou strukturu políčka
  • početŘádků - o kolik řádků se má text v políčku posunout
  • směr - tato konstanta může nabývat hodnoty
    • winUp posuv směrem nahoru
    • winDown pro posuv textu směrem dolů

Jak ale zjistíme, o kolik řádků je potřeba text v políčku posunout při stisknutí tlačítka pro pohyb nahoru nebo dolů? Můžeme si například pamatovat výšku políčka v řádcích tak, jak jsme jej definovali v souboru prostředků aplikace. Jednodušší a elegantnější metoda je použít funkci FldGetVisibleLines(). Tato funkce vrátí výšku políčka v řádcích.

Poté můžeme políčko posunout o celou výšku stránky (o počet řádků políčka). Jinou možností je posunout políčko o výšku stránky zmenšenou o jedničku nebo o polovinu výšky stránky. Oba dva přístupy mají výhodu v tom, že uživatel vidí návaznost mezi stránkami; nevýhodou je pomalejší pohyb po stránkách.

UInt16 FldGetVisibleLines(const FieldType* políčko)

Vrátí počet zobrazených řádků políčka.

Vstupní parametry
  • políčko - ukazatel na datovou strukturu políčka
Vrácená hodnota
  • počet řádků, které políčko zabírá na displeji

Popsané tři funkce slouží k zajištění pohybu textu v políčku nahoru a dolů. Poslední funkce, kterou popíšeme, nám zajistí úpravu zobrazení tlačítek pro posuv nahoru a dolů. Pokud není posuv daným směrem možný, mělo by tlačítko být zobrazené jako šedé (vytečkované).

void FrmUpdateScrollers(FormType *formulář, 
		  UInt16 indexNahoru, UInt16 indexDolů, 
		  Boolean mohuNahoru, Boolean mohuDolů)

Upraví zobrazení opakovacích tlačítek podle možnosti posuvu textu v políčku.

Vstupní parametry
  • formulář - ukazatel na data formuláře
  • indexNahoru - pořadové číslo opakovacího tlačítka pro posuv nahoru
  • indexDolů - pořadové číslo opakovacího tlačítka pro posuv dolů
  • mohuNahoru - tento parametr má hodnotu true, je-li možné text v políčku posunout směrem nahoru
  • mohuDolů - tento parametr má hodnotu true, je-li možné text v políčku posunout směrem dolů

Funkce FrmUpdateScrollers() vyžaduje jako parametry pořadové číslo prvku ve formuláři, které vrací funkce FrmGetObjectIndex(). Funkci FrmUpdateScrollers() voláme obvykle následujícím způsobem:

FormPtr formular = FrmGetActiveForm();

FieldPtr policko = FrmGetObjectPtr(formular, 
    FrmGetObjectIndex(formular, VstupniPolicko));

FrmUpdateScrollers(formular, 
    FrmGetObjectIndex(formular, TlacitkoNahoru),
    FrmGetObjectIndex(formular, TlacitkoDolu),
    FldScrollable(policko, winUp),
    FldScrollable(policko, winDown));

Funkci FrmUpdateScrollers() musíme volat vždy, změní-li se počet řádků v políčku (událost fldChangedEvent), nastavíme-li nový text do políčka nebo po stisknutí tlačítka pro stránkování nahoru a dolů.


K rolování textem políčka používáme nejen opakovací tlačítka, ale i hardwarová tlačítka. V příštím díle si povíme o události vstupu znaku a stisknutí tlačítka.

 

Nejčtenější

Lokální předpověď počasí se razantně zpřesní, možná pomáhá i váš telefon

GRAF

Nejpřesnější lokální předpovědi počasí dnes nabízejí aplikace v našich telefonech - i proto, že s nimi samy pomáhají....

Nejkratší dobu prodávaný přelomový iPhone se vrací do nabídky

iPhone X

Svého času rekordně drahý smartphone zmizel z prodeje pouhý rok od uvedení. Řeč je o iPhonu X, který se z nabídky Applu...

Mezi Androidy není větší legenda. Kultovní řada smartphonů slaví

Osm generací smartphonů Samsung modelové řady Galaxy S

Vyjma Applu vyrábí smartphony s Androidem všechny ostatní firmy. Někteří dlouho, jiní krátce. Ale jen jedna značka má...

KOMENTÁŘ: Ministryně neví, o čem mluví. Za drahá data zákazníci nemohou

Ilustrační snímek

Drahá data a celkově ceny mobilních služeb jsou nekonečným příběhem českého mobilního trhu. A ačkoli si zlevnění dali...

PŘEHLEDNĚ: Jak aktivovat Apple Pay a jak jsou platby zabezpečené

Apple Pay

Aktivace Apple Pay je v podstatě jednoduchá. Potřebujete platební kartu vydanou bankou, která Apple Pay podporuje,...

Další z rubriky

WhatsApp omezuje počet adresátů, bojuje tak proti falešným zprávám

WhatsApp je nejpopulárnější aplikací pro zasílání textových zpráv.

Nová akce komunikační sítě WhatsApp má za cíl zpomalit šíření falešných zpráv. Aplikace nově omezuje počet příjemců...

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

K používání aplikace WhatsApp vám nově musí být minimálně 16 let

Whatsapp bude umět zpětně vymazat odeslané zprávy

Chatovací služba WhatsApp mění podmínky používání v Evropské unii. Nově začíná platit, že pro používání služby vám musí...

Najdete na iDNES.cz