učebnice
VBalt 5.0 Visual Baltazar 5.0
Obsah 1. Úvod 1.1. Příklad jednoduchosti 1.2. Výhody visuálního programování 2. Váš první program ve VBaltu 5.0 2.1. Přidáváme tlačítko... 3. Objekty 3.1. Typy objektů 3.2. Vlastnosti objektů 3.3. Události objektů 3.4. Implicitní nastavení vlastností a událostí objektů 3.5. Přidávání nových objektů 3.5.1. Objekt NIC 3.5.2. Objekt OBRAZOVKA 3.5.3. Objekt FORM 3.5.4. Objekt TLAČÍTKO 3.5.5. Objekt TEXT 3.5.6. Objekt POSUVNÍK 3.5.7. Objekt VÝBĚR 3.5.8. Objekt PŘEPÍNAČ 3.5.9. Objekt ČASOVAČ 3.6. Přehled objektů 4. Pár rad na závěr... A. B.
Příloha: používání nástroje vbBMPfik Příloha: ASCII tabulka ;-)
Poz n . autora: Ta to uč ebnic e ne n í zase tak velká , a b y s e n eda la vytiskn ou t. Vytisk ně te si ji! Z jed n oduš í vá m to ve lice ž i vot.
1. Úvod No, tak mo c orig in á ln í ten můj p rogr am n en í, no . Ale konec konců p an Bill Gates to ta k y n ev ymys le l a teď za to má miliard y, tak co? V isual Baltazar 5 .0 slou ží k snadnému v ytvářen í graf ick ého u ž ivatelsk y p ř íje mn ého pro s třed í pr o progr amy pod SGP Baltazarem 5.0 , ted y pod op er ačn í m s y s t é me m M S- D O S . J i s tě si vzp o men ete, ko lik práce v á m d a lo, pokud jste se pok oušeli takové prostř ed í n aprogr amo vat. Já jsem se tedy ro zh odl ud ě la t n á stroj, k terý vám ušetř í spousty hod in pr ác e a p ře mý š len í. Be z jakéko liv n á ma h y s i za c hvíli v ytvoř íte p ěkn é pr ostřed í, k teré funguj e, a p ak se j iž mů že te p ln ě v ě novat v lastn ímu p rogramu . N e mu síte se starat o př ekreslov ání tlač ítek, j ak to zař íd it, ab y šlo p řesunovat myší okno, j ak to udě lat, kd yž na n ěk ter é okn o k liknu, ab y se p ř eplo n ejvýš. A j ak ošetř it, na k teré tlač ítko vlastn ě ťu k á m, kd yž j e z č ás ti z akr yto j iný m. O to to se n e mu s íte star a t, to js e m j iž v yrob il já . V á m s tač í pou ze napro gramov a t, co se má stát, když se to tlač ítko stisk ne... A to je práv ě p rin cip visuálního pro gramov án í. Nakreslíte si prostřed í, n a stav íte v las tno s ti o bjektů (b arv ičky, v e likosti, pop isk y a pod.) a p ak již pou ze ošetřu j e te tzv . ud álosti, k teré n ad tě mito objek ty v z niknou (nap ř. j iž zmiňov ané stisknu tí tla č ítka). Tedy, zatím to ř ek nu ještě ob ecně , j ak se to dě lá konkr étn ě, to vám pro zrad ím až v d a lších k ap ito lá ch.
1. 1. Příklad jednoduchosti D ej me to mu , ž e s i ch ci u dělat tex tov ý ed itor. No , tak tam dám objek t Tex t. Př esn ě s i ho u místím n a obrazovk u, jak ch ci. A už mů žu editovat, j ako v p o z n ámkovém b loku... A kd yž budu chtít uk ládat, tak si ta m d á m j eště tla č ítko, v SG P Paintu si n akr eslím něj aký obr áz ek n a něj ( třeb a d isketu , j ako v e W ordu) a po mocí nástr oje vb BMPf ik (sou čá s t V Ba l tu ) s i h o oříznu. No, a teď j eno m nap íšu pro gráme k, k terý p o stisknu tí toho to tlač ítka u lo ž í text o bjektu T ex t do něj akého souboru ( ten to kód n ajdete v SG P Helperu). A je to. A j estli ch ci mít možno s t zadáv a t j méno souboru, dám tam j eště j ed en obj ekt T ex t a u ž to mů ž u z ad áv a t. J eš tě b yc h ta m ch tě l posuvník y. N o tak je tam dám, n aprog ramuju, že k dyž se pohnou , tak se pohne i pozice Tex tu. A j e to. Má m nap rog ramovaný po známkový blok, b ez pře mý š len í, a s i tak za pů l hod in y. N ebo j ešte r ych lej i, kd yž u ž to bud u mít v k r v i. :-)
1. 2. Výhody visuálního programování Je to jasn é, podív ej te se na n ásledující dva obr ázky a hn ed v á s to n ap adne, v č e m j e to lepší. A j estli u ž j s te n e dočkav í, j ak ted a mů žete ve V Baltu p rogramov at, v d a lší kapitole v ás to nau č ím. Uv id íte, že to j e hrač ka. ( i kd yž teda kd yž jsem VBalt pro gramo val, tak to taková hra č ka n eb yla :- ) Počítač: Počítač: Počítač: Člověk: Počítač: Člověk: Počítač:
Nový zákazník ============= zadejte jméno: Petr zadejte příjmení: Novák Zadejte datum narození ve formátu dd.mm.yyyy: Člověk: 12.03.1972 Počítač: Zadejte rodné číslo: Člověk: 730312/6238 Počítač: Zadejte telefon: Člověk: 0472475522 Počítač: Napište poznámky (konec klávesou Esc) Člověk: Velký zájem o slony (zvláště červené a modré). Počítač: Jsou zadaná data v pořádku? (Ano/Ne) Člověk: zvoral jsem rodné číslo, takže musím zadat vše znova...
V i suá ln í zp ůsob (j eden for mu lář, v yp ln í se naj ednou)
S t and ar tn í z as ta r a lý způ sob (f o r ma o tá z ek a o dpov ěd í)
2. Váš první program ve VBaltu 5.0 Ab y b yl ten to návod p řehledný, stru čný a j asný , udě lá m to v e for mě kuch ařk y. 1 . Z adr es ář e V B_VZOR si zkopíruj te d o sv ého v lastn ího adr esář e v šechn y 3 soubor y a př ej me nuj te je na nový n ázev (n ap ř íklad POKUS). 2 . V Ba lta za ro vi o tev řete soubor nap ř. POKUS.SGP, v n ě m budete nor má lně programov at. Pokud b yste ale ten to program spustili, nemá zatím nikd e n ap rogramov án o, ab y se ukon č il. Jed in é ř ešen í je ted y ukon č i t p o mo c í C t r l + Bre ak . P ř idává ní nových obj e ktů: P řepn ě te se na funk ci __ Jád ro (v šimn ěte s i, ž e v š echn y vn itř ní funk ce V Baltu zač ín aj í pod tr ž ítke m) . Př epně te se na oper aci ů ( hned na za čátku skor o úp lně v lev o) a ed ituj te ji. K aždý progr am mu sí ob sahovat min imá lně jed en objek t, a sice O b r azovka (obj ek t[0 ]). Obj ek ty ma j í poř adov á č ís la (v h ran a tých z ávork á ch), od 0 v ýše. Každý o bjek t mu sí mít z a dán y min imá ln ě tř i v lastno s ti (viz d á le), a sice TYP ob jektu , JMÉNO a j méno FO RMU LÁ ŘE, ted y in fo r mac i, n a k teré m obj ek tu ten to objek t le ž í ( mů ž e l e ž e t buď na for mu lář i n ebo př ímo n a plo še obr azovky) . Uv edu př ík lad, pod robn ěji v ysv ě tlím v d a lších k a pito lá ch. o b j ek t [1 ] .t y p = O BJ EK T _F O R M; o b j ek t [1 ] .j m én o = " fo r mu l á ř1 "; o b j ek t [1 ] .f o rm u l á ř = " Ob r a zo vk a "; // Pozor! zač íná ve lký m p ís men e m o b j ek t [1 ] .e d it a c e = t r ue ; / / tru e zn a me n á A n o , f a ls e N e o b j ek t [1 ] .v l ev o = 5 0; // zatím ro změ r y jen od ok a o b j ek t [1 ] .n a ho ř e = 50 ; o b j ek t [1 ] .š í řk a = 1 00 ; o b j ek t [1 ] .v ý šk a = 1 00 ; N yn í se př e p něte n a g lo bá ln í pro mě n né ( Ctr l + G ) a upr av te ř ádek # d e fi n e P OČ E T_ O B J EK TŮ 1 na # d e fi n e P OČ E T_ O B J EK TŮ 2 /* má me j iž 2 objek ty: Ob razovk a a fo r mu lář1 * / Kd yž n a to to někd y zap o men ete, V Balt n ebude f ungovat nebo bude b lbno ut!!! J e š tě př idej te ř ád ek # d e fi n e f or m ul á ř 1 o bj e kt [ 1 ] To vá m u mo žn í po zd ěji psát j ednodu še n apř. f o r mul ář 1 .v l e v o = 10 0 ; V š i mn ě te si ještě ř ádku #define SOUBOR_EDITACE "*\\temp.$$$" Do tohoto souboru se budou ukládat pomocná data za běhu programu (vysvětlím). Pokud vám toto jméno a cesta nevyhovuje, můžete změnit. Nyní program spusťte (F9). Objeví se vám obrazovka a formulář. Můžete ho přetahovat (za horní pruh) a roztahovat (za hrany a rohy), jako ve Windows. Až umístíte formulář tak, jak ho chcete, ťukněte na něj pravým tlačítkem myši. Protože formulář.editace je true, po stisnutí toho pravého tlačítka se do toho souboru temp.$$$ uložili aktuální souřadnice objektu. Ukončete program (Ctrl+Break), zapněte manažér (Ctrl+M) a zvolte zobrazení všech souborů (volba 3.). Otevřete temp.$$$, zkopírujte to do schránky a můžete to nalepit místo odhadovaných souřadnic do té operace ů. A je to. Nyní ještě zrušte editaci ( . e di t ac e = fa l se ; ) M ů ž e t e z k u s i t p ř i d a t j e š t ě t y t o ř á d k y : o b j ek t [1 ] .v i di t e l né = tr u e ; /* když není editace, objekty normálně nejsou vidět */ o b j ek t [1 ] .p o pi s = " Fo r mu l á ř č. 1 "; o b j ek t [1 ] .b a rv a _ p oz ad í = S vě tl o š e d á ; o b j ek t [1 ] .m y š_ d b l cl ic k = & _k on e c; /* po dvojkliku se zavo lá funkce _ k o n e c , k terá nastaví g lobáln í pr o měnnou k o nec _ já d r a n a t r u e , co ž je sign ál pro jádro V Baltu , že se má ukon č i t. Můž e te s i sa mo zřej mě v yrob it j ino u funkci a d o n í n apsat k o n ec _ já d ra = t r u e; jeno m n e smíte zapo me nou t v o p e raci ů d á t pře d ni zn ak & * / Zkuste si to zase přeložit (F9). Fajn, už žádný Ctrl+Break. Ještě vám ukážu, jak si tam dáte tlačítko a pak již popíšu detailně všechny objekty, jejich vlastnosti, události a další fígle...
2. 1. Přidáváme tlačítko... P řepn ě te se do oper a ce ů a přid ej te tyto ř ádk y: o b j ek t [2 ] .t y p = O BJ EK T _T L A ČÍ TK O ; o b j ek t [2 ] .j m én o = " tl a č1 " ; o b j ek t [2 ] .f o rm u l á ř = " fo r m ul ář 1 "; o b j ek t [2 ] .e d it a c e = t r ue ; o b j ek t [2 ] .v l ev o = 0 ; / / ro zm ě ry z as e j en o d o ka o b j ek t [2 ] .n a ho ř e = 0; o b j ek t [2 ] .š í řk a = 3 0; o b j ek t [2 ] .v ý šk a = 3 0; P řepn ě te do Ctr l+G, PO ČET_O B JEK TŮ 3, p ř id a t řádek # d e fi n e t la č 1 o b j ek t[ 2 ] V žd yť už to znáte. .. F9, u míst ě te ho hezk y (jo mimo chod em, vešk eré pozice . v l e v o a .n a ho ř e se vztahuj í rela tivn ě k f o rmulá ř i uvedenému ve v lastnosti . f o r m ulá ř ) . Pravý m tlač ítk e m ťu k n o u t, d v o j k like m n a f o r mu lář to ukonč íte, o tevř e t e t e m p . $$$ ( T r o c hu te ď v e svém výk ladu zr ychluj i, ale tak předpok ládám, že od v á s, j ako pro gramá torů , mohu o ček áv at j istou dávku in te lig ence :- ) N akop íruj te souř adn ice , zruš te ed ita c i a př id ej te do ů t y to řádky: o b j ek t [2 ] .v i di t e l né = tr u e ; o b j ek t [2 ] .p o pi s = " PÍ P "; o b j ek t [2 ] .b a rv a _ p oz ad í = Ž lu tá ; o b j ek t [2 ] .m y š_ c l i ck = &p í p ; V ytvoř te no vou funkci p í p , v e s t y lu : píp 0! a do op er ace 0 nap ište T ón( 2 00 0 ) ; Č ek e j( 1 0) ; V y pn i Tó n () ; T ak , a př eložte F9 . A u ž píp á me . Myslím, že b y to na úvod stač i lo . Bě ž te se prob ěhnou t, postavit sn ě huláka a po d., zítr a pokr a čujem (pod ív áme se n a to trochu v íc v ědeck y, ale bud ete mít ko mp le tn í p řeh led a u ž b udete vše u mě t . )
3. Objekty N yn í j i ž j d e me p ln ě n a v ěc. Op ě t v ás upozorn ím, že na to m n ic n en í. V e VBaltu j sem imp lemen to val mnoho o bjek tů, v d alš ích kap ito lk ách s e pod ív á me n a k ažd ý z n ic h d e ta iln ě. N e jdřív e a le v ysv ě t l í m p ár p o j mů, kter é je po tř eb a z nát.
3. 1. Typy objektů V e V Ba ltu j sou imp le me n tov án y n ás leduj íc í typ y objek tů : O B J EK T _N I C zv lá štn í typ – ten to objekt j e igno ro ván, jako kd yb y pro s tě n ebyl O B J EK T _F O RM for mu lář ( c hcete- li okno ), na ně m po to m leží d a lší obj ek ty O B J EK T _T L AČ Í TK O tla č ítko ( mů že bý t i s obrázk e m :- ) O B J EK T _T E XT ok énko pro psan í tex tů ( ve V isu a l Bas icu zn á m j ako Tex tBox ) O B J EK T _O B RA Z OV K A zv lá štn í typ – objek t vždy s indexem 0 ( ted y o b j ekt[ 0 ] ) , k aždý progr am mu sí mít pr ávě jednu obrazovku. Na n í mů žou l e ž e t f o r mu l áře nebo i jednotliv é obj ek ty. O B J EK T _P O SU V NÍ K _ H hor izon tá ln í posuvn ík (zleva dopr av a, vodorovný ) O B J EK T _P O SU V NÍ K _ V v er tikáln í p osuvník (sho ra do lů , sv islý) O B J EK T _V Ý BĚ R z a šk r t áv a c í p o l íčko, mů ž e b ý t sou ča sn ě zaškr tnu to více výběr ů O B J EK T _P Ř EP Í NA Č z a šk r t áv a c í p o l íčko, v dané skup in ě v žd y j e n jedn o za škr tnu to O B J EK T _Č A SO V AČ z v lá š tn í typ – nen í v idě t. Po d an é m interv alu (n apř. 1 sekund a) zavo lá funk ci (v zn ikn e událost) . ti k( ) , ted y tř eb a k aždou sekundu d ej me to mu p íp ne.
3. 2. Vlastnosti objektů K aždý obje kt má sv é v la stno s ti, k ter é ur čuj í j e h o vzhled a zp ůsob chován í. Tyto v las tno s ti b udete p ráv ě ve V Baltu př i p rogramo v ání nastavov at. Tad y j e seznam v šech v las tno s tí, k ter é s e v e V Ba ltu v ysk ytují v če tn ě j e jich bě žný c h významů . Měj te a le n a p a mě ti, že se j edn á pouze o p ř eh led. Každý typ o bjektu p oužívá pou ze n ě kter é z t ě c h t o v lastno s tí a jejich vý zn am mů ž e b ý t j e š tě u každ ého typu trochu odlišný. Doporučuji tuto k ap ito lku sp íše jen pro létnout a pak se k n í vrátit, až j iž bud ete v ědě t více o jedno tliv ých obj ek te ch. Pokud ch ceme v lastnost objektu nastavit, n ap íšeme o b j ek t [i n de x _o b j e kt u] . jm é n o_ vl a st n o st i = h o d no t a; Já ale o sobn ě doporučuj i, že jak mile v ytvoř íte no vý objek t, tak do g lob álních def in ic ( C tr l +G ) z a v ede te s yn o n y mu m, n apř . # d e fi n e j mé n o_ o b j ek tu ob j e kt [i n de x _ ob je k tu ] P ak j i ž mů žete psát j edn oduše n apř. j m é no _ ob j ek t u. j m é no _v l as t n os ti = h o dn ot a ; N ez apo me ň te tak é po každ ém př id án í obj ek tu z mě n it g lob áln í konstan tu PO Č ET_O BJEKTŮ . O p řidáv án í obj e ktů poj ednám j eště j edn ou v samo statné kap ito le. Já v ím, tyto po kyn y j iž p íšu podruhé a slibu j i vám nyn í, že se j e št ě j ednou o nich zmín ím. Jsou ale n a tolik d ů le ž i t é , ž e to j e p o tř eb a. Pokud to tiž nezmě n íte PO Č ET _OBJ EKTŮ , progr am nebude fungov at spr ávně (p řeklad ač př ito m a le pr av děpodobně n eoh lásí žádn ou ch ybovou zprávu!) Pov inn é v la stno st i p ro k a ždý ob je k t: int typ s t r in g f o rm u lá ř s t r in g j m én o
typ obj ek tu, viz k ap ito la 3.1. Typ y o bjektů j méno obj ek tu, k e k ter ému obj ek t p řísluší (bu ď f or mu l ář n ebo př ímo obrazovk a. For mu lář n e mů ž e le ž e t v j i n ém for mu lář i!) j méno obj ek tu ( tř eb a tla čítko1) . A ť vám r u k a upadne, jestli to to j méno změ n íte za b ěhu programu – mimo op er aci ů , s a mo zř ej mě !!! ;- )
N epov inné vlast nost i o bjekt ů: c h a r e di t ac e
př i n ávrhu o bjektů n a s ta vte n a t ru e , bude vám u mo žněno př esunov at objek t a mě n it j eho ro změ r y. Pokud ťuknete pravý m tlač ítkem myši n a takovýto o bjekt, j eho ak tuáln í po zice se u loží do soubo ru d ef inovaném v g lobálních d ef in ic ích ( řád ek #define SOUBOR_EDITACE) . Po u mí s těn í obj ek tu změ ňte ed itaci n a f als e . Pokud . e d it ac e je t r ue , pak je o bjekt vžd y v id ě t (n eh led ě n a vlas tno s t . v id it e ln é ) a nevo laj í se ošetřen í u d á lo s t í ( te d y n apř . tlač ítko se n edá stisknou t a pod.)
c h a r a kt i vn í
pod V isual Ba sicem zn ámé j ako . en ab l e d , pok u d j e f a l se , n eo še třuj í se ud álo s ti (n apř. t la č ítko se nedá stisknou t)
c h a r v id i te l né
v id itelnost objek tu. Pokud e di t ac e j e t r ue , o bjek t j e v žd y v id ě t. U objek tu O bra zovk a má ta to v las tno s t speciáln í vý znam – obrazovka j e samo zř ej mě v id ě t v žd y, ale jedn á se o v id itelno s t okr aj e (r áme č ku ko le m Baltazarov a prostoru) .
c h a r p ře s un
povo len í pr o for mu lář, j e stli ho smí uživatel p ře mí s ťovat myší (dr ag and d rop). H odnoty t ru e , f a lse.
c h a r r oz t ah o vá n í
j ako př esun , a le týk á s e roz tahov án í for mu lá ře
c h a r p lo c hé
pro tla č ítko, pokud je tr ue, tlač ítko j e p lo ch é (j ako ikonk a) a u d ě lá s e z něj tla č ítko teprve, kd yž na něj n aj e d e te myš í. ( zná t e n apř . z MS Off icu 97 a výše)
int int int int
po zice X le vého horn ího rohu obj ek tu (v bodech) po zice Y le vého horn ího rohu obj ek tu š ířka objek tu v bodech vý ška obj ek tu v bodech ( a le pozor – f or mu lá ř je v e skute čnosti ještě po to m vyšší o titu lkový pruh)
v l ev o n a ho ř e š í řk a v ý šk a
s t r in g p o pi s
n áp is n a obj ek tu, u obj ektu Tex t zn ačí tex tový o bsah ok énka
s t r in g o b rá z ek
j méno soub oru s obrázk em (pokud n e chceme , tak jen "")
i n t b a rv a _p o za d í i n t f o nt _ ba r va
b arva pozad í obj ek tu (j eho plo ch y) b arva p ís me n ek, p ř ípadn ě i třeb a okr aj ů (dle typ u objek tu)
i n t h o dn o ta _ mi n
pro po suvn íky – min imá ln í hodno ta ( pozic e v lev o č i n ahoře ) pro po suvn íky – ma x imá ln í hodno ta (pozice vpr avo č i do le)
i n t h o dn o ta _ ma x i n t h o dn o ta
po suvník y – nastav ená h odnota výb ěr, p řep ínač – hodnota zaškr tnu tí (t r ue , f a l se)
i n t š í řk a _p r oc
po suvník y – šířka šoup átk a v p rocen tech šířk y c e l ého po suvníku ( např. 60 %, š ířk a _p r o c = 6 0; ) . š í ř ka _ pr o c n as t aven á n a – 1 zna me n á au to ma t i c k é př epoč ítáv á ní šířk y šoup átk a d le ro zsahu hodno t.
i n t s k up i na
pro p řep ín a če – stejn á h odnota skup iny (nap ř. 0) určuje skupinu p ř e p ína čů, me z i k terý mi s e přep ín á, ted y z té to skupin y je zaškr tlý v žd y pouze jed en . Ozn ač en í skupin y – 1 pou žívám pr o ozn ač en í, že n en í sou č ástí žádn é skupin y (po tř ebn é pr o Výběr a P osu vník)
c h a r z al a mo v án í
pro obj ek t Text – tru e , f alse . Zalamován í řád ku tex tu , pokud se nevejd e do ok énka (j in ak n utno ro lov a t)
c h a r v íc e _ řá dk ů
pro obj ek t Text – tru e , f alse . Pokud je f a ls e , j edná s e pou ze o j ed nořádkový v stup (např . č ís lo) . Dopor učuj i p a k d á t za l am o vá n í na fa l se .
c h a r e di t _t e xt
pro obj ek t Text – tru e , f alse . Pokud je f a ls e, nedá se tex t ed itov a t (ve V isu al Ba sicu obj ekt Lab e l). Po kud je tru e, tex t se dá ed itov at (ve V isu al Basicu objek t Tex tBox)
c h a r r ám e če k
pro obj ek t Text – tru e , f als e . Vidite lno s t r á mečku oko lo obj ek tu.
i n t p o x, in t p o y
pro obj ek t Text – pozice ak tu álního výřezu okén ka (po z ice 0, 0 zna č í p očá t ek)
l o n g p kt e xt
po zice kur zoru v Tex tu ( označuj e po zici zn aku v e v las tno s ti . po pi s , 1. znak má po zici 0
int pb1 int pb2
p o z ic e zač átku bloku (stejně jako p k te x t ) po zice kon ce b loku. Pok ud p b1 a p b 2 j e -1 , blo k není.
l o n g i nt e rv a l
pro obj ek t č asov ač – in terval v setin á ch sekund y mezi j edno tlivý mi ud álostmi . t ik ( ) Pokud in te rval je 0 , tak j e č asova č n e a k t iv n í.
3. 3. Události objektů Ud á los ti obj ek tu v zn ik aj í př i n ěj aké ak ci souv is ejíc í s d a n ým obj ek tem (n apř. k lik n u t í n a obj ek t, d vojklik, stisknutí tlač í tk a myš i , p u š tě ní tlač í tk a myš i , přej e tí myš í p ře s o b j ek t, z mě n a hodn oty atd .) Tyto události p ak v e svém p rogramu bud ete o šetř o v a t, tedy nap íšete funk c i, k ter á se má zavo la t po v zn ik u té to ud á los ti. N apř. řek nete , že po stisknu tí tla č ítk a se má zavo lat funk ce, k terá p ípne. V šechn y ud álosti se vo laj í jen tehd y, j e- li o b jekt ak tivn í a need ituj e se. Pokud ch ceme událo st o šetř it, n ap r o gramuj e me d anou funk ci a do op er ace ů n a p íšeme do v lastno s tí obj ek tu : o b j ek t [i n de x _o b j e kt u] . jm é n o_ ud á lo s t i = & jm é n o_ f un k ce ; př íp adně j m é no _ ob j ek t u. j m é no _u d ál o s ti = &j m é no _f u nk c e ; D ruhy udá lost í: m y š _p o hy b () m y š _d o lů ( ) m y š _n a ho r u( )
vo lá se tehd y, pokud se na obj ek tu p ohne myš n a obj ek tu j s me stisk li levé tlač ítko myši n a obj ek tu j s me pustili lev é tlač ítko myši
m y š _c l ic k ()
pu stili jsme tlač ítko n a to m s a mé m o bjek tu, n a k ter é m j s me ho stisk li
m y š _d b lc l ic k ()
dvojk lik li j s me n a objek t ( max imáln í ča s me z i d v ě ma k lik y d án g lob áln í konstan tou (Ctr l+G) DBLCLICK_SETINY)
h o d no t a_ z mě n a( )
z mě n a hodn oty u po suvn íku, výb ěru, př epín a če , příp adně z mě n a popisu objek tu Text
t i k ()
vo lá se po č asovém in te r valu d an é m vlastno s tí . i n ter v al v setin ách sekundy
Udá lo st st is k k láve sy: Pokud stisk nete k lávesu, vo lá se fun kce _ o bec n é_ k lá v es a , k tero u s i mů že te ed itov at. V pro mě nn é gKl áv e s a je s tisk lá k lá ves a a k d ispozic i j sou i s h i f ty – v iz nápověda př ímo u funk ce (hned po d jej í h lav ič kou).
3. 4. Implicitní nastavení vlastností a událostí objektů Pokud nen a stav íte j in ak, pro každý o bjek t j sou p řednastaven y tyto hodno ty: . t y p = O B JE K T_ N I C ; . f o rm u lá ř = "" ; . j m én o = "" ; . e d it a ce = f al s e ; . a k ti v ní = t ru e ; . v i di t el n é = f a l s e; . p ř es u n = t r ue ; . r o zt a ho v án í = t r ue ; . p l oc h é = f a ls e ; . p o pi s = "" ; . o b rá z ek = " "; . h o dn o ta = 0 ; . s k up i na = - 1; . š í řk a _p r oc = - 1 ; . z a la m ov á ní = t r u e; . v í ce _ řá d ků = t r u e; . e d it _ te x t = f a l s e; . r á me č ek = t ru e ; .pox = 0; .poy = 0; . p k te x t = 0 ; .pb1 = -1; .pb2 = -1; . i n te r va l = 0; .myš_pohyb = NULL; // NULL znamená žádné ošet ř en í u d ál o st i . m y š_ d ol ů = NU L L ; . m y š_ n ah o ru = N U L L; . m y š_ c li c k = N U L L ; . m y š_ d bl c li c k = N UL L; . h o dn o ta _ zm ě na = NU LL ; . t i k = N U LL ;
3. 5. Přidávání nových objektů Z adr es ář e V B_VZOR si zkopíruj te d o sv ého v lastn ího adr esář e v šechn y 3 soubor y a př ej me nuj te je na nový název (n ap ř íklad POKUS). V Ba lta za ro vi o tev řete soubor nap ř. POKUS.SGP, v n ě m budete nor má ln ě programov at. Pokud b yste ale ten to program spu s tili, n e má zatím n ikd e n aprogramováno, ab y se ukon č i l. J e d in é ř ešen í j e ted y ukončit po mo cí Ctrl + Break. P řepn ě te se na funk ci __ Jád ro (v šimn ěte s i, ž e v š echn y vn itř ní funk ce V Baltu zač ín aj í pod tr ž ítke m) . Př epně te se na oper aci ů ( hned na za čátku skor o úp lně v lev o) a ed ituj te ji. K aždý progr am mu sí ob sahovat min imá lně jed en objek t, a sice Ob r azo vka ( objekt[0] ) . Obj ek ty ma j í poř adov á č ís la (v h ran a tých z ávork á ch), od 0 v ýše. Každý o bjek t mu sí mít z a dán y min imá ln ě tř i v las tno s ti, a s ice TYP objektu , JMÉ NO a j mé no FO RMULÁ ŘE , ted y infor maci, n a k ter ém obj ek tu tento obj ek t leží ( mů že le ž e t b uď na f o r mu láři n ebo př ímo na p loše obr azovk y). P ak se př ep něte do glob áln ích pro mě nný ch ( Ctr l+G), změ ň te POČ ET_O BJ EKTŮ n a a k tuá ln í p o č e t a n a záv ě r př idej te ř ádek ve stylu : # d e fi n e T la č ít k o U lo ž o bj e k t[ 12 ] To vá m u mo žn í po zd ěji psát v e funk cích (o šetř en í ud álo s tí) např. T l a čí t ko U lo ž .v i d i te ln é = f al se ;
Do op er ac e ů vlo ž te nap ř. tyto ř ádk y: o b j ek t [1 2 ]. t yp = OB JE K T_ T L AČ ÍT K O; o b j ek t [1 2 ]. j mé n o = "T l ač í t ko Ul o ž" ; o b j ek t [1 2 ]. f or m u l ář = "f o r mu lá ř 1" ; o b j ek t [1 2 ]. e di t a c e = t ru e ; o b j ek t [1 2 ]. v le v o = 50 ; / / za t ím r oz mě r y j e n od o ka o b j ek t [1 2 ]. n ah o ř e = 5 0 ; o b j ek t [1 2 ]. š íř k a = 10 0 ; o b j ek t [1 2 ]. v ýš k a = 10 0 ; Po pře lo ž en í pro gra mu ( F9) mů že t e u p r av i t p o z ic i a r o z mě r y objektu (d ík y zapnu tí ed itace). A ž budete s pozicí spokoj en i, ťukně te n a obj ek t pr av ý m tlač ítkem a do soubo ru d aného v g lo báln ích d ef inic ích ( imp licitn ě "* \\temp.$$$ ") se u loží ak tu áln í ro změ r y. Ukon čete pr ogram, o tev ře te v mana že ru t e mp.$$$ , r oz měr y zk op íruj te do schr ánk y a upr av te je p ak v operaci ů . Nyn í zru š te ed itac i, o bjek t má te př ipr aven . N yní mů ž e t e n astavovat další v lastno s ti, v iz d a lš í kap ito ly. O še třová n í udá lost í: P řiřa ď te adr e su funk ce do dané v lastnosti, např : T l a čí t ko U lo ž .m y š _ cl ic k = & PÍ PN I ;
// po stisknu tí Tla č ítkoU lož zavo lá fu nkci // PÍPNI
3. 5. 1. Objekt NIC P ředpok ládej me, že zatím má me nad ef in o ván pouze o b j ekt [0 ] – o b j ekt Obrazovka. o b j ek t [1 ] .t y p = O BJ EK T _N I C ; Ten to obj ek t j e n apro s to ignorov án, dalš í v lastno sti tak é.
1. 5. 2. Objekt OBRAZOVKA o b j ek t [0 ] .t y p = O BJ EK T _O B R AZ OV K A; o b j ek t [0 ] .f o rm u l á ř = " Ob r a zo vk a "; o b j ek t [0 ] .j m én o = " Ob r az o v ka "; Ten to obj ek t j e u ž od e mě p ředn as ta ven. Jed in é, co na ně m mů ž e t e mě n it, je v lastnost v i d it e ln é . Ta u obrazovky ur čuj e vid itelnost okrajů Ba lta z arov a pro s toru. N a obr azov c e mohou ležet libovo lné objek ty. F o rmu lá ř 1
3. 5. 3. Objekt FORM o b j ek t [1 ] .t y p = O BJ EK T _F O R M; o b j ek t [1 ] .f o rm u l á ř = " Ob r a zo vk a "; o b j ek t [1 ] .j m én o = " Fo r mu l á ř1 "; // n ap ří k la d Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: e d i ta c e, ak t iv n í , v id i te l n é, p ř es u n , ro z ta h o vá n í, vl e vo , n a ho ř e, v ý š ka , š í řk a , p o p is , o br á z ek , b ar v a _p oz a dí , fo n t_ b ar v a Obj ek t for mu lář je zv láštn í objek t – o sta tn í typ y objek tů mo h ou ležet bu ď přímo na obr azov c e, nebo n a j edn o m z f or mu lářů. S tímto formu lář e m p ak sd ílí svoj e v las tno s ti. Po zice tě ch to objek tů se vztahuje relativn ě k p o zici for mu lář e. Pokud for mu lář nen í v id ě t, an i tyto obj ek ty v n ěm nej sou vid ě t a to té ž platí pro v lastnost ak tiv ní. Pokud je for mu lář me nší, než j e p ozice objek t ů v n ě m, jsou vykr eslen y j en z č ásti, nebo vůb ec (j e p ak po tř eba for mu lář ro ztáhnou t). Fo r mu lá ře lze d á le př epínat do výšk ových h lad in (když na ně j ťu k n e te , př epne se úp ln ě n ahor u). Fo r mu lá ř mů že le ž e t v žd y j en n a O b r azov c e.
3. 5. 4. Objekt TLAČÍTKO o b j ek t [1 ] .t y p = O BJ EK T _T L A ČÍ TK O ; o b j ek t [1 ] .f o rm u l á ř = " Fo r m ul ář 1 "; / / na p ří k l ad o b j ek t [1 ] .j m én o = " tl a č1 " ; / / n ap ř í kl ad Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: e d i ta c e, ak t iv n í , v id i te l n é, p l oc h é , vl e vo , na h oř e , v ýš k a, š í ř ka , p o pi s , o b r áz ek , b a r va _p o za d í , fo n t_ b a rv a T l a č ítko mů ž e bý t p lo ch é – jako iko nka, tlač ítko se z n ě j udělá teprv e teh dy, až n a n ěj n ajed e me myš í.
3. 5. 5. Objekt TEXT o b j ek t [1 ] .t y p = O BJ EK T _T E X T; o b j ek t [1 ] .f o rm u l á ř = " Fo r m ul ář 1 "; / / na p ří k l ad o b j ek t [1 ] .j m én o = " te x t1 " ; / / n ap ř í kl ad Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: e d i ta c e, ak t iv n í , v id i te l n é, v l ev o , n ah o ře , vý š ka , š í řk a , p op i s, b a r va _ po z a dí , f o n t_ ba r va , za la m ov á n í, e d it _ t ex t , r ám e če k , p ox , p o y , p kt e xt , p b 1 , p b2 Ob sah toho to objek tu je uložen v e v lastno s ti . p o pis . P oku d j e . e d i t_t ex t t r u e , p ak mů ž e me ed i to v a t t e x t z k láve sn ic e ( n ejdř ív e j e po tř eba na tex t k liknou t myší). Funguj e poh yb kurzoru šipk ami, o zn ačován í b lok u Shift + šip ky, kop írov án í do sch ránky ( Ctr l+ C, Ctr l+In ser t) , v yj mu tí do s c hránk y ( Ctr l+X) , v lož en í z e schr ánk y (Ctr l+V, Sh if t+In ser t), kláv esy (shif t+) Pag e Down, PageU p, Ho me , En d, Ctr l+Ho me, Ctr l+End, o zna č en í celého tex tu Ctr l+A.
3. 5. 6. Objekt POSUVNÍK o b j ek t [1 ] .t y p = O BJ EK T _P O S UV NÍ K _H ; // n e bo _ V o b j ek t [1 ] .f o rm u l á ř = " Fo r m ul ář 1 "; / / na p ří k l ad o b j ek t [1 ] .j m én o = " po s uv k a 1" ; / / n a př ík l ad Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: e d i ta c e, ak t iv n í , v id i te l n é, p l oc h é , vle vo , na h oř e , v ýš k a, š í ř ka , b a rv a _p o z a dí , f on t _ ba rv a , h o dn ot a _m i n , h od n ot a _m a x, h o d no t a, ší ř ka _ p r oc Co dod at? Ani n ev íte , k olik pr áce mi to d a lo ten to objek t n ap rogramov at... ;- )
3. 5. 7. Objekt VÝBĚR o b j ek t [1 ] .t y p = O BJ EK T _V Ý B ĚR ; o b j ek t [1 ] .f o rm u l á ř = " Fo r m ul ář 1 "; / / na p ří k l ad o b j ek t [1 ] .j m én o = " vy b 1" ; // n a př í k la d Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: e d i ta c e, ak t iv n í , v id i te l n é, v l ev o , n ah o ře , vý š ka , š í řk a , p op i s, b a r va _ po z ad í , f o n t_ ba r va , ho dn o ta Hodno ta zaškrtnu tí j e d á na v lastností h o dno ta . Můžete mít zašk rtnuto v ýběrů, ko lik chcete (n ajednou).
3. 5. 8. Objekt PŘEPÍNAČ o b j ek t [1 ] .t y p = O BJ EK T _P Ř E PÍ NA Č ; o b j ek t [1 ] .f o rm u l á ř = " Fo r m ul ář 1 "; / / na p ří k l ad o b j ek t [1 ] .j m én o = " př e p1 " ; / / n ap ř í kl ad Pro ten to ob jekt se v z ta hují dále tyto v lastnosti: e d i ta c e, ak t iv n í , v id i te l n é, v l ev o , n ah o ře , vý š ka , š í řk a , p op i s, b a r va _ po z ad í , f o n t_ ba r va , ho dn o ta , sk up i na Hodno ta zaškrtnu tí j e d á na v lastností . h odn ot a . Můž e te mí t z aškr tn u t v žd y p o u z e j eden přep ína č ze stejné skup in y p ře pín ačů (v lastnost . s k u p ina) .
3. 5. 9. Objekt ČASOVAČ o b j ek t [1 ] .t y p = O BJ EK T _Č A S OV AČ ; o b j ek t [1 ] .f o rm u l á ř = " Ob r a zo vk a "; o b j ek t [1 ] .j m én o = " ča s 1" ; // n a př í k la d Pro ten to ob jekt se v z ta hují dále tyto vlastnosti: a k t iv n í, in t er v a l Pokud nen í in te r va l 0, tak po to mto in te rv alu v setinách sekund y vzn ik ne ud álost . t i k( ).
ud álosti
v las tno s ti
3. 6. Přehled objektů
typ j mé no for mu lář e d i ta ce a k t iv n í v id ite lné př esun ro ztahov án í p lo ché v levo n ahoře š ířka vý ška pop is obr áz ek b arva_po zadí fon t_b arv a hodno ta_ min hodno ta_ max hodno ta š ířka_pro c skupin a z a l a mo v án í v íce_ř ádků e d i t_ tex t r á me č ek pox po y pk tex t pb1 pb2 in terval myš_ poh yb myš _ do lů myš_ naho ru myš_ click myš _ d b lc l i c k hodno ta_změ n a tik
n ic obr azovk a for m x x x x x x x x x x x x x x x x x
x x x x x x x x
Obj ek t tlač ítko tex t po suvník výb ěr př ep ína č č asova č x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
x x x x x x x
x x x x x x x x x x x
x x x x x
x x x x x
x x
x x
x
x x
x x x x x x x x x x x x x x x
x x x x x
x x x x x
x x x x x x
x x x x x x
x x x x x x
x x x x x x x
4. Pár rad na závěr... V ěř ím, že se vám mů j pr ogram líb í. Doufám, že vám hodně p o můž e a u še tř í spou stu pr ác e. J o , j eš tě o j edné v ěci se zmín ím. SG P Baltazar 5.0 nepo sk ytu je mo žnosti pro och ranu př ístupových práv k jed notlivý m pro mě nný m (n ej edná se o o bjek tově or ie ntov aný j azyk), tud íž j e vá m u mo žn ěno změ n it jakou koliv systémo vou pro mě nnou. Pokud ale změ níte n ěco , co n es míte , mů že to mít p ro následuj íc í b ě h programu k a ta strof á ln í úč ink y, d ej te s i te d y n a to p ozor. Z glob á ln ích pro mě nný ch a v lastno s tí objek tů mě ň te jen ty, o k terý c h jsem psal. Ostatn ích si n ev š ímej te. N ez aru čuj i, že j e můj p r o g r a m b ez c h yb! Dě la l j s e m ho v e v e lk é m spě chu , a i kd yb ych n a n ěj mě l mnoho č asu, urč itě b y n e byl b ez ch ybn ý. Pro to , je s tli n ar a z íte na nějak é d iv né chován í, inf or muj te mn e, pro s ím. J e třeb a zaslat mi všech ny soubor y v ašeho progr amu a snažte se, pro s ím, sp ecif ikov at d ivn é chování tak, ab ych si ho u mě l př esn ě pod le návodu v ymod e lovat ( tedy žádn é: n o, n ěco js e m n ěj ak stisknu l a ono to ta m po to m nak reslilo b ílou čáru). Ch ci přesný pop is úp ln ě od za čátku spuště ní progr amu až k v lastn í ch ybě . K ažd é mu n á l ez c i ch yb y p ř ed e m d ěkuj i. Pokud b y v á s zaj íma lo, j ak se takov ý progr am, jako je V Balt 5.0, dě lá , ta k se mů ž e t e pod ív at do adresář e s d o kumen tací, j s ou tam n ask enov ané něj a k é p ap ír y, n a k ter é j se m s i po celou do bu programo ván í d ě la l p ozná mk y. Je to do ce la zaj íma v é. ..
Tomáš Bořil I.
[email protected]
to jsem já
A. Příloha: používání nástroje vbBMPfik N ástroj vbBMPf ik slouží k d ělán í výř ezů z v e lký c h . B M P o b rázků. SGP Pain t v á m to tiž u mo žň uje u ložit po uze celou ob razovku . Kd yž ale po t řebujete dát na objek t obrázek, bud ete po tř ebovat j en v ýřez této obr azovk y ( ten , kam j s te si daný ma lý o brázek n akreslili). Postup v yř íznutí takov éh o obrázku j e násled u j ící: N apř. ch ce te s i ud ě la t o brázek n a tlačítko – n akresle te ten ob rázek v SG P Paintu, u lo ž te celou obrazovku j ako . BMP , s p u sťte vb BMPf ik, nač tě te to to . B M P , o z n ačte výř e z s obrázk e m na tlač ítko , u lo ž te výře z. Toť v še ( a n ez apo meň te vb BMPf ik u konč i t ;- ) . T ak to v yrob ené obr á zk y již mů žete p oužív at do p rogramů v ytvořených v e VBaltu. Asi n ej lep ší j e n akop írovat j e do stejn éh o adresáře , v e k teré m má te svůj prog ram a p ak se mů žete na tyto obr ázk y odkazovat jednoduše, n a přík lad : t l a čí t ko 1 .o b rá z e k = " * \\ n a ct i . b mp" ;
B. Příloha: ASCII tabulka ;-) abcd efgh ijk lmnopqr stuv wxyz