Premium

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

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

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

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

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

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

Vodafone měl výpadek, někteří zákazníci se nemohli dovolat

25. dubna 2024  10:03,  aktualizováno  10:15

Síť mobilního operátora Vodafone postihl ráno výpadek. Týkal se části zákazníků, kteří se nemohli...

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

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

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

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