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

aktualizováno 
Dnes si znovu připomeneme základní kostru programu a zkusíme si program spustit v emulátoru. Pak začneme s popisem zacházení s políčky textu.

4.3. Základ programu

Připravili jsme si soubor prostředků aplikace sifruj.rcp a hlavičkový soubor s čísly prostředků sifruj.h. Nyní vytvoříme základ programu, který se od programu v minulé kapitole bude lišit jen v použití dvou formulářů. V následujících několika odstavcích shrnu to, co už umíte udělat sami.

Vstupní bod programu - funkce PilotMain() -  zůstává stejná, podobně jako pomocné funkce ZacatekAplikace() a KonecAplikace(). Ve funkci ZacatekAplikace() nesmíme zapomenout přejít do prvního formuláře, který si přejeme zobrazit na displeji. Půjde o formulář FormularVstupni pro vstup hesla a textu.

Dále si definujeme dvě funkce formuláře - jednu pro formulář vstupní a jednu pro formulář zobrazující výsledný text. Vhodně je pojmenujeme a v každé z nich zpracujeme událost frmOpenEvent tak, že vykreslíme formulář na displeji.

V každé funkci formuláře zpracujeme zprávu ctlSelectEvent, která je zasílána naší aplikaci jako odpověď na stisk tlačítka. Stiskne-li uživatel příslušné tlačítko ve formuláři (nespleťte si, které tlačítko máte ve kterém formuláři), bude volat funkci FrmGotoForm(), kterou přejde do druhého formuláře. Příklad funkce výstupního formuláře je v rámečku:

static Boolean UdalostVystupnihoFormulare(EventPtr udalost)
{
    Boolean zpracovano = false;

    switch(udalost->eType)
    {
        case frmOpenEvent:
            FrmDrawForm(FrmGetActiveForm());
            zpracovano = true;
            break;

        case ctlSelectEvent:

                // Osetrime tlacitko (Sifruj) pro prechod zpet do druheho
                // formulare

            switch(udalost->data.ctlSelect.controlID)
            {
                case TlacitkoZpet:
                    FrmGotoForm(FormularVstupni);
                    zpracovano = true;
                    break;

                default:
                    break;
            }
            break;

        default:
            break;
    }

    return zpracovano;
}

Funkci ZpracovaniUdalosti() můžeme zkopírovat z programu v předchozí kapitole. Do funkce UdalostZpracovanaAplikaci() musíme však doplnit do příkazu case větve pro oba formuláře:

static Boolean UdalostZpracovanaAplikaci(EventPtr udalost)
{
    Boolean zpracovano = false;
    UInt16 cisloFormulare;
    FormPtr formular;

    if(udalost->eType == frmLoadEvent)
    {
        cisloFormulare = udalost->data.frmLoad.formID;
        formular = FrmInitForm(cisloFormulare);
        FrmSetActiveForm(formular);

        switch(cisloFormulare)
        {
            case FormularVstupni:
                FrmSetEventHandler(formular, UdalostVstupnihoFormulare);
                zpracovano = true;
                break;

            case FormularVystupni:
                FrmSetEventHandler(formular, UdalostVystupnihoFormulare);
                zpracovano = true;
                break;

            default:
                break;
        }
    }

    return zpracovano;
}

Tím máme zdrojový text programu kompletní a můžeme jej přeložit. Chybí jen maličkost: soubor Makefile. Jistě však přijdete na to, že je velmi jednoduchý a jeho napsání nezabere mnoho práce. Kompletní zdrojový text programu můžete stáhnout, prohlédnout a vyzkoušet zde.

4.4. Políčka

V příkladu jsme si mohli prohlédnout a vyzkoušet, jak fungují políčka pro vstup textu, která jsme umístili do formuláře, ale která ještě neumíme používat. Text je však už nyní možné zapisovat, označovat tažením perem a podobně.

Pro políčka v našem příkladu jsme použili vlastnost UNDERLINED, která určuje, že políčka pro vstup textu budou podtržená tečkovanou čarou. Tato políčka jsou na displeji zřetelně ohraničená a hodí se pro vstup textu. Pokud tuto vlastnost nepoužijeme, bude text zobrazen bez podtržení a uživatel bude mít potíže políčka na displeji nalézt.

