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

V této kapitole si povíme o funkcích pro ovládání posuvníku a uvedeme si část zdrojového textu, který předává data mezi políčkem a posuvníkem.

Funkce posuvníku

Operační systém PalmOS nám poskytuje několik funkcí, jejichž prostřednictvím můžeme manipulovat s posuvníky. Základní funkcí pro ovládání posuvníku je funkce SclSetScrollBar(). Touto funkcí nastavíme pozici a délku vozíku posuvníku.

void SclSetScrollBar(ScrollBarPtr posuvník, Int16 hodnota, 
                   Int16 minimum, Int16 maximum, Int16 délkaStránky)

Nastaví pozici a délku vozíku posuvníku.
Od verze PalmOS 2.0

Vstupní parametry
  • posuvník - ukazatel na datovou strukturu, ve které jsou uložena data posuvníku
  • hodnota - pozice vozíku posuvníku
  • minimum - tato pozice vozíku posuvníku odpovídá jeho umístění až nahoře
  • maximum - tato pozice vozíku posuvníku bude odpovídat jeho umístění dole
  • délkaStránky - výška vozíku posuvníku

Funkci SclSetScrollBar() voláme, když je zapotřebí změnit zobrazení posuvníku. Jedná se o následující tři případy, při kterých je změna zobrazení vozíku zapotřebí:

  1. Operační systém zašle naší aplikaci zprávu fldChangedEvent jako upozornění na změnu výšky textu v políčku.
  2. Odstránkujeme pomocí kláves pro pohyb o stránku nahoru a dolů nebo jiným způsobem.
  3. Nastavíme nový text v políčku funkcemi FldSetText() nebo například FldSetTextHandle().

Pozice vozíku, která je předávána v parametru hodnota, označuje pozici horního okraje vozíku posuvníku. Parametr maximum, který funkci SclSetScrollBar() v takovém případě předáváme, musíme proto vypočítat podle následující rovnice:

celková výška textu - velikost stránky + přesah

Například je-li k zobrazení textu potřeba 100 řádků (to můžeme zjistit například voláním funkce FldGetScrollValues()) a je-li políčko vysoké 10 řádků (výška vozíku posuvníku odpovídá 10 řádkům), tak hodnota parametru maximum bude 90. Pokud si přejeme, aby se jednotlivé stránky překrývaly, zvětšíme parametr maximum o počet řádků, o které se mají stránky překrývat.

void SclGetScrollBar(ScrollBarPtr posuvník, Int16 *hodnota, 
               Int16 *minimum, Int16 *maximum, Int16 *výškaStránky)

Zjistí pozici a výšku vozíku posuvníku.
Od verze PalmOS 2.0

Vstupní parametry
  • posuvník - ukazatel na datovou strukturu, ve které jsou uložena data posuvníku
Výstupní parametry
  • hodnota - ukazatel na proměnnou, do které bude uložena pozice vozíku posuvníku
  • minimum - ukazatel na proměnnou, do které bude uložena pozice vozíku posuvníku odpovídající jeho umístění nahoře
  • maximum - ukazatel na proměnnou, do které bude uložena pozice vozíku posuvníku odpovídající jeho umístění dole
  • délkaStránky - ukazatel na proměnnou, do které bude uložena výška vozíku posuvníku

Provádíme-li komplikovanější nastavení posuvníku, můžeme před nastavením nových hodnot posuvníku volat funkci SclGetScrollBar(). Funkce SclGetScrollBar() uloží parametry posuvníku do proměnných, jejichž adresy jí předáme. Po změnách hodnot parametrů posuvníku je můžeme funkcí SclSetScrollBar() zpět využít ke změně zobrazení posuvníku na displeji.

4.19. Nastavení hodnot posuvníku podle políčka

Můžeme napsat obalující funkci pro jednoduchou rovnici pro výpočet parametrů posuvníku, kterou jsme si uvedli. Tato obalující funkce zjistí z políčka funkcí FldGetScrollValues() aktuální hodnoty výšky textu a výšky políčka. Tyto hodnoty pak přepočítá na parametry, které předá funkci SclSetScrollBar().

