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ší

Tomu říkáme omluva. Výrobce dá za zpoždění objednávek druhý mobil zdarma

RED Hydrogen One

Výrobce profesionální fototechniky RED bude mít brzy na trhu i vlastní smartphone. Sliboval jej ve dvou verzích, zatím...

Honor bude mít smartphony se slevou 80 procent. Ale jen v pátek po obědě

Fronta na zlevněné smartphony Xiaomi na Černém Mostě

Honor se rozhodl okopírovat prodejní strategii Xiaomi. A tak s otevřením svého prvního prodejního stánku v obchodním...



Huawei Mate 20 Pro může být nový král smartphonů. Nechybí mu vůbec nic

Huawei Mate20 Pro

Špičkový Huawei Mate 20 Pro se stal jedním z nejvybavenějších smartphonů na trhu. Jak jsme si mohli již krátce...

Na českém trhu se objeví nová značka smartphonů, budou líbivé a levné

Smartphone UMIDIGI Z2

Na český trh zavítá nová značka UMIDIGI, která nabídne hned tři levnější smartphony. Budou mít zajímavou výbavu i...

Nedívejte se na zabavené iPhony, zablokují se, radí odborníci policistům

iPhone XS Max

Podle instrukcí forenzní firmy Elcomsoft pro americkou policii je vhodné, aby se policisté nedívali zpříma na nové...

Další z rubriky

Aplikace ukazovala otravující čísla. Data kradl antivir přímo z mobilů

Škodlivý kód Cooligan napadá zařízení s Androidem 4 a 5

Zajímavý model vymyslelo studio DU. Jedna jejich android aplikace ukazovala, kdo volá, včetně obtěžujících čísel...

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

Google loni zlikvidoval 700 tisíc aplikací

Mobilní aplikace

Z aplikačního obchodu Google Play bylo loni odstraněno 700 tisíc aplikací, většina zmizela prakticky ihned po umístění...

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

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



Najdete na iDNES.cz