Premium

Získejte všechny články mimořádně
jen za 49 Kč/3 měsíce

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

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

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

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

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

Továrny na iPhony zejí prázdnotou, Apple z nich utekl

7. května 2024

Čínské továrny Foxconnu, kde se ještě donedávna vyráběly iPhony, nyní připomínají „města duchů“....

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

Umělá inteligence na nových smartphonech od Huaweie svléká lidi

5. května 2024  7:02

Na poli smartphonů je současným trendem implementace umělé inteligence. Ta nabízí stále širší...

Tento levný tarif T-Mobilu nemá díky ceně na českém trhu konkurenci

8. května 2024

U T-Mobilu jde již o jakousi tradici, že s příchodem nového měsíce obmění svou akviziční nabídku....

Google spouští v Česku svůj obchod. Oficiálně tu začal prodávat Pixely

7. května 2024

S představením nového smartphonu Google Pixel 8a přichází pro české zákazníky ještě mnohem...

Sony nekončí. Nový smartphone však bude podobný všem ostatním

7. května 2024  7:02

Sony přes nízké prodeje se smartphony nekončí a chystá novinku, které bychom se měli dočkat v...

Továrny na iPhony zejí prázdnotou, Apple z nich utekl

7. května 2024

Čínské továrny Foxconnu, kde se ještě donedávna vyráběly iPhony, nyní připomínají „města duchů“....

V 59 letech zemřela herečka Simona Postlerová, ještě v sobotu zkoušela

Zemřela divadelní a filmová herečka Simona Postlerová, bylo jí 59 let. Zprávu o úmrtí potvrdil nadační fond Dvojka...

Dara Rolins je po další plastice. Kritiku fanoušků nechápe, cítí se svěží

Zpěvačka Dara Rolins (51) se na čas stáhla z veřejného života. V tom období prodělala „estetický zákrok“ a na sociální...

Titěrné sukně i míčky na podpatcích. Zendaya vzkřísila trend tenniscore

S nadsázkou bychom mohli říct, že největší tenisovou událostí tohoto roku je premiéra snímku Rivalové. Aspoň co se módy...

Zpěvačka Tereza Kerndlová měla autonehodu. Poslala vzkaz ze záchranky

Tereza Kerndlová (37) a její manžel René Mayer (53) měli v úterý ráno autonehodu. Na mokré vozovce do nich zezadu...

První světová válka zničila část Francie natolik, že tu stále řádí smrt

Řídkým rozvolněným lesem pokrytá pahorkatina u francouzského Soissons, Compiégne, Lens či Cambrai přirozeně svádí k...