Premium

Získejte všechny články mimořádně
jen za 49 Kč/3 měsíce

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

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

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

O2 mění identitu. Vrací se 26 let starý legendární slogan předchůdce

30. dubna 2024  14:13

Operátor O2 se bude prezentovat trochu jinak než doteď. Změna je to spíš evoluční, ale rozdílů si...

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

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

Pozor na tuto fintu. Zneužívají produkty Applu, aby se vám vetřeli do domu

2. května 2024  7:02

Zazvoní zvonek a na druhé straně se ozve neznámý člověk. Svým způsobem nic neobvyklého, kdyby však...

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

Huawei šokuje novým supersmartphonem s vysouvacím fotoaparátem

1. května 2024  7:02

Huawei představil novou řadu Pura, která nahrazuje dřívější řadu P. Mezi novinkami z nové řady je i...

Parádní velký tablet, kterému chybí snaha výrobce. Test Honoru Pad 9

5. května 2024

Čínský Honor se po svém stále ještě relativně nedávném návratu na globální trhy snaží dobýt...

Ukradené auto s AirTagem si našel, ale od policie dostal vynadáno

4. května 2024  7:02

Vyjít ráno před dům a nenajít tam svůj vůz je noční můrou každého majitele. Do takové...

Nový vědecký objev zdvojnásobí životnost baterií. Klíč je v nabíjení

4. května 2024

Premium Nový způsob nabíjení lithium-iontových baterií může podle studie německých vědců zdvojnásobit...

Soutěž o nejlepší fotku se sportovní tematikou má vítěze

3. května 2024

Soutěž o nejlepší fotku se sportovní tematikou je u konce a my vám s radostí představujeme trojici...

Dara Rolins je po další plastice. Kritiku fanoušků nechápe, cítí se svěží

Zpěvačka Dara Rolins (51) se na čas stáhla z veřejného života. V tom období prodělala „estetický zákrok“ a na sociální...

Natáčení Přátel bylo otřesné, vzpomíná herečka Olivia Williamsová

Britská herečka Olivia Williamsová (53) si ve čtvrté sérii sitcomu Přátelé zahrála epizodní roli jedné z družiček na...

Byli vedle ní samí ztroskotanci, vzpomíná Basiková na muže Bartošové

Byly každá z jiného těsta, ale hlavně se pohybovaly na opačných pólech hudebního spektra. Iveta Bartošová byla...

Ukaž kozy, řvali na ni. Potřebovala jsem se obouchat, vzpomíná komička Macháčková

Rozstřel Pravidelně vystupuje v pořadu Comedy Club se svými stand-upy, za knihu Svatební historky aneb jak jsem se nevdala se...

Je to šílený, hodnotily firmy práci řemeslníků, kteří opravili střechu

Po zimě se často ukážou mnohé „vady na kráse“ domu, střechy nevyjímaje. Někdy nezbývá nic jiného než kompletní výměna....