void UpravPosuvnikDlePolicka(ScrollBarPtr posuvník, FieldPtr políčko)
{
    UInt16 poziceVozíku, výškaTextu, výškaPolíčka;
    Int16 maximum;
	
    FldGetScrollValues(políčko, &poziceVozíku, &výškaTextu, &výškaPolíčka);

    if(výškaTextu > výškaPolíčka)
    {
       maximum = výškaTextu - výškaPolíčka;
    }
    else if(poziceVozíku)
    {
       maximum = poziceVozíku;
    }
    else
    {
       maximum = 0;
    }
	
    SclSetScrollBar(posuvník, poziceVozíku, 0, maximum, výškaPolíčka - 1);
}

Obalující funkci UpravPosuvnikDlePolicka() můžeme upravit i tak, aby vyžadovala jako parametry jednoznačný identifikátor prvku políčka a posuvníku. Prostřednictvím obalující funkce Objekt(), kterou jsme si popsali již dříve, převedeme jednoznačné identifikátory políčka a posuvníku na ukazatele na jejich datové struktury.


V příštím dílu si doplníme náš šifrovací program o obsluhu posuvníku, který je ve formuláři pro zobrazení výsledků.

  • Nejčtenější

V květnu se zřejmě vrátí ikonická Nokia 3210, kdysi to byl přelomový model

24. března 2024  8:01

Současný vlastník značky Nokia na poli mobilních telefonů, firma HMD (Human Mobile Devices –...

Banka spustila mobilní datové balíčky. Funguje to i zákazníkům z Česka

26. března 2024  12:06

Virtuální banka Revolut spouští virtuálního celosvětového operátora. Zákazníci si mohou kupovat...

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

Trvalo to. Nový nejlepší fotomobil světa konečně koupíte i v Česku

26. března 2024  7:02

Konečně nastává situace, že nejlepší fotomobil v žebříčku DxO Mark je dostupný i na našem trhu....

Smartphonům od Googlu raketově rostou prodeje tam, kde kraluje Apple

27. března 2024  7:02

Prodeje smartphonů Pixel od Googlu se mohou pochlubit neskutečným nárůstem prodejů. Tedy prozatím...

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

Pochlubili se, že se pochlubí. Značky ze sebe dělají slibotechny

25. března 2024  7:02

Jedním z trochu nečekaných trendů veletrhu MWC v Barceloně se stala oznámení o tom, že firmy nějaké...

Nová cenově dostupná stylovka vás může dostat na fotbalové Euro

29. března 2024

Vivo má nový smartphone střední třídy, který má velké ambice. Za rozumnou cenu nabídne nejen dobrou...

Toho telefonu je pouze pro Čínu škoda. Udělal by parádu i u nás

28. března 2024  12:06

Xiaomi má nový trhák. Model Civi 4 Pro trhá předprodejní rekordy, ale jen na domácím čínském trhu....

U foťáků se blýská na lepší časy, naznačuje výsledek testu nového xiaomi

28. března 2024  7:02

Čínská značka Xiaomi trochu na poli fotomobilů v uplynulých letech tápala. Ukazuje to mimo jiné...

Kartónek Steva Jobse se vydražil za neuvěřitelnou sumu

28. března 2024

Vizitku slavného ředitele společnosti Apple si někdo pořídil za pořádný balík peněz. Přidanou...

Akční letáky
Akční letáky

Prohlédněte si akční letáky všech obchodů hezky na jednom místě!

Smoljak nechtěl Sobotu v Jáchymovi. Zničil jsi nám film, řekl mu

Příběh naivního vesnického mladíka Františka, který získá v Praze díky kondiciogramu nejen pracovní místo, ale i...

Rejžo, jdu do naha! Balzerová vzpomínala na nahou scénu v Zlatých úhořích

Eliška Balzerová (74) v 7 pádech Honzy Dědka přiznala, že dodnes neví, ve který den se narodila. Kromě toho, že...

Pliveme vám do piva. Centrum Málagy zaplavily nenávistné vzkazy turistům

Mezi turisticky oblíbené destinace se dlouhá léta řadí i španělská Málaga. Přístavní město na jihu země láká na...

Velikonoce 2024: Na Velký pátek bude otevřeno, v pondělí obchody zavřou

Otevírací doba v obchodech se řídí zákonem, který nařizuje, že obchody s plochou nad 200 čtverečních metrů musí mít...

Kam pro filmy bez Ulož.to? Přinášíme další várku streamovacích služeb do TV

S vhodnou aplikací na vás mohou v televizoru na stisk tlačítka čekat tisíce filmů, seriálů nebo divadelních...