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

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

Xiaomi už se nebude držet zpátky. Pro řadu T chystá další prémiové funkce

26. dubna 2024

Smartphony řady T od Xiaomi mají vždy parádní výbavu, ale zároveň i pár kompromisů, aby trochu...

Váš iPhone může být hacknut, varuje Apple uživatele v desítkách zemích

27. dubna 2024

Jednotlivci z řad uživatelů iPhonů z více než devadesáti zemí světa obdrželi ve středu 10. dubna od...

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

Dětem neprodáváme. Britské děti si dost možná už smartphone nekoupí

27. dubna 2024

Premium Britští ministři zvažují přijetí zákona, který by omezoval prodej smartphonů. Jsou totiž...

Honor našel skulinu v testech. Tváří se jako nejlepší ve výdrži baterie

30. dubna 2024  7:02

Výrobci mobilních telefonů se snaží uživatele zaujmout všemi možnými způsoby. Těmi jsou samozřejmě...

Do Evropy zamíří další skládačka. Na konkurenci zaútočí hlavně cenou

30. dubna 2024

Evropský trh se skládacími smartphony se zase o něco málo zahustí. Zamíří na něj totiž novinka...

Další chytrý prsten na obzoru. Má být levný a ještě vám posvítí na cestu

29. dubna 2024

Společnost Black Shark představila pro domácí, čínský trh vlastní chytrý prsten. Model Black Shark...

Do konce měsíce výhodná střední třída. Test smartphonu Vivo V40 SE

28. dubna 2024

Vivo uvedlo do střední třídy smartphonů zajímavý stylový model V40 SE. Ten je důkazem toho, jak...

Byt 2+1 50m2
Byt 2+1 50m2

S. K. Neumanna, Stochov, okres Kladno
14 000 Kč/měsíc

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

Horňáci versus dolňáci. Víme, čemu muži dávají přednost, a je to překvapení

Ženské tělo je pro muže celkově velmi atraktivní a nabízí jejich očím mnoho zajímavých partií. Největší pozornosti se...

Hello Kitty slaví padesátiny. Celý svět si myslí, že je to kočička, jenže není

Kulatý obličej se dvěma trojúhelníkovýma ušima, drobný čumáček, vousky a červená mašle na uchu. Taková je Hello Kitty,...

KOMENTÁŘ: Z Davida Černého se stal parazit. O umění už dávno nejde

Premium Když se David Černý v televizi pohádal s kurátorkou Marií Foltýnovou, spory o jeho plastiku na obchodním domě Máj...

Muž má recept na dlouhověkost, v jednašedesáti je ve skvělé formě

Dave Pascoe chce dokázat světu, že i v důchodu můžete vypadat jako za mlada a také se tak cítit. Stačí dodržovat pár...