3.3. První krok: aplikace zobrazující formulář
V minulém díle jsme si popsali formulář a bylo by jistě zajímavé si jej prohlédnout. Vytvoříme tedy první jednoduchou aplikaci, která jen zobrazí náš formulář na displeji. Pro začátek potřebujeme tyto soubory:
- Ikonu - použijeme černé kolečko z první kapitoly, do kterého nakreslíme panáčka a rameno symbolizující výškoměr ().
- Soubor Makefile - použijeme jen mírně pozměněný soubor z předchozí kapitoly (vlastně stačí nahradit jen jméno programu)
- Soubor prostředků aplikace - formulář už máme, tak stačí jenom přidat povinné definice (ikonu programu, jméno ikony a jednoznačnou identifikaci tvůrce aplikace ('NECO').
- Hlavičkový soubor s konstantami, použitými v souboru prostředků aplikace.
- Vlastní zdrojový text programu
Soubor prostředků aplikace
Uvedeme si celý soubor prostředků aplikace, ve kterém jsou povinné části (tučně) a definice formuláře, navrženého v předchozím díle:
// Soubor vyska.rcp #include "vyska.h" APPLICATIONICONNAME ID 1001 "Vyska" VERSION ID 1 "1.0" APPLICATION ID 1002 "NECO" ICON "ikona.bmp" FORM ID FormularHlavni AT (0 0 160 160) BEGIN TITLE "Cilová vyska" LABEL "Vyska matky:" AUTOID AT (5 30) FONT 1 PUSHBUTTON "1" ID TlacitkoMatka100cm AT (PREVRIGHT+4 PREVTOP-2 12 15) FONT 2 GROUP SkupinaMatka PUSHBUTTON "6" ID TlacitkoMatka10cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka PUSHBUTTON "0" ID TlacitkoMatka1cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaMatka LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1 REPEATBUTTON "\001" ID OpakujMatkaPlus AT (PREVRIGHT+2 PREVTOP-3 AUTO AUTO) NOFRAME FONT 5 REPEATBUTTON "\002" ID OpakujMatkaMinus AT (PREVLEFT PREVBOTTOM AUTO AUTO) USABLE LEFTANCHOR NOFRAME FONT 5 LABEL "Vyska otce:" AUTOID AT (5 60) FONT 1 PUSHBUTTON "1" ID TlacitkoOtec100cm AT (PREVRIGHT+4 PREVTOP-2 12 15) FONT 2 GROUP SkupinaOtec PUSHBUTTON "8" ID TlacitkoOtec10cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaOtec PUSHBUTTON "0" ID TlacitkoOtec1cm AT (PREVRIGHT+1 PREVTOP PREVWIDTH PREVHEIGHT) FONT 2 GROUP SkupinaOtec LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1 REPEATBUTTON "\001" ID OpakujOtecPlus AT (PREVRIGHT+2 PREVTOP-3 AUTO AUTO) NOFRAME FONT 5 REPEATBUTTON "\002" ID OpakujOtecMinus AT (PREVLEFT PREVBOTTOM AUTO AUTO) NOFRAME FONT 5 CHECKBOX "Chlapec" ID ZaskrtniChlapec AT (5 85 AUTO AUTO) GROUP SkupinaPohlavi CHECKED CHECKBOX "Divka" ID ZaskrtniDivka AT (PREVLEFT PREVBOTTOM+1 AUTO AUTO) GROUP SkupinaPohlavi LABEL "Bude pravdepodobne vysoky/a" AUTOID AT (5 120) FONT 1 LABEL "od" AUTOID AT (5 140) FONT 1 PUSHBUTTON "155" ID TlacitkoVyskaOd AT (PREVRIGHT+4 PREVTOP-2 30 AUTO) DISABLED FONT 2 GROUP 0 LABEL "do" AUTOID AT (PREVRIGHT+4 PREVTOP+2) USABLE FONT 1 PUSHBUTTON "200" ID TlacitkoVyskaDo AT (PREVRIGHT+4 PREVTOP-2 30 AUTO) DISABLED FONT 2 GROUP 0 LABEL "cm" AUTOID AT (PREVRIGHT+4 PREVTOP+2) FONT 1 BUTTON "?" ID TlacitkoOProgramu AT (140 90 AUTO AUTO) FRAME END |
K tomuto souboru patří soubor vyska.h, který vkládáme na prvním řádku. V tomto souboru je uvedeno číslo prostředku formuláře, čísla prostředků prvků formuláře a konstanty pro jednotlivé skupiny přepínačů. Čísla prostředků jsme zvolili libovolně - například začít pro každý formulář u celého tisíce a pak přičítat jedničku pro jeho prvky. Čísla skupin jsou také zvolena libovolně - musí být různá od nuly.
// Soubor vyska.h #define FormularHlavni 2000 #define TlacitkoMatka100cm 2001 #define TlacitkoMatka10cm 2002 #define TlacitkoMatka1cm 2003 #define OpakujMatkaPlus 2004 #define OpakujMatkaMinus 2005 #define TlacitkoOtec100cm 2006 #define TlacitkoOtec10cm 2007 #define TlacitkoOtec1cm 2008 #define OpakujOtecPlus 2009 #define OpakujOtecMinus 2010 #define ZaskrtniChlapec 2011 #define ZaskrtniDivka 2012 #define TlacitkoOProgramu 2014 #define TlacitkoVyskaOd 2015 #define TlacitkoVyskaDo 2016 #define SkupinaOtec 1 #define SkupinaMatka 2 #define SkupinaPohlavi 3 |
Zdrojový text programu
Spuštění programu i smyčka zpracování událostí jsou stejné jako u programu v předchozí kapitole. Jedinou změnou je použití jen jednoho formuláře, takže příslušná část funkce UdalostZpracovanaAplikaci() bude vypadat takto:
switch(cisloFormulare) { case FormularHlavni: FrmSetEventHandler(formular, UdalostHlavnihoFormulare); zpracovano = true; break; default: break; } |
Z toho je také vidět, že funkci zpracovávající události hlavního formuláře jsme pojmenovali UdalostHlavnihoFormulare(). Tato funkce obsluhuje zatím jen jedinou událost: požadavek na vykreslení formuláře.
Zdrojové texty programu si můžete stáhnout zde. Prohlédněte si formulář - tlačítka, přepínače i políčka k zaškrtnutí by měly reagovat na akce uživatele. Programu už chybí pouze jediné - aby počítal to, co počítat má.
V příštím díle na chvíli opustíme problematiku uživatelského rozhraní a budeme psát o organizaci paměti počítačů Palm Pilot a kompatibilních.