Délka textu v políčku není omezena rozměry políčka na displeji; budeme-li zapisovat dlouhý text, bude se v jednořádkovém políčku posouvat. U víceřádkových políček se bude text správně lámat při pravém okraji. Bude-li text ve víceřádkovém políčku příliš dlouhý, bude políčko po řádcích rolovat nahoru a dolů. To vše řeší operační systém PalmOS zcela automaticky.

Ukazatel na data políčka

Data políčka jsou po inicializaci formuláře uložena ve struktuře FieldType. Ukazatel na tuto strukturu je datový typ FieldPtr. Funkce, které pracují s políčky, vyžadují jako parametr právě ukazatel na datovou strukturu políčka, tedy FieldPtr.

V minulé kapitole jsme si ukázali funkci FrmGetObjectPtr(), která vrátí ukazatel na data prvku formuláře. Tuto funkci můžeme použít i pro získání ukazatele na data políčka v závislosti na čísle prostředku. K tomu použijeme obalující funkci Objekt(), kterou jsme definovali v předchozí kapitole. Hodnotu, kterou funkce vrací, musíme jen přetypovat na typ FieldPtr.

MemPtr Objekt(UInt16 prvek)
{
    FormPtr formular = FrmGetActiveForm();
    return FrmGetObjectPtr(formular, FrmGetObjectIndex(formular, prvek));
}

FieldPtr policko = (FieldPtr)Objekt(PolickoVstup);

V příštím dílu si krátce povíme o zprávách, které jsou generovány při práci s políčky, a začneme mluvit o funkcích, které s políčky manipulují.




Nejčtenější

Nový „levný“ iPhone má být hit. Prodat se ho má 100 milionů

Trojice iPhonů pro rok 2018

Apple chystá na letošní rok tři nové iPhony. Jedním z nich má být levnější model, který nebude mít OLED displej. A...

Nepoužívejte smartphony Huawei a ZTE, varují Američany FBI, CIA i NSA

Huawei Mate 10 Pro bude v USA k dostání u BestBuy

Huawei chtěl letos vzít útokem Spojené státy, a to s pomocí tamních klíčových operátorů. Z možné dohody však nakonec...



Teď přijde řada na naše peníze. V Číně totiž končí zlaté časy

Xiaomi Mi 6

Čínský trh s chytrými telefony je největší na světě, ale loni se podle všeho dostal do potíží. Po letech růstu přišel...

Lidé si stěžovali na špatný signál. Rušil ho těžař bitcoinů

(Ilustrační snímek)

Newyorští zákazníci amerického operátora T-Mobile si stěžovali na znatelný šum během telefonních hovorů. Ukázalo se, že...

Vše, co od smartphonu očekáváte, jen za 6 000. Test Honor 9 Lite

Honor 9 Lite

Honor 9 Lite je žhavou novinkou na českém trhu a také je potenciálním prodejním hitem. Smartphone s moderními funkcemi...

Další z rubriky

Záchranku volejte přes aplikaci. Pomoc je rychlejší než při volání na 155

Simulovaná dopravní nehoda jako praktická ukázka fungování mobilní aplikace...

„Záchranná služba, tísňová linka, dobrý den,“ ohlašuje se operátorka volajícímu, který se stal svědkem dopravní nehody....

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

Logo aplikace Sarahah

Vysoký nárůst popularity zaznamenala aplikace Sarahah, určená k posílání anonymních zpráv. Ačkoliv se v posledních...

Ušetříte za mobilní data. Facebook vám ukáže bezplatnou wi-fi

Find Wifi funkce na Facebooku

V aplikaci sociální sítě Facebook se objevila nová užitečná funkce - dovede vás nasměrovat k nejbližší veřejné wi-fi...

Domácí chipsy pro děti
Domácí chipsy pro děti

Upečte si domácí chipsy, ale pozor, jsou velice návykové.



Najdete na iDNES.cz