Mobil iDNES.cz

  • Středa 19. prosince 2018 Ester

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

Podvodníci opět útočí na české mobily. Kdo se nachytá, přijde o peníze

Podvodníci opět prozvání česká čísla

Zhruba po půl roce se podvodníci opět soustředí na česká telefonní čísla a snaží se z náhodných obětí dostat peníze....

Je lepší Samsung, nebo Apple? Rozhodněte v anketě Mobil roku

Mobil roku 2018

O nejlepším smartphonu roku 2018 rozhodují čtenáři Mobil.iDNES.cz v 21. ročníku ankety Mobil roku. Vyhrát můžete jeden...

Proč ho kupovat, když má koncern to samé levněji. Test Huawei Nova 3i

Huawei Nova 3i

Čínský Huawei má letos velmi bohatou nabídku modelů ve střední třídě. Alespoň když k tomu připočteme i smartphony...

Honor se chlubí, že má první průstřel displeje. Samsung ho však předběhl

Takto vypadá nový Samsung A8s

Výrobci dodrželi sliby, že ještě do konce roku představí modely s novým typem výřezu displeje. Svůj model už oficiálně...

Xiaomi drtí Apple. V chytrých hodinkách a náramcích je světová jednička

Xiaomi Amazfit Verge

Trh chytrých hodinek a náramků ve třetím čtvrtletí meziročně zaznamenal růst o více než pětinu. V součtu výrobci...

Další z rubriky

Do komunikátoru WhatsApp přichází reklama

WhatsApp brzy umožní posílat libovolné soubory

Facebook se rozhodl nasadit reklamy i do své aplikace WhatsApp.

Už přes ni vyhrožovali smrtí. Přesto je aplikace extrémně populární

Logo aplikace Sarahah

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních...

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

Najdete na iDNES.cz