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

Ilustrační snímek
ČTÚ smetl ze stolu žádosti virtuálů. Roaming je pro ně noční můrou

Již v průběhu května obdržel Český telekomunikační úřad od tří virtuálních operátorů žádosti o povolení účtovat příplatek k roamingu. Virtuálové bez vlastní...  celý článek

Během letu si chtěl natočit vedle letící letadlo, telefonu mu ovšem vypadl z...
Samsung mu vypadl z letícího letadla a nerozbil se

Může smartphone přežít pád ze 300 metrů, když i náraz z jen půlmetrové výšky mívá často fatální následky? Někdy zjevně ano. Třeba jeden tři roky starý Samsung...  celý článek

Ilustrační snímek
Úřad chce regulovat mobilní trh. Může to zlevnit volání a rychlá data

Podle Českého telekomunikačního úřadu na trhu nefunguje hospodářská soutěž. Regulaci však bude předcházet veřejná konzultace a následně analýza trhu. Výsledky...  celý článek

Podvodná nabídka ročního pronájmu top smartphonů a další špičkové elektroniky
Lákají na neuvěřitelně levné top smartphony, ale je to podvod

iPhone nejvyšší specifikace za pouhou tisícikorunu či například top model Samsungu jen za něco málo přes 900 korun ročně. Na první pohled je to velmi lákavá...  celý článek

rozbitý telefon
Revoluční patent: mobil si sám opraví prasklý displej

Zní to jako pořádné sci-fi, ale praskliny na displeji možná mobily v budoucnu opraví samy. Poslední patent Motoroly naznačuje, že se na takové technologii už...  celý článek

Další z rubriky

Aplikace Facebook Messenger Lite je dostupná i v Česku
Šetří místo i data. Dietní Messenger od Facebooku je i v Česku

Facebook Messenger je jedním z nejpoužívanějších kecálků, ale ne všechny telefony si s ním poradí. Loni se tak zrodila myšlenka na odlehčenou verzi určenou pro...  celý článek

Mobilní Messenger projde změnou, k nelibosti uživatelů v něm budou cílené...
Bez reklamy ani ránu. Bude už i na Facebook Messengeru v mobilu

Oblíbený mobilní kecálek se brzy promění. Facebook totiž do Messengeru po úspěšném testování implementuje cílené reklamy. Zobrazovat se budou na domovské...  celý článek

Ilustrační snímek
Facebook a Snapchat jsou zabijáci výkonu smartphonů s Androidem

Je jednou z nejčastěji instalovaných mobilních aplikací, současně však i jednou z těch, které nejvýrazněji ovlivňují výkon androidích smartphonů. Na rychlosti...  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.