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

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

4.20 Použití posuvníku v naší aplikaci

Nyní zcela opustíme historickou techniku stránkování pomocí opakovacích tlačítek a použijeme posuvník ve vstupním i výstupním formuláři. Začneme drobnou změnou souboru prostředků aplikace. Změna se bude týkat vstupního formuláře, ve kterém vynecháme opakovací tlačítka a vedle textu zobrazíme posuvník.

FORM ID FormularVstupni AT (0 0 160 160)
BEGIN
    ...
    FIELD ID PoleTextVstupni AT (5 30 145 88) HASSCROLLBAR ... 
    SCROLLBAR ID PosuvnikTextVstupni AT (RIGHT@159 PREVTOP 7 PREVHEIGHT) ... 
    ...
END

Změní se výška políčka a vedle políčka bude zobrazen posuvník. Všimněte si, že definice posuvníku kopíruje výšku políčka a jeho pravý okraj je zarovnán s pravým okrajem formuláře. Tato definice kopíruje definici políčka a posuvníku, kterou jsme uváděli ve výstupním formuláři. Upravený vstupní formulář bude na displeji vypadat takto:

Z původního zdrojového textu použijeme funkci PosunTextOStranku(). Tuto funkci budeme používat při stránkování pomocí hardwarových kláves.

Pro pohyb pomocí posuvníku budeme potřebovat doplnit ještě jednu funkci. Bude jí funkce PosunTextORozdil(). Nově definovaná funkce bude jako parametr vyžadovat počet řádků, o které budeme text v políčku posouvat. Bude-li počet řádků kladný, posouváme text směrem dolů; pro záporný počet řádků budeme text posouvat nahoru.

void PosunTextORozdil(UInt16 polickoID, Int16 rozdil)
{
    WinDirectionType smer = winDown;
    FieldPtr policko = (FieldPtr)Objekt(polickoID);

    if(rozdil < 0)
    {
        smer = winUp;
        rozdil = -rozdil;
    }

	// Pokud bude možné text posunout, posuneme jej
	
    if(FldScrollable(policko, smer))
    {
        FldScrollField(policko, rozdil, smer);
    }
}

Pro úpravu pozice vozíku posuvníku použijeme funkci UpravPosuvnikDlePolicka(), kterou jsme si uvedli výše. Ve funkci provedeme pouze jednoduchou úpravu tak, aby jako parametry požadovala konstanty pro jednoznačnou identifikaci políčka a posuvníku.

Uvedené tři funkce (PosunTextORozdil(), PosunTextOStranku() a UpravPosuvnikDlePolicka()) použijeme ve funkci formuláře. V následující tabulce uvedeme události, které budeme zpracovávat, a reakce na ně.

Zpráva Chování programu
frmOpenEvent Po nastavení textu políčka upravíme zobrazení posuvníku voláním funkce UpravPosuvnikDlePolicka().
sclRepeatEvent Spočteme z dat předaných ve zprávě počet řádků, o které budeme políčko posouvat, a zavoláme funkci PosunPolickoORozdil().
keyDownEvent Podle stisknuté klávesy zavoláme funkci PosunPolickoOStranku() pro odstránkování políčka. Poté upravíme zobrazení posuvníku funkcí UpravPosuvnikDlePolicka().
fldChangedEvent Upravíme zobrazení posuvníku voláním funkce UpravPosuvnikDlePolicka().

Pokud bychom při definici políčka zapomněli na vlastnost HASSCROLLBAR, nebude posuvník pracovat správně. Zapíšeme-li na konec políčka znak, kterým text políčka posuneme, nebude naší aplikaci zaslána zpráva fldChangedEvent a zobrazení posuvníku nebude upraveno.

V následujícím rámečku si uvedeme příklad funkce vstupního formuláře.

Zdrojový text aplikace si můžete stáhnout zde.


V příštím dílu si povíme o uživatelské nabídce (menu) a připomeneme si její definici v souboru prostředků aplikace.





Nejčtenější

Příchod sítí 5G je plánován na rok 2020
Nástup sítí 5G je zase o něco blíže. První vysílače jsou už postavené

Berlín Příchod sítí 5G je plánován až na rok 2020, ale k důležitým milníkům dochází už teď. Společnost Deutsche Telekom spustila první evropské vysílače umožňující...  celý článek

Nokia 7
Nokia má novou sedmičku. Výbavou zaujme, cenou spíše ne

Další přírůstek do rodiny obnovené značky Nokia nese pořadovou číslovku sedm a vyplňuje prostor mezi střední třídou v podobě Nokie 6 a špičkovou Nokií 8. Její...  celý článek

iPhone 8 Plus
iPhone 8 je tak výkonný, že tomu nevěřil ani tvůrce testu Geekbench

Výkon nového procesoru A11 Bionic od Applu vyrazil dech i tvůrci benchmarku Geekbench. Nedokáže pochopit, že smartphony s Androidem tak zaostávají.   celý článek

Fidget spinner mobil pořídíte za asi 350 korun.
Hit letošního roku už můžete mít i jako mobil. Stojí několik stovek

Hračka původně určená k relaxaci, fidget spinner, je hitem letošního roku. Její slávy využil výrobce z Hongkongu, který do ní vtěsnal celý funkční mobil....  celý článek

iPhone X
iPhonů X bude zoufale málo. Vyprodáno může být za pár minut

Uvedení iPhonu X se blíží, předobjednávky Apple spustí za několik dnů a první kusy zamíří ke koncovým zákazníkům už 3. listopadu. Telefonů však bude ve...  celý článek

Další z rubriky

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

Logo aplikace Sarahah
Už přes ni vyhrožovali smrtí. Přesto je aplikace extrémně populární

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních týdnech těší velké oblibě, zahaluje ji také...  celý článek

Virus pro Android
Na aplikace alternativních taxi útočí virus. Pase po údajích ke kartám

Uživatelé mobilních aplikací alternativních taxi včetně aplikace Uber by měli být obezřetní. Ohrožuje je totiž nový trojský kůň, který od uživatelů láká údaje...  celý článek

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

Všechny akční letáky na jednom místě!

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.