Premium

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

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

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

Spotem s Trojanem na horách operátor popudil Poláky. Nerozuměli nadsázce

21. dubna 2024  8:01

Po dvojici Vojtěch Kotek a Lukáš Pavlásek, k níž později přibyl Jakub Kohák, vsadil T-Mobile ve...

Je to už spíš foťák s mobilem a opravdu se povedl. Test Xiaomi 14 Ultra

21. dubna 2024

Prémiový smartphone Xiaomi 14 Ultra působí mezi současnou nabídkou mobilů jako unikát. Jaký jiný...

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

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Operátoři zahušťují pokrytí Česka signálem 5G. Máte ho doma? Podívejte se

20. dubna 2024

Premium V červenci to budou již čtyři roky, co byla v Česku spuštěna první komerční 5G síť. Zatímco v...

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

Toto mohl být nevídaný smartphone. Myšlenku však nakonec poslali k vodě

25. dubna 2024

S takovým smartphonem bychom už nikdy nemuseli řešit, že se zpomaluje, nemá dostatek paměti či je...

Samsung má povedenou stylovku. Zkusí to s ní na trhu, kde se mu nedaří

24. dubna 2024

Samsung po velmi dlouhé době oprášil modelovou řadu Galaxy C a představil stylový smartphone se...

Toto zařízení mělo nahradit mobily. V recenzích se mu vysmáli

23. dubna 2024

Novinka s názvem Humane AI Pin se zdála být převratným zařízením. V mnoha ohledech měla nahradit...

Možná s nenápadnou výbavou, ale je to poctivě postavená stylovka

22. dubna 2024

Oppo se v kontextu dalších čínských výrobců prezentuje jako prémiová značka. Rozhodně se nesnaží o...

Prodej bytu 3+1, 63 m2, Suchdol nad Lužnicí
Prodej bytu 3+1, 63 m2, Suchdol nad Lužnicí

sídl. 17. listopadu, Suchdol nad Lužnicí, okres Jindřichův Hradec
2 940 000 Kč

Manželé Babišovi se rozcházejí, přejí si zachovat rodinnou harmonii

Podnikatel, předseda ANO a bývalý premiér Andrej Babiš (69) s manželkou Monikou (49) v pátek oznámili, že se...

Bývalý fitness trenér Kavalír zrušil asistovanou sebevraždu, manželka je těhotná

Bývalý fitness trenér Jan Kavalír (33) trpí osmým rokem amyotrofickou laterální sklerózou. 19. dubna tohoto roku měl ve...

Herečka Hunter Schaferová potvrdila románek se španělskou zpěvačkou

Americká herečka Hunter Schaferová potvrdila domněnky mnoha jejích fanoušků. A to sice, že před pěti lety opravdu...

Největší mýty o zubní hygieně, kvůli kterým si můžete zničit chrup

Možná si myslíte, že se v péči o zuby orientujete dost dobře, přesto v této oblasti stále ještě existuje spousta...

Tenistka Markéta Vondroušová se po necelých dvou letech manželství rozvádí

Sedmá hráčka světa a aktuální vítězka nejprestižnějšího turnaje světa Wimbledonu, tenistka Markéta Vondroušová (24), se...