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 (49)

aktualizováno 
Dnes přikročíme k popisu posouvání textu v políčku pomocí posuvníku.

4.17. Posuvník

Druhý, a mnohem elegantnější způsob posouvání textu v políčku je spojen s použitím posuvníku. Posuvník se objevuje až ve verzi PalmOS 2.0. Bývá obvykle umístěn podél pravé strany políčka a většinou je i stejně vysoký jako políčko, ke kterému patří. Šířka posuvníku musí být 7 obrazových bodů.

V souboru prostředků aplikace definujeme posuvník pomocí klíčového slova SCROLLBAR. Při umisťování posuvníku do formuláře můžeme výhodně použít konstanty PREVRIGHT, PREVTOP a PREVHEIGHT. S jejich pomocí můžeme umístit posuvník vedle příslušného políčka.

FORM ID FormularVystupni AT (0 0 160 160)
BEGIN
...
    FIELD ID ... AT (5 18 145 121) HASSCROLLBAR ...
    SCROLLBAR ID ... AT (PREVRIGHT PREVTOP 7 PREVHEIGHT) VALUE 10 MIN 0 MAX 100 PAGESIZE 10
...
END

Jako šířku posuvníku můžeme zadat hodnotu AUTO, která by měla znamenat, že posuvník bude široký 7 bodů. Drobná chyba v překladači souboru prostředků aplikace pilrc však způsobuje, že zadáme-li jako šířku posuvníku hodnotu AUTO, tak program pilrc vypíše varování o špatné šířce posuvníku. Proto bychom měli zadávat šířku posuvníku vždy číslem.

Počátečním nastavením vlastností MIN, MAX, VALUE a PAGESIZE se nemusíme příliš zabývat. Tyto vlastnosti slouží pouze k prvnímu zobrazení posuvníku na dipleji a budeme je v naší aplikaci programově měnit.

Políčka, která si přejeme posouvat pomocí posuvníku, bychom měli důsledně definovat s atributem HASSCROLLBAR. Tento atribut říká operačnímu systému, aby zaslal naší aplikaci zprávu fldChangedEvent, kdykoliv dojde ke změně celkové výšky nebo pozice textu v políčku. Naše aplikace pak má možnost při zpracování zprávy fldChangedEvent aktualizovat zobrazení posuvníku na displeji.

Na rozdíl od posouvání textu po stránkách pomocí opakovacích tlačítek nám použití posuvníku nabízí mnoho výhod. Text můžeme posouvat více způsoby. Dotekem pera na šipce nahoru nebo dolů můžeme posunout text o řádek nahoru nebo dolů. Dotekem pera na šedě vybarvenou plochu posuvníku posuneme text o stránku. Konečně tažením vozíku můžeme posouvat text plynule.

Při pohledu na posuvník také uživatel okamžitě vidí, jaká relativní část textu je zobrazená na displeji.

Události posunutí posuvníku

Když se uživatel dotkne perem displeje kdekoliv na posuvníku, operační systém uloží do fronty zpráv zprávu sclEnterEvent. Tuto zprávu většinou naše aplikace nepotřebuje zpracovávat.

Dokud uživatel posuvníkem pohybuje, tak operační systém zasílá naší aplikaci v pravidelných intervalech zprávu sclRepeatEvent. V datové struktuře, která popisuje událost, je uložena jednoznačná identifikace posuvníku. Dále je v ní uložena i pozice vozíku na začátku pohybu a na konci pohybu v tomto kroku.

Z rozdílu těchto dvou hodnot můžeme spočíst počet řádků, o které políčko musíme v tomto kroku posunout, abychom udrželi krok s posuvníkem. Směr posunutí, který předáváme jako druhý parametr funkci FldScrollField(), zjistíme snadno ze znaménka rozdílu. Dokud uživatel pohybuje posuvníkem - ať už tažením vozíku nebo šipkami - je zpráva sclRepeatEvent zasílána opakovaně.

sclRepeatEvent
EventType* event;
UInt16 event->data.sclRepeat.scrollBarID
Jednoznačná identifikace posuvníku, kterým uživatel pohybuje
Int16 event->data.sclRepeat.value
Pozice posuvníku na počátku pohybu
Int16 event->data.sclRepeat.newValue
Pozice posuvníku na konci pohybu

Na konci pohybu, tedy když uživatel zvedne pero z displeje, zašle operační systém PalmOS naší aplikaci zprávu sclExitEvent. Tato zpráva obsahuje informaci o pozici vozíku na začátku pohybu posuvníku (v okamžiku zaslání zprávy sclEnterEvent) a při skončení pohybu (při zvednutí pera z displeje).

sclExitEvent
EventType* event;
UInt16 event->data.sclExit.scrollBarID
Jednoznačná identifikace posuvníku, kterým uživatel pohybuje
Int16 event->data.sclExit.value
Pozice posuvníku na počátku pohybu
Int16 event->data.sclExit.newValue
Pozice posuvníku na konci pohybu

Hodnoty pozice vozíku na počátku a konci pohybu u zprávy sclExitEvent se týkají celého posunu vozíku od začátku pohybu až do konce. Oproti tomu hodnoty zasílané každou zprávou sclRepeatEvent se týkají jen jedné části pohybu posuvníku. V naší aplikaci můžeme zpracovávat buď jednu, nebo druhou zprávu - hodnoty, které vrací, nemůžeme míchat.


Příště si po krátkém úvodu povíme o funkcích, jejichž prostřednictvím manipulujeme s posuvníkem.

Autor:




Nejčtenější

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

Huawei P10 Plus patří mezi nejlépe se prodávající modely značky
Huawei si jde za svým cílem. Apple by mohl sesadit už v tomto čtvrtletí

Společnost Huawei chce být v roce 2021 největším prodejcem smartphonů. Před sebou má dvě překážky - Apple a Samsung. V uplynulém čtvrtletí se však čínský...  celý článek

Nubia Z11 miniS
Nubia zlevnila i o více než tisíc korun. A rovnou všechny modely

Nubia zlevnila prakticky celý svůj sortiment na českém trhu. Hned několik modelů se tak dočkalo cenovky nižší i o více než tisíc korun.  celý článek

Soyes 6S
Nejmenší „iPhony“ na světě můžete mít za 1 300 korun

Kopie iPhonů nejsou žádnou novinkou, v čínských e-shopech jich najdeme desítky více či méně povedených. Mezi ty minimálně zajímavé patří mini smartphony Soyes....  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

Další z rubriky

Find Wifi funkce na Facebooku
Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi síti.  celý článek

Záchranná služba představila ve středu oficiální mobilní aplikaci, pomůže...
Aplikaci české záchranky používá už 330 tisíc lidí, čekají ji vylepšení

Aplikaci Záchranka, která v naléhavých případech umožňuje přivolat si pomoc přes mobil, čekají v dubnu inovace. Spustí se zdokonalené funkce pro neslyšící a...  celý článek

Ilustrační snímek
Nikam nevolali, přesto mají platit tisíce. Oškubala je „astro aplikace“

Tváří se jako rozšíření oblíbené mobilní hry, ve skutečnosti však ukrývá škodlivý kód. Ten bez vědomí uživatele uskutečňuje hovory na audiotexové linky, které...  celý článek

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.