VISUAL BASIC ~

ES EXCEL

k, vizsgak
P rofessionai
folyamok
Visual Studio Exchang~.Q.5 mok

IS09001

'

PROGRAMOZAS

adatbazls-kezeles . ~ prograrnnyelvek sz6v~gszetkesztes ~ ·tablazatkezeles elektrenikus levelezes ~ INTERNET

II,stb. vizsgakhoz

ljekoztat6n kat!
KNEL is megtartjuk!
CS,alogany utca 23. 457-6920
r--___

BALOGH GABOR

VISUAL BASIC , ES EXCEL , PROGRAMOZAS

COMPUTERBoOKS BUDAPEST,2004

A konyvkeszitese soran a Kiad6 es a Szerzo a legnagyobb gondossaggal jartak e!. Ennek ellenere hibak elofordulasa nem kizarhato. Az ismeretanyag felhasznalasanak kovetkezmenyeiert sem a Szerzo, sem a Kiad6 felelosseget nem vallal. Minden jog fenntartva. Jelen konyvet vagy annak reszleteit a Kiad6 engedelye nelkul barmilyen formatumban vagy eszkozzel reprodukalni, tarolni es kozolni tilos.

Tartalomjegyzek
A szerzo eloszava 1. Bevezetes a programozasba , .•............................................................................................... 1 3 3 3 4 .4 5 5 6 6 6 7 7 8 8 9 ~9 10 ll 14 16 16 18 18 19 19

© Balogh Gabor, 2000 Budapesti Ko~gazdasagtudomany, es .Allamigazgatasi Egyetem Tankonyve Keszult a BKAE Szamftastudomanyi .Tanszek gondozasaban Sorozatszerkeszto: Dr. Tarl6s Bela, kandidatus, tanszekvezeto Lektor: Dr. Quittner Pal, egyetemi tanar
, I ,

Elso kiadas, 2000. februar

ISBN: 963 618 229 9 ComputerBooks Kiad6 Kft. 1126 Bp., Tartsay Vilmos u. 12. Telefon: 375-1564; TelIFax: 375-3591 E-mail: info@computerbooks.hu http://www.computerbooks.hu Felelos kiad6: ComputerBooks Kft. Ugyvezetoje Borft6terv: Szekely Edith Nyomdai munkak: Pressman Bt. Dabas ©Kiad6:

1.1. A programozasrol altalaban 1.2. A programfejlesztes lepesei 1.2.1. A program megtervezese 1.2.2. A program epftese 1.2.3. A program tesztelese 1.3. Programfejleszto rendszerek 1.4. A Windows operacios rendszer mukodese 1.4.1. Ablakok 1.4.2. Esemenyek es iizenetek 1.4.3. Proceduralis kontra esemeny-vezerelt programok : 1.4.4. A Visual Basic mukodesi elve 1.5. A Visual Basic Integralt Fejlesztoi Kornyezet (VB IDE) 1.5.1. A Visual Basic lehetosegei.. 1.5.2. A Visual Basic (azaz a VB IDE) indftasa 1.5.3. A VB fejleszto komyezetenek elohivasa es kinezete 1.5.4. A VB fejleszto kornyezetenek megjelenftesi m6djai 1.5.5. A VB fejleszto kornyezetenek elemei.. 1.6. Mintapelda: Az elso program 1.7. A Visual Basic objektum-modellje 1.7.1. A Visual Basic objektumai : 1.7.2. Objektumtfpusok- objektumok 1.7.3. A Visual Basic esemenyek 1.7.4. A f6kusz 1.7.5. VB esemenyek ill objektumok esemeny-eljarasainak azonosftasa

2. A fejlesztokomyezet hasznalata
2.1. A Visual 2.1.1. 2.1.2. 2.1.3. 2.1.4. 2.2. A Visual 2.2.1. 2.2.2., 2.2.3. 2.2.4. Basic alkalmazasok strukniraja Fornfok " Standard modulok ' Projekt informaciok ", Objektum-tulajdonsagok beallftasa es a VB projekt fajlstrukturaja Basic fomenuje File menii Project menii . Edit menii , " View menii ,

21

,,1
,_1

,22

23
,.25

25 26 28 29

;:;:~: ~~~Isrr;::;:ti::::::::::::::::::::::·· ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::~~
2.2.7. Add-Ins menii ,..;,' 30

.....1. 6..1... 3.•. ListBox (-lista) vezerles .3..2.........keret) vezerles PictureBox (. Pelda mas tfpusti objektum-tomb hasznalatara .•...1... Az azonosft6k hasznalata 4.1. 5...5..... 3.2. Ciklusszervezo utasitasok 4.... Mintapelda (folytatas): A projekt es az interfesz form elkeszftese 2....•....2.. Allandok fogalma...5..•.....meghajt6) vezerles DirListBox (.3....45 ..1.....2..2...... A form lenyegesebb met6dusai...•..... Ertekad6 (..17. 5..........•.14...2.3.2..6..2.2.... Hiba-analfzis 5.•.7 folytatasa): Hibas a program! .•... 3.. A f6kusszal kapcsolatos esemeny-tfpusok 3.•.1.....•••....4.. 4...22.5.5....3..5... Hiba-ellenorzessel vegzett kezeles 5....6. 2....5...3... 6..1. A felhasznaloi interfesz form keszftese 2..•.•.....11..... 3.1..3. Mintapelda: A program specifikacioja es megtervezese 2.•.•..konyvtar) vezerles FileListBox (.4...conditional) utasftasok 4...... Programozunk.. 3. A tombok. Kifejezesek 4.....3....22......1. Az esemeny-kezelo eljarasok elnevezese 2... 3. 4. 6..21..1.....5....14. 2..1....... Programstrukturalas 4....1..•..6..6.. 3.1.. .. 3...••.2.•...6. Muveletek es operatoraik 4. A program-logikai hibak felderftesenek m6djai..16..TARTALOMJEGYzEK TARTALOMJEGYzEK 2...3..4. ComboBox (..4 folytatasa): A program-k6d elkeszitese ~.4..... deklaralasuk es hasznalatuk 4. Adatkonverzi6 4... 3....12...... deklaralasuk 4.....13.....3. deklaralasuk 4.. 124 125 126 127 A VB IDE hibakeresest tamogato eszkozei 5.. Hibakereses 5......2.. 6.........48 .... 3.1. . 4.. 3....... Kozponti hibakezelovel vegzett kezeles 5.. Fuggvenyek 5...2. A Resume utasftas 5... es az alapveto vezerlesek ......3....8. A szoveg-mezo fontosabb tulajdonsagai. 4...19.••..4.1..2.. 5...5....20.altalanos dial6gus) vezerles Timer (~idozito) vezerles Objektum-tombok 3....3. A hibakezelessel kapcsolatos opci6k 5..assignment) utasftas 4.3..... Azonosft6k Iathatosaga 4.18..22.... Vegrehajthato utasftasok 4.•. tehat hibazunk A program celja.6.. . 109 110 110 111 117 117 118 118 119 119 120 121 .•.14.15....•.raj I) vezerles CommonDialog (.reference) utasftas 4...2.....7..•... Hibakezelok: a futas kozbeni hibak kezelesenek eszkozei. utasftasok Label (.. Valtozok fogalma.......2...3... 3.. Programozasrol altalaban 4.... Mintapelda (2.. 3.. 6... Hivatkoz6 (...2.•... Csoporthivatkoz6 utasftas 4..... Hiba-informaciok: az Err objektum 5..40 . 3..•....5..szoveg) vezerles 3. 3.2..1..3.3...1 A program-hibak fajtai 5... 3. 121 122 123 123 124 ..48 49 ....•..........5...4.. Alapveto adattipusok 4. A formrnal kapcsolatos lenyegesebb esemenyek 3..' .. A program-strukturalo utasftasok 4.5.......•...45 ..49 51 51 51 52 54 55 56 56 57 58 58 59 59 60 62 64 65 70 70 73 74 75 76 77 79 80 82 82 83 83 83 84 85 3......7..1. 3........ A kozponti hibakezelo formaja Mintapelda (2........3.•...8..4.3.7.. Osszegzes.3... A form 3..5. szervezodese A program objektumai Kereses . A strukturalt programozas kodolas-technikaja Altalanos elnevezesi szabalyok 31 31 33 34 . A Basic alapveto nyelvi szerkezetei 4.1.....2.43 .1.. Alapveto algoritmusok 6.5.... 3.. 3.2...1..3..........1... Az IDE hasznalata ..•.1....•. A hibakezelesi m6d beallftasa: az On Error utasftas 5.. 3...5............2.. : 86 86 86 87 87 89 90 92 93 96 96 98 98 98 99 99 100 101 105 105 105 107 es -kezeles ......1.. A Visual Basic programuyelve 4....9..2...6....3.•..10. Eljarasok 4. Minimum-kereses Kivalogatas Eldontes Rendezes .•.3...1....2.....3....kombinalt lista) vezerles DriveListBox (.4.6..... Tombbe foglalt valaszto-mezok hasznalata 3..5.3.1... Azonosft6k elettartama 4..3....3. 11 iii .4.. 6....... Valtozok es konstansok hasznalata 4.. A program-k6d frasa 2.••.abra) vezerles CheckBox (~jelolo) vezerles OptionButton (...8.kep) vezerles Image (.....1........ 3... Felteteles (.. A formok fobb tulajdonsagai 3.3........ Mintapelda (folytatas): A VB projekt letrehozasa 2... Az ertekado utasftas Met6dus vegrehajtasa ("hfvasa") A kodolas formai szabalyai Altalanos tulajdonsagok Form (~iirlap) 3...2....•.3.nyom6gomb) vezerles Frame (.valaszto) vezerles Az egerrel kapcsolatos esemenyek TextBox (.2...2...•..cfmke) vezerles CommandButton (.....4...2.

. az Olvasonak kepesse kell valnia egyszeriibb.logikus gondolkodasra nevel.5.1.•......2...• ••..•.• 141 • : A kiinyv szerkesztesekor az alabbi szempontokat yettem figyelembe: a programozasban jaratlanok szamara is megfelelo bevezetest kell nyujtania..1.. 7.....1. MS Access adatbazis elerese Tablazat hasznalata RecordSet hasznalata 7...•.•.... hogy rnilyen celok erdekeben sziikseges vagy erdemes kiegesziteni az Excel '97 (.•.•...•.. aki a Windows programozasaba torteno gyors bevezetest 6hajt.ha hely hijan tobbre nem is futja ..•....•.•..2. Esemenyek..•. A RecordSet objektum-tfpus 7...•.•..2.....•..1..... • az Olvaso a "gyakorlat talajan allva" legyen kepes megismerkedni.......••...•....•. majd erre tamaszkodva bevezetest nyiijt a MS Excel tablazatkezelo programozasaba.•..•.Excel) hasznalataval keszftett tablazatat sajat programkoddal.. az ....•.. sot tobb szempontbol is hasznos: • • a programozas . Beepftett.•.... azonban semmikeppen sem hatranyos....2.•••.isual !1asic 6 fejlesztorendszer (..2... Java vagy C++) hasznalatanak megismerese es problemak altala torteno megoldasa e kepesseg fejleszteseben igen hasznos lehet....7.•...... gyakorlati reszehez segedanyagul szolgaljon.. felhasznalasuk technikajat peldakon keresztiil ismertetve.6.•... Az Excel programozasa •...•••••..... Power Point.1...••.•...2....•••.... valamint az objektumok hasznalatanak nagyrnervu hasonlosagat jelenti)..•.2........ Tovabbi programozasi lehetosegek .. Excel.•.legalabb raeremi modern szamftastechnikai fogalmakra..........utani szoveg vagy a megelozo fogalom konyvbeli roviditese vagy egy masik nyelvbeli megfeleloje .... Access. Az Excel programozasi fejlesztokornyezete 8. A Menii Editor hasznalata. hogy egy kozgazdasz-hallgatonak igazabol van-e szuksege a programozas-... ~ 130 130 132 :. Bar a programozds tanuldsa altalaban .2.. Adatbazis-kezeles 7.gyujtemenyek 8..objektum.6.kulonosen az abszolut kezdoknek ..••... UserFormok keszftese . A WorkBooks objektum 8.. Adatbazisokrol altalaban 7.1.. Az Application objektum .. Melleklet: 3.. • a konyvnek kepet kell adnia... : • • " Visual Basic beepitett fiiggvenyek .••...•.2.•..........•.... • a konyvnek a targyalt alapveto eszkozok es fogalmak referenciaszeriien pontos Ieirasat kell adnia... stb) szervesen beepitett programfejleszto eszkozeknek (ami a beepitett programnyelvek es a fejlesztokornyezetek teljes azonossagat.eleinte faradsagos..1. Data (. • JPE j6zan "paraszti" esz (az ember velesziiletett logikus gondolkodasra val6 hajlama) •• A .5.•..1.. A gyorsmenii aktivalasa 7.TARTALOMJEGYzEK 7...•...... Mintapelda: az Excel programozasa 1...7...... 8...•.... 8. hogy az Informatika alapjai c.•...2...•..2..3.••.2...•. C++ Builder.........VB) hasznalataval torteno keszitesere.... Sokszor felvetodik a kerdes.barmilyen nyelven tortenjenis . 161 165 .....••.•......adat-fogad6) vezerlesek 7..3......2.•....••••.. Eljaras / fuggveny ..•. a Visual Basic fejlesztorendszere az alapja a Microsoft Office programokba (Word.•. es hogy ezt rnilyen medon kell tenni a programba epftett Y.•...•.....adat) vezerles 7.VBA) programfejleszto kornyezetben.2. 8.4..isual !1asicfor dpplications (..•.•••... Melleklet: 2. Menukezeles 7. Relacios adatbazisok 7...2. alaptantargynak a programozasba bevezeto..2.••.....•.•.4. 129 7.•...•. esemenykezelesi eljarasok 8......es/vagy esemeny orientalt programok keszfteset tamogato fejlesztoeszkozokkel torteno munka hatekonyan fejleszti a rendszerszemleletfi attekintdkepesseget....•.. A konyv a MS Visual Basic 6 programnyelven torteno programozas alapjaival foglalkozik..•.•.8.8. Visual C. Az Excel objektumai 8....1.1... A WorkSheets objektum 8..2.3..9. Meniik hasznalatat bemutat6 peldak .. A Microsoft Jet adatbazis-motor 7. 7....••... ezert haszonnal forgathatja barki. A valasz: egyertelmtien igen...••. Melleklet: Irodalomjegyzek Targymutatd Elnevezesi konvenci6k Visual Basic "Szaksz6tar" Fontosabb ~...•.6.•••. Az adatbazis-kezeles technologiaja 7.•.es felhasznaloi fuggvenyek 8..••.4. Beepftett fuggvenyek hivatkozasa programban 8.. 167 = -iv .•..•. Data-bound (... Delphi. Menu-esemenyek programbeli feldolgozasa 7.•. Semmilyen specialis elokepzettseget nem igenyel (csak nemi JPE-t)....••.2. MS Excel adatbazis elerese 8.. vagy . igy barmelyik ilyen fejlesztoeszkoz (peldaul a Visual Basic.•..•.....••... A DialogSheets objektum 8. es kivaltkepp a Visual Basic-ben torteno programozas tanulasara..2.•..6....••. az MS Windows operacios rendszer (-" Windows) alatt mukodo programoknak a Microsoft Y.133 133 134 134 134 135 136 136 137 138 139 139 139 140 141 142 143 145 146 146 148 151 152 154 154 155 155 156 157 159 A szerzd eldszava E konyv elsosorban a Budapesti Kiizgazdasdgtudomdnyi is AUamigazgatasi Egyetem elsoeves hallgatoi szamara keszult.4. A parbeszedes vezerlo-elemek programozasa 8.3. Felhasznaloi fuggvenyek hivatkozasa munkalapon 8.•.....

olvashat6k.1. E vegrehajtando alkalmazasi feladatok (roviden: alkalmazdsok. Nagyobb volumemi fejlesztesek soran erdemes a tervezes es az epftes minden fontos fazisaban ellenoriztetni a felhasznaloval gondolataink helyesseget. ismereteket tetelezhetiink fel a program hasznalojatol (hiszen ez a program felhasznalobarat jelleget nyilvanvaloan befolyasolja). Az ilyen forrnaju hivatkozasok az Irodalomjegyzekben szerepl6 megfelelo konyvre utalnak 3 . A konyv nem szeplrodalom. vagy egy mindezeket a funkciokat integralo fejlesztorendszer segitsegevel). ezert mindig j61 meg kell gondolni. ad hoc feladatok). es attekinti a Visual Basic programfejleszto kornyezetenek elemeit. azonban a nem egyertelmuen fordithato vagy egyszenien csak fontosnak tartott angol . azonban erdemes feljegyezni oket. amire fokozottan igaz. a bemutatott vagy a csak hivatkozott. es vegul tanszeki kollegaimnak. akkor papfron). Legyen ra felkeszulve. Ez kulonosen Igy van. a programozas tanulasa is igenyli a tapasztalatok leszurodeset. tartalmilag egymashoz az elso ket fejezet a programozas es a Windows . amiket csak kesobb targyalunk kimeritoen. . azonban ezert az idoszakert kesobb feltehetoen kello karpotlasul fog szolgalni a kreativ munka orome. dr Quittner Pallektornak a szinte mindenre kiterjed6 gondossagaert. amig az egyeztetes eredmenye egy uj program valtozat kibocsatasarol sz616 dentes. A konyv szovegeben es a programokban . nem sokat ismetel. felhasznaloval val6 egyeztetes (ha nem azonos a keszitovel es egyaltalan elerheto).Jerovidfteni" a tanulas folyamatat: a rendszeresseg tobbet er.Jelkivilaganak" bevezetojeul szolgal. - a Szerzo e-mail: gbalogh@cs.es hibafelderitesre szolgalo . most olvassa el az el/iszot! 1. A programozas gyakorlati "tudomany".az elobbi fejezetekben megismert eszkozokre es fogalmakra alapozva . fordito-. special is adatbeviteli. amit egyhuzamban vegigolvasva az ember minden titkok tudojava valik. programszerkeszto. Az installalasukra es a hasznalatukra vonatkoz6 reszletes utasftasok a lemez ReadMe fajljaiban . akik a konyv szuletese korul babaskodtak: Baldzsne Mocsai Andreanak az alapveto algoritmusokr61 sz616 fejezet anyagaert. de a lemezmelleklet altal kompletten tartalmazott mintapeldak mukodesenek es az oket megval6sft6 programok k6djanak szamitogepen.A SZERZO ELOSZA VA Ennek megfeleloen a konyv kapcsol6d6 reszbol all: • • • tobb kiilonallo. ha a programfejlesztes az alapjaul szolgalo munkafolyamatok teljes. Csa16dni fog az. a konyv jelentos reszeben a Visual Basic nyelvii programozas alapjait targyalja. A legkulonbozobb celu. a felhasznaloja szamara hasznos feladat elvegzese.programokaltal. mint egy mar meglevo testre szabasa. 1. Egy program keszitese soran eloszor az alabbi fobb lepeseket ismeteljuk: programtervezes (ha nem all rendelkezesre ezt tamogato szoftver. angolul: applications) az igen egyszeniektol (pI egy fizikai mennyiseg ertekenek mas mertekegysegbe torteno atszamitasa) a legbonyolultabbakig (pI egitestek palyajanak a meghatarozasa) igen sokfelek lehetnek. E konyvben a legegyszenibb programok elkesziteseneka gyakorlatat mutatjuk be.vagy reszleges iijraszervezesevel egyiitt tortenik. hogy megeri-e egy sajat program kifejleszrtejtese. amelyek miatt megis a sajat fejlesztes mellett dontunk.kulonosen kezdetben alapveto (es esetleg elkedvetlenito) hibakat fog veteni. Vegul koszonetet mondok mindazoknak.hu 2 mindaddig. hogy milyen jartassagot. Igenyli az Olvas6 aktiv kdzremfikddeset. Az e targykorben felmerulo kerdesek altalanos vizsgalata a Rendszerfejleszies (lasd: [If) szaktenilete. . hogy . hallgat6im kozul kulonosen T6th Peternek az altala igen szepen kidolgozott Tdzsdejdtek program kozreadasaert. hogy a tudas a reszletekben rejlik. szakkifejezesek magyar megfeleloit kulon is kigytijtottem (Iasd: 2.un debugger . Ezutan nekilathatunk a tenyleges programkeszfteshez.vagy megjelenitesi m6dok.akar editor programmal is . aki nehany napos intenzfv munkaval akarja . Felmertilhetnek azonban olyan specialis igenyek (pI jobb attekinthetoseg. akik rigolyaimat elviseltek. erdemes azt is atgondolni. vegul az utolso fejezet .az Excel-be epftett Visual Basic for Applications fejlesztorendszerben torteno programozashoz nyiijt rovid bevezetest. A programfejlesztes lepesei Ha mar kristalytisztan all elottunk a keszitendo program funkci6ja. de azert . Egy uj program kifejlesztese osszessegeben altalaban hosszabban tart6 folyamat es tobb koltseggel jar. fejlesztokornyezetben tOrteno alapos tanulmanyozasat es az onallo kidolgozasra adott feladatok megoldasat.MelLeklet). 1.bke. A konyv a szukre szabott terjedelme miatt igen "velosen" Irodott. programepites es teszteles (forrasnyelvii programkod-szerkeszto-.2. Bevezetes a programozasba Ne hagyjon ki egy patk6sziiget sem: ha meg nem tette volna. Mint minden gondolkodason alapu16 tudomany. A konyv Irasahoz a hivatkozott programok angol nyelvu valtozatait hasznaltam. A programozasrol altalaban A szamitogep-program celja altalaban valamilyen. Vadnai Szabolcs baratomnak es Juhasz Peter kozgazdanak eszreveteleikert es tanacsaikert. "testre szabhat6" kesz programok nagy valasztekban vannak a piacon.kulonosen a konyv elsf feleben elofordulhatnak olyan dolgok. es kristalytiszta megertesuk erdekeben visszaterni hozzajuk. A konyv lemezmelleklete a konyvben reszletezett vagy csak hivatkozott peldakat boseges kod-magyarazatokkal es vegrehajthato programjukkal egylitt tomoritett forrnaban tartalmazza. ilyenkor a labjegyzetek es a kommentek magyarazzak ugyan a dolog lenyeget.

vagy egy komplett.2. igaz. hogy a folyamat egesze a reszfolyamatok osszessegekent leirhat6 legyen (a lefras kulonbozo m6djait illetoen lasd az [1] konyv Rendszerfejleszies illetve Folyamatadaimodellezes fejezeteit).professzionalis feladatok megoldasara kepes fejlesztorendszerre valt. hogy kozben megtartottak az elodok 6sszes elonyos tulajdonsagait is. hogy a vele keszitett programok lassabban mukodnek. amelyeken belul mar nem tortenik adatbevitel. a nem interaktfv mtikodesu programok (a segedprogramok es a kotegelt feldolgozas kereteben mukodtetett programok) szamara szukseges osszes inforrnaciot viszont meg a program vegrehajtasanak kezdete elott meg kell adni ** A programozasban objektum alatt . majd ennek eredmenyekent milyen . amely egy val6s vilagbeli. azonban tobbnyire szamukra is specifikalhatok meg j6val a felhasznalasuk elott megadhat6 inforrnaciok (pI az opci6s lapok adatai). azon az aron. A p-nyelvu k6dok kulonbozo tipusu gepek kozotti hordozhatosaga (angolul: portability) miatt szamos korszeru forditoprogram rendelkezik (a natfv-fordftas kepessege mellett) a p-kodra torteno forditas lehetosegevel is es 1. Ez a VB-ben (es a hozza hasonlo vizualis fejlesztorendszerekben) az alabbi .3. - felderftese celjab61. majd azokat a processzorral vegrehajtassa. A mai fejlesztorendszerek hibafelderiteshez hatekony. programablak vagy maszk). milyen modon dolgozza fel ezeket a "bemeno" informaciokat. hogy a VB programok csigatemp6ja regen is csak a nagy szamolasigenyu feladatok vegzesekor volt szembeotlo (a tesztek kb ket nagysagrendnyi lassulast mutattak). 1. Az altala gyartott nativ program azonban onmagaban nem futaskepes. hogy az egyes vegrehajtando p-nyelvu utasitasokat clul>i natfv-kodu utasftasokra fordftsa.eredoen) a futas kozbeni hibak (nem megfelelo vagy nem kielegito hiba-kezeles miatt) 1. ha elobb a formra helyezzilk az osszes tervezett vezerloelernet. Ennek az volt az oka.azaz a keretul szolgalo form (iirlap. A program tesztelese A program tesztelese annak ellenorzesere szolgal. E program-vegrehajtasi m6dot a TV -komputerek idejen azok korlatos memoriaja es tarolo kapacitasa kenyszerftette ki. hogy a p-nyelv egyfajta gep-fuggetlen standardda is valt.megtartva elodjenek egyszeniseget es attekinthetoseget . A regen sokak altal lenezett. - A bemeno (input) adatokat bonyolultabb folyamatokban nem egy tomegben.Jcimeno" informaciokat allit elo es hogyan tortenik azok bernutatasa.3. hogy a programfejlesztoknek csak magara a megoldando problemara kelljen koncentralniuk. hogy a program a tervezettnek megfeleloen viselkedik-e. amelyeket es ahogy azt a feldolgozas modellje megszabja". azaz mi a feldolgozas algoritmusa. adathordozon terjesztheto telepito (. A VB 6-os verziojaba beleintegraltak egy natfv k6dot gyarto fordftot" is ugy. Az igazsag az. a nagy szoftvergyarto cegek egymassal versengve dobnak piacra egyre tobbet tud6. az MSVBVM60. Keszitoi szakitottak a Windows direkt modon tOrteno programozasanak rigorozus szabalyaival es egy sallangmentes programozast lehetove tevo fejlesztoi kornyezetet alkottak.2. hanem csak azokat es olyan sorrendben. hanem csoportokba rendezve kell megadni. A teszteleshez szorosan kapcsolodo tevekenyseg a feltart hibas mukodesek okainak a felderitese. es benne a folyamattal kapcsolatos felhasznaloi informaciocserere szolgalo vezerloelemek (objektumok") . • A PC-s vilag programjai altalaban csak azt a minimalis informaciot kerik a felhasznalotol. 1.2.1.installalo) csomag osszeallftasat jelenti.elso kozelitesben . A program epftese Miutan a tervezes szintjen veglegesitodik egy-egy (elemi) folyamat. azonban az osszetettebb nyeivi struknirak hibainak felismeresere nem mindig kepesek) a szemantikai hibak (amikor az algoritmus nem a celnak megfeleloen dolgozik: az algoritmus elvi hibajabol . minden szukseges kellekkel ellatott.vagy egy elvonatkoztatott dolog modellezesere szolgal *. A program megtervezese A tervezes soran meg kell hatarozni.2. de vegtelen egyszenisege miatt a TV-komputerek reven tomegek altal megkedvelt Basic programozasi nyelv a Microsoft tudatos strategiaja eredmenyekent napjainkra . hogy a program a mtikodese folyaman milyen informaciokat es azokat milyen m6don formal va (.es a rahelyezett vezerlo objektumok tulajdonsagainak beallitasa. VB nyelvu programk6d irasa a form egyes objektumaihoz rendelt bizonyos esernenyeinek kezelese celjabol.1. Az ilyen tobblepeses algoritmusokat celszerti olyan elemi reszekre bontani.tevekenysegeket jelenti: a program es a felhasznalo kozti kapcsolati felulet .olyan onallo egysegkent mfikodf es viselkedo programelemet ertunk. hogy a VB fordft6ja nem natfv (a gep altal kozvetlenul vegrehajthato) utasitasokka kodolta a program forrasnyelvu szoveget. a program-keszites kil16nb6zo fazisaiban egyre tobb tamogatast nyujto eszkozoket integralo fejlesztorendszereket. hanem egy kozbenso nyelvre (az tin p-k6dra). esetleg nem is mindet.tenyleges tartalommal nem feltetlenul kitoltendo . tin debugging (ertelem szerinti fordftasa: hibajavft6) eszkozoket nyiijtanak: a nyelv szabalyainak be nem tartasabol eredo un szintaktikai hibak (a vizualis fejlesztorendszerek sok ilyen hibara mar a beirasukkor figyelmeztetnek. elkezdodhet a beprogramozasa. * Ennek az tin interpreternek a feladata volt. a form. Programfejlesztd rendszerek Azert. es csak ezt kovetoen kezdilnk a tovabbi szukseges tevekenysegekbe. angolul: data interface) korultekinto es preciz definialasara.Jdbocsatasa" vagy egyszenien csak a program vegrehajthato valtozatanak az eloallitasat.letrehozasa. Ezzel kapcsolatban felhfvjuk a figyelmet a kapcsol6d6 reszek kozotti adatkapcsolatok (a kapcsolodasi feluletek. es a program a vegrehajtasakor a VB futtat6 magja e p-nyelvti programot interpretalta'. es annyira altalanosan alkalmaztak.reprezentalva) fogad. amely a soron kovetkezo feladat elvegzesehez szukseges.sokszor csak valtozok nevenek elirasabol . - Az a praktikus. a Windows eroforras-menedzsereivel kornmunikalo modulra. a mukodesehez szuksege van egy bizonyos. FEJEZET BEVEZETES A PROGRAMOZAsBA Az uj programvaltozat . aztan a megjelenitesre vonatkoz6 tulajdonsagaik modositasaval es eltologatasukkal a kivantra formazzuk oket.DLL fajlra 4 5 .

A Windows operacios rendszer nyilvantartast vezet az ablakokrol. a lista-. azaz az esemenyek bekovetkezese hatarozza meg. amelyek kezelese nem tiir halasztast. Az. stb kapcsolatos) esemenyek hosszu sorat valtja ki. programok (sot az akar egy programon beluli programszalak) egymassal parhuzamos. csak a legalapvetobb reszeinek a megismerese kb 3 h6napos intenziv tanulast igenyel. a kepek es ikonok. FEJEZET BEVEZETESAPROGRAMOzAsBA 1. ami a feliileten megjelenitheto. hogy eppen melyik (esemeny/uzenet-kezelo) kodresz fut. Proceduralis kontra esemeny-vezerelt programok A tradicionalis.es feldolgozasuk technikajanak a precfz ismeretet. 7 A felhasznaloval torteno informaciocsere mindig egyetlen .ill dialogus ablakok tehat ezen altalanos ablak-fogalomnak a specialis esetei. iizenetek j6 resze azonban nem hardverbeli valtozasoknak. hogy esemeny-vezerelt programokban altalaban nem egyertelmuen meghatarozott a prograrn-utasitasok vegrehajtasanak az iitja. hogy egyszeni.illetve allapotlefro attributumokat is tartalmaz.elvegzi az uzenetnek (az ablak tipusatol is fuggo) feldolgozasat. a kepmezok. Felmeriil a kerdes: mi a szerepe ennek az absztrakci6nak? Az ablak a grafikus felhasznaloi felulet megjelenitesenek es a felhasznaloval torteno kapcsolattartasnak a legelemibb eszkozekent szolgal. ezek szamara letezik egy kozvetlen informacios csatorna is.' A Windows direkt m6don tOrteno programozasaval kapcsolatos legszuksegesebb ismeretek egy vaskos konyvet toltenek meg (lasd: [8]). es jelentosen megkonnyitik a programozasi munkat. a hardverrel kapcsolatot tarto reszei generaljak. Esemenyek es iizenetek 1. amelyek nem nil gyakoriak: csak bizonyos tfpusii tevekenysegek eseten kovetkeznek be. Gondoljuk meg. tortenhetnek egy gep eleteben olyan fontos esemenyek. amelyek nem igenylik a Windows iizenetek tartalmanak.az eppen aktiv .3. Persze. A programok ill a programszalak kozti informaciocsere erdekeben ablakok kozt is tortenhet kommunikacio. Mtikodesi elvenek a megertese azonban nem igenyli ezeket a mely ismereteket.1. Mas sz6val ez azt is jelenti. egymast atfede ablak. az esemeny es az iizenet fogalmat. es legalabb alapveto objektum orientalt programozasi tudnivalokat igenyelnek (lasd: [10] ill [11]). az informaciocsere pedig iizenetek kozvetftesevel valosul meg.1. a kapcsolo-. teglalap alakti reszenek a reprezentansa. idoben megosztott vegrehajtasat lehetove tevo operacios rendszer. proceduralis prograrnnyelvekkel keszitett alkalmazasok csak az utasitasok elore meghatarozott utjan haladhatnak vegig. az ablakok kozott ala.vagy teljesen lefedettnek az eloterbe kerulesehez. hanem egyszenien programozasnak koszonheti a letet (pl az ablakok kozti kommunikacioval. hogy a reszben. Az ablak uzenet-feldolgozoja .es folerendeltsegi viszony is megallapfthato. de akkor ezerszamra. az egyes ablakokat egyedi egesz szamokkal azonositva. mely az egymassal parhuzamosan futo programok kozti adatcserehez szukseges. E rendszer. amelyet kovetoen az iizenet torlodik a sorb6l. hogy az eger kurzora a hatarain kfvul vagy belul van-e. Sot. akkor igen konnyu meghatarozni. de szamara szukseges feladatokat . 1. Az operacios rendszer a beerkezo esemenyeket uzenetekke formalva varakozo sorokba iilteti. 1.vagy felengedese. magat a Windows-t is ugy terveztek. az eger elmozdftasa) a Windows-nak 6 . A kommunikacios igeny jelzese esemenyek generalasaval. vagy az ablakok tijrarajzolasaval kapcsolatos esemenyfajtak illetve uzenetek). szoftvergyartassal foglalkoz6 cegek olyan programfejleszto eszkozoket keszitettek. Mar egy tires.4. iigyhogy a "gyerek" -ablakok csak a szulojuk "hasaban" helyezkedhetnek el. tulajdonsag. A Windows operacios rendszer mfikddese A felhasznalo szemszogebol a Windows egy grafikus felhasznaloi feliilettel rendelkezo. lathatoan eleg bonyolult: a szukseges eloismeretek birtokaban is. Az ablak teglalap formaja miatt azt is konnyu eldonteni. a valaszto-.helyes miikodesre kepesen megcsinaljon. es feldolgozasra a vele kapcsolatban sz6ba jovo program-szalakhoz es ablakokhoz kozvetfti (angolul: broadcasting). A Windows szamara azonban ablalc-sesx: lettek "bejelentve" a programablakokban latott kulonbozo tipusu mezok (az adatbeviteli-. de . hanem az. 1.ha nem is optimalisan. A program. A felhasznalo tevekenysegevel kozvetlenul kapcsolatos esemenyeket (pl a billentyiizet egy gombjanak a lenyomasa. Ez az esemenytipusok gazdagsagaban tukrozodik (trefasan azt mondhatnank: minden napra jut egy-egy). vannak olyan esernenyfajtak. ha van ket.4.2. hogy az esemenyek kelloen arnyaltak legyenek. es az operacios rendszer szamara uzenetekke formaljak (termeszetesen.ablakhoz kapcsolodik. A Windows mukodesenek megertesehez eloszor tisztazzuk az ablak. a nyom6gombok) es minden. azonban nem ez a kommunikacio jellemzo m6dja).4. Hogy a program ok kello erzekenyseggel reagalhassanak az operacios rendszer rezduleseire is. A Visual Basic mfikddesi elve Mivel egy atlag-felhasznalonak nem a Windows armigy is erzekeny lelkivilaganak a piszkalasa a celja. strukturalt. Ezzel szemben az esemeny-vezerelt alkalmazasokban a program egyes reszeit esemenyek aktivaljak. vagy egyik elttmtetesehez a kepemyonek mely reszeit kell a Windowsnak tijrarajzolnia. es a "gyerekek" meg a "szulok" bizonyos funkci6it (pl menujet) is hasznalhatjak. standard ablak megjelenftese is (aktivalassal es deaktivalassal.4.4. Ablakok Az ablak a grafikus felhasznaloi feliilet valamely konkret. ablak-rajzolassal.ha szohoz jut . Az ablak-nyilvantartas az ablakokrol a helyzet-koordinataik es meretuk mellett meg masfele.4.

kevesbe hatekony esemeny-kezelest eredmenyez. ami biztositja a kulonbozo programozasi fazisok (form-szerkesztes. mert kulonben elofordulhat.-programok hatekony modularizalasat (mas programokban felhasznalhato programkomponensek kesziteset a {. amely a program mukodese kozben magahoz vonja az esemenyek tobbsegenek a kezeleset.a Microsoft informacio eleresre szolgalo tij szabvanyan (flctiveX Data Object technol6gia) alapulo informacioszolgaltatoes felhasznalo komponensek kesziteset (amelyek reven nemcsak relacios-. A Visual Basic Integralt Fejlesztei Kornyezet (VB IDE) A VB olyan programozasi feluletet nyujto fejlesztoi kornyezet.shortcut reven tortenhet. E lehetosegek kozill csak az egyszerii-. A legujabb valtozata . dbra: A Visual Basic 6 integrdlt fejlesztokornyezetenek elemei (MDI modban) 8 9 . programosszeszerkesztes. hanem hierarchikus adatbazisok. 6-os verzioszarmi valtozatat) az indftasara szolgalo vb6.5.a nativ programk6d generalasanak a lehetosegevel .5.es felhasznalasat (ez az Qpen Qontrol Executable nevii szabvany tovabbfejlesztese) . es csak azokat hagyja meg a felhasznalonak. ezert standard m6don installalva (a konyv frasakor Iegiijabb. de nem erdemes. A Visual Basic lehetosegei Menubar A Windows egyszerii programozhatosaga iranti igeny a Microsoft ceget a VB-nek professzionalis fejlesztoeszkozze fejlesztesere osztonozte. am az alkalmazasok jo reszenel ez nem kizaro tenyezo.pi C++ nyelven . amelyek felhasznaloi szempontbol fontosak (amelyek az 0 szempontjabol informativak).a legtobb fejlesztorendszer altai ismert un ActiveX vezerlesek. forditas. Toolbox Form design ablak Form Layout ablak Toolbar sorok Project Explorer ablak Properties ablak 1. programiras.mi magunk frnank meg a szukseges. es tamogatja az alkalmazasok szeles koret.2. valamint az adatbazisok eleresere szolgalo felhasznaloi interfesz cehi objektumokat tartalmazo programok kesziteset targyaljuk.Options . vagy a DeskTop-ra helyezett . avagy a varazslo ablakaban Standard EXE .omponent Object Model szabvanyai szerint) . A Visual Basic (azaz a VB IDE) inditasa A program a Microsoft vizualis fejleszto eszkozoket tartalrnazo (es nem az alkalmazoi programokat magaba foglalo) programcsaladjanak egy tagja. sot tetszoleges informaciok is szolgaltathatokka es elerhetokke valnak.es dokumentumok keszfteset..mivel nem kepes figyelembe venni a keszitett pr-ogram sajatossagait .3. az egyszerii (standard) Windows programokon tul lehetove teve .sajat objektumtfpusok (tin Class-ok) letrehozasat . Indftasa tobbek kozott a Start gomb Programs menuje illetve Run parancsa altai. A VB fejleszto kornyezetenek eldhivasa es kinezete A fejlesztokornyezet kozvetlenul az elindulasa utan (a projekt-tipus kivalasztasat lehetove tevo varazslo kikapcsolt allapota eseten. FEJEZET BEVEZETES A PROGRAMOZASBA E fejleszto eszkozok a segitseglikkel keszitett programokhoz egy futtat6 magot kapcsolnak. mintha .t valasztva) alapertelmezesben az alabbi kepet mutatja: 1.olyan komponensek keszfteset. A Visual Basic egyike az elso i1yen elven megvalositott. integralt fejleszto kornyezetet (angolul: Integrated Development Environment) nyujto programozasi eszkozoknek.I.. valamint teszteles) hatekony elvegzeset. 1.5.exe fajlra mutate .vb6.vagy felhasznalo tfpusu WEB alkalmazasokban alkalmazhat6k. hogy egyes ot hasznalni akaro (nem MS programok) nem talaljak meg.1. az alkalmazas jelleget is figyelembe vevi: esemeny-kezelo kodokat. 1.a legtobb alkalmazasi teriileten mar gyorsasagban is felveszi a versenyt a legjobbakkal. lenyegeben azonos felhasznaloi interfeszen keresztiil) .exe nevii fajl a \Program Files-Microsoft Visual Studio konyvtar VB98 nevii alkonyvtaraba keriil. Ez a megvalosftasi mod ugyan .5. lasd: a Tools . 1.. Ettol el lehet terni. Environment lap When Visual Basic starts opciojat. amelyek szolgaltato.

vagy "szaraz"-) dokk kialakitasa es a bedokkolas automatikus..Jiajozhassanak". FEJEZET BEVEZETES A PROGRAMOZASBA 1. akar egy ablak keretehez belulrol ragasztottan.es az eszkozsorok kezelese a MS Office programjaihoz teljesen hason16. atmeretezheto ablak. mielott egy masikba kezdenek. Mivel csak az MDI programokban van egy olyan "szlilo" ablak. modosftasuk a Customize dialogus-ablakkal tortenik (ami a menu.programokban vezette be az eszkozsoroknak a kepernyon torteno egyszerii csoportositasa es gyors atrendezese celjabol. Ablakok dokkolhatosdga azt jelenti. A dokkolhato ablakok . nyomogombszenien mtikodtetheto eszkozok.6voda" kezeleset). ezert a dokkolasnak az ablak-keret belsejehez ragasztassal torteno megoldasa csak az MDI programoknal megengedett es ott is csak a dokkolhato "gyerek"-ablakoknak a "sziilo" ablakaval kapcsolatban lehetseges. gyorsmenujevel vagy a View . amiket a Microsoft az egyeb termekeihez. amelyek egyebkent a termek installalasakor automatikusan regisztralodnak). Az uszodokkok (hasonloan a dokkolhat6.Options menuvalasztas eredmenyekent megjeleno Options dialogus-ablak Advanced lapjan leva SDI Development Environment kapesol6val tortenik. hogy a menu a "gyerek" igenyei (a dokumentum altipusa) szerint kicsit m6dosul.Toolbars . az ActiveX vezerlesek az eszkoztar szabvanyos kiegeszftesei (a Visual Basic Learning Edition kevesebb-. azaz "uszodokkal" torteno megoldasa akar SDI akar MDI modban kivitelezheto. es a program menuje is ennek a szolgalataba van allitva.4.es az Enterprise Edition tobb hasznos. A vezerleseknek tobb csoportjuk van: a Visual Basic beepftett (.I.5. A VB fejlesztd kdrnyezetenek megjelenitesl modjai A Visual Basic 6 integralt fejlesztokornyezete ket megjelenitesi-hasznalati modban kepes miikodni: az alapertelmezes szerinti MDI (Multiple Document Interface).5. Az igazsag az.es eszkozsorok . annak "szaraz" -dokkok altal Ie inem fedett res zen tartozkodhatnak. stb) is magabafoglalo altalanosan alkalmazott ablakkezelesi technikava fejlodott. Az MDI medii programok (mint peldaul az MS Word. hogy az ablakokat kezelo program SDI avagy MDI modu alkalmazaskent rmikodik-e.csak a "szlilo" ablakan beltil. hogy egy program egyidejiileg csak egy. a Professional. amelynek tartalma is m6dosfthat6.. minimalizalhatok es maximalizalhatok. E fogalmat eloszor a Microsoft az 0ffice'97 .s. Killonbseg esak a fejlesztorendszernek a ket modban kisse eltero megjeleneseben. de azok az igazan fontosak.jo gyerekekhez meltoan . A menu. Beallftasa a Tools. 11 . de csak a "sziilo" program ablakanak keretei kozott. . hogy a program ablakan beltil minden dokumentum szamara egy "gyerek" -ablakot rendelnek (az ilyen programok Window menuje tamogatja az . amely a keszitendo program ablakainak fejlesztese folyaman hasznalhato. Excel stb) ezzel szemben megengedik a tobb dokumentummal egymassal parhuzamosan torteno foglalkozast ugy. A VB IDE az MDI mod nyujtotta lehetosegek kozul csak a hozza tartozo ("gyerek"-) ablakoknak egyetlen keret-ablakba (a VB IDE "sziiloi" ablakaba) foglalasat. A VB fejleszto kornyezete jeleniti meg: . Az MDI modti alkalmazasok nemdokkolhato "gyerek" ablakai ellenben . de aktualisan szabaduszo ablakokhoz) a bedokkolt osszes ablakkal egyutt a kepernyd tetsz/ileges helyere ehiszrathato. Az MDI programban mindig egy "gyerek" aktiv. Meg az is megtortenhet.es menuje teljes mertekben az aktualis dokumentum szolgalataba van allitva. A VB fejlesztf kornyezetenek elemei . amelyen belli I mozoghat az osszes hozza tartoz6 "gyerek". A "gyerek" -ablakok mozgathatok. de mostanra az egy tornegben val6 kezelesuket (atmeretezes. es a kepemyo tetszoleges helyere usztathatok. rnozgatas. illetve az tin third party cegek a sajat programtermekeikhez kapesol6d6an adnak.intrinsic) vezerlesei. Ismet egymas kozelseget vagy egy "szarazdokk" biztonsagat kivanva elegendo egymashoz vagy a parthoz uszniuk: a megfelelo ("uszo".Customize . specifikalasat az Options 1.5. de hatassal van az ablakok un "dokkolhatosagara" is.az egyetlen bezaro gombot tartalmazo cimsoruknal fogva az eger bal oIdali gombjaval elhuzva oketelhagyhatjak dokkjukat. Eszkoztar (toolbox): olyan dokkolhato es atmeretezheto ablak. hogy a fej Iesztorendszer altal kezelt "dokumentumok" (azaz a VB eseteben: a fejlesztett programok) kezelese szempontjabol a ket mod kozott nines alapveto ktilonbseg.az alabbi ablakokat programablakanak cimsora alatt Meniisor (menubar): fixen a fejlesztorendszer megjelenftett sor. Eszkozsor (toolbar): a fejlesztorendszer funkcioinak gyors eleresere szolgalo nyomogombokat tartalrnazo dokkolhato.kulonboze mukodesi fazisaiban . E mukodesi modok alapvetoen annak specifikalasara szolgalnak. "szarazdokkban" megjelenitodni. es az ilyen programok kenytelenek valamilyen formaban lezarni az aktualis dokumentummal valo foglalkozast. Az SDI modban miik6do programok (mint peldaul az MS Paint) ablaka. A VB IDE a fejlesztoi kornyezet ablakai dokkolhatosaganak dialogusablak Docking lapjan teszi lehetove. A dokkolasnak ablak-csoportositassal. amelynek tartalma m6dosfthat6. Kivetel erositi a szabalyt: az eszkozsorok (amelyek ablakaban a cimsort duplavonal helyettesfti) csak szarazdokkba (SDI modti alkalmazasokban pedig kizarolag a programablak menusora ala) dokkolhatok. vagyaz SDI (. tobbsegukben a felhasznaloi interfesz elemek prototipusaul szolgalo. Ezert eloszor e fogalmat kell tisztaznunk. az tin vezerlesek tarhazaul szolgal. menu altal erheto el).vagy akar tobb dokumentummal is foglalkozhasson-e. hogy az ilyen ablakok kepesek akar egy csoportkepzo ablak "uszodokkjaba" foglaitan. az eszkoztar fix elemei.ingle Document Interface) m6dban. hogy ott szabadon es egyrnastol fiiggetleniil . tovabbi ActiveX vezerlest is tartalmaz. 10 Az ablak-dokkolas ket Iehetseges modjanak az alkalmazhatosaga altalaban attol fiigg.es az azon belul torteno kezeles lehetosegeit hasznalja ki.. ablakainak nemileg eltero kezeleseben es egy-ket apro IDE kezelesi elteresben mutatkozik: a benniik rejlo lehetosegek meg nincsenek teljesen kiaknazva.

akkor valahanyszor modositanunk kellene a vezerlesen. ugy. paranesa altal felhfvott Components dial6gusablakban teheto meg. amely az egyes iirIapok sziluettjet mutatja. de azert j61 hasznalhato editor atmeretezheto ablaka. amelynek kinezete eltero a VB fejlesztorendszerenek SDI ill MDI m6dban torteno uzemeltetese eseten. amennyiben az eszkoztarba illeszthetok es bizonyos tekintetben hason16an kezelhetok. az urlap-tervezo ablakon beliil lathato maga az iirlap. dokkolhat6 es atmeretezheto ablak. valamint az eszkoztar elemeinek hasznalatat a fejleszto-rendszer hasznalatanak targyalasakor mutatjuk be reszletesen. Minden egyes komponens egy • projekt eredmenye. Objektum-attekinto ablak (object browser): az aktualis projektben hozzaferheto objektumokr61 rendszerezett attekintest ad6 eszkoz cfmsorral (abban rendszermenii-.az ablak tfpusara uta16 Project szocskat kovetoen . Az urlap-tervezo es a kod-szerkeszto ablak. atmeretezheto es dokkolhat6 ablaka. Az iirlap merete a kereten lathato harem kitoltott atmeretezo negyzetek elhuzasaval m6dosithat6. View Code ill View Object nevii nyomogombokkal is vegezheto. Ie kene zarni a tesztelo projektet.ugyanabban a sorbanaz illeto tulajdonsagerteket tartalmazza. ahogy azt majd . Tulajdonsagok ablak (properties): az aktualisan kivalasztott objektum (form vagy vezerles) tulajdonsagainak listajat tartalmaz6.a vezerles kibocsatasa utan (lasd: 1. A lista ket oszlopos: az elso a tulajdonsag nevet. egesz pontosan: egy tij ActiveX vezerlesnek) az eloallitasa.az aktualis projekt nevet tartalmazza.az ablak tartalmara utalo 12 - Ked-szerkeszto ablak (Code Editor): a program irasat tamogato egyszerii. dokkolhat6 es atmeretezheto ablak. Az iirlap-sziIuettekkel kapesolatban egyetlen miivelet vegezheto: az egerrel torteno elhuzas. atmeretezheto es dokkolhat6 ablakok. Ezen konnyit a projektek egyideju hasznalatra torteno megnyitasanak a lehetosege. minimalizalo ill maximalizalo valamint bezaro gombbal) megjeleno. FEJEZET BEVEZETES A PROGRAMOzASBA - a tervezo-eszkozok (~designers) hasznos segedeszkozok bonyolult kapesolatok szemleletes specifikalasara. majd vissza kene terni a tesztelo projekthez (gondoljuk meg: esetleg egyetlen utasftas megvaltoztatasaert egy hosszti es unalmas miiveletsort kellene vegrehajtani). a masik pedig . fajtai: immediate. locals. vagy az F2 gombbal tortenhet.Object Browser menuvalasztassal.a beillesztheto objektumokhoz (. hogy az ut6bbi ket miivelet az ablak cimsora alatti elso ket. tovabba hogy a Properties ablak mindig az aktualisan kivalasztott elemre vonatkoz6 informaciokat mutatja. Figyelem: a fejlesztorendszer e modjaban az urlap-tervezo ablak helyenek az iirlap futas kozbeni kepernyobeli poziciojahoz nines semmi koze (Iasd aJorm layout ablaknal). Hibafelderitd ablakok (debugging ablakok.az aktualis objektum nevet tartalmazza. kozvetlenul alatta pedig egy legordltheto listamezo (un Combination Listbox) segiti a Projekt ablak aktualisan kivalasztott elemehez tartoz6 objektumok kozti valasztast. Peldaul. Hasonl6an az tirlap-tervezc ablakhoz: nem dokkolhat6. cimsort (de abban esak bezaro gombot) tartalmaz6. Urlap-tervezo ablak (form designer): olyan atmeretezheto. ugyanis barrnely projekt latja es akar forrasnyelvi szinten is hasznalhatja a vele egyidejiileg nyitott (azaz a Project Explorerben listazott) projektek komponenseit (termeszetesen esak helyes specifikalasuk eseten es egy apr6 feltetelt betartva: be kell zarni a hozzajuk tartoz6 fejlesztoi ablakokat). dokkolhat6 es atmeretezheto ablak. azonban az iirIapok futas kozbeni helyet tenylegesen az iirlap-ablak fejlesztes kozbeni helye szabja meg. menii vagy a Toolbox gyorsmenujenek Components.insertable objects) hason16an -. Hasznalatukat egy kifejezetten ezzel foglalkoz6 fejezetben. watch): a program tesztelesekor a kod-szerkeszto ablakkal egyutt a hibak felderitesere j61 hasznalhato. Ha a vezerlest kesz "binaris" formajaban illesztenenk a tesztelo projektbe.. Figyelem: az ablak esak a fejlesztorendszer MDI medii tizemeltetese eseten mukodik. atmeretezese az ablakok szokasos atmeretezesi technikaja szerint tortenik. Elohivasa vagy a View .. es hogy az atnevezes miivelete a Windows Explorerhez hasonl6an is tortenhet (a kivalasztast kovetoen a nevre torteno kattintassal kezdemenyezve). ugyan SDI m6dban is elohivhato. Urlap-elrendezes ablak (form layout): az aktualis projekthez tartozo iirlapoknak a program futasa kozbeni kepernyon torteno elhelyezeset segito. reszletesen nem foglalkozunk veliik. a komponensnek megfelelo checkbox (kapesoI6) kipipalasaval. Az eszkoztar bovitese/modosltasa a Project . a megfelelo iirlap nevevel.Components . a kapesol6d6 elemhez (esetleg) tartoz6 programk6d ill ablak elohfvasa. kulon ismertetjiik. mely lehetove teszi a lista egy elemenek kivalasztasat.1. Megjegyezziik..2 fejezetresz) .a felhasznaloja is tenni fogja. Az ablak az aranyokat tekintve korrekten mutatja az igazi iirIap kepernyon elfoglalt helyzetet. Properties szocskat kovetoen . ezek azonban esak annyiban tekinthetok vezerleseknek . hiven tukrozve annak futas kozbeni kinezetet. mint pi az elem elmentese. Projekt ablak (project explorer): az aktualis fejlesztomunka soran keszulo vagy felhasznalt projektek es projektelemek hierarehikus listajat tartalmaz6. az eszkoztarban is hasznalhato eszkoz prototipusanak ("sablonjanak". azonban lehetnek olyanok. A legegyszeriibb alkalmazasok egy-komponensiiek. de nem dokkolhat6 ablak. az adott elemmel a menii vagy az elemhez tartoz6 gyorsmenii altal hozzajuk kapesol6d6 funkei6k kezdemenyezeset. meg kellene nyitni a vezerlest letrehozot es a valtoztatasok elvegzese utan elo kene allitani a vezerles uj "binaris" valtozatat. SDI modu hasznalatakor az iirlap-tervezo ablak maga az iirlap-terv. amelyek mas komponenseket esak felhasznalnak. A fejlesztorendszer MDI modu hasznalatakor az iirlap-tervezo ablak az alkalmazas kepernyoinek (azaz a program felhaszndloi interfeszenekt vizualis tervezesere szolgalo beepitett tervezoeszkoz ablaka. A lista esak azokat az objektumokat mutatja (r6luk tobb- 13 . Az ablak cfrnsora . a feladatunk lehet egy. es cfmsora is ugyanolyan tartalrmi es funkciojii. A fejlesztomunka a kifejlesztendo alkalmazas komponenseinek eloallitasabol all. Az ablak cimsora .. Tesztelese celjabol egy masik projektben hasznaljuk. Figyelem: a fejlesztorendszer e modjaban ez az ablak szabja meg az iirlap futas kozbeni helyet. atnevezese.

hogy a fejlesztokornyezet kinezete az 1. a . menuvalasztassal felhfvodo References dialogusablak segitsegevel "bejelentettiik". Vegye eszre. Elindftva az IDE-t allftsa be az MDI megjelenftesi modot es a Standard EXE opciot. Elinditasat kovetoen e program bekeri a felhasznalo nevet. A "gyujto" nevenek a dialogusablak Project/Library feliratu legordftheto Iistamezejeben torteno kivalasztasa utan a bal oldali. Mlntapelda: Az elsd program Hogy lassuk a VB IDE altali programozas hatekonysagat.Caption="Hello. 3. 15 sorara kattintas utan valassza a lista 2 . tij konyvtarat es fajlnevekkent pedig ugyanazon (kiterjesztes nelkuli) nevet adjon meg! a program kesz is! A fejlesztorendszer ekkor nagyjabol az alabbi kinezetu: Private sub Form Load 0 Labell.oveget megjelenlto un cimken. VB-be epftett objektumbol all. akkor a sarga kerdojelet abrazolo Help-gombra nyomva az on-line Help megfelelo lapja jon elo. Ezek barmelyikere kattintva roluk az ablak also res zen tovabbi. End Sub " + rnputaoxjvxeren 1. es egy sereg ezek altal. Az objektum-dttekintd az obiektum-orientalt programozas melyvizein nem jaratosak szamara is hasznos objektum-informaciok (fgy pI a VB eloredefinialt konstansnevei) attekinteseben es kodablakba torteno masolasaban nyujt tenyleges segitseget.isual !l.normalis allapotaba. amelyek "gyiijtojenek" (pontosabban: objektumkonyvtaranak) eleresere (azaz az altala tartalmazott objektumok hasznalatara) vonatkozo igenyilnket elozoleg a Project .. es letrejon egy atmeretezo negyzeteket is tartalmaz6. es az eger kurzorat mozgassa az tirlap-terv fole (kozben vegye eszre.asic for Office dpplications programfejleszto kornyezetekben hasznalhato objektumtfpusokat (pontosabban: osztalyokat) tartalmazza. A Copy to Clipboard gombbal vagy a gyorsmeniivel a kivalasztott elem a Clipboard-ra masolhato. es ha teljesen kimerito targyalast igenylunk. A Properties ablak Alignment sorat! 14 Most inditsa el (.References . Az ablak bezarasaval vagy a toolbar End gombjaval a program futasa leall (az IDE program-inditast megelozo allapotaba visszakeriilve). hogy aztan udvozletbe illesztve jelenftse meg azt.es ugyanazon sajat.. ablak) ~u~odesbe hozott lathatatlan. A VBRUN nevii a VB fejlesztesu programok futas kozben is elerheto osztalyairol ad informaciokat (ez a gyiijto tartalmazza peldaul az osszes VB-konstanst). dbra kinezetehez hasonlo legyen. nehany soros informaciot kapunk. majd hajtsa vegre az alabbi lepeseket. Duplan kattintva a Properties ablak Caption soranak jobboldali reszere a kiemelt hatterszfmi Form1 szot frja feliil a Hell6 program szoveggell 2. egyelore meg nem sokat torodve a dolgok rniertjevel: 1. bal-felso sarkaban Labell szoveget tartalmazo teglalap. Kattintson az eszkoztar Label gombjara (aminek eredmenyekent az benyomott allapotuva valik). Ezeket vizsgalgatjuk a tovabbiakban. hogy az eger-kurzor mikor valt at Precision Select tfpusiiva). mig a VBA a Y. a jobb oldali mezo a leirasara szolgalo informaciokat es a vele kapcsolatban vegezheto tevekenysegeket listazza.Center . a szoveg-kurzort a masodik sor legelejen villogtatva.futtassa) a programjat a toolbar Start gombjavall A megjeleno alabbi bal oldali dialogusablakba Ediimer bdcsi szoveget Irva es az OK-ra kattintva a jobboldali ablak valik lathatova. Jrja be ide ezt: Labell.nyilla). ~s annak bal-felso sarkatol a jobb-also sarkaig huzza el az egeret a bal-gombjanak lenyornasa mellett. "+InputBox("Kerem a nevet".Caption =-"Hel16.6.e:o!lI a program-ablak). az eger-kurzor visszavaltozik Normal Select tipusuva . Szemeljen ki egy lehetoleg szimmetrikus teglalap alaku teriiletet az iirlap belsejeben. dbra: A "Hello" program miikodtetese soran megjeleno ablakok A program nehany lathato objektumbol (pI a sZ.vagy koddal (pI !npu!Box. Classes nevii listarnezoben kijelolve egy objektumtipust.I. A VB nevii "gytijto" a standard Visual Basic-. "Nev megadas")+"!" egul mentse el alkotasat a toolbar Save Project gombjaval kezdemenyezve. mindket dialogusablakban egy. 2. hogy az eger-gomb felengedesekor az eszkoztar Label gombja visszaugrik . FEJEZET BEVEZETES A PROGRAMOzAsBA kevesebb informaciot nyujtva).. a teglalap altal Ie nem fedett reszere megjelenik a kodablak.Hello" -t. elkeszitjuk a programozasi nyelvek tankonyveinek szokasos elso programjat. Duplan kattintva az urlapnak egy.

tevekenysegeik. de a nyilvantartas akar bovulhet is (letrehozott uj objektumokkal). nem az ablak-bezaro gomb kattintds esemenyenek kezeleset vegzo. amelyen azt vegre ke11 hajtani.1.es esemeny-kezelo halmazzal rendelkeznek. es mas az opci6k beallftasara szolgalo ablak bezarodasanak konfirmalasahoz). Sot. Figyelembe veve az egyes objektumtfpusokhoz kapcsol6d6 tevekenysegek nagy szamat es bonyolultsagat. hanem a munka elvegzese annak az objekturnnak a feladata. Az emlitett programban peldaul egyaltalan nem kell foglalkoznunk a cfmsor gombjaival. valamint bezaro gombjai is objektumok. De hogy a program hasznalojanak lehetoseget biztositson peldaul az ablak-bezaro gombra kattintaskor a bezarhatosag konfirmalasara (ahogy azt az Office alkalmazasokban megszoktuk). a tulajdonsagokehoz hasonloan.csak a Visual Basic-ben letezo esemenyt. ugyanis kialakitasukat a Visual Basic keszitoi a felhasznaloi igenyek oldalarol kozelitettek meg. Ez azert praktikusabb. Sot.4 fejezetresz) a "sajat" objektumaival kapcsolatban azok igenyeinek jobban megfelelo esemenyeket es belso iizeneteket hasznal (a Windows-esemenyek ujrastrukturalasa es elofeldolgozasa altal). onallo cselekveseik (.parameterkent az egyes objektumok esetJeg eltero ertekii tulajdonsagait hasznalja (ahogy az urlap rajzolo tevekenyseg-eljarasnal lattuk). de az is nyilvanvalo. vagy letiltasarol.vegrehajtasa kozben . az 1. ha nyilvantartasuk az egyes objektumtipusokhoz (es nem az egyes objektumokhoz) kotodo. 17 . Ezzel szemben az azonos tipusu objektumoknak a cselekvesi lehetosegei. amelyeknek bizonyos tulajdonsagai csak a program futasa kozben allfthatok.azonosfthatosaguk erdekeben . 16 A Visual Basic keszftoi minden "sajat" objektumtipus szamara definialtak tulajdonsagokat.4 fejezetreszben probaltunk raereztemi arra. ezek a program futasa kozben nem is bovfthetok. A ket nyilvantartas nem szuksegkeppen egyezik meg.es modjai lenyegeben azonosak. azert a Visual Basic keszitoi definialtak egy olyan . Utaltunk ra. hogy az egyes cselekvesi m6dokat megval6sft6 programk6dokat nem kell objektumonkent ismetelni. Tehat. tehat tudja. A Visual Basic objektum-modeUje Az 1. amennyiben a tevekenyseg-eljaras .4.form) es a rahelyezett. alapertelmezett kezelest vegzi. hogy a Visual Basic egy lenyegesen egyszeriisitett esemenymodellel dolgozik. vannak olyan objektumtipusok is.1.7. hanem csak utasitast ad neki: .mit" kell csinalnia. es azt is csak akkor. Ezek az objektumok j6val osszetettebbek a Windows programozasanak legelemibb szintjen elerhetoknel. de ktilonbozo konkret objektumok tulajdonsagait is kulon-kulon kell tarolni. hanem a Windows elemi . A Visual Basic csak az altal a nyujtott komplex objektumok programozasat igenyli. hogy a "Do you really want to quit?" kerdesnek az elozo peldaban latott InputBox fuggveny segitsegevel dialogus-ablakban torteno megjeleniteset kovetoen a valaszt feldolgozva a futtato magot ertesitheti a program befejezodesenek engedelyezeserol. lgy peldaul. ha szamukra az alapertelmezettol eltero viselkedesmodot szeretnenk eloirni.az alkalmazasfejlesztes igen nehez volna. A Windows esemenymodelljenek emlitett egyszertisitese abban nyilvanul meg. Mivel azonos tipusu objektumokhoz akar eltero esemeny-kezelesi modok is definialhatok (gondoljuk meg: mas esemeny-kezeles szukseges egy alkalmazas keretekent-. hogy a Visual Basic . egy iirlap megjelenitesekor az iirlap rajzolo tevekenysegeljarasa annak Left es Top tulajdonsagait a rajzolando ablak bal-felso sarkanak kepernyobeli poziciojakent. peldaul. ezek kezeleset a futtat6 mag maga intezi el.Ablakoml Zard be magad!". minimalizalo. A Visual Basic objektumai A Visual Basic-ben fejlesztett alkalmazasi program egymassal kapcsolatban allo. A kulonbozo objektumtipusok termeszetesen mas-mas lulajdonsag-.7.szinte tetszoleges medon valtozhat: meglevo objektumok rnodosithato tulajdonsag-ertekei megvaltozhatnak. programozas utjan . elteres csak annyiban lehet. hogy az objektumok a tevekenysegeiket onmagukon vegzik. mert sajatmagaval minden objektum tisztaban van.es maximalizalo.objektumai. amit a futtato mag general a bezaro-gornbot tartalmazo iirlap szamara. szaknyelvre fordftva: metodusaiki es a veluk kapcsolatos esemenyekre adott valaszaik (. ezert elegendo. szoveg megjelenitesere szolgalo cimkemezo (~ label).a programozast a Windows altai lehetove tett legelemibb szinten vegezve . hogy nem keyes memoria-megtakarftast eredmenyez az. csak nem a Visual Basic direkt kezeleseben levok.6 fejezetresz programjaban VB objektum az interfeszt biztosito iirlap (. a Width es Height tulajdonsagait pedig az ablak ~eretekent hasznalja. Nem egyik objektum dolgozik a masikon. Az Olvasora hagyjuk annak a meggondolasat.esemeny-kezel/i eljarasaiks vannak. futtato magban levo programkod zarja be az ablakot. lathato.nevvel rendelkeznek). amelyeket az objektumhoz kapcso16d6 tevekenysegek parameterkent hasznalnak fel.futtato magja" (lasd: 1. tevekenyseg. A VB futtat6 magjanak nyilvantartasa az IDE fejlesztesi valtozatanak tartalmaval inicializalodik. Az iirlap cimsoranak rendszermenii-. hogy . Az objektum-orientalt programozas egyik legalapvetobb elve az. de azt kovetoen . Igy peldaul. hogy . Programozoi kezeles hianyaban a futtato mag altalaban az objektum tipusanak legmegfelelobb. Ezert a programfejlesztes kozben letrehozott objektumok jellemzoirol az IDE. e fejezetresz az ennek alapjaul szolgalo objektummodellrol es az esemenymodellel val6 kapcsolatarol sz61. a program futasanak fazisaban pedig a VB futtat6 magja vezet nyilvantartast (az objektumok . hogy ugyanez vonatkozik az objektumok alapertelmezett esemeny-kezelo eljarasaira is.mijevel . hogy az azonos tipusu.aform reszekent automatikusan letrehozott . Az urlap programozojanak lehetosege van erre az un QueryUnload esemenyre torteno reagalasra az iirlaphoz kapcsolodo QueryUnload tipusu esemeny-kezelo eljarasban. peldaul ugy. FEJEZET BEVEZETES A PROGRAMOzASBA 1.az alkalmazas menetenek megfeleloen. akar sziikiilhet is (objektumok torlesevel). azert az esemeny-kezelo eljarasok nyilvantartasanak is a letrehozott konkret objektumokhoz kotodonek kelliennie. 1. Az egyes objektumoknak (mikent az embereknek is) tulajdonsdgaik. egymasra hat6 objektumok rendszere.

hogy az aktiv formnaknincsen egyetlen.4. billentyiizet. lasd: 3.1) alkalmazasaval. A f6kusz nemcsak felhasznaloi kezdemenyezesre. hogy "f6kuszban van". amely parameterkent kapja meg az esemennyel kapcsolatos osszes kiegeszito informaciot.vagy vissza) lepegethetunk a formnak a fokuszt fogadni kepes objektumain (pontosabban. amelyek egy miiveletsor vagy folyamat resz.2) a prograrnnak a fejlesztorendszeren beIiili futtatasa eseten az abba epitett-. 1. Nem minden objektum kepes fogadni a f6kuszt (peldaul az idozitorol mar a neve alapjan is gondolhato. A f6kusz A Windows mukodtetese kozben egy iddben csak egyetlen ablak (. A Visual Basic esemenyek A Visual Basic fejlesztorendszerevel keszult program futasa kozben. hogy "nala van a f6kusz". hogy nines koze a billentyiizethez es az egerhez). vagy egy objektum megragadasa es leejtese). objekturn-krealasra szolgalo program-utasitas (lasd: 2.4. Megteheto terrneszetesen. futtato mag (lasd: 1.objektumok Az objektumiipus (mas neven: osztaly. A konkret tulajdonsagertekekkel es esemeny-eljarasokkal letrehozasa tortenhet az objektum tipusanak megfelelo rendelkezo objektumok IDE eszkoztarbeli vezerles IDE meniibeli parancs (kezdernenyezesere elinditott tin designer: plform-tervezo) osztalyra hivatkozo VB nyelvii. majd . amely a mezoben megjelenitendo szoveg karaktereinek megjelenitesevel kapcsolatos osszes formai jellemzot (a nyomdai font tip usa. amennyiben egy osztaly tagkent reszt vehet egy masik osztaly epfteseben. tevekenysegekkel es esemeny-eljarasokkal rendelkezo objektumokat altalanosito kategoria. A f6kusz felhasznalol beavatkozas hatasara torteno athelyezesenek m6djai: Osztalyok rnegtervezese illetve letrehozasa olyan program-tervezoi es programoz6i feladat. azaz a form van f6kuszban.Tab order) altai meghatarozott m6don (elore. akkor a tagkent torteno beillesztes az alkotoelemek szimpla atvetelenel tobb szempontbol is jobb megoldas: az objektumok tulajdonsagainak es funkci6inakjobb attekinteset teszik lehetove a tag valamely funkcio-rnodosulasa csak egyetlen osztaly modosftasat igenyli (a tag modositasa az ot befogad6 osztalyokat nem feltetlenul erinti) Az esemenyek kozott vannak igen egyszeriiek (pI kattintas). azonban ha egy osztaly tobb osztalyban is lehet tag. de a nev kialakitasa a VB altal automatikusan tortenik: az objektum never es az esernenytipus nevet alahuzas-jellel osszeilleszrve. de vannak olyanok is.5. akkor azt mondjuk. .7. melynek kialakitasa az objektumok egy prototipusanak a letrehozasa iitjan . Viszonylag egyszeriiek. ilyenkor a felhasznaloi input esemenyek magahoz a formhoz futnak be. A VB IDE eszkoztaranak beepftett. igy az is elkepzelheto. stilusa. Maga az esemeny-kezelo eljaras olyan standard VB nyelvii eljaras (lasd 4.3. Amikor egy objektum f6kuszban van. egyedi nevekkel vannak ellatva (pl Click. Hasonl6 okbol.vagy vegeredmenyeirol informalnak (pI az eger mozgatasa egy objektum felett.6. kapcsolatban keletkezo Windows iizeneteket (lasd: 1.4. "fokuszalhato" objektum hataran belul torteno kattintassal a Tab / Shift Tab gombok nyomkodasaval az tin Tab-sorrend (. Az osztalyok tobbnyire nem egymas melle rendelten leteznek. felhasznaloies/vagy fejlesztoi interfesszel rendelkezo objektumprototipusok. stb) tartalmazza. vagy egyszeriien.class) az azonos tulajdonsaghalmazzal.tfpusukra utalo. VB esemenyek ill objektumok esemeny-eljarasainak azonositasa A kulonbozo Visual Basic esemenyfajtak . A konyv csak az elso ket lehetoseggel foglalkozik Az akiiv form (~ active form) a fokusszal szorosan osszeftiggo fogalom. onalloan tortenf futasakor pedig a programhoz "csapott" a vele 1."ujracsomagolva" es Visual Basic esemenyekke forrnalva a program egyes objektumainak esemeny-kezelo eljarasaihoz kiildi. csak a TabStop tulajdonsaguk altai ezt igenylokon. fejezet). Objektumtipusok .2). KeyPress). a masik. 1. hogy a tag-osztaly osszes tulajdonsagat es tevekenyseget az ot magaba fogad6 osztaly tulajdonsagai es tevekenysegei koze soroljuk.es eger hasznalatbol szarmazo esemenyek. rnerete.illetve ActiveX vezerlesei valojaban specialis. Ha egy objektum (form vagy vezerles) ilyen. FEJEZET BEVEZETES A PROGRAMOzASBA 1.4) fogadja. Ezeknek az eszkozoknek a programozasaval kapcsolatban fontos a f6kusz (.form) vagy vezerles lehet. Peldaul a dmkemezo (~label) osztalyban tagkent vesz reszt a font osztaly.I. akkor az aktiv form vagy maga az objektum (ha az objektum maga is form) vagy az ot tartalmaz6 form. kozottuk altalaban hierarchikus kapcsolat van.2. de fontos szerepet toltenek be a direkt felhasznaloi kezdernenyezes hatasara generalodo.a programk6dban torteno azonositasuk celjabcl. f6kuszt fogadni kepes objektuma sem. de amelynek megismerese e konyv kercteit meghaladja. amelyet ugyan a VB IDE fejlesztoi eszkozokkel hatekonyan tamogat.7.7. az alkalmazas igenyei szerint torteno feldolgozasuk celjabol.14. 18 19 .7. az egyes objektumok esemeny-kezelo eljarasai szinten nevvel vannak ellatva. ami fogadja a billentyiizettol es az egertol erkezo iizeneteket. osztalyok.focus) fogalma. tortenik. hanem erre szolgalo VB nyelvii programutasitas vegrehajtasa altal is egy rnasik (ot fogadni kepes) objektumra helyezheto.

Vegul belenezve a konyvtarba.fejezetben kulon is foglalkozunk). az IDE jelenlete nelkul is futtathat6 valtozata mar egy laza kezmozdulattal elkeszittetheto).Managing Projects fejezeteben olvashat6. teljes Iistajuk a VB on-line Help Using Visual Basic . az IDE altal nytijtott eszkozok segftsegevel (az egyes objektumokhoz illesztett esemeny-kezelo eljarasok VB .Jdszolgalo" ablakok hasznalatat tekintjiik at.JEGYZET 2.es fajlstruknirajat.onmagukban is futaskepes programok egy-egy VB IDE alkalmazasfejlesztesi projekt eredmenyei (lasd: 1. 2.1.5. Bar az IDE altal tamogatott hibafelderitesre a pelda eseteben nem volt szukseg (mert a hibajavitas az adott instrukci6k beturol beture torten6 ellenorzesevel volt vegezheto). A kovetkezokben eloszor a Visual Basic-ben fejlesztett alkalmazasok program. felhasznaloi interfesz celjara szolgalo formnak az alkalmazas logikaja szerinti sorrendu megjelenitesebol all. hogy egy ilyen stadiumban levo programb61 annak onalloan.es kezelessel az 5.1.egy konyvtdr elvet. Tartalmazhatnak meg olyan eljarasokat es un 20 21 . de meg fogjuk latni. E formok a felhasznaloval val6 kapcsolattartas celjabol adatbevitelre es/vagy megjelenftesre ill egyeb celokra (pl idozites) szolgalo objektumokat tartalmaznak. A fajloknak a fajlstrukturaban tOrten6 elhelyezeserol a programfejleszt6 szabadon dont. azonban praktikus betartani az egy projekt . A Visual Basic alkalmazasok strukttiraja A legegyszenibb.1.nyelvti programutasitasokkal torteno kitoltese reven). amelyek az objektumok standardt61 elter0 mukodesi modjat irjak Ie a VB nyelven. amelybe alkalmazasunkat elmentettiik: lathatjuk a letrehozott fajlokat is.Part 1 .5). A fejlesztokdrnyezet hasznalata E fejezetben a Visual Basic 6 integralt fejlesztokomyezetenek (IDE) az attekinteset a hasznalatahoz szukseges alapveto ismeretek osszefoglalasaval folytatjuk.vagy tobb.a mindig szukseges VB futtat6 magot nem szamftva . 2. Az alabbiakban a VB alkalmazas-fejlesztessel kapcsolatos legfontosabb programelemeket vessziik sorra. Az 1. de egy bonyolultabb feladat kidolgozasat mar nehez nelkule megiiszni (a hibafelderftessel.Programmers Guide . majd az IDE fobb meniielemeit es az el6z6 fejezetben isniertetett . A projekt a fejlesztese folyaman keletkezo informaciokat fajlokban tarolja. Formok Egy alkalmazas altalaban egy. a kiilonbOz6 fejlesztesekkel kapcsolatos informaciok j6 attekinthetosege erdekeben.6 fejezetben bemutatott mintapelda hfven tukrozi az alkalmazasok kialakftasahoz vezeto fo lepeseket (ugyan csak a fejlesztokornyezetben futtattuk alkalmazasunkat. . mindazokkal a fejleszt6 altal irt programk6dokkal.

ameIyek "csak" abban kulonboznek a formbeli "nem esemeny-eljarasok't-tol. ha a form-fail neve ugyanaz. A formok neve projekt szinten is egyedi kell Iegyen..<projekt-nev» Properties.5.egy modulnak is Iehetnek olyan eljarasai. Gyakorlas kedveert nevezze at az objektumot Mypicture-re (a Properties ablak Name sorara kattintas utan a sor jobboldali mezejebe MyPicture-t Irva)! 3. Megjegyezziik. es hogy . Elmentesuk a form-fajlokehoz igen hasonlo: a File .. es konstans-deklaraciokat is (lasd: 4.Open Project .. olyan eljarasokat.bmp Iegyen)! A tovabbiakban feltetelezzuk a VB fejleszto-kornyezetenek hogy az IDE az indulasakor uj projektbe kezd (lasd: 1. Ennek az tin form-fajlnak a neve nem feltetlemil kell megegyezzen a form azonosfto-nevevel... Az alabbi feladatsor vegrehajtasanak a celja nem egy rmikodo program elkeszitese. Viszont . Termeszetesen. ilzenet figyelmeztet is) es ekkor szukseg lehet azok direkt m6don torteno elohivasara.ugy alakitsa kia programelemek fajlstrukniraj at.3) amennyiben egy szovegbe egy masik.. meniielemei altal felhfvodo Open Project dialogusablak segitsegevel. vagy ha a tovabbiakban a projektben az addigit61 eltero neven akarjuk hasznalni) a File . A projekt. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A fuggvenyeket is. Projekt informaciok Projekt informdciok alatt az aktualis fejlesztessel kapcsolatos fajlok es komponensek fajlrendszerbeli helyeinek (. A modulok a legszimplabb editorral is szerkesztheto szoveg-fajlok forrnajaban tarolodnak es alapertelmezetten (hacsak explicit m6don maskent nem rendelkeziink) bas fajl-kiterjesztesuek. akar a fejlesztorendszer File . hogy a VB IDE standard frm fajl-kiterjesztesevel (. mint az altala hordozott form azonosfto-neve (a dialogusablak a fajl never elso alkalommal Igy is kinalja fel). Objektum-tulajdonsagok beallitasa es a VB projekt fajlstruktiiraja 2. 2. egyetlen iires formot tartaImaz6 projektben hajtsa vegre ill figyelje meg az alabbiakat: 1. de amelyeket .4) es 22 23 . .Save -cform-nev> * As . ahogy az helyes. valtozo tartalrmi szoveget kell behelyettesfteni. . Az extra-fail neve viszont meg ken egyezzen a formeval es kiterjesztese csak frx Iehet (egy pelda kapcsan hamarosan tapasztalni fogjuk.5.a program jobb attekinthetoseget elosegitendo .Save <modul-nev> As meniielemek altal feIhfvhat6 Save File As dialogusablak segftsegevel tortenik. egy projektbeli form tartalmazhat azonos nevii objektumokat). amelyek maguk ugyan nern esemeny-kezelo eljarasok.hasonloan a formokhoz . hanem hogy gyakorlatban tapasztaljuk ki a kulonbozd jellegii objektum-tulajdonsagok beallitasi m6djait (minden tulajdonsag az itt rnegfigyelhetokhoz hasonl6an allithato). Jelolje ki az objektum altal megjelenitendo kep helyet a Picture tulajdonsag ertekmezejenek gombjara kattintva. Ilyenkor megtortenhet.a barhonnan (pI a program kodjabol) torteno hivatkozasuk lehetove . PictureBox tipusii (kep) objektumot! 2. hogy tobb programelemben (pI tobb formban) is hasznalt tevekenysegeket/funkciokat is kepesek megvalosftani. Standard modulok Az tin standard modulok (roviden: modulok) a program strukturalasanak eszkozei. a Load Picture dialogus-ablak segftsegevel (maga a kepfajl a Windows installacios fokonyvtaraban leva Tiles.remelhetolegaz eletben nem utoljara .Jiivhatnak meg". meniielemek altal felhfvhato Save File As cimii dial6gusablak segitsegevel tortenik.1. A form azaltala tartalmazott objektumok tipusatol fuggoen egy.1).azonosito-nevvel vannak ellatva. hogy a modulok a mas fejlesztokornyezetekbol szubrutinkiinyvtdr (.1. altal felhfvhato Save Project As dialogusablak segitsegevel tortenik.3. Fontos megjegyezni.iitvonalainak) a listajat (magukat a programelemeket es hierarchiajukat az IDE Project ablaka j61 mutatja).nem kulon eljarasban torteno megfogalmazasuk eseten . valtozo-..elteroen a formokt6I tartalmazhatnak tin globalis tfpus-. akkor az ez ut6bbi forrasara vonatkoz6 informaciokat "<" es ">" jelek koze teve.a form on beliili eljarasok . A form elmentese (lege Iso alkalommal.vagy ket fajlban tarolodik. vagy mas VB-verzi6 altal fejlesztett programok egyes nem tokeletesen betoltheto "alkatreszei" a Iistabol hianyoznak (amire egy Error during loading . 2.. A projekt inforrnaciok elmentese a File . a formok es a benniik elhelyezett objektumok .eljdrdskonyvtdri neven ismert eszkozoknek a VisualBasic-beli megfeleloi.tetele erdekeben . A forrnnak a szovegesen Ie nem frhat6 .Project Properties dialogusablak beallftasainak osszesseget ertjuk. amelyek csak ugyanabban a modulban hasznalhatok. A projekt-fajlok szoveges formajtiak meniielemek es alapertelmezetten vbp fajl-kiterjesztesuek. es nem szuksegkeppen kell. Az IDE-t elinditva. az automatikusan* letrejovo. MDI megjelenftes-modjat (lasd:1.az osszes hivasi helyre szinte valtozatlanul kellene beilleszteni.2.extension) rendelkezzen. Praktikus. meIyeket . es a Project . Ezek olyan k6dokat tartaImaznak. meniielemek altal megjelenitheto <projekt-nev> .alkatreszei" (pI a rahelyezett kepobjektumok kep-tartalma) a VB altal automatikusan egy extra-fajlba frodnak. hogy milyen kellemetlensegekhez vezet az extra-fail esetleges atnevezese).4.es/vagy fuggvenyeket tartaImaznak.1. magaba a szovegbe frjuk * A tovabbiakban.Save <projekt-nev> As . minden egyeb resz azonban egyetlen fajlban nyer elhelyezest.2. hogy a mar letezo VB fejlesztesu program ok a Visual Basic fejleszto-kornyezetebe mindig a projekt-fajlok megnyitasaval hivandok be (akar a Windows Explorer fajl-lista paneljaban a projekt-fajlra torteno dupla-kattintas. a benniik levo objektumok neve viszont csak a hordozo formon beliil nem ismetlodhet (tehat ket kulonbozo.. Kattintson az eszkoztar Picture gombjara es az egernek a form kozepe tajan torteno elhuzasaval keszitsen egy kis meretti.2. hogy a nem ugyanazon operacios rendszer alatt.

a megjeleno (es vegytik eszre: az automatikusan a form-kijeloleskor hasznalt konyvtarat mutate) Save Project As dialogusablakban a File name mezobe MyProject-t frva utasftsa az IDE-t a projekt informacioknak a MyProject.1. 24 A Visual Basic fOmeniije menurol altalanossagban az 1.tulajdonsagait listazza)! 7.2. vegul az tij projekt tipusanak a New Project dialogusablak projekt-sablonjai kozul valo kivalasztasaval: vagy azonnal Ietrejon a megfelelo programelemeket tartalmaz6 uj projekt. vagy egy ezek meghatarozasara iranyulo un "projekt-varazsI6" lep rnukodesbe.jelenik meg a tulajdonsag ertekekent (altalaban is: ha egy tulajdonsag objektum tipusu.. Projectl nevii (lasd a Project-ablakot) projekt. hogy a megjeleno Open Project dialogusablakban egy "vaI6di" projekt-fajlt jeloljon ki). 9.5. Vegul a Format meniit az eszkoztar hasznalatanak reszletes ismertetesenel tekintjiik at (lasd: 2.Vegul..mondjuk: SecondExample konyvtaraba). objektummal Ie nem fedett reszere kattintva. 2. Mivel e projekt meg nem volt elmentve. Save Project: az aktualis projekt elemeinek a helyiikre torteno mentese (a Projectablak altal listazott osszes programeIemre vonatkozik.1.vbx). es a Visual Basic installacios konyvtarat mint elhelyezesi helyet megjelolve. a nem-ismert helyii elemekre vonatkoz6an. Vegtil.3). a form-fajlt (bakjitty. projektek egeszevel iIletve projekt-elemekkel kapcsolatos parancsok: New Project: uj projekt letrehozasa (elozoleg vizsgalat tortenik az aktualis projekt programelemeivel kapcsolatban: ha vannak megvaltozott tartalrmi vagy meg sosem elmentett elemek. adatbazisok es informaciotartalmuk kapcsolatos mfiveleteket kezdemenyeznek.2). az AutoSize-t pedig True-ra! 6. hogy az a fajlok kiterjeszteset is mutassa! Megnezve azt a konyvtarat. A mentes soran az ajanlott ely szerint fajl-nevkent a form azonosftonevet celszeni alkalmazni. itt: Project ill File egyiket - - - ** A tovabbiakban 25 . Gondolja at: az IDE-ben van egy standard. Megjegyzes: a VB installacios fokonyvtaranak Template\Projects alkonyvtaraba tett barmely komplett VB projektet a New Project dialogusablakban sablonkent jelenit meg. a felhasznalo felelossege az. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A 4. a VB IDE indulasara vonatkoz6.most kivetelesen adja a bakfitty nevet. ahogy "illik": Tiles neven.frx) bar ez utobbirol senki se kerdezte. akkor az ertek-mezoben az aktualisan tartalmazott objektum alapertelmezett tulajdonsaganak erteke jelenitodik meg). esetleges helyvaltoztatassal (elozoleg az egyeb programelemek esetIeges mentesere vonatkoz6 kerdessel).Flat-re. a dolog magyarazata az. hogy a kattintas altal a Properties ablak mar a kattintott objektum . hogy az egy projekt .a File name mezoben a mentendo form azonosito-nevet (Tiles) felajanlva.sorban.igen his zen funkcioik szinte nyilvanvaloak.program-group) krealasanak es kezelesenekeszkozei.3) . : az aktualis projekt-fajl mentese. A Debug evel egy kulon fejezetben foglalkozunk (lasd: 5.jelen esetben a form . Hogy az objektum a kepet keretezes nelkul es eredeti mereteben abrazolja.azaz a kep tipusa . automatikus projekt-megnyitassal kapcsolatos When Visual Basic Starts opci6t illetoen lasd: 1. Ezert rakerdez .form tartozik. a formokkal kezdve es a projekttel bezarva mindegyik mentesi helyere..2. akkor egy csak azokat listazo es az elmentesukre vonatkoz6 kerdes jelenik meg.5. egyenkent. Persze. azonban .egy konyvtar elvhez tudja magat tartani. latnia kell a projekt-fajlt (MyProject. Lepjen is ki a Visual Basic-bOI! 8. aminek az alapertelmezett tulajdonsaga . hogy a Picture tulajdonsag altal megjelenftett ertek a fajl kijelolest kovetoen (none) . 5.frm) es az extra-form-fajlt (bakfitty. Elore is kijelentjtik.5 fejezetben sz6ltunk. Miert? 10. a Name tulajdonsag erteket megvaltoztatva (vegye eszre. Add Project es Remove Project: a tobb komponensii un projekt-csoport (. Vegiil mentse el alkotasat. amelyek ismertetese nem egy bevezeto jellegii konyv legszuksegesebb temai koze).vbx fajlban torteno elhelyezesere.MyPicture kep-objektumot tartalmazo . Most nevezze at a bakfitty. Most hivja elo a Windows Explorer-t. allftsa az objektum Appearance tulajdonsagat 0 . ahova mostani alkotasait mentette.3. Eloszor a Save File As dialogusablak jon fel . Most nevezze at magat a formot is Tiles nevre (a formnak egy tetszoleges.r61 (bi trnap) . Open Project: mar letezo projekt megnyitasa (szukseg eseten elozoleg mentesre vonatkoz6 kerdessel . celszeni e konyvtart a dial6gus-ablak segitsegevel egy masik helyre atjelolni (praktikusan az ala a konyvtar ala. majd mentse a projektet is (a bakjitty-fajlok torolhetok).re valtozott. aminek igenloen torteno megvalaszolasa eseten mentes hajt6dik vegre a Save Project szabalyai szerint. ahova a sajat dokumentumait teszi.fry-ra esaz IDE elinditasa utan probalja behivni a projektet a projekt-fajl segftsegevel! Hiba-uzenet jelenik meg .. amihez egy Tiles nevii . most a File menu Save Project memuelemet valasztva. sot meg azon belul is egy VB fejleszteseket tartalmaz6 alkonyvtar egy uj . Vegye eszre.frx fajlt bakjitty. sot a Query es a Diagram egyetlen elemevel sem (ezek ugyanis olyan. de csak az ismert helyiiek mentese tortenik automatikusan.mint elobb. valamint az Up One Level illetve Create New Folder nevii gombjait. es allftsa at a megjelenfteset ugy. a Windows.hogy tisztan lassuk a formok es a tarolasukra szolgalo fajlok nevenek a fuggetlenseget . es a menu elemeit pedig ismertnek tetelezzuk fel (az Office programjaibol). hogy e nem foglalkozunk mindegyik meniielemmel. hogy az uj konyvtar kijelolesehez j61 lehet hasznalni a dialogusablaknak az aktualis konyvtar eleresi utjat mutate Iegorditheto mezejet. hova mentse a vele kapcsolatos informaciokat. hogy a Picture tulajdonsag maga is egy objektum. File menu Kulonbozo. Egyebkent az egyes menuelemek on-line Help-beli lefrasa a megfelelo fomenu neve alatt csoportositva talalhato meg. nem foglalkozunk veliik. Save <Project I File> As'* helymeghatarozo dialogus-ablak jelenik meg. Save Project As . visszanevezes utan a VB-t behfva Save Form As-zel mentse el a formot iigy. a I jel a tole balra illetve job bra levo elemek egyiket jeloli. az IDE meg nem tudja. Megjegyezzuk.

. FEJEZET A FEJLESZTOKORNYEZET TA - Save <form-nev>: az aktualis formnak az eredeti helyere torteno mentese (ha a helye mar ismert. a fajl nem). illetve Save Project As . mindenkeppen helyesebb azonban a nem-hasznalt objektumok referenciainak torlese.. csak a meg elmentetlen elemekre es a projekt-fajl elhelyezesere tesz fel kerdest a megfelelo Save <Project I File> As dial6gus soran. Ha egy projekt nem hasznal egy megjelolt objektumot. A File menu Exit parancsa elott kulon csoportban szerepel az utoljara szerkesztett nehany projekt projekt-fajlja eleresi utjanak (lehetosegek szerint kiirt) listaja. gyors elohivasuk celjabol (behivasukat termeszetesen megelozi az aktualis projekt elmentetlen vagy utols6 mentese 6ta megvaltozott tartalrmi programelemeinek mentes ere vonatkoz6 kerdes). : a fejlesztesi kornyezet nelkul vegrehajthato formajii program-komponens keszftesenek paranesa.. a megjeleno Components dial6gusablak Selected Items Only kapcsolojat bekapesolva a lapok esak az aktualis projekt igenyelt elemeket mutatjak. listaja biztositja. a paranesban meg is nevezett elernnek a projektbol torteno eltavolitasara szolgal (csak a kapcsolat torlodik.. a tobbi valaszthatosagat pedig a More. Exit: az alkalmazasfejleszto kornyezetbol torteno kilepes (elozoleg az elmentetlen vagy utols6 mentes 6ta megvaltozott tartalrmi elemek mentesere vonatkoz6 kerdessel).. hanem a fajl nevenek a modositasat is jelentheti.. ez csak a programelemek egyenkenti mentesevel. Help File Name illetve Project Help Context ID: a projekt esetleges "sajat" on-line Help-jenek helye illetve kezdo temakore az Object Browser felhasznalasara. a megfelelo Save <form-nov> As . <projekt-nev> Properties .es az Adatbazis Tervezo eszkozeivel kapcsolatos parancsok. References .. parancsokkal tortenhet.. akkor mentese automatikusan tortenik...2. ertelemszeruen hasznalhato parancsok.. ellenkezo esetben helymeghatarozas celjabol Save File As dialogus-ablak jelenitodik meg). az elozo megjegyzesbol kovetkezoen nem a projekt-masolas celjara szolgal (a mar elmentett elemekbol aH6 projektben csak a projekt-fajlt helyezi at). esetleges helyvaltoztatassal (a File name mezejeben <forrn-nev» .. attol ugyan megno a futas elotti elokeszites ideje.. 26 27 . Save -cform-nev» As . - - Add <programelem tfpus> : az egyes kulonbozo <programelem tipus> (azaz form. Project menu A projekt strukttirajanak modosftasara szolgalo menuelemek: Uj programelemek letrehozasat csatolasat biztositjak: es/vagy mar letezo elemeknek a projekthez - Add file . ha egy projekt mindegyik program elemet (a projekt egeszet) akarjuk masik konyvtarba "masolni"... . es hogy egy tervezo-eszkoznek a projekthez kapcsolasat vagy a kapcsolat torleset a Components dial6gus-ablak Designers lapja teszi Iehetove.. a Sub Main kijeloles elsosorban az interfesszel nem rendelkezo program-komponensek fejlesztese eseten szukseges. : az aktualis projekt kodjaban hivatkozhat6 kulso objektumok specifikalasa a konyvtar-fajljuk megjelolese altal (megjelolesuk altal az objektumokra vonatkoz6 inforrnaciok az Object Browser altal automatikusan elerhetokke valnak).. Save Selection ill Save Change Script: a VB IDE Tablazat..t tartalmaz6 Save File As dia16gusablak altal). Megjegyezziik.. az elozo mentesuk alapjan ismert helyii programelemeket automatikusan a helyukre menti.. : elindftjak a megfelelo ActiveX tervezo-eszkozoket (ezek bonyolult kapcsolatrendszeni objektumok programozasanak vizualis segedeszkozei. ill Print . ill kezdernenyezesere mukodtetheto.. Project Name: a projekt altal eloallitott komponensnek mint objektumnak a neve. mas alkalmazas kodjabol e neven hivatkozhatunk ra (miutan ott mar "referaltuk") . : az aktualis projekt eszkoztaraban megjeleno ActiveX komponensek (vezerlesek). : a mar Ietezo fajl kivalasztasara szolgalo dial6gus reven (ilyenkor egyszenien a fajl-kiterjesztes hatarozza meg a programelem tipusat).. Megjegyzesek a form. Remove <programelern>: az aktualis-. - Make <projela-nevz-exe . A legfontosabb.2.ill projekt fajlok mentesevel kapcsolatban: • • A "helyvaltozatas" nemcsak a programozasi elemet tartalmaz6 titnak.. fajlhoz vezeto - A Save Project As.2. Print Setup.. A Save Project As . tervezo-eszkozok es beillesztheto objektumok megjelolese. user document) tipusti programelemek hozzaadasa celjabol a kivant fajta kivalasztasat biztositja a tipusuknak megfelelo fajta-valasztekbol. pI a VB IDE gyakran hasznalt beepitett eszkoze a forrn-tervezo). Startup Object: tobb formb61 allo projekt eseten ezzel jelolheto ki a program-indulaskor megjeleno kezdo-form. .. nem foglalkozunk veluk. : a nyorntatas inicializalasara szolgalo... projekt-szinni informaciok beallitasat lehetove tevo Project Properties diaI6gusabiak elohivasat eredmenyezi. de maganak a programnak a merete nem no.... hogy Add-tfpusu menuelemkent csak negy tervezo jelenik. e dial6gusablak altal specifikalhato informaciok a General lapon: Project Type: a projekt letrehozasakor valasztott sabionnak megfelelo. Add <ActiveX tervezo> iIIetve More ActiveX Designers . : az aktualis projekttel kapcsolatos. - • 2. : az aktualis form mentese. Components .

ill Enter-rei a k6dba beillesztheto). Watch Window. Show Panes. Table. ha a szoveg-kurzor iires helyen all. Query es View tervezo-eszkozoknek a rnegjeleneset szabalyozo elemeket tartalmaz.5. termeszetesen igen. Vegul csak felsoroljuk a nem targyalt meniielemeket: Go To Row. Delete Tablefrom Database. de nem-hasznalt vezerlesekre vonatkoz6 informaciokat. emlekezteto jellegii informaciot ad a kurzor pozici6ja szerinti aktualis fuggvenyrol vagy utasftasrol. View menii E menii az IDE ablakainak megjelenitodeset valamint a Database-. Zoom. egy objektumtfpussal kapesolatos tevekenysegek vegzesere szolgalo eljarasok a met6dusok 28 29 . eljarasokrol. Edit menii A meniielemeket mukodesi teriileteik szerint esoportositva ismertetjiik. ha az Auto List Members be van kapesolva. Az alabbiakban a meniielemeket funkci6juk szerint csoportositva ismertetjiik. Definition: a szoveg-kurzorral valtozo neven illetve eljaras belsejeben allva: megmutatja definialasanak helyet vagy az Object Browser-beli informacios lapjat. Complete Word: egy sz6 elejenek befrasa (amennyiben ez egyertelrmien megteheto).2. ertelemszeruen.5) hfv elo. a Compile lapon. Cut. utan azt teljesse egeszfti ki - Remove information about unused ActiveX Controls: torolje-e az eszkoztarba a Components dial6gusablak altal felvett. met6dusokr61 (automatikus. a Component valamint a Debug lapon a komponens-alapii programozassal kapesolatos opei6kkal es informaciokkal. Remove (table from database). fuggvenyekrol. Object Browser: a projektben elerheto szolgaltato eszkozt (lasd: 1. utasitasokrol. parameterezheto.3. Find Next illetve Replace. Vegul esak felsoroljuk a nem targyalt meniielemeket: Property Pages. szfnpalettat tartalmaz6 Toolbars: menut hiv elo. kulonbozo jellegii informaciokat nyujto ablakokat jelenitenek meg. A form-tervezo rmikodese soran . Properties Window. tovabba a felhasznalo igenyei szerinti modosftasat. Call Stack: a hibafelderftes soran hasznalhato.2.2.4. e meniielemet alkalmazva megjelenitodik a konstansok listaja (automatikus. praktikus az Auto Indent kapesol6 beallitasa az utasftasok altal meghatarozott automatikus tabulalas igenylese celjabol).az ismert celokbol es a szokasos m6don hasznalhato paranesok: Undo. Color Palette: nem standard dial6gusablakot hfv elo. az onalloan keszftesenek opci6ival: Icon: a program-ikon fajlja.vagy kijjebb kezdesere egy tabulator pozfci6val: Indent. Pontosabban. ha az Options dial6gusablak Editor lapjan az Auto List Members be van kapcsolva. ha be van kapesolva az Options dial6gusablak Editor lapjan az Auto Quick Info kapcsolo). Form Layout Window. Outdent (a tab-szelesseg az Options dial6gusablak Tab Width mezejeben allithato be. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A a Make lapon. celjabol. Csak a kod-ablakban mukodve hasznalhato szoveg keresese illetve csereje celjabol: Find. Code. Quick Info: szintaxis-lefrast ad valtozokrol. A specialis. Last Position: a k6d-ablakot az utols6 tenyleges hasznalatanak a pozfciojaba "ugratja" (a kod-ablakban rmikodve vagy a Definition paranes altal meghfvott Object Browserbol tOrteno gyors visszaugratasra hasznalhato).a form objektumaival kapesolatban es a programk6d fejlesztese kozben . Parameter Info: rovid. 2. amely ismertebb tipusu adatbazisok strukturajanak attekinteset teszi lehetove). Object. a forditasra vonatkoz6 ertelemszeru opei6kkal. aktualisan nem megjelenftett ablakait hivjak elo. eljdrdsoknak: nevezziik az egy eel erdekeben valamilyen tevekenyseget vegrehajto. is futtathat6 program-fajl tulajdonsagaival es Command Line Arguments: a parancs-sor opci6kkal (parameterekkel) is rendelkezo programnak az IDE-n beluli futtatasa eseten a prograrnnak atadott opci6k ertekei. Select All Columns es Table. Paste. szoveges fajlnak a kodablak kurzoranak aktualis poziciojatol kezdcdoen torteno beillesztese celjabol: Insert File. Data View Window (rnegjegyzendo. Project Explorer. akkor a projektbol elerheto osszes metodust es tulajdonsagot adja. nem foglalkozunk veliik. Toolbox: az IDE megfelelo. a kivalasztott elem a Tab. ami lehetove teszi egyes funkciocsoportokhoz kapcsol6d6 eszkozsorok megjelenfteset. "konyvjelzok" elhelyezese a kodablakban tOrteno gyors pozicionalas erdekeben: Bookmarks menujenek elemivel. szinek kikeverese. Copy. Az erteket (pi szamot vagy akar objektumot) is szolgaltatok a fuggveny-eljarasok (vagy roviden: fuggvenyek). objektumokr61 hasznos informaciokat - Immediate Window. List Constants: a szoveg-kurzorral egy objektum tulajdonsagara tOrteno hivatkozast koveto egyenlosegjel utan allva. tobb program-utasftast is magabafoglalo. a kivalasztott elem Tab. avagy eljaras/fuggveny konstanst fogad6 pararneterehez erve az irassal.ill az Enter billentyiivel a programkodba be is illesztheto). hogy ez utobbi paranes egy eszkozt hiv elo. sajat nevvel ellatott programelemeket. Paste Link. szoveg beljebb. az alabbi meniielemek a kod irasat hatekonyan segito funkciokat val6sitanak meg: List Properties/Methods: objektum nevet koveto pont utan alkalmazva listaban jeleniti meg az objektum metodusait' es tulajdonsagait (automatikusan. 2. Redo. Delete illetve Select All. Locals Window.

Start With Full Compile: a programot az inditasa elott teljes egeszeben ujrafordftja..[design]". a Background Compile opci6t min dig erdemes bekapcsolva tartani. e. eloszor at kell gondolni.[break]" 2.rakattintassal . akkor a jatekos nyert . hanem az algoritmusra. End: a [run] vagy [break] allaponi (azaz megszakftott futasii) program befejezese. Ahhoz. 30 31 .. megjegyezziik. es az egesz valami ilyen format olthet: szoveg olvashato. A fejezet hatralevo reszeben a program tervezesenek lepeseit es eszkozeit.[run]". Az IDE hasznalata Az eddigiekben attekintettuk az IDE rmikodeset es fo elemeit.3. futasa kozben . Add-In Manager .2..1). Restart: a barmely okb61 felbeszakadt program iijraindftasa.mint goly6t rejtore (nem is lathatoan. kulonbozo szinekre festett "objektumot" tartalmaz.1. azonosftani kellene. Az objektumot valahogy reprezentalni. az asztalt reprezentalo tirlap harom teglalap alaku. vesztett. Ehhez modellt kell alkotm.1. En igy gondoltam: Egy a jatek cimet viselo. a fejlesztokornyezetbeli a program-vegrehajtas mukodesunk soran . csak megjegyzi a kivalasztott objektum valamilyenjeIlemzo!et). [design]-m6dban Start nevet viselo gombja ilyenkor Continue-ra keresztelodik at. piros goly6bis.ha nem. Break ill Stop gombjai a megfelelo meniiparancsok kezdernenyezesere kenyelmesen hasznalhatok.7. hogy az IDE cfrnsoranak a vegen: a programnak a fejlesztekornyezetbeli A mintapelda celja az "Itt a piros .HoI a piros?" nevu ismert jatek szamitogepes verziojanak az elkeszftese. bar csak a Compile On Demand bekapcsolt allapotaban hat). A jatekban azt kell megtippelni. lefele fordftott gyufas-doboz kozul melyik alatt van a kis. es vele kapcsolatban a Form Designer. - 2. hogyan gondoljon a gep egy objekturnra ". amely a VB fejlesztokornyezet lehetosegeit kiterjeszto. : az Add-In Manager diaI6gusablakot hivja elo.2.. 3. hogy kozben az IDE lehetosegeire is gondoltunk. valamint a ToolBar es az Format menii elemeinek a hasznalatat mutatjuk be. installalasukkor beleintegralodo eszkozok menedzseleset teszi lehetove (fontos kapcsol6i a Loaded/Unloaded ill a Load on Startup: az eszkoz csak az aktualis ill az osszes projekt altal hasznalhato). Ha a gondolt es a kivalasztott megegyezik. az firlap-keszites technikajat. ezek jelolik a dobozokat. mindezt egy mintapeldaba agyazva tessziik.5. A merkozes aktualis allasarol a program kis tablazatban adhat tajekoztatast. hogy harom osszekevert. celszeru azt is atgondolni. Mintapelda: A program specffikacioja es megtervezese Megjegyezziik.iIletve az ahhoz kapcsol6d6an hasznalhato alabbi parancsokat tartalmazza: Start: elinditja a programot (a programelemek inditas elotti forditasat szabalyozza az Options dial6gusablak General lapjanak Compile On Demand opci6ja: bekapcsolt allapota eseten fordftas csak akkor tortenik. Break: a programnak a futasa kozbeni feltetel nelkuli megszakftodasat eredmenyezi. a Project Explorer es a Properties ablakok. hogy hogyan akarjuk mindezt megvaI6sftani.6. mert azt ug~ terveztiik meg. A problemat az jelenti. hogy el tudjuk kesziteni az ezt megval6sit6 programot. Run menii A programnak a fejlesztokornyezetben tOrteno futtatasa celjabol.2.. hogy a jatekos is . az ablakok kolcsonhatasarol es az objektumok elnevezesi szabalyairol. valamint hogy a Standard eszkozsor Start/Continue. amely ismertebb tfpusti adatbazisok kezelesere es eleresere szolgal. 2. Tools menii Csak ket alabbi elemet targyaljuk: Menu Editor: a fejlesztett program menujenek keszftesere szolgalo eszkozt indftja el (lasd: 7.3. Mivel celunk most a programfejlesztes gyakorlatanak a megismerese. ha a programelem m6dosult az utols6 forditasa 6ta. hogyan kepzeljuk el a mukodeset a szamitogepen.kivalasszon egyet. 2.. vegul megszakftott allapotaban .s ~ar arra.. A program veletlenszenien gondol valamelyik objektumra . Nem az interfeszre gondolunk. Add-Ins menii Csak a ket alabbi elemet targyaljuk: Visual Data Manager . Options: az Options dial6gusablakot jelenfti meg (a megadhat6 fontosabb opci6kat alkalmazasuk kornyezeteben ismertetjiik).2. (VisData): olyan programot indit el. FEJEZET A FEJLESZTOKGRNYEZET HASZNALAl'A 2. abra: Ajatek iirlap-terve Miutan tisztaztuk. hogy mit is akarunk. hogy a Standard eszkozsor ~ szimb61umot abrazolo. Sz61esz meg a programiras eszkozerol (Code Editor ablak).

ezert ez legyen mondjuk:jrmHoIAPiros . mert van a VB-ben egy valos szamokat eloallito veletlenszam-generator. valahogy fgy: Most. megfeleltetjuk az elso harem egesz szamnak.. Tehat a jatek programjanak algoritmusa az lesz.. Ezt celszeni m6dositani valami. ).3] -beli veletlen egesz szamot kell generaltatni).. a programfejleszto a gephez ulhet az In1'. 32 33 . ami megvizsgalja. Valamely tulajdonsag ertekenek a modositasakor eloszor ki kell valasztani a tulajdonsag sorat (a sorra torteno kattintassal.akar [1. de a eel mindig ugyanaz: a program tervezesenek tamogatasa folyamatainak vilagos atlathatosaga erdekeben. Ezutan a tulajdonsagertek oszlopaban kattintva a szoveges ertek szerkeszthetove valik (amit a szoveg-kurzornak a kattintas helyen torteno megjelenese mutat). hogy eloallit egy [1. Ugyanis kesobbre halasztva.. hogy az uj projekt neve (ami a Project Explorer cfrnsoraban es az ablakan belul is megjelenik): Projektl. FEJEZET A FEJLESZT0K0RNYEZET Egy megoldas az lehet. hogy mivel meg nem volt fajlba mentve a projekt. E mezo else szava (vastagon irva) a mutatott objektum nevet. Miert vagyunk ezzel kisegftve? Azert.. akkor az azt kovetoen alkalmazott Save Project funkci6 (File menuelem vagy Toolbar-gomb) vegrehajtasa kozben mar semmit se kerdez. Ha viszont egyszer mar elmentettuk a projekt osszes alkatreszet. letre kell hozni az uj program fejlesztese szamara a megfelelo VB projektet. duplan kattintva pedig az egesz eredeti tartalma lesz felullrhato (amit az ertekmezo kiemelt szinii megjelenese mutat)". amit egy szakember mar az elkeszultekor sem. E sorra kattintva. aminek az erteket "elspajzolja".. 3 ] intervallumbeli veletlen egesz szamokat is tudunk keszfttetni. es ettol fuggoen kell vagya gep. es ezert aktivalodik az objektumhoz kapcsolt Click tfpusti esemeny-eljaras. hogy a letrehozott projekt neve es fajl-neve is Projectl. hogy a kapcsolt objektum azonosft6 szama megegyezik e a tarolttal. a Project tfpusti objektumoknak egyetlen designmodban elerheto tulajdonsaguk van: a nevtik. Nines j61 elkeszftve az a blokkdiagram..o:!'l' formok keszitese."1". vagy a jatekos nyereseinek szamlalojat novelni eggyel. majd az esemeny-kezelo eljarasok es egyeb kodok Irasa celjabol. egy gep-i. meg nem csinaltunk semmi erdemlegeset. aminek a segftsegevel . a Properties ablak a projekt tulajdonsagait mutatja (mind a cimsora. mind a Iegorditheto lista-mezo Projectl-t tartalmaz. Projectl (Projectl) szovegu sor arra utal. A legegyszeriibb projektek kesziteset a New Project dia16gusablak Standard EXE sablonjaval generalt.lefagyast" okozo esetleges hardvervagy szoftverhiba az osszes addig vegzett munka elveszteset eredmenyezne. [1.4 fejezetben talalhatok) Bar A blokkdiagram szukseges reszletesseget tobb tenyezo is befolyasolja: az alkalmazas bonyolultsaga.2. a fejleszto programozasi gyakorlata. a fejlesztendo alkalmazas temajat kifejezo rovid nevre (mondjuk: HoIAPiros'). Mikor a jatekos egy objektumra kattint. a program kesobbi tovabbfejlesztesenek igenye. Ebbe valami olyan k6dot kell Irnunk. 3] intervallumbeli veletlen egesz szamot. akkor az objektummal kapcsolatban Click tipusti eserneny tortenik.kis transzformalassal . felulfrasahoz duplan-kattintani erdemes ••• A Project Explorer ablakan beliili neveknek egyedieknek kelllenniiik •••• Az jrm az objektum form tipusdra utalo eldtag (az elnevezesi szabalyok a 2. A gepnek a veletlenszenien torteno objektumra gondolasa Igy a harem szam kozul egyre val6 gondolasnak felel meg. ezert a projekt-fajl never is az tij nevre valtoztatta . Vegyuk eszre. Az algoritmusokat (az oket kivalto.. 2. algoritmusok tisztazasa is megtortent.3. a kivalasztottsagot a tulajdonsagnev kiemelt szinnel torteno megjelenitese mutatja). es uj szamot kell gondoltatni a geppel (vagyis tij. az alkalmazas altal megcelzott felhasznaloi kor (sajat felhasznalasra vagy megrendelesre keszul.automatikusan.. esetleg teljes dokumentacioigennyel). a masodik pedig a tfpusat jelenti. de mar ekkor erdemes elmenteni a projektet. a keszitoje pedig ropke egy ev elmultaval mar nem ert meg. csak menti az utols6 mentes 6ta m6dosftott program• Az objektumok elnevezesenek szabalyaival e fejezet legvegen. egyetlen tires formot tartalmaz6 VB projekttellehet elkezdeni. balr61 jobbra. egyes objektumokhoz kotodo esemenyekbol inditva) erdernes egy tobbe-kevesbe reszletes blokkdiagramban abrazolni is. Most valtoztassuk meg a form never is hasonl6 m6don (de mivel e nev nem lehet a projekt nevevel azonos'".2. Vegyuk eszre. hogy az egyes objektumokat sorban. programikonnal kezdodo. miutan mar nemcsak a felhasznaloi interfeszek specifikalasa. A Project Explorer ablakan beluli. kulon reszben foglalkozunk •• Szoveges tulajdonsag ertekenek modosftasahoz kattintani-. Vegul meg kell jeleniteni a merkozes allasat. Mintapelda (folytatas): A VB projekt letrehozasa Meg mielott barmibe kezdenenk. Mint lathato.

hogy az esetleg mar kivalasztott egy. amelyet a tarolasukra szemeltiink ki. Sajnos. tulajdonsagaik a Properties ablak segftsegevel megvaltoztathatok.az iirlaptervek alapjan . es csak a szovegkornyezetbol derul ki. pontjaig es ott felengedjiik a gombot.csak a Form Designer szelekci6s iizemmodjaban .5). objektum-krealo iizemm6dban (az eger kurzora Precision Select tipusu) lehetove teszi egy.az alabbi m6dokon vegezheto: egyetlen objektum kivalasztasa: az objektumra torteno kattintds eredmenyezi. mig az objektum(ok) a kfvant pozfci6ba nem keriilnek). egy vezerloelemnek megfelelo. hogy tenylegesen az eszkoztar egy vezerloelemere (azaz objektum-sablonra) avagy a form egy interfesz cehi objektumara gondolnak-e. 2. A formra helyezett objektumok kivalasztasa . es a projektet tarolo konyvtarba menteni). azutan pedig a Project menii Add Form. de ha megsem ebben lenne.objektum meretehez igazodik az osszes tobbi kivalasztotte).es az e fejezetresz vegen reszletesen megmagyarazott Do you want to create a control array? kerdesre adjunk No valaszt). hogy ajobb oldalan all6 . az IDE nem tartalmaz az MS Word dokumentumok idokozonkenti automatikus mentesehez hasonl6 lehetoseget. Ugyeljunk arra. tin szelekci6s gombjara kattintva visszakapcsolhat6 e m6dba. az eger-gomb felengedesenek pillanataban rajzolt keretben leva vagy a keret altal erintett osszes objektum kivalasztotta valik. Objektum(ok) elmozgatasa a kivalasztasukat kovetoen elhuzasukkal (drag-and-drop technika: az eger-kurzorral barmelyik kivalasztott fole keriilve.muvelet a bal oldalan allo billentyii lenyomott allapotaban vegzendo 35 34 . Megjegyezziik. hogy a ket iizemm6dban nem azonosak az IDE aktiv meniielemei. a vezerloelemnek megfelelo objektum letrehozasa a formon: az eger elhuzasaval (ennek hatasara a Form Designer visszakapcsol6dik eredeti szelekci6s modjaba). a formnak objektumot nem tartalmazo reszere torteno kattintassal megszuntetheto (pontosabban ilyenkor maga a form valik kivalasztotta).maguknak az iirlapoknak az elkeszitese. a vezerloelem kijelolese: kattintds a vezerlesnek az eszkoztarbeli gombjara (ennek hatasara a Form Designer objektum-krealo iizemm6dba kapcsoI6dik). hogy a dokumentaciok ket ertelemben hasznaljak a control sz6t.vagy tobb uj objektum letrehozasat a formon. ezert ezt idonkent nekiink kellvegezni. (ami azt objektum 2. - Shift EiY* kattinids objektum(ok) kivalasztasa a "lemeszelesuk" altal: a formnak egy objektumot nem tartalmaz6 reszen lenyomva az eger bal oldali gombjat elhtizzuk a form egy masik . es hogy praktikus (de nem kotelezo) oket a neviikkel azonos nevii fajlba menteni. nyilat abrazolo. E tervezoeszkoz programfejlesztes kozben az alabbi ket iizemmod valamelyikeben rnukodik: szelekci6s iizemm6dban (az eger kurzora Normal Select tipusu) lehetoseget nyujt egy.vagy tobb. es csak a most kattintott lesz kivalasztva). ez a Form Designer alapveto iizemm6dja. Egy mar formra helyezett objektum a szokasos m6don (az Edit menii Copy / Paste funkci6ival) duplikalhato es ekkor az eredetivel (a nevet es hely-koordinatait kiveve) minden tekintetben azonos objektum keletkezik (onall6an haszndlando masolat letrehozasahoz a megjeleno . A formok a Form Designer ablakaban jelenitodnek meg (lasd: 1. hogy az egyes programelemeket mar elso mentesukkor rogton abba a (lehetoleg uj) konyvtarba rnentsuk. Az uj iirIaphoz egy iires formra van szukseg.kitoltott atmeretezo fulekkel rendelkezo . mar a formon leva objektum kivalasztasara. akkor az eszkoztar Pointer nevii.vagy a Project Explorer ablakaban a gyorsmenii Add almenujenek Form meniieleme altal lehet igenyelni (uj form projekthez adasa eseten .3. csak a vezerloelem kijelolesehez a kattintds a Ctrl bilientyii lenyomott allapotaban teendo. FEJEZET A FEJLESZTOKORNYEZET HASZNALATA elemeket.praktikus azt azonnal atnevezni.5. A mar letrehozott objektumok kozul egyet vagy tobbet kivalasztva.3. Tobb objektum atmeretezese a legpraktikusabban a Format menii Make Same Size almenujenek parancsaival hajthat6 vegre (ilyenkor az utoljara kivalasztott . de termeszetesen az objektum( ok) mereteit definialo Width illetve Height tulajdonsagok atlrasaval is vegezheto.vagy kikapcsolasa: illetve Ctrl EiY kattintds barrnelyikevel.vagy tobb kivalasztottsaga megsziinik. Megjegyezziik. Ilyenkor az egyes objektumok letrehozasat kovetoen nem tortenik szelekci6s m6dba val6 visszakapcsolas (ezert ezt az utols6 objektum letrehozasa utan a fejlesztonek kell kezdemenyeznie az eszkoztar Pointer gombjara kattintassal). a bal gomb lenyomott allapotaban elhiizni az egeret. az alabbi m6dokon: egy vezerloelemnek megfelelo. A formon leva objektum( ok) kivalasztottsaga - Egyetlen objektum atmeretezese: a kivalasztasat kovetoen az atmeretezo "fogantyiIk" (kockak) ellnizasaval tortenik.2. amit letrehozasakor a Standard EXE tipusti projekt automatikusan szolgaltat. egy uj objektum letrehozasakor automatikusan megsziinik. egy objektum kivalasztott allapotanak be. a meretetol eltekintve standard tulajdonsagokkal rendelkezo objektum letrehozasa ket lepesben tortenik: 1.3.4 fejezetben folytatjuk. A felhasznaloi interfesz form keszitese A programfejlesztes tenylegesen elso lepese . standard tulajdonsagokkal rendelkezo objektum letrehozasa az elozovel szinte azonos m6don hajtand6 vegre. egy vezerloelemnek megfelelo tobb. A felhasznaloi interfesz elemeket (objektumokat) az IDE tervezo (~design) modjaban az eszkoztar vezerloelemei segitsegevel lehet a forrnrahelyezni. standard tulajdonsagokkal rendelkezo objektum letrehozasa: dupla-kattinids a vezerloelemnek az eszkoztarbeli gombjara.hasonl6an az automatikusan letrehozotthoz .altalaban az egerrel kapcsolatos . A mintapelda elkeszfteset a projekt-fajlok elmentesevel a 2. * A tovabbiakban a EElszimb6lum annak jelzesere szolgal.

probalja kif). mig igenlo valasznal a keletkezo objektum Name tulajdonsagat ugyanarra allftja. akkor milyen vfzszintes ill fuggoleges tavolsagban legyenek egymastol e pontok twip' -ekben merve. kovetjuk). Az objektum-azonosftasra szolgalo tulajdonsagi ok) beallftasat az objektumok letrehozasakor az IDE automatikusan vegzi. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A Igen fontos az. A megjelenesere szolgalo parameterek az Options dial6gusablak Generallapjanak Form Grid Settings reszeben allithatok be (legyen-e egyaltalan. vagy megjelenitodeset tulajdonsagaik megvaltoztatasaval.a bekapcsolasa elott mar a formon Ievok poziciojan nem tortenik valtozas). hogy tenylegesen csak az objektumok Name es Index tulajdonsagai egyiittesen azonositjcik egyertelmiien az objektumokat . Ha meg nem letezik ilyen nevii objektum. alatti szabalyt alkalmazza. vagy met6dusaik vegrehajtatasaval a program futasa kozben meg lehessen valtoztatni. letrehozva egy formon a Commandl. aztan kitorolve Command2-t es vegul a CommandButton vezerlessel krealva egy iijat. akkor . a tartalmat is kifejezo nevvel legyen ellatva (hogy a programk6dot olvasva rogton vilagos legyen. jobb oket tobb lapon. Ha mar letezik az aktualisan letrehozottal azonos nevii objektum (pl objektumok masolasakor). Vertical Spacing illetve Center in Form almenuinek parancsai. mindmaig hasznalt egyseg) 36 37 .bar megengedett. amely aktualisan meg nem fogialt az azonos tfpusti objektumok nev-sorszamakent (peldaul. E sorszam erteke az elso a termeszetes szamok sorozataban. am ha az urlapok kulonbozo projektben vannak. 1 pt= 1172 inch. a 2. 1 standard sortavolsag = 12 pt. es hogy legyenek-e az objektumok letrehozasukkor. Az objektumoknak a program kodjaban hivatkozhat6knak kell lenni. Angliabol szarrnazo. ezt IlL'II. A kerdesre adott nemleges valasz eseten a VB az objektum elnevezesere az 1. azonban . hiszen szukseg van arra. Az objektumoknak ez az automatikus elnevezesi modja igen kellemes. a felhasznaloi adatbevitelre szolgalo mezok . • 1 twip (one twentieth of a I!. hogy az kelloen tornor legyen. Az e temakorrel kapcsolatos irodalommal konyvtarakban polcokat toltenek meg. az alabbi logikat kovetve: 1. objektum-tornbnek nevezziik (a dokumentaciok a control szot a felhasznaloi vezerloelemekre es eszkoztar elemekre is hasznaljak. akkor ez (a projektek csoportba foglalasanak e konyvben nem targyalt lehetosege nelkul) a forrasprojektnek a kivagast kovetp bezarasa es a cel-projekt megnyitasa utan vegezheto. Ez egy. Horizontal Spacing.oint) = 1120 pt.e tenyre figyeImeztetve. hierarchikus strukturaban csoportositva. Az objektumok azonositasa elso kozelltesben a neviik alapjan tortenik (latni fogjuk. FileListBox eseten File) egy sorszam (pozitiv egesz szam) hozzaillesztesevel keletkezik (pI Command3.fejszovegeinek'' tartalmat praktikus alaposan meggondolni. Igen j61 hasznalhatok objektum(ok) formon belul. Bar e muvelet a projekteknek kulon-kulon IDE kornyezetben torteno megnyitasaval direkt m6don is vegrehajthato. a kozottuk leva hely egyenlo mertekii elosztasa.4 fejezetreszben foglalkozunk. Objektum(ok) formrol torteno torlese a kivalasztasukat funkciojaval vagy a Delete billentyiikkel vegezheto: kovetoen a meniik Delete Objektum( ok)nak egyik iirlaprol egy masikra pakolasa celjabol a Clipboard hasznalhato. de az Index tulajdonsagaban kulonbozo objektumot kivan-e letrehozni. j61 attekinthetoen megjeleniteni.22). hogy a fejleszto az iirlap melyik objektumara gondolt). a form teljes cfmsor alatti reszet lefedo kepzeletbeli negyzethalo csiicsaiban pontokat tartaImaz6 "rajzoIat". akkor az uj objektum neve mindig a sablonul szolgalo vezerles tfpus-nevenek elso tagjab61 (ez pI CommandButton eseten Command.az Index eppen az azonos nevti es tipusu objektumoknak egyedi egesz szamokkal torteno megkulonbozteteset szolgalja). Az elnevezesi szabalyokkal. neviikben megegyezo objektum-csoport valamely elemenek atnevezesetol (vagyis Name tulajdonsaganak modositasatol) a csoport tobbi elemenek azonosftoi nem valtoznak. ameIyek azonos nevvel rendelkeznek (es csak indexeikben kulonboznek). CommandButton tipusti objektumokat. 2.ill szabvanyokkal e fejezet vegen. A Format menu Size To Grid-. a pt a pont roviditese (a nyomdaszat nagyiparositasanak idejebol. am kisse "rejtjeIezve" (Do you want to create a control array?) . de kulonosen a keyes RAM-mal rendelkezo gepeken . illetve Align almenujenek To Grid parancsa a kivalasztott objektumok egeszenek illetve bal-felso sarkainak a racshalohoz igazftasara szolgal. de a mezoben megadando adatra vonatkozoan megis elegseges (tin kulcs-) informaciot szolgaltasson fontos az tirlapra helyezett objektumok pontos elhelyezese (a kozepre igazitasuk. osszefoglaloan az alabbiakat jegyezziik meg: nem praktikus egy urlapot informaciok garrnadajaval teletornni. de ha egy objektumra a programk6dban is hivatkozni akarunk.vagy elmozgatasukkor automatikusan a racshalohoz igazitottak .es/vagy fuggoleges merete. - A formra helyezett objektumok pontos igazitasat szolgalja a formon (kizarolag design modban) megjelenitheto rdcshdlo. az egy oszlopbeli illetve egy sorbeli objektumok eleinek egy vonalhoz illesztettsege.kerdes intezodik a fejlesztohoz. az adatbevitelre szolgalo mezok azonos vizszintes. hogy objektumok mtikodesi modjat. annak neve ismet csak Command2lesz . 3. Azon objektumokat. stb).vagy egyrnashoz kepest valamilyen tekintetben azonosan torteno igazitasara a Format menu Align. Objektumok torlese az addig kiosztott neveket nem modosftja (az elobbi peldaban: Command3 nem valtozott Command2 kitorlesevel). hogy az iirlap kelloen "felhaszmil6barat" legyen es "csinosan" nezzen ki. akkor iigy illik. hogy egy csak az indexeikben kulonbozo. hogy az objektum egy. az Index ertekeul pedig a nev-sorszamok kiosztasi strategiajahoz hasonI6an egy nem-negatfv egesz szamot ad (reszletesen lasd 3. Megjegyezziik.2. hogy nem a neveben megegyezo. File4). Command2 es Command3 nevu. ha igen.nem ajanlott a VB IDE kornyezetek egymas melletti futtatasa.

lehetoseget nyujtva a Cancel es/vagy a standard bezaro gomb altai torteno.Display dialogusablak Appearance kartotek-lapjat) 1Orteno valasztast tesz Iehetove.zkedhetnek. szovegek es egyeb tipusu informaciok formajaban az objektum tulajdonsagaiban rogzul. Ilyenkor a tulajdonsag ertek-mezejeben egy -certek» .Jrhatok"). Szukseg lehet arra is. Az ilyen egymast fedo objektumok kozti megjelenitodesi sorrendet a Format menu Order almenujenek a kivalasztott objektum(ok)ra vonatkoz6 Bring to Front illetve Send to Back parancsaivallehet szabalyozni. a formokra helyezheto objektumok egymashoz viszonyitott megjelenitodcsc: szabalyozo iIIetve befolyasolo objektum-tulajdonsag ismertetesevel zarjuk. Az objektumok legtobb tulajdonsaga mind a fejlesztes. hogy a folul levot "atlatsz6nak" definialjuk (BackStyle tulajdonsag: 0 . Ha viszont tobb objektum is kivalasztasra kerult.az Esc bIllentyuvellehet . az szamok. Az Ok gombot is tartalmazo dialogus-ablakok altal beallftott modosftasok mindig csak a gomb leny~n:asat kovetoen jutnak ervenyre.valamelyiket kaphatjak ertekul.1. 1. j61 meghatarozott ertekek . altalanos viselkedesi modjait. programfejlesztessel kapcsolatos objektumok fejleszto kornyezetben elerheto es m6dosithat6 tulajdonsagertekeinek attekintesere ill modosftasara. es hogy az obje~t~mot ~ataroI6 vonalakat eltuntessuk (BorderStyle tulajdonsag: 0 . Iasd az on-line Hel.Jcimenekulni''. az Appearance tulajdonsag ertek-mezejeben 1 . hogy melyik takarja el a masikat.Jiasznalati utasitasat'' harorn fontos. Az ablak vagy egy mar letezo (es a View menu Color Palette parancs~~al eloh. A VB 6 inkabb a "stabil" szfnek hasznalatat tamogatja. A fejlesztokomyezetben a Properties ablak (mint lattuk mar: 1. ezert ezt a VB szamos eszkozzel tamogatja.-cdefinfcio> szoveg olvashato (peldaul. amelyek csak bizonyos. Az egyes tulajdonsagok szabalyozhatjak az objektum megjeleneset.4) funkci6ja. A kivalasztott objektumok Properties ablak altal mutatott barrnely tulajdonsaganak az erteket meg lehet valtoztatni. vagy az IDE barrnely. Olyan tulajdonsagok is akadnak. a fejleszteskor a tulajdonsag ertek-mezejere kattintva elohivhato P~lett~/System ablakkal iIletve a futas kozben hfvhato RGB es QBCoior fuggvenyekkel. Az objektum-tulajdonsagok a fejlesztes. az ertek-mezore kattintva egy Iegordito-gomb jelenik meg. Ilyenkor nem mindegy. ellenkezo esetben viszont az ertek-rnezo kitoltetlen (tires). amik tartalmilag az objektum rmikodesehez kotodnek).utasat eredmenyezi.4). Az ertekmezore duplan kattintva a !ista ciklikusan soron kovetkezo elemet valasztja ki (azaz a vegere erve az elson folytatja). A Properties ablak mindig az aktualisan kivalasztott objektum( ok) mindegyikeben elofordulo tulajdonsagokat mutatja (a megfelelo tulajdonsaghalmazok kozos reszet). az alatta levo legorditheto lista-mezo pedig tires es ilyenkor nem is gorditheto Ie (bar listazhatna pI: a szelektalt objektumokat). Elozoleg mar targyaltuk a szoveges. vagy ~ a~tuahsan bealhtott standard rendszer-szinekbo] (lasd: a Control Panel . FEJEZET A FEJLESZTOKORNYEZET HASZNALATA Mindaz.ill program-futas kozbeni viselkedesuk szempontjabol is tobbfelek lehetnek. Ha egy tulajdonsag a kivalasztott objektum( ok) mindegyikeben azonos ertekkel rendelkezik. ~~yan tulajdonsagok. Vannak olyan tulajdonsagok is.a kijelolest mellozve . megint mas tulajdonsagok viszont csak az objektumra jellemzok.5. Az ablak cimsora alatt levo legorditheto lista egyetlen objektum kivalasztottsaga eseten az objektum azonosftojat es tipusat tartalmazza. ~ackColor.es szam. vagyis 3-dimenzi6s). de listaja reven barmely masik (az aktualis programelem . de azert tartalmuk kiolvashato. amelyek objektumok szfnet specifikaljak a Wln~~WS operacios rendszer red-green-blue (RGB) szfn-semaja szerint. ForeColor Properties temajat). az aktualis ertek-mezon kfvuli helyen 1Orteno kattintaskor kerul sor lehetoseget nyujtva eredeti ertekuknek (az Esc biIIentyiivel igenyelt) visszahivasara.mind a program futasa kozben elerheto es m6dosithat6. definiciojat (peldankban ez 3D.iv?at6 dial6gusablak segitsegevel m6dosfthat6) szfn-palettabol. az ilyen ablakokbol .altal tartalmazott) objektum kivalasztasat is lehetove teszi. lehetove teve a megengedett 38 ertekek kozul torteno valasztast.Transparent). hogy lehetoseget nyujtson az IDE altal letrehozott. barmifele modositas nelkuli kilepesre.ek a logikai e~ekeket (True ill False) tartalmazo tulajdonsagok is. amit egy objektumrnal kapcsolatban a form designer altal vizualisan tervezunk meg. Mivel e szamok helyes "kikeverese" az atlagos felhasznalotol nem elvarhato ismereteket igenyelne.altalaban nem-negatfv egesz szamok .2. hanem egymast tobbe-kevesbe fed~e IS elhelye. amelyek a program futasa kozben nem m6dosfthat6k (azaz nem . kepernyon ill formon val6 elhelyezkedeset. a "szabadon" definialhatok rovasara.None).es szam ertekek .5 es 2.illetve a kep-tipusu tulajdonsagok ertekeinek beallftasi m6djait (lasd 2.3D olvashato) mutatva a tulajdonsag aktualis erteket (a szoveg <ertek> resze. V~gtil vannak. A for~on levo objektumok nem csak egyrnas mellett. de lefrhatjak az objektum adatbazisokkal illetve mas programokkal valo esetleges kapcsolatait. bar az "ertekes" informaciokat megjelenfto interfesz elemek csak atlatszatlanok lehetnek. es ezzel az osszes objektum adott tulajdonsagat egy kozos ertekre beallitani. akkor a tulajdonsagnak megfelelo sorban e kozos ertek lathato. peldankban ez 1) es ezen ertek tartalmi meghatarozasat.3.1. amelyben az & konstans-jelzo delimiter es a H betu az utana all6 szam hexadecimal is voltat a mutatja.peldaul form . de szep szammal vannak olyan tulajdonsagok. ezek ertekmezoi egy 8 hexadecimalis jegybol allo szam-konstansr tartalmaznak (fgy pI: a &H80000012& korrekt RGB szm-konstans. akkor az ablak cimsora kozuluk egynek a nevet mutatja. amik csak a program vegrehajtasa kozben erhetok el (ugyanis olyan informaciokat hordoznak. A felhasznaloi interfesz celjara szolgalo form designer . 39 . ~ezelodn. modositasuk tehat a legegyszerubben dupla-kattintassal tortenhet. A cfrnsor nelkuli ablakokban vegzett kijeloles az ablak bezarodasat es az ertek azon?ali hatalyii erv~nyre ~. Hasonlo m?don.5. azonban veglegesitesukre csak az Enter billentyiivel torteno konfirmalasukkor. Megjegyezzuk meg: ?ogy a szoveg~s.ugyan a befrasuk folyaman rogton me~ IS Jele?~t~~hetnek az objektumnak az tirlap-tervezo altal mutatott kepen _.

hogy rnindekozben a cimke-mezc Properties ablak is annak tulajdonsagait mutatja. Azutan a jobb oldalanak kozepen leva atmeretezo gombot a form jobb oldalanak iranyaban huzza el mindaddig. Torolje ennek Caption tulajdonsagat. amihez a tobbit igazitani kell . mintha a fomenut hasznalna). Az eszkoztar Label vezerlesere duplan kattintva hozzon letre egy standard meretu cimke-mezot. vagyis a beallitast segito Palette/System ablak Palette lapjanak piros szint mutato kockajara torteno kattintassal erheto el). 7. Elmozgatva oket . amfg a mezo jobb szele nem illeszkedik a formjobb szelehez.akar a Ctrl akar a Shift billentyii nyomva tartasa mellett ketszer (figyelem: most nem duplan) kattintson ra (es kozben figyelje is meg. l1. es aztan beallitjuk az utoljara keszultek hatter-szinet is a megfelelore. majd az eszkozsor Save Project gombjara kattintva kezdemenyezze a programelemek elmenteset. piros szinnel PIROS szoveget mutate cirnke-mezo. Ezt most az egyik keszre gyartasaval.Most keszftsuk el a harem gyufaskatulyat szimbolizalo objektumot: ezek is lehetnek cimke-mezok. Aztan az automatikusan megjeleno es a HolAPiros konyvtarat mutat6 Save Project As dial6gusablakban is fogadja el az ajanlott HolAPiros-t (a javaslat azert ez.Mindharom objektumnak a fekete szimi cfmsor felso hatarvonalahoz tOrteno igazftasaval a form cfrnsora teljesen kesz is lesz. hogy egy j6 nagy kerettel . Ehhez valassza ki (szelektalja) mindharom objektumot (legpraktikusabban iigy. ne hagyja esetleg karba veszni: a Save Project gombra kattintva mentse el eddigi munkaja eredmenyeit. ezert a fekete szinii megfelelo szavait. Annak erdekeben. Az objektumok vizszintes iranyban vegrehajtott megfelelo elmozgatasat kovetoen mar akar vissza is kapcsolhatjuk az . szinesek legyenek. A megjeleno dialogus-ablak segitsegevel allitsa at a font tipusat Matisse ITC-re (vagy valami Onnek tetszore. es hogy a ket szelso nagyjabol szimmetrikusan helyezkedjen el a form fuggoleges szimmetriatengelyehez kepest. es hatter-szint adunk a benntik nem megjeleno szoveg szamara. megfelelo meretunek latszo cimke-mezot. es hogy a Caption Irasa kozben a szoveg parhuzamosan jelent meg az eredeti Labell helyen). Caption-t pedig itt a piros .es immar az interfesz elemek kezelesere szolgalo technika ismereteben . A cfrn mar majdnem tokeletes. a szelektalt objektum. 2.opci6t: nem lesz mar szuksegunk nagy pontossagii vfzszintes igazitasra.01dali abra szerinti mereture.3. Ezert amit jelenlegi eszkozeink birtokaban a eel elerese erdekeben tenni lehet az az. es eloszor a Copy. de hiaba. aztan a benne megjeleno gombra. hogy lefedjek az eredeti szoveg 40 . a cimke-mezo nem olyan intelligens. hogy a masolatok mindig a form bal felso sarkaba kertilnek es hogy az IDE mindig informalodik a "control array" felol. hogy keszitunk meg ket cimke-mezot (a Label2 ill Label3 nevii objektumokat). 5.3. aztan belelepve a File Name mezoben fogadja el az IDE altal ajanlott frmHolAPiros-t az egyelore tires form tarolo helyeiil.hol a piros ? ertekure (rernelem. de piros szfnnel megjelenftve tartalmazzak (ez ut6bbi a ForeColor tulajdonsag ertekenek piros szinre allitasaval. Most duplikalas celjab6l vigye a Selection kurzort e cimke fole. hogy az igazitas-mod tulajdonsagot atallftva a Labell szoveg azonnal kozepre igazft6dott. 10. 8. eszrevette.01dal abrajan lathato tirlaptervnek a 2.hogy a Labell legyen koztuk az. Caption tulajdonsagat allftsa Jdtek-te: 4. aztan pedig a Paste funkci6val keszitsen ket masolatot (vegye eszre.anegerintjuk" mindharmukat). A 2.Bold . ha ilyet nem talal). majd mozgassa el ugy. hogy aztan a Precision Select kurzornak a form egy tires resze felett torteno elhuzasaval letre hozza az elso. ugy. es allitsa a BackColor tulajdonsagat mondjuk a szfnpaletta elenksarga szinere.2 fejezetben mar elkezdett megvalosftasat. Vegyeeszre. akkor oket a Labell PIROS szavai fole kell iisztatni.llftsa a Labell objektum Alignment tulajdonsagat 2 . csak egy szepseghibaja van. FEJEZET A FEJLESZTOKORNYEZET HASZNALATA 2. majd ott az ablak Create New Folder gombjat hasznalva letrehozva egy HolAPiros nevii alkonyvtart. Sajnos.3.konnyen elerheto. A Teremtest kezdje az eszkoztar Label vezerlesere val6 kattintassal. hogy a formon mindegyik teteje egy racsvonalhoz illeszkedjen.armigy kellemesen hasznalhato . Most jelolje ki 41 6. hogy az altala megjelenftett szovegreszek szinet (vagy mas attribiitumat) meg lehessen adni.2.folytathatjuk a 31. Legvegul elrendezztik oket a formon.Ha mar ennyit erolkodott a cfmsor eloallitasa erdekeben. hogy a PIROS szavak nem piros szinnel jelenitodnek meg. hogy ne jelenftsen meg semmit. csak ezekbe nem irunk semmit.Center. at Most kapcsolja ki az Options dia16gusablak Generallapjanak Align to Grid opciojat. A. hogy a piros objektumok nehogy a kelletenel tobb karaktert is lefedjenek. hogy sikeruljon a Labell ill a Label2 tartalmat pontosana fekete szinfi piros szavak ala mozgatni. aztan . mert ez a projekt neve) a projektfajl tarolo helyeul. A megjeleno Save File As dial6gusablak segftsegevel elnavigalva az on VB peldaprojektjeinek "gyiijto"-konyvtaraba. hogy a megfelelo szavak kezdetei egy-egy fuggoleges vonalhoz illeszkedjenek (ha nem kapcsoltuk volna ki az automatikus igazitasra vonatkoz6 opci6t. Aztan a Format menu Align almenujenek Top valasztasaval igazitsa ossze az objektumok felso szeleit. aztan ketszeri duplikalasaval fogjuk tenni. E celbol hajtsa vegre illetve figyelje meg az alabbiakat: 1. a stilus at Bold-ra es a meretet 24 pt-re. most nem kerjuk). 3. az AutoSize tulajdonsagaikat allitsa True ertektire (Igy szelesseguk eppen a benntik megjelenitett szovegnek megfelelo lesz). hogy az IDE most nem erdeklodott a fajlok helyerol (mar tudja oket). akkor az objektumok legfeljebb csak a racshalo oszlop-tavolsaganak megfelelo pontossaggal lehettek volna mozgathat6k).24 formaban. 12. Most kattintson a Font tulajdonsag ertekere. hogy azabra jatek cimet tartalmaz6 soranak magassagaban legyen. Vegye eszre.2 szerint nevezze at a projektet es a formot. hogy mindharom garantaltan azonos meretu legyen. amelyek a PIROS sz6t szinten Matisse ITC . es a jobb eger-gombra kattintva hivja elo a gyorsmennjet (ez valoszimileg gyorsabb. A jobb also sarkanal leva atmeretezo gomb elhuzasaval formalja a formot nagyjabol a 31. de a bal szele illeszkedjen a form bal szelehez. mi tortenik az egyes kattintasok hatasara).a racshalo segitsegevel .4. hogy szep. Mintapelda (folytatas): A projekt es az interfesz form elkeszitese A jatek megtervezese . Ha mar megvan mindket.

Mind az interfesz form(ok) mind a standard modul(ok) program-kodjanak frasa ugyanolyan megjelenesu. allitsa a szintiket kekre illetve zoldre. A program-ked Irasa A kovetkezo reszben a formhoz.egyidejuleg es legfeljebb egy kod-ablak ugy.circle. FEJEZET A FEJLESZTOKDRNYEZET HASZNALAT A mindharmat.Vegtil. csak semmire sem reagal. hogy a keret ne erintkezzen a cfrnkekkel es legyen koztuk egy kis hezag. adjunk nekik neveket (lbIComp.es ActiveX vezerlesek lehetosegeit. szelesebbnek es magasabbnak kelI definialnunk a gyufaskatulya-cfrnkeknel (az objektumok Width ill Height tulajdonsagait olvasvaes allftva). Ha egy valamely programelemhez tartozo kodablak a kepernyon aktualisan nem lathato. a. 42 .Horizontal Spacing almenujenek Make Equal parancsaval a bal. Windows-standard atmeretezheto ablakokban tortenik. 13. akkor az a Project Explorer ablakaban a programelem kivalasztasa utan (szukseg eseten elozoleg a gyujtojet . Majdnem meg is volnank .1 es 2.es jobboldali ket-ket cfrnke tavolsagat allftsa azonosra (a kozepso cimke kozepre allitasat vegezhette volna a Center in Form almemi Horizontally parancsaval is). Ehhez megint cimke-mezoket hasznalunk. mert (a Project Explorer ablakaban megjeleno) minden egyes programelemhez nyitva lehet . A teglalap hatarolo vonalanak vastagsagat (BorderWidth tulajdonsag) 3 pt-ra allftva jol latszodo kerethez jutunk.Regular . hatterszfnuket a tabla hatter-szinevel megegyezonek es rneretezestlket automatikusnak G61 tette.Mivel e harem cimkere hivatkozni is szeretnenk (a program kesobb irand6 kodjaban). es azonos rmikodesi modu.oval.. es a Format menu . ami folott kis cfrnkek fogjak tartalmazni a program futasa soran fix. Az eredmenyeket tartalmazo cfrnkeket megint csak az egyik kialakftasa utan celszeni duplikalni. azert a lathatosagat szabalyozo Visible tulajdonsagat False ertekure kell allftani. Most sorban hozza letre a Szafnftogep. melyet majd futas kozben. Tobbes szamot hasznalunk. es torolje ki a szoveget. Csak Igy biztosithato az egyes szovegek pontosan szimmetrikus es aranyos elhelyezese (kerem. Celjainknak most megfelelo az alapertelmezett tipus.Az eredmenytabla elkeszitese kovetkezik. a teglalap. amit a vezerlessel mint sablonnal keszftett objektum Shape tulajdonsagaban lehet kivalasztani (pI: 0 . 14. minimalis mezo-meretet igenylo. kezdjuk eloszor az eredmenytabla hatter-reszevel. Termeszetesen. atlatszodva fogunk az egyes objektumok fole tenni. Mivel a program indulasakor e keretet nem akarjuk megjelenftve latni.Ldbra szerinti . 1 . es nem kellett lepeseket ismetelten vegrehajtania). Duplikalja e cimket es mozgassa mindkettot a helyere. ellenkezo esetben piros szfnnel. nem ezaz egyetlen megvalosftasi modja a jatek . es csak aztan latott neki a tulajdonsagok modositasahoz). Ennek tobb alfaja is van. elso sorbelit duplikalni. "kodolasaval" foglalkozunk. Hozza letre ezt a szemmerteket es aracshalot hasznalva ugy.es valtozo szovegeket. IbIPlayer). stb). Elhelyezesuket most mar az Olvasora bfzom. megfeleloen szinezve. Azert. Inditsa el a "programot"! A form megjelenitodik.rectangle. majd allitsa a BackColor-jat valami szemnyugtat6 szfnre (pI rozsaszfn). mielott lathatovatennenk).12 tipusriaknak. hiszen a program futasa kozben (a cfmkekre torteno kattintaskor) egyes tulajdonsagait m6dositanunk kell.:" es a Jdtszopajtds szovegek megjelenftesere szolgalo cfrnkeket.vagy a programelem gyorsmenujenek View Code parancsaval elohivhato.12 333 2.urlapjanak. Elmeletuket elozoleg attekintettuk (lasd: 2.square. mert 3 szamjegynek az adott fonttipussal torteno. es tulajdonsagait az alabbi tablazat szerint allftsa be (kozben gondosan figyelve az egyes allftasok hatasat): lS. Minel jobban ismeri valaki a beepitett. fontjaikat egysegesen Times New Roman . keszitunk egy keretet. A keretet erdemes nevvel (shpFrame) ellatni.1.az elotte leva !±l gombra kattintassal . gondolja meg). hogy az urlapon belul a fejlesztes folyaman hova helyezzuk.illetve a benne elhelyezett objektumokhoz kapcsolodo esemeny-eljarasok keszftesevel. ha eloszor mindharmat kijelolte. hogy az a programelem valamely objektum(ai)hoz tartoz6 kodot mutat. Ezert kell: igazitottsag megjelenes meretezes hatter-szin hatter-stilus keret-stilus font szoveg kozepre 3 dimenzios tartalom szerint feher atlatszatlan fix vonal Times New Roman . IblBlue es IblGreen nevuekre.2.mar csak a' ket iij cimke atfestese hianyzik. es mivel ugyis csak program-futas kozben hatarozzuk meg a helyet (kozvetlentil azelott. Mindegyiket definialja atlatszonak.3.kinyitva) akar a Project Explorer ablak View Code gombja segitsegevel.1. 43 Most allftsa at az automatikus meretezest megszabo tulajdonsagot False-ra. A "szokott" modon. Maga a tabla egy nagy cimke lesz. 2 . ahogy az urlap-terv is mutatja. ezert ezzel most mar nem foglalkozunk. kereszteljuk at oket sorban IblYellow. fel masodpercre: a gep nyeresekor feher-. Mivel rajuk a program kodjaban hivatkoznunk kell. Hozza letre az elso cimket. Ehhez az eszkoztar standard Shape vezerleset erdemes hasznalni.5. Erre a trtikkre azert volt szukseg. ami a jatekos valasztasat kovetoen a gep altal gondolt objektum korul villan fel. A masodik sorbeli kettospont elkeszitesehez celszeru az. de fix hataru megjelenlteset akartam elemi. aztan a helyere mozgatni. annal hatekonyabban kepes az 1DE segftsegevel programozni. edes-mindegy.2). akar az IDE fo. minden komolyabb fejlesztesi fazis utan vegzett mentest. Tehat. Ezzel be is fejezttik az interfesz form elkesziteset (remelhetoleg. 3 .

Az IDE az esemeny-eljarasok "gyartasat" automatizalja azaltal.ha egyaltalan vannak _ az eljarasok szamara a VB . hogy az opcio-beallito utasitasok (lasd: 4.2. amelyhez leggyakrabban szukseges sajat kezelo k6dot Irni (ez a legtobb objektum-tipus szamara a Click esemeny.3. amelyekre vonatkoznak. esetleg azonos nevii esemeny-eljarasokat a VB a megfelelo programeIemekhez kototten kezeli. Pontosabban: egyediseguk csak a programeIemen beIUI megkovetelt. akkor uresen: lehetoseget adva azonnali kodolasara). Kulonosen kell ugyelni. A File menu Print parancsaval (valaszthatoan: az egesz program. amelyeknek a neve standard m6don kepzett: elotagja az objektum neve. hogy a k6dablak akkor is az alapertelrnezett esemeny-eljarast jeleniti meg. altala mutatott objektumra duplan kattintva megjelenitodik a hozzd tartozo alapertelmezett esemeny-eljaras .ott igen gyakran hasznalt megjelenitesi lehetoseg is: egy barmely. de pl a TextBox tipusti objektumokhoz a Change esemenyt "kapcsoltak" alapertelmezettkent).1).figyelve es magyarazva a tortenteket . vagy mas parameterlistat "kap".futtato magja" altal parameterekkent ad6dnak at.3. hogy a General objektum Declarations kodreszbeli jitasitasai tetszoleges sorrendben Irhatok. akkor ez azzal a kovetkezmennyel jar. aztan az alabbiakat: 44 45 . amelyek elnevezesevel kapcsoIatban altalanos es specialis szabalyok vannak.a szoveg-kurzort az elso soranak az elejen villogtatva (ha meg nem volt k6d Irva hozza. hogy azon semmi valtoztatas nem szukseges. Ha veletlenul "atfrjuk" egy esemeny-eljaras nevet.6. Mivel az egyes programelemek egeszehez (tehat egy-egy konkret formhoz vagy standard modulhoz .mint generalis objektumokhoz) kapcsol6d6an letezhetnek specialis (a programelem egeszere ill az egesz programra vonatkoz6 opcio-beallfto es deklaraciosy utasftasok es eljarasok (koztuk a specialis. azonban a programoz6 felelossege ezeknek a szabalyok szerint torteno vegzese. ut6tagja az esemeny standard tipusneve. Itt jegyezziik meg.procedure). hogya kodolds muvelete technikai szempontbol (mit. mint amit az IDE helyesnek gondol. avagy csak a Procedures ablakban valaszthatok kozul egyet (a Szerzo a legpraktikusabbnak az Editor lapbeli osszes opci6 bekapcsolasat-. A fejleszto dolga "csak" az eljaras belsejenek a megfrasa.3 fejezetbeli labjegyzetet). m6dot adva kozuluk egy-egy kivalasztasara is.3. ha az objektumk6d valtast az Objects mezo listaja segitsegevel vegezzuk. a programnyeIv reszletes attekinteseig szorftkozzon csak a k6d olvasasara (hiszen az tobbnyire j6I ertheto.7.3. lasd a 2.5) mar lattuk. Ezzel kapcsolatban megjegyezzuk. Nyissa meg a HolAPiros projektet a projektfajlja frmHolAPiros form kod-ablakat (peldaul: miutan a frmHolAPiros formot valasztotta. es az elo. hogy a k6d minden szavat megertse. ezek kodolhatosagat is a programelemek ablakai biztositjak. hogy egyelore tekintsen eI a VB nyelvti utasitasok reszletes magyarazatatol. angol nyelvii mondatokban van megirva). A Visual Basic IDE altal alkalmazott konvencio szerint a fejlesztorendszerben keszitett program objektumainak kUlonbOzo tlpusu esemenyekkel kapcsolatos kezeloi olyan Visual Basic eljarasok (. kattintson az ablak . ezert a General objektum procedurai kozott soroI6dik fel). hogy tobbsegeben deklaracios utasftasokbol all). lehetseges esemeny-fajtak / met6dusok / specialis-kodreszek never Iistazzak. csak arra kell ugyelni.es hogyan csinalunk) vildgos legyen. es a specialis utasftasok kodresze egysegesen Declarations (tekintve. valamint az Editor Format lap standard beallitasait tartja). hanem egy masik objektum hasonI6 tipusu esemenyet kezelo eljarasbol (annak lemasolasaval es a masolat modosftgatasaval) alakftjuk ki. Az alapertelmezett esemeny fajtaja objektumtipusonkent mas. 2. Az esemeny-kezeld eljarasok elnevezese Elozoleg (lasd: 1.3. mert jelentosen kepesek rnegvaltoztatni a k6d-ablak kinezetet es hasznalatat).2. mert a kU16nbOzo programeIemekhez tartoz6.1 es 4. A k6d-ablak tartalmanak megjelenitesere az Options dial6gusablak Editor valamint Editor Format lapjainak az opci6i vonatkoznak (atallftasuk csak egyeni hasznalani szamitogepen praktikus.5) elobb Iegyenek azoknal. objektumokhoz kapcsol6d6k: a met6dusok.4 folytatasa): A program-ked elkeszftese Kerem az OIvas6t. Az esemeny-eljarasokra vonatkoz6 szabalyozast a kovetkezo reszben targyaljuk. es hivja elo a Project Explorer ablakaban a View Code gombjara). hogy az ablak mindig az aktualis programelemhez tartoz6 osszes programozasi egyseget mutassa-e. A k6dablak cfmsora alatti (Objects ill Procedures nevii) Iegorditheto Iista-mezok a programelem osszes objektumait illetve az egyes objektumok tipusanak megfelelo.vagy csak az aktfv k6d-ablak altal mutatott programeIem) k6dja printerre vagy szoveg-fajlba listazhato. hogy a k6dablak Objects mezeje altal mar kivalasztott objektumhoz a kezelni kfvant tfpusu esemenynek a Procedures mezo listajabol torteno kivalasztasa hatasara legeneralja es megjeleniti a megfelelo eljaras standard "keretet" ugy. Az IDE megengedi a k6dok teljes tartalmanak (fgy az altala generalt eljaras-fejeknek) a modosftasat. hogy a program objektumaihoz kapcsol6d6an keszftett esemeny-kezelo eljarasok nevenek egyedieknek kell lenniuk.a Default to Full Module View azt szabalyozza.7.6. hogy az illeto eljaras nem hiv6dik meg az elvart m6don (az iIyen eljaras altalaban a programelem egy eljarasava valik.es mas lehet: altalaban az. hanem az. ha az esemeny-eljarast nem az automatikus m6dszerrel keszittetjiik. Most meg nem az a fontos.hajtsa vegre segftsegevel. Az esemeny-eljarasok es a met6dusok olyan standard VB nyelvii eljarasokkent illetve fuggvenyekkent definialandok (reszletesebben lasd 4. Ezek kozul az egyik legfontosabb . 2. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A A Form Designer ablakaban dolgozva van meg egy . a tobbiekkel kapcsoIatban pedig csak a programelemen ill az egesz programon beluli egyediseguk kovetelmeny.ill ut6tagot alahuzasjel ("_") valasztja el egymastol: az esemennyel kapcsolatos osszes kiegeszito informaciok . A programelem egeszet jelento objektum neve minden ilyen objektum szamara egysegesen General. A mintapelda program-kodjanak letrehozasa celjabol kovesse az alabbi utasftasokat: O. Mintapelda (2.

A Tools menu Add Procedure .Top koordinataival 7... lblYellow. Declarations lett. Miert a Click? Gondolatolvas6 a VB ?). majd frja be az alabbiakat! Randomize intThinkBox = Killonben minden futasnal azonos lenne a szamsor Int(3 * Rnd + 1) '[1. irja meg a megnyilo Click (miert ez?) esemeny-eljaras kodjat (cfrnke-azonosftokent persze 3-t frva)! 6.a cimke y-koordinataja cimke k6dszama Funkcio: 4. a kivant szinben Parameterek: intLabelLeft . Loop kozotti utasi tas End Sub • A k6dablakban egy sor barmely karakterpoziciojan leva' utani. vbRed A keret felvillantasa Else A szamit6gep nyert lblComp.~l. FEJEZET A FEJLESZTOKORNYEZET HASZNALAT A 1. Kozuluk azegyiket (SetTable) mar lattuk: a cfrnkek kattintas-kezelo csemeny-eliarasokbol "hiv6dik" az aktualis cimkevel kapcsolatos kiegeszito informaciokkal (mint aktualis pararneterekkel).rendszer.Lod i ik: a Do . vegal . A mar elkeszitett eljarasokat nem "erintve".* Ez kommentar (: labjegyzet).et:e «Lep jein. ami vegrehajtasakor a programunkat (de csak a mienket) fel masodpercig varakoztatja.. intLeft.az elobbihez hasonl6an es onalloan irja be a megfelelo (persze az 1 helyett 2-t tartalmaz6) szovegetl 5. sme t. alabbi k6djait: az eredmenytabla megfe~elo olde lerie frissitese es ..a cimke bal-felso sarkanak x. majd frja be: Eljaras-hivas az 1-es cimke bal-felso sarkanak SetTable 1.sajnos .Caption = Val(lblPlayer.a befras~kra. gep altal gondolt ill a jatekos altal k ive Lee ztzot:t: .ill intLabelTop ...3J-beli veletlen egesz szam 3. kodszamat 2rando! tarolja 2.a cimke x-koordinataja . Az egesz kod no~l betukkel Dim intThinkE!ox As Integer 'A gep-gondolta cimke. intTop As Integer) If intThinkBox = intBox Then ' A jatekos nyert lblPlayer. majd a szoveg-kurzor altal mutatott pozfci6t61 kezdve frja be az alabbiakat! . Valassza az Objects mezoben Form-t (Procedures-ben Load lett es nyflt egy tij eljaras-i.5 ' = aktualis idopont + ~ mp Do While (Timer < sngTillSeconds) . u _u utan semmi sem allhat shpFrame. es a .. f uj cimke-k6dszamra val6 gondoltatas (uj veletlen szam) Feltetel: intThinkBox-ban az utols6 gondolt cimke k6dszama van Hatasa: intThinkBox-ba uj veletlen cimke-k6dszamot general Parameterek: intBox intLeft intTop . A programban szuksegunk van egy eljarasra. lblYellow.al~s cim~e ~or.a megjelenitendo keret RGB szinerteke Funkci6: A kbvetkezQ Private sor tul hosszu.Caption) + 1 ' Frissites ShowFrame intLeft.~~p ~lt...Top = intLabelTop . k keretfelvillantas kezdemenyezese a . cimke k6dszamainak v i zeae l..: alk~lmazu?~ .2.a valtozatossag gyonyorkodtet . Click tipusii eljaras-keret. es majd benne a Name mezo kitoltesevel (ShortPause) keresztelje el a szuletendo "k6d-keretet".a jatekos altal valasztott .y koordinataja a form rendszereben in tFrameColor . es End Sub-os) teljes.. A ket eljaras szamara nem lehet az el~bbi m6don sablont gyartatni (parametereik vannak).Left.. Most ..Caption) + 1 ' Frissites ShowFrame intLeft. hanem hfvja be a frmHolAPiros formot a Form Designer ablakaba es duplan kattintva az IblGreen nevii objektumra. vbWhite A keret felvillantasa End If intThinkBox = Int(3 * Rnd + 1) Uj veletlen szam generalasa End Sub a keret (shpFrame) ~ masodpercig tart6 megjelenitese a helykoordinataival adott cimke korill. intTop. ugyanabban a sorban leva szoveg csak a kornyezo k6d magyarazataul szolgalo megjegyzes (~cpmment).. es a megnyfl6 Click esemeny-eljaras belsejebe . . folytatodasat jelzi a sor vegi u _u ~ub ShoWFrame(intLabelLeft. meghivja a ShowFrame eljarast a keretnek az a~t~. dolgozzon az op..~Ii" me?felelo szinnel tOrteno.. parancsat hasznalva hfvja fel az Add Procedure dial6gusablakot. nelkule itt aprocesszor ~ mp-ig uilresenu dolgozna Loop .Jcitolteset" mar . intLabelTop As Integer. oka?). Valassza az Objects mezoben IblYellow-t (Procedures-ben Click lett es nyilt egy tij. g?ndolt iIIetve a"jatekos altal valasztott cfrnkek egyezesenek vagy kulonbozosegenek megfelelo tevekenysegeket hajtja vegre (frissfti az eredmenytabla megfelelo oldalat. Valassza az Objects mezoben General-t (Procedures-beri. tovabba UJ cfrnkere "gondoltat").60 pel balra feljebb lesz shpFrame.ne a k6dablak Objects mezejet hasznalja objektum-valasztasra. ezert most egy masik rr:odsze. A programnak szuksege van meg ket eljarasra. Valassza az Objects mezoben a masodik cimkenek megfelelo IbIBlue-t. Visible True is shpFrame e16jove. mi ennek az oka"). de . barhova frhatja az eljarasok iPrivate Sub ..Caption = Val (lblComp.Left intLabelLeft .. Amig a (feltetel) teljesul DoEverits Mig varunk.keret". amelynek valasszon Sub (azaz eljaras) tfpust es definialjon Private cehi (azaz csak az aktualis programelemben torteno) felhasznalhatosagot (a dialogusablak altal meg allithato All Local variables as Statics kapcsol6t jeloletlenul lehet hagyni)! Jovahagyast kovetoen programelemiink kiegeszul egy met6dussal (pontosabban: csak a keretevel). intTop.senki sem csinalja meg helyettiink: Privat:e Sub ShortPause () Az eljaras fel masodpercig varakoztatja a programot (a Timer filggveny az ejfel 6ta eltelt masodpercek szamat adja vissza.BorderColor = intFrameColor A keret kivant szine shpFrame..60 A cimkehez kepest 60 twipshpFrame. fel-masodperces megjelenitese celjabol. ShortPause majd uszkve ~ mp utan shpFrame.Visible False esmet csak eltunedeze End Sub = es 47 . tizedespontos decimalis szamkent) Dim sngTillSeconds As Single ' lebegopontos-szam valtozo: sngTillSeconds = Timer + 0. amit a fordft6program nem tekint a k6dhoz tartoz6nak es ami az Options ablak Editor Format lapjan definialt Comment Text szinre festodik •• Az eljaras Add Procedure dial6gusablak altal generalt keretet termeszetesen nem kell ujolag befrni \ Private Sub SetTable(intBox. _ ~ntFrameColor As Long) .

Ahogy a ket utols6 eljarasnal lathato.es nagybetiis valtozatait nevekben kulonbozonek tekinti). ha a strand "A" kabinsoranak 23-as kabinjat reprezentalja). Elotte azonban sorra vesszuk a szinte minden objektum-tipusban elofordulo fobb tulajdonsagokat. hogy vegrehajtodasakor egy objektum valamely tulajdonsaganak-.de azert egyseges formaturmi funkciondlis leirds van. es amely nem lehet azonos a VB ku1csszavainak egyikevel sem (pontosabban: az IDE objektumok neve meg VB ku1cssz6 is lehet). Nem szerencses egy iirlap cimkejet az IblA23 nevvel ellatni (de meg ez is lehet helyes. ezert az objektumok nevet a tipusuknak megfelelo elonevbol (peldaul. 3. mert ez funkciojanal fogva is a vezerlesek alapjan keszitett objektumok (~mezok) kereteul szolgal. ha csak az objektum nevet olvasva vilagossa valik az objektum tipusa es programban betoltott szerepe. Ezzel kapcsolatban megjegyezziik meg. vagy a program egy valtozojanak a tartalmat az altalunk megadott ertekre allithassuk. az eljards eldtt egy szukseg szerinti tartalrmi . IblFirst_Name is megfelelo nev). met6dusainak es esemenyeinek a lefrasat. vagy forditva (bar a VB . legfeljebb 255 (de az IDE objektumoke "csak" max 40) karakter hosszusagu szoveg. fontosabb tulajdonsagainak. hogy az eljaras / fuggveny rmikodeset.Jiivatalosan'' ugyanazon betii kis. amit az utasitasok megfelelo indentdldsa biztosft. Fontos a k6d j6 attekinthetdsege is. Gyakorlati szempontb61 helyeselheto az objektumok elnevezesekor valamilyen konvenci6t kovetni. A targyaltak . amely fuggveny-eljaras eseten kiegeszul meg a visszaadott ertek tartalmanak leirasaval.4. cirnkemezo tipusu objektum eseten ez lbl. hanem hogy a programban betoltott funkciojat magyarazza. Melleklet tartalmazza) es a programbeli funkci6jukra utalo utonevbol szokas osszeallitani. hogy azutan. es hasznalatat bemutat6 mintapeldat (sokszor csak a pelda megnevezeset) 2. Az ismertetok soraban a formot vettiik elore. • • tartalmazzak. Hogy ne usszunk teljesen a levegoben. amely a masodik karakteretol kezdve mar szamjegy.1.3. akkor az egyes szavakat praktikus elvalasztani a konnyu olvashatosag erdekeben (igy IblFirstName is. Altalanos elnevezesi szabalyok A nev egy betiivel kezdodo.es alahiizas karaktert L) is tartalmazhat.tobbnyire . A form es az alapvetd vezerlesek Az elozo fejezetekben latott peldak bizonyftjak a vezerleseknek a vizualis tipusu fejlesztorendszerekben betoltott nelkulozhetetlen szerepet. 3.elhelyezett megjegyzesek hivatottak magyarazni. a programk6ddal szembeni formai kovetelmeny is kapcsol6dik. reszletes ismertetesevel folytatjuk. hogy kisbetii helyett nagybetiit hasznalunk.2. mert az egyseges kodolas-mod az esetleg tobb komponensbol aHa programot jobban attekinthetove. a leggyakrabban Iiasznalt objektum-tipusok szokasos nev-prefixeit az I. most nezzidc meg a Basic programnyelv ket legfontosabb utasitdsdt es a program-irds alapveto formai szabdlyait. peldaul. A fejezet peldaiban kenytelenek vagyunk nem pontosan megmagyarazott VB utasftasokat is hasznalni. FEJEZET 2. Ez azt jelenti. Mtikodesuket a benniik . Az ertekado utasitas (~assignment statement) miiveleti jele (~operator) az ertekado-operator (=). az nyugodtan atugorhatja e fejezetet. az utasitas pedig az alabbi formaban frando: «objektum-tulajdonsag I' valtozo> = <ertek> A tovabbiakban szintaktikai lefrasokban a I szimb61umot annak jelzesere hasznaljuk. ami azonban nem zarja ki a szigonian vett celjuktol eltero felhasznalasukat. ut61ag is elnezest kerunk a konyv peldainak ez okbol .es kulonosen a tulajdonsagok . Az ismertetok harem reszre tagolodnak ugy. praktikus kizarolag az angol ABC betfiit hasznalni. Az ertekado utasitas Az utasftas celja. Az IDE attekinteset aform es a legfontosabb beepitett vezerlesek egyenkenti. hiszen a nyelv pontos szintaktikai / szemantikai lefrasa csak a kovetkezo fejezet temaja (aki kepes elviselni a nyelv szabalyainak kicsit szaraz ismerteteset megelozo peldak nelkul. Ha egy objektum funkci6ja csak tobb sz6val jellemezheto (peldaul: first name).angol nyelvii objektum-neveiert. A strukturalt programozas kodolas-technikaja A strukturalt programozas tervezesi elveihez nehany. hogy az altala osszekapcsolt szintaktikai egyseg ajel ket oldalan allok barmelyiket jelentheti 48 49 . hogy az egyes reszek az objektum-tipus • feladatkori osszefoglalojat (a szerepkorok altalaban viszonylag sziikre szabottak. J6 az. E lefrasnak nem az a celja. _ ha egy objektum nevekent a Visual Basic ku1cssz6t vagy valamely tulajdonsag nevet adjuk. Kozuluk a legfontosabb a k6d ondokumentdlo jeUege. a nyelvvel tortent megismerkedeset kovetoen terjen csak vissza ide). mert ez a k6dot rosszul olvashatova teszi es felreertesere ad alkalmat. hogy tapasztalatok szerint problemdt okozhat _ nevekben a magyar ekezetes karakterek hasznalata (bar a VB magyar valtozata ezt megengedi).tanulmanyozasahoz a mintapeldak megertese es a gepi megvalositasukon tulmeno ond1l6 kiserletezgetes elengedhetetlen. hogy a program megjegyzesek formajaban magaban a programk6dban tartalmazza a k6ddal kapcsolatos tudniva16kat.8. kevesbe felreerthetove es olvashatobba teszi. _ ha egy iirlap (~form) nevenek modosftasakor csak annyit valtoztatunk.szinte soronkent . peldaul: az elozo fejezet mintapeldajaban a szoveg-megjelenitesre szolgalo cfmkemezoket a gyufaskatulyak reprezentalasara hasznaltuk).

Peldaul. 2.novelo) utasitas igenyli a karakteresen adott szam Val fuggvennyel vegzett binaris szamma alakitasat (reszletesen lasd a 3. azaz olyan byte-sorozat.4.. az l-es. hogy a jobb oldalon alI6 kifejezes numerikus erteket allitson elo. Az ISO (International ~tandards Qrganization) uj standardja a Unicode. A met6dusok vegrehajtasanak igenylese a programban «objektum-nevzccmetodus-nev» <parameter-lista> szukseges forrnaban tortenik. A kodolas formai szabalyai A white space (azaz a szokoz-. kiveve a Basic kulcsszok-es operatorok-. akkor a Labell. A k6drendszer bovitesenek igenye vezetett az egyes nyelvcsoportok szamara egyfajta kod-standardul szolgalo tin ANSI k6dlapok kifejlesztesehez.szinte .7. Met6dus vegrehajtasa ("hivasa") <ertek>: a bal-oldalon a1l6 szintaktikai egyseg tipusdnak legalabbis atkonvertalhato) kifejezes kell legyen konstansokat. Visible = True utasftasa az shpFrame nevu objektum logikai tipusu Visible tulajdonsagat True (.egyszeres pontossagu lebegopontos szam' tfpusii .es az objektum-azonosfto nevek belsejet.2.igaz) logikai ertekre allftja. a Basic nyelv nem mindig ilyen engedekeny. A vales szamok az tin IEEE standard lebegopontos abrazolasuk eseten a memoriaban 4 (single-) ill 8 n (double-precision) byte-on tarolodnak ugy.l ill 2. barmi is volt elozoleg bennuk. Ha egy utasitdst a kovetkezo sorban akarunk folytatni. Az IblPlayer.a form megjelenitheto. akkor azt a sor vegen jelolni kell: egy szokozt koveto alahuzas karakterrel (" _").1415926) egyszeres pontossagu lebegopontos szam formajaban tartalmazza.azonos tartalommal rendelkeznek. Az utasitas vegrehajtasa soran eloszor mindig az utasitasnak az operatortol jobbra leva <ertek> resze szamitodik ki (a benne szereplo valtozok. megfelel6 (de arra (lenyegeben barmely .mellekletben) az osszeadas rmiveletenek elvegezhetosegehez.Show utasftassal . 51 50 .szamjegy nelkul) 23 ill 52 bitet.Left = intLabelLeft . vdltozokat es objektum-tulajdonsdgokat Az objektumokkal kapcsolatos minden tevekenyseget az objektum tipusanak megfelelo rnetodusok (lasd: l. az objektum altal. amelyek a formban is es . azonos nevet viselnek es . a tizedespont. ha az sngPi nevu valtozo aktualisan a TT ertekenek 7 tizedes-jegy pontossagii kozeliteset (3. 3.Caption = Val(lbIPlayer. . az m (mantissza: binaris tort formaban. az elozo bekezdesbeli Caption-inkremental6 (.3) vegzik. hogy bennuk az m*2 (ahol I ::. az shpFrame. amelynek egyes byte-jai a 3-as.3. 6 szamjegyek (mint karakterek) ASCIt* karakter-kodjai (lasd a lemezmelleklet Konverzio'Tesrt peldajat). 3. hogy egy konkret ertekado utasitas bal oldalan allo szintaktikai elem (valtozo vagy objektum-tulajdonsag) csak szoveg befogadasara alkalmas. azonban ha csak a memoriaba torteno betolteset igenyeljuk.szinte minden vezerlesben leteznek. ahol a <parameter-lista> a met6dus mukodesehez parameterek (tenylegesen: ertekek.. a Visual Basic is ezt hasznalja belso szoveg-tarolasra Megjegyzes: e szabalyt kivetelek "erositik" (peldaul: bar a FormI . hogy azutan ertekul ad6djon a baloldalon a1l6 valtozonak vagy objektum-tulajdonsagnak.Editor Format lap) jelzi. < 2) forrnaban felfrt szam Iml elojele I bitet. Altalanos tulajdonsagok E reszben azokat a tulajdonsagokat nezzuk at. es felismert Basic kulcsszok is megkulonbozteto szinnel jelenitodnek meg. akkor ezt a Load Formi Basic nyelvi utasitassal kell megtenni. itt kulon is mar nem foglalkozunk veliik. ami utan mar semmi sem allhat. Peldaul. FEJEZET A FORM ES AZ ALAPVET6 VEZERLESEK amelyben <objektum-tulajdonsdg>: egy objektum valamely m6dosfthat6 tulajdonsaga <objektum-nev>.es objektum-tulajdonsagok aktualis ertekeit hasznalva). Az elozo fejezet mintapeldajaban (Iasd: 2. de a helyesen frt. a kezdo . a VB nyelv szabalyai szerint megengedett az. lasd 3. a k6d indentalasra szolgalo tabulator es a komment) karakterek a kodban barhol elofcrdulhatnak.7) a ShowFrame eljaras shpFrame. Ha a sorban olyan szintaktikai hiba lenne. azt a hiba-szfnnel (lasd: Options . Att61. 3. mert a Basic fordft6program az utasitast a sor Enterbillentyilvel torteno lezarasa utan ugyis automatikusan atformalja. A VB szovegszerkesztoje biztositja meg a valtozoneveknek az else elofordulasuknak megfelelo automatikus atformalasat.2.60 pedig ugyanazon objektum . Sajnos.Left tulajdonsaganak tartalmat az intLabelLeft valtozo ertekenel 60-nal kisebbre m6dosftja.Caption) + 1 utasitas pedig a jatekos eredmenyet tartalmaz6 lblPlayer (szoveges tipusu) cimkemezo Caption tulajdonsaganak aktualis erteket noveli l-gyel..3. gepek es periferiak kozotti informacio-atvitel tamogatasara (American ~tandards ~ommittee for Information Interchange roviditese). de az erteknek a szintaktikai elembe torteno beirasa elott szovegge konvertalodik.1415926" szoveg lesz. form eseten az iirlap cimsoraban. vegul pedig az n (exponens: 2-es komplemens formaju binaris egeszkent) 8 ill II bitet foglal el ** Kod-szabvany.mindig I-es .1 ill k6dja: 2.3. ami igencsak nem "metodushfvasszeni"). Szokozoknek az utasitasokon beliili frasaval nem is erdemes bajl6dni. hozza kapcso16d6an megjelenftett szoveges informacio. amelyet az MS uj operacios rendszerei (Windows '98 es NT) es programjai is tamogatnak.<tulajdonsag-nev > formaban megadva. vezerlo-mezo eseten a vezerles tipusatol ruggo helyen jelenik meg.3. valamint a program-valtozo.azaz a FormI formra alkalmazott Show metodussal . amit a fordfto kepes "ott. Ezek az alabbiak: Name: Caption: mar lattuk az elozokben. helyben" felismemi.1) vesszovel elvalasztott listaja.Caption = sngPi utasitas eredmenyekent a Labell nevii cfrnke-objektum Caption (szoveges tfpusii) tulajdonsaganak erteke a "3.hasznalo keplet'').

> ha meg nem volt betoltve a memoriaba.3. hozza kapcsolodo modosftas elvesz.implicit modon kezdemenyezheto. A program futasa kozben egy formnak kepernyorol tOrteno eltuntetese a Hide metodus hivasaval (illetve az ennek megfelelo <form-nev>. de akar egy program-valtozo kezdoertekkel .7-beli peldankban: egy veletlen szammal . atskalazhatok es tengelyeik iranyultsaga is megvaltoztathato (lasd: a kontener-vezerlesek Scale. az objektum szfne. ha a Visible tulajdonsaga False erteku (aktfvva valasat egy Activate-..vagy az objektum megjelenftesi modja (lehetseges ertekei: 0. vagy mert vele kapcsolatban vegre lett hajtva a Show metodus. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK Enabled: Visible: Left. A formnak a memoriabol az UnLoad utasitassal torteno torlodeset kovetoen azonban minden elozo. A form eltunese a kepernyorol nem jelenti azt. - Megjegyezziik. amfg ezt explicite is nem igenyeljuk az UnLoad <form-nev> utasftassal. hogy hivatkozhassunk ra: ilyenkor ugyanis automatikusan betoltodik. es a reszekent automatikusan generalt form (Form}) melle hozzon letre meg egy masikat is a Project .Fixed Single (az utobbi.Jepcsoben" eltekintve. addig a memoriaban marad (es ezert a vele.Add Form paranccsal. melynek alapvetoen ket fajtaja van aszerint. majd a fokusz birtoklasat egy GotFocus esemennyel jelezve. Top: valaszoljon-e valamilyen esemenyre az illeto objektum. A form tenyleges eltuneset persze megelozi a fokusz elvesztese es ablakanak deaktivalodasa. A normal ablakok is ketfelek lehetnek aszerint.illetve normal (nem-MDI) form. azaz sima ill 3-"dimenzios").a program altal kezelt dokumentumok megjelenftese celjabol szolgalnak-e.Add MDI Form paranccsal. Visible = True utasftas. A koordinatak es rendszereik ismerete igazabol a kontenerek grafikus met6dusait hasznalva valik fontossa e~ 52 . es legkozelebbi behivodasakor megint csak a fejlesztokomyezet altal inicializalt allapotaban olvasodik be.iirlap) Felhasznaloi interfesz celjara szolgalo programelem. majd ezt is futtassa es figyelje meg! Mi csak a "normal" ablakos alkalmazasok keszftesevel foglalkozunk. ezekrol megfelelo esernenyek altal jelzest is ad. bar a VB IDE segftsegevel az MDI alkalmazasok is viszonylag egyszeriien elkeszithetok. mas objektumok szamara pedig Form-. nagyjabol a kovetkezok tortennek: zajlik. tulajdonsagait illetve Scale metodusat).illetve ablakok kozotti kulonbsegerzekeltetese (de semmikeppen sem magyarazata vagy a lehetosegek tarhazanak bemutatasal) celjabol hajtsa vegre az alabbiakat: • Hozzon letre egy uj projektet. lasd a Form-nal kulon. hogy x-tengelyuk a kontener felso hatara menten jobb-fele-. Visible = False utasftassal). azaz ki lett adva a «form-nevz-. ami azzal a kovetkezmennyel jar. kiveve.5. az objektum helye a kontenerenek" a koordinata-rendszereben. hogy a memoriabol is torlodik. Form (. rendszerenek mertekegyseget hasznalva: Appearance: BorderStyle: az ablak. de gyerek-ablak szamara a szulo Mlrl-form-i«: lasd 3. es a generalt Form} form MDIChild tulajdonsaganak True-ra allftasa utan hozzon letre meg egy masik formot is.3. Egy objektumot teljes egeszeben egy kontener-objektum hatdrain beliil hozva litre az objektum abban a kontenerben levonek tekintodik (meg az objektumok helyet is a konteneruk koordinatarendszereben kell megadni. ugy. hogy egy kontenert elhiizva a tartalma is vele mozdul). ennek vegeztet a program szamara a formhoz kapcsol6d6 Load esemennyel jelzi (amelyben akar az aktualis kornyezettol filggo inicializalas-. vagy hasznalatuk mellerendelt ablakokkent tortenik.. Az MDIChild tulajdonsagukban False (alapertelmezett) ertekii normal ablakok hasznalata eseten nincsen kozottuk olyan viszony.alkalmazastl • Most hozzon letre egy masik uj projektet. hogy multiple document interface alkalmazas foablakakent szolgal-e: MDI. menu.None ill 1 .ami az utobbival "ekvivalens" ki lett adva a «form-nev».normal'' vastagsagii keretezes az alapertelmezett). rogzftett-i. az ablakok ilyenkor szigonian egymas melle rendelten leteznek. az objektum megjelenftesi stflusa. akkor beolvasodik a projekt-fajl altal mutatott helyrol. A "sallangokt61" Height. ismertetjiik. A form memoriabol val6 torlodesenek felulbiralasara is m6dot ad az ilyenkor generalodo UnLoad esemeny.Screen objektum. E ket ablaktipus elterese (bar else ranezesre nem szembetuno) a belejuk programozott. ezert szolgal az egyes tipusok letrehozasara ket kulon menuparancs (a Project menu Add MDI Form ill Add Form parancsa).vagy egy objektumaval kapcsolatban a program vegrehajtasa soran elozoleg vegzett modositasok is elerhetok maradnak). majd futtassa es figyelje meg az igy keletkezett . amely a Windows operacios rendszer altal tamogatott modon mindenfele automatizmusokat szabalyozna. mertekegyseguk pedig a twip.Flat ill 1 . FramePictureBox tfpusii objektumok. A formok futas kozbeni megjelenitese tobb . sot: mindaddig. Egy form a program futasa kozben haromfele okbol jelenitodhet meg: vagy mert a projekt kezd/i-formja. de most a Project .tOrteno ellatasa is vegrehajthato) ezutan megjelenik a kepernyon. hogy nem kell a formnak mar a memoriaba toltve lenni ahhoz. y-tengelyuk a bal-oldali hatarvonal menten lefele mutat. 53 • Formok kontenerekent (tarolojakent) szolgalhat maga a kepemyo (. a programozo altal tetszoleges informacio taro lasara hasznalhato. lehetseges ertekei: 0 .5).3D(imension).es ablakkezelessel kapcsolatos funkcionalitasok alapveto eltereseben van. lathato-e legyen az illeto objektum. Width: az objektum magassaga es szelessege. BackColor: Tag: A tovabbi lenyegesebb tulajdonsagokat objektum-tfpusonkent 3. vagy . ezen alapertelmezett koordinata-rendszerek azonban (a kepemyoet kiveve) a konteneren belul tetszoleges m6don eltolhat6k. Az alapertelmezett koordinata-rendszerek orig6ja a kontenerek bal-felso sarka.Show utasftas. hogy egy MDI alkalmazas MDI-form tipusti keret-ablakaban annak "gyerek"-ablakaikent .meglehetosen "iires" . a bezaro gombjara kattintassal vagy pedig az UnLoad utasftassal .mint a 2. lasd a megfelelo esemenyek leirasat). kontenere koordinata- Az MDI ill nem-MDI alkalmazasok.

Egyes tulajdonsagok a form grafikus met6dusainak mukodeset befolyasoljak. Mouselcon: az eger-kurzor tipusat specifikalo tulajdonsagok.lefedett. A BorderStyle a formajan tul az ablak atmeretezhetosegere-. akkor) a f6kuszba keriilo (azaz az informaciokat fogad6) objektum GotFocus esemenylekezeloje aktivalodik.Maximized). az elobbinek vb Custom ertekre torteno beallitasa eseten az eger-kurzor nem a MousePointer k6dja-. kiilonben (azaz ha van a formnak nem-Ietiltott allaponi lathato objektuma. ossze a jatek-program eljaras-hivasait az MsgBox fiiggveny hivasaval! 55 _ MousePointer. Hide sal ill Unload utasftassal) es a program Task Manager altali kilovesekor. sot meg az elobb felsorolt tulajdonsagok ervenyre jutasara is hatassal van. amely megadja a torles-igeny okat is. Deactivate: a form inaktivva valasakor. Max. valamint a Load es Unload utasitasok. azaz osszefoglalva: vagy a f6kuszt fogadni kepes objektum-. es nem jelenik meg a TaskBar-on (ha egyaltalan beallfthato. A megjeleno ablak tipusat meghatarozo _ _ _ _ BorderStyle tulajdonsag lehetseges ertekei: 0 _ None: nines sem kerete. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK 3. 1 _ Fixed Single: nem atmeretezheto.2.es ez az igazi kulonbseg ..3. egy masik ablak aktivalodasakor tortenik.''''''< FormLoadTeszt projektje. hogy az idaig feisoroitak futas kozben esak olvashat6k. ~ Activate: a form barrnilyen m6don tOrteno aktivva valasakor kovetkezik be'. a formok egymas kozti kapcsolatait is vizsgalo attekinteset. ha a Wries igenye nem csak egyetlen formmal kapcsolatban jelentkezik (akar a programnak a Task Manager segitsegevel tortenfi kilovese-. de azt megelozo esemeny. a Windows standard ablak-formaja (alapertelmezes). majd ujraaktivalodik). _ KeyPreview: True ertekure allitasakor a billentyiizet esemenyeirol a form is ertesul.1. form-torlodessel kapesolatos vegrehajtasi sorrendjet a form bezarasakor (bezaro gombbal. ha a form valamennyi lathat6 objektuma (azaz amiknek Visible erteke True) letiltott allaponi (azaz Enabled ertekuk False). ellenben az alabbiak jol hasznalhato. akar a program dtfogo. _ AutoRedraw (logikai erteku): meg kell-e maradniuk a grafikus met6dusokkal megjelenitett informacioknak a form esetleges iijrarajzolasakor (pI ha a form egy masik ablak altal . hanem a Mouselcon altal definialt ikon alakjat veszi feI. Windows'95/98 alatt mukodve viszont egerrel ugyan atmeretezheto. kulonosen a Form3 form Form3_QueryUnload menykezelojet es az emlitett nyom6gomb Show metodusanak parameterezeset. Figyelje meg a ket. "parancs torolve" pararnetere reven lehetove teve akar a rmivelet leallitasat is'."U'.5. 54 . mas ok viszont esak bizonyos ablakfajtanal hasznalt. kezelesmodjuk es hasznalatuk nagyjaban-egeszeben azonos. lehetove teve akar a terminalodas leallitasat. Query Unload: az Unload esemennyel sok tekintetben megegyezo. de ninesenek atmeretezesre szolgalo nyom6gombjai. amely a f6kusz elvesztesekor aktivalodik (ismet esak: vagy a f6kuszt fogadni kepes objektum-. van Close nyom6gombja es nem jelenik meg a TaskBar-on (ez az eszkozsorokat es eszkoztarakat megvaI6sit6 ablaktipus). Egyes jellemzoket a fejlesztorendszerben rnegvaltoztatva azonnal Iatjuk a hatasukat. ControlBox. Figyelje meg tovabba a Form2. 1 _ Minimized.Show (As Modal Dialog) felirani nyom6gombbal eleno Form2 mtikodeset (esak a Form2 mtikodtetheto a megjelenitett ablakok )! Kiserletezzen a kulonbozo gomb-variaciokkal! Ertse is meg a latottakat! Vizsgalja meg a k6dokat is. akar egy nem a memoriaban leva form Load utasitassal torteno betoltesekor) . 3 _ Fixed Dialog: nem atmeretezheto es esak vezerlo gombja lehet (felhasznaloi dial6gus-ablakok szamara). se semmilyen nyom6gombja. akar a program futasa kozben kiadott Shutdown paranes eseten) a torlendo formok QueryUnload esemenyei meg az osszes form Unload esemenyet megelozve generalodnak. akkor Fixed Single-kent viselkedik). A Showln'Iaskbar tulajdonsag annak beallitasara szolgal. tovabba . _ Clip Controls (logikai erteku): mit kell rajzolni a form egy reszenek az esetleges iijrarajzolasakor (esak a form kepemyon nem leva reszeit vagy az egesz formot). 3. program-futas kozben is allithato tulajdonsagok: _ WindowState: a form aktualis allapota (ertekei: 0 _ Normal. hogy megjelenjen-e a program nyom6gombja a DeskTop-beli Taskbar-on. porladofelben leva "koviiletek" (pI FontBold). de lehetnek standard ablak-kezelo gombjai. vagy a form szamara). 2 _ Sizable: atmeretezheto. Az elso ranezesre is szembeotloen eltero megjelenesi formdk a formok nehany kapesol6. BorderStyle.reszben vagy teljesen . A formmaI kapcsolatos lenyegesebb esemenyek E reszben az elozoekben emlitett esemenyeket tekintjiik Bar at. _ 5 _ Sizable ToolWindow: az ablak Windows'NT alatt Sizable-kent viselkedik.ill valaszto jellegu tulajdonsaganak beallitasaval erhetok el (Appearance. _ Icon: az tirlap ablakanak ControLBox gombjaban megjeleno ikon. 2 . Megjegyezzuk. tovabba a Show es Hide met6dusok mukodteteset (a Show met6dust ketfele meghivasi m6ddal) mutatja be a lemez. 4 _ Fixed ToolWindow: az iirlap rendelkezik Close gombbaI. : az Unload es a QueryUnload esemenyek keletkezeset es kezelesuk modjat. precizebben: ~ Load: a form memoriaba torteno betoltesekor generalodik (akar a kezdokepernyo automatikus-. A formok fobb tulajdonsagai a normal formok is tobbfele "rubat" olthetnek. Resize: a form atmeretezese hatasara generalodo esemeny: Unload: kozvetlenul a formnak a rnemoriabol val6 torleset megelozoen kovetkezik be. ~ GotFocus: abban az esetben aktivalodik (mindig az Activate esernenyt kovetoen). masok viszont esak a program vegrehajtasa kozben jutnak ervenyre: hatnak a form met6dusainak mukodesmodjara.5.es MinButton). vagy a form szamara generalodik GotFocus esemeny: LostFocus: a GotFocus esemeny parja.abban az esetben.

'. Az e vezerlessel letrehozott objektum a cimke-mezo. viszont programozas utjan elhelyezheto benne (lasd a pelda Form_Load eljarasat). Ellenben beprogramozasa eszkozsor-gombkent torteno hasznalata abol eleg nehezkes es a rmikodese formailag nem tetszetos (lasd a eszt programot). a Ienyomott allaponi kep azonos a normallal). Hide: feladata a form-objektum kepernyorol torteno elttmtetese.0 .kulon-kulon a gomb n"... FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK 3. •••~'. Hivasa: «form-objektumx. elfogadtatassal (szokasos szovegek: Ok.6.vagy a f6kusz birtoklasa eseten ... Formazhato is (am esak teljes egeszeben).Graphical: a szoveg keppel egyutt jelenitodik meg..nyom6gomb) vezerles Show: feladata a form-objektum megjelenftese.. Picture: a grafikus megjelenitesi stilusu gomb normal allapotanak megfelelo kep (ha a DownPicture nines megadva. a visszafordithatatlan funkciot (pI torlest) .~ kepes fogadni a f6kuszt.Show <miikodes-mod> is lattuk.azaz program-futas kozben valtoztathatoan . Unloads elemzesevel peldak kapcsan foglalkoztunk. a vezerlesnek az eredeti celjara torteno felhasznalasakor a szamara ~v~u. utasitasok A legfontosabb metodusokat mar peldaprogramokban <form-objektumo. Apply vagy Encf) a folyamatbol torteno visszalepes. A nyomogomb-objektumok azonban a f6kusszal kapcsolatos osszes esemeny fogadasara is.11 resz elolvasasa utan a kodot is ertse meg! Megjegyezzuk. folyamat lezarasa.Hide ahol <form-objektum> a kepemyorol eltuntetendo form neve A lenyegesebb utasftasok (Load.grafika is megjelenitheto (a megfelelo Picture ill DownPicture tulajdonsagok akar a program futasa kozben is vu'"'" .. e zarojeleket kodolas kozben nem kell kitenni) 56 . es a szoveg latszo vegen tortszavak.. DownPicture: a grafikus stflusii gomb lenyomott allapotaban megjelenitett kep. Szoveget a Caption-. a gombra torteno rakattintas nelkul hivodik meg (egy formban legfeIjebb egy nyom6gombnak a Default tulajdonsaga allfthato True-ra). A form lenyegesebb met6dusai. Quit vagy Endy. 57 3. szavakra tordelve jelenik meg.1 . iigyhogy akar az egera billentyiik lenyomott.. es a jelolo-mezorol szolo 3.5.. Tartalma a program futasa kozben esak programozassal modosfthato.. Programozasa . megjeleniteset pedig az alabbi tulajdonsagai hatarozzak meg: a mezo eredeti mereteben. Hivasa: r...tanacsom ellenere rakerdezes nelkul . nyomogomb tetejen az aktualis funkciojat leiro szoveg. cimke) vezerles Felhasznaloi interfesz formon szovegnek akar statikusan. CommandButton (.vagy programbol torteno kilepes (szovegei: Exit. Rakattintas.. azaz kocsi-vissza es sor-emelesi karakterpar.vegzo dialogusablakban praktikus a Cancel cimkeju nyomogomb Default tulajdonsaganak True-ra allftasa .. aszerint. szukseges szelessegii mezoben.3. ami "kiI6ghat" a formb61 E tulajdonsagoknak a megjelenftett szovegre gyakorolt egyuttes hatasat a lemezmelleklet Label'Ieszi nevti projektje altal eloallitott vegrehajthato program mutatja.vagy lezarasa szamara egyertelrmien megkulonboztetheto-.. Bar az egerrel kapesolatos osszes esemenyt erzekeli es kezelesukre is tenerosezet nyujt. Label (.. sot . akar dinarnikusan . <tulajdonos-form>] ahol <miikodes-mod» 1 vagy 0 . hogy programfejlesztes kozben a mezok Caption semrnilyen m6don sem frhato be a szoveg tordelesere szolgalo (carriage-return line-feed...torteno megjelenitesere szolgal. ertekei: .. es interfesz eszkozokkel konnyen hasznalhato Iehetoseget biztositani.a veletlen Enter-Ieiites elleni vedelemul.normalisan" a Click esemeny-eljaras k6ddal .~ Enter billentyii lenyomasa hatasara egy (Ienyomodast es felengedest mutate) hajt6dik vegre es Click esemeny generalodik (lasd meg: Default ill tulajdonsagok). hogy a megjelenitendo <form-objektum» modalis vagy nem-modalis mukodeset kivanjuk-e (lasd az elozo resz peldajat): a <tulajdonos-form» megadasa a konyvben hasznalt formok eseten nem szukseges..•. Style: a gomb tetejen megjelenitendo informaciok kivalasztasara szolgal. ..rnnlT ill felengedett allapotahoz egy-egy .·v I» Hasznalatanak tipikus celjai: .. Ezek: .es sorok is lehetnek egy soros.Standard: barmi is van megadva a kep-tulajdonsagokban. • A tovabbiakban a nyelv lefrasa soran egy szintaktikai egyseg szogletes zarojelek koze zarasaval az i egyseg opcionalis voltat jelezzuk (termeszetesen. Font: a megjelenftett szoveg fonttfpusa.3.illetve felengedett allapotanak megfelelo is lehetove teszik (lasd a lemezmelleklet CommandButtonTeszt a MouseDown es MouseUp valarnint a KeyDown es KeyUp esemenyeljarasokat). A nyomogomb-objektumok feladata a program egyes komplex folyamatainak elinditasa. Caption: a nyomogombon megjelenitendo szoveg. esemenyek esak a mas objektumokkal tartott kapesolatainak az "apolasat" szolgaljak. vagy torles (szovege: Cancel) reszfolyamatbol.Jcitoltesebol" all (lasd az elozo peldakat).Default: erteket True-ra allftva formjanak program-futas kozbeni aktivizalodasakor az Enter billentyii lenyomasa hatasara az e nyomogombhoz tartozo Click esemenyt kezelo eljaras automatikusan. esak a szoveg .. Figyelje meg... szukseg szerint tobb sorban.

E ket tulajdonsag hasznalatat a Iemezmelleklet CancelDefaultTeszt programja mutatja.a mezo mereteihez torzitja. Frame (.12).. azonban grafikus lehetosegei messze felulmuljak azt. E tulajdonsag . ennek feltoltese is hasonl6 m6don tortenik. Ha egy tarolando fJle'/CT:IA!mlJT: az egerrel megragadva a tarolo hataran kivtilre lehet huzni. A kep-vezerlesnel lenyegesen kevesebbet "tud".i. kurzor. Egy mar kontenerben Ietrehozott objektum duplikalasakor . de n_em. akkor az megsem lett kontenerbeli.keszenleti (.mezokhoz az abra-mezok is a Picture tulajdonsagukban hordjak a kepet. amelyek varhatoan sokszor igenylik kepek uira-megielentteset). A kep-mezok a kepeket a Picture tulajdonsagukbai objektumok formajaban taroljak. de hasznalatos mas tipusu. amely praktikusan barmely reszere torteno kattintasa szokoz billentyii egyszeri lenyomasa a f6kuszban leva rnezo allapotat .standby) allapotot jelez a negyzet pipat tartalmaz a mezo bekapcsolt allapotaban a negyzet tires (pontosabban feher szinnel kitoltott) a mezo kikapcsolasakor. mert." jelOlo) vezerles Logikai-jellegii (Igen / Nem) informacio allitasat lehetove tevo felhasznaloi interfesz funkcioju kapcsolo-mezok letrehozasara szolgalo vez6rIes-tfpus.o-mez~ ~~jektum a ?egyzet mellett szoveget is tartalmazhat. "OJ"'i. E fuggveny egyetlen parametere a kep-fa] visszaadott erteke pedig Picture-tipusu objektum. A mezo a Stretch donsaganak True ertekre allitasa eseten a kepet .keret) vezerles Az altala letrehozott keret-mezo elsodleges feladata az egy logikai csoportot alkot6 valaszto-mezok (lasd 3.9.. valtosz~riien (. vagy .". A bitmap.UiL. ugyhogy a mezo-meretek rnodositasat a p aranyainak megfeleloen vegezve ezzel a kep nagyitasa vagy kicsinyitese erheto el. es altalaban it kereten belul elhelyezett informacio-halmaz osszefoglalo rnegnevezeset tartalmazza. keret.barrni ogramozas nel~l -. ~ kontener-ke. standard. 3.12) funkcionalis osszekapcsolasa.abra) vezerles ~ep gyors-megjeleniteset lehetove tevo objektum-tipus. es ez hasznalata kozben meglepeteseket okozhat. a dialogus-ablakokban altalaban praktikus a Cancel funkcioju nyomogornbok Cancel tulajdonsagat True-ra allftani. E tekintetben tudasa nagyjabol hasonlo az Image-vezerIesehez. pe~lg kikapcsolt allapotba allitja. ami a Picture tulajdonsagba with a «kep-mez/c-Picture = LoadPicture( «kep-fdjl teljes eleresi uttal> utasftas altal. 2-32 bl A metafajlok tomorfteseket es olyan kep-reprezentaciot alkalmaznak.szlteshez ha~znalhato objektum-tipusok (form. A egy kis negyzet. A kep-feldolgozas az Informdcio.normalisan" a meretehez igazftja (torzftja). mert a hozza tartoz6 mezok szamara vizualisan is megjelenitheto (es alapertelmezesben 3-dimenzi6s vonallal meg is jelenftett) konteneriil szolgal (a kontenerekkel kapcsolatban lasd 3. lhanyagolhato a valaszto-gomb tarolo kepessegiik sem (Iasd 3. A nem-atmeretezheto kepeknek a kep-mezobol kil6g6 reszeit .UUIU 3. hogy rugalmasabb kepmegjelenf mellett nagyobb tarolasi hatekonysaggal rendelkeznek.Jevagja" nem jeleniti meg). A keret bal felso reszen megjeleno szoveg a Caption tulajdonsagaban adando meg. kep-mezok konteneri funkci6jukban az MDI alkalmazasokban jatszanak igen fontos .meg a nem-atmeretezhetn keptak eseten is .8.es/vagy azonositasi Celli csoportositasara is.. 11.~itOltott negyzetben leva szurke pipa valamifele "definialatlan". Ietrehozott objektumok csak akkor miikodnek helyesen . formra helyezett mezok formai. """"Hi'JaH a kep-.ill kep-vezerles) . Az egy formon leva jelolo-negyzetek hasznalatuk eseten egyrnastol fuggetlen rmikodtetest tesznek Iehetove.kep) vezerles A kep-mezoknek az alapszintii programozas soran hasznalhato Iegfontosabh funkci6i: a kep-megjelenitesi lehetosegei es a tarolokent torteno alkalmazasu.Paste) az uj objektum a tarolo bal-felso sarkaban szilletik..lgy automatikusan egy formbeli (annak is a kozepen elhelyezkedo) ektum keletkezik.U a ~ziirke~ . 58 59 . FEJEZET A FORM ES AZ ALAPVETO - Cancel: erteket True-ra allitva formjanak program-futas kozbeniaktivizalodasakor az Escape billentyii lenyomasa hatasara az e nyom6gombhoz tartoz6 Click esemenyt kezelo eljaras automatikusan. a program futasa kozben pedig LoadPicture fuggveny tamogatja.feltolteset" a fejlesztorendszerbo egy kep-fajl kijelolesre szolgalo dialogusablak-. mezo funkciojat magyarazza. Image (.4 labjegyzetet). Az objektumok a megfelelo ~ezerlesre torteno dupla-kattintasos technikaja nem kalrnazhato.toggle-jellegiien) pipatlanbol bekapcsolt.ill enhanced Windows metafdjl formatumok. Erre azert kepes.es a elmelet viragzo alkalmazasi teriilete es kurzor Jel6!. hozunk letre. de mtikodtetese kevesebb rendszer-eroforrast is (ez ktilonosen az olyan alkalmazasok keszftesenel lehet rnegfontolasra szempont. de az AutoSize tulajdonsaganak True ertekre allitasa eseten magat rnezot forrnalja itt kello nagysaguva: Az atmeretezheto kepeket .mint tdrolok: mmden benniik taro lando objektumot a belsejiikben. CheckBox (. ' fajlok a kepeket keppontonkent kodoljak a hasznalt szlnskala szelessegetol fuggoen. aminek harem lathato allapota van: '~'''J-iJ.".L. A jelolo-objektum * Ezek az tin bitmap. a gombra torteno rakattintas nelkul hivodik meg (egy formban legfeljebb egy nyomogombnak a Cancel tulajdonsaga allfthato True-ra). A Windows standard kepformatumain' kfvul az altalanosan elismert es hasznalt tin JPEG es GIF keptipusok megjelenftesere is kepes. ikon. PictureBox (.3.

A Value tulajdonsag es a jelolo-negyzet allapota kozti megfeleltetest frja Ie az alabbi kis tablazat: A valaszto-kortol jobbra vagy balra szoveg is allhat. Az igy letrehozott valaszto-mezo csoportok mukodteteset . akar a mezo Value tulajdonsaga tartalmanak direkt. A valaszto-rnezok "normal is" hasznalatat a lemezmelleklet OptionButtonTeszt rnintapeldaja val6sitja meg. Nines megtiltva ugyan a kontenerek egymasba-agyazasa. Figyelje meg a program. hogy a csoportban mindig legyen .22) osszefogva tortemk (e resz a valaszto-csoportok kulonallo kapcso16kkal megval6sitott hasznalatat mutatja be). "abnormal is" mukodteteset pedig a lemezmelleklet CheckBoxAbnormal mmta~e. Figyelje meg a mukodesuket. de a valaszto-mezok tornbositesevel. de objektumtomb hasznalata nelkul megval6sftott valtozatat! 61 A jelolo-mezo magyarazo szovege a program-futas kozben is). sot. Nem szukseges. Termeszetesen ehhez az esemenyhez vezet a Value ertekenek direkt m6don. mert kivalo vizualis eszkoz a lehetosegek kategoriajanak megjelenitesere. nem is feltetlenul generalodik minden ilyen alkalommal: csak a esoport egy aktualisan nem kivalasztott mezejere val6 kattintas general ilyen esemenyt.en di~. es a kurzor-vezerlo billentyiikre reagalnak (az iment lefrt m6don). es . Egy masik jelolo-negyzet az egyes valaszto-mezokhoz kapcsol6d6an bekovetkezo Click esemenyekrol adott tajekoztatas ki.stol vizualisan "IS .6 fejezetbeli LabelTeszt . allfthato be (akar A valaszto-mezok kepesek a f6kusz fogadasara es minden vele kapcsolatos esemeny kezelesere. a mezo allapotat modositani pedig az frasaval lehet.valaszto) vezerles Egymast kizaro lehetosegek kozul egynek a kivalasztasa~ l~hetove . azonban e "standby" allapot csak programozas utjan erheto el. es ezert ez nem ajanlott (elrettento pelda a lemezmelleklet OptionNotNice projektje). ha a mezo a csoportbeli kivalasztott. A Click esemeny-eljaras feladata a Value ertekenek megfelelo kezeles elvegzese. amely a mezo Value tulajdonsaga tartalmanak bdrmilyen okb6l torteno megvdltozdsa kovetkezteben generalodik.ta~ozok kozul HZ aktualisan kivalasztottat. A mezo Value tulajdonsaga rnindig az aktualis allapotot tukrozi. amely a mezo altali valasztasi lehetoseget magyarazza (tartalma a mezo Caption tulajdonsagaban allfthato be). ame.tevo. A kapcsolo-mezokbol a kulonbozo lehetoseg-halmazok?ak . A mtikodtetheto (azaz az Enabled tulajdonsagaban True erteku) valaszt~-m~~~. a mezo allapotat m6dosftani pedig az frasaval lehet. 60 . a bekovetkezo esemenyeket es a program kodjat ertse is meg (a tmrAlarm kivetelevel) ! A lemezmelleklet OptionA rray Teszt mintapeldaja az elobbi feladat egy reszet val6sitja meg..e ~e~ klilOn~1l6 ele~ekk~iit-. A program futasa kozben a mezo allapotarol tajekozodni e tulajdonsag olvasasaval-. de kulon programozas nelkul esak az egerrel torteno kattintasra-. de a felhasznalot felrevezeti (hiszen a beagyazodastol a mukodesi m6djuk mit sem valtozik: marad mellerendelt). kivalasztott mezo. Ebben ket valaszto-mezo csoport van: az egyik a megjelenitendo (Shape vezerlessel keszitett) alakzat formajat.a form sines kizarva a tarolokent torteno igenybevetelbol. A program futasa kozben a mezo allapotarol tajekozodni e tulajdonsag olvasasaval-.12.-./ be kapcsolasara szolgal. A jelolo-mezok "normalis" hasznalatat a 3.eseme~y ke~elesere. Viszont ez az esemeny tortenik a kurzorvezerlokkel vegzett lepegetes eredmenyekent. felhasznaloi interfesz funkcioju kapcsolo-mezok vezerles-prototlpusa. ~inden . ha az egyes csoportokbeli valaszto-mezo objektumok kezele~.es kulonosen a valaszto-mezok mukodeset.z~~~kt csoportok kepzendok (az egyes csoportokat ~gym~. billentyiizettel: a kurzor-vezerlo gombokat hasznalva a mezore pozicionalassal (amennyiben a mezot tartalmaz6 csoport birtokolja a f6kuszt). OptionButton (.ldaJa valositja meg (utobbi arra is pelda. hogy a magyarazo szoveg nem csak a mezo jobboldalan lehet). Figyelje meg a vegrehajthato program rmikodeset. Tehat. A mezovel kapcsolatban gyakorlati szempontbol egyetlen esemeny emlitendo: a Click.bar nem szokasos .proj~ktj~. Valaszto-csoport kontenerekent praktikusan hasznalhato a keret-objektum.. Egy jelclo-mezotol fuggoen megengedett vagy tiltott az alakzat formajanak valtoztatasa. ertekado-utasftassal val6 megvaltoztatasa is.3. es a billentyuzet szokoz billentyujere reagalnak (a leirt medon). es keszitse el az ugyanolyan mukodesi logikaju. a masik a szfnet hatarozza meg. kulonosen. elk~lo?lt~1 kontenereik altal). hiszen az mindig megvaltoztatja a kivalasztast (es vele Value erteket). a Click esemeny generalodasa nem feltetlenul egy valaszto-mezore torteno kattintds eredmenye. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK A jelolo-mezok kepesek a fokusszal kapcsolatos.1 Windows automatizmusokkal hatekonyan tamogatja.lY akar a mezore torteno kattintas-. aminek a kozepen leve potty jelzi a vele azonos csoportba. j61 hasznalhato e celbol a PictureBox-objektum is. progr~mo~~tt megvaltozasa kovetkezteben generalodik (~as? ~ melleklet C~~ckBox!eszt proJektJet). eg~ kis kor. es k6djukat ertse is meg! 3. ~e programozas nelkul csak az egerrel torteno kattintasra-. hanen~ objektum-tombokbe (lasd 3.m~g~elelo. Egy mezonek a valaszto-csoportbol torteno valasztasa az alabbi ket mod valamelyike utjan vegezheto: egerrel: a valaszto-objektum barmely reszere torteno kattintassal. Caption tulajdonsagaban Gyakorlatilag egyetlen emlfresre-melto e~emen:e a Clic~. pipatlan kipipalt definialatlan o 1 2 Barmely valaszto-mezo Value tulajdonsaga mindig a mezo aktualis allapotat tlikrozi: erteke akkor es esak akkor True.

kepesek a drag and drop (. True: eger bal gambja billentyu . Az eger esemenyei nem bonyolultak (bar azok lehetnenek a . Altalaban szamos egerrel kapcsolatos esemeny van.3.esak akkor van szukseg. . .. amelyek az alapfunkci6ik vegzesehez egyaltalan nem igenylik a felhasznalo kozremukodeset (azaz alapvetoen nem felhasznaloi interfesz celuak). lasd: 2. amellyel a megfelelo esemeny kapcsolatos. addig a masik csoportbeliek . a kovetkezokeppen: az egesz szdmot 32 jegyti kettes szamrendszerbeli szamkent tekintve annak harem legkisebb helyerteku (Il-s vagy l-es) szamjegyet a helyertekhez rendelt gomb. Haszndlatuk tanulmanyozdsdra szolgalnak .itLL (Button And vbLeftButton) (Shift And vbAltMask) >0 > 0 ..mellekletei" a funkci6juknak megfeleloek (peldaul.1"J~.kiegeszito informaciot sem nytijt.egy nem kifejezetten az objektum alaptevekenysegei koze sorolhato funkcio elvegzese (pi kepen torteno rajzolas) celjabol..13.lltl . a button illetve a shift parameterek pedig a . de azert a formon megjeleno objektum-tipusok is. amely szamara az esemeny-eljaras generalodott) lebegopontos szamkent abrazolva. abra: Az eger-gombok ill a kapcsolo-billentyuk * A MouseDown 31 30 29 .eger-gombok illetve a harem fa kapcsolo-billentyti (Shift.Iathatjuk . FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK 3. vagy ha az eger elmozgatds kozbeni aktualis pozfciojarol kell informaciot szerezni . a MouseUp es a MouseMove) is.kapcsolatos adatokat kapjak: button As Integer.7). eleg altalanos voltuk miatt most tekintjuk at oket.eger valamelyik gombjanak lenyomasakor ill felengedesekor-. 11811Il1 11"Jll!'11l11ll11111' •• vbLeftButton vbRightButton vbMiddleButton I 2 4 bal jobb kozeps6 0 I 2 vbShiftMask vbCtrlMask vbAltMask I 2 4 SHIff CTRL AL T 0 I 2 tablazatokban szereplo nevek a VB nyelv beepitett. 101010101010101010101010101010101010101010101010101010lololxlxlxl 4.felhasznaloi interfesz objektumok hasznalata soran eltero.I\'\~~\11~11IBlq.egerrel es billentyuzettel (!) . Igy peldaul az = = Li:1:)Ul\.. a vezerles-fajtak Ieirasanal targyaljuk oket (ahogy ezt mar a CheckBox es az OptionButton vezerlesnel is tettiik).az egerrel kapcsolatos . elore-definialt konstans-nevei Object Browser altal megtekinthetoen a VBRUN konyvtar MouseButtonConstants ShiftConstants osztalyai altal definialva). igy a Click ill DblClick esemeny-kezelo eljarasaikban a "sajat" -objektummal kapcsolatban elerheto informaciok es a vegzendo tevekenysegek jellege is az egyes tipusokra jellemzo.alapszinten .a lemezmelleklet MouseUpDownPainter es MouseMoveTeszt programjai. a DblClick. azaz egy felteteles utasftas reszekent helyes Irni: ' Ha a bal-gomb If as az Alt lenyamatt. y As Single ahol az egyes eger-gornbok- illetve billentyiik helyertek-megfeleltetesei: .. ugyanis a vezerlesek tulajdonsagaik vagy esemeny-eljarasaik parametereikent altalaban onmaguk kepesek szolgaltatni azokat az informaciokat.a programozas hatekonysaganak novelese celjabol (ilyenek peldaul a Click. Az esemeny-kezelo eljarasaik egysegesen az alabbi . mig a MouseMoveaz eger elmozgatasa kozben bizonyos rovid idokozonkent generalodik annak az objektumnak a szamara.illetve Ienyomott allapotanak feleltetjuk meg. True: Alt 'vF. a DragDrop es a DragOver). melyek kozott vannak egeszen hardver-kozeliek (mint a MouseDown. A hardver-kozeli esemenyek kezelesere . nem kizarolag a fokuszalhatok .bal. ha az eger-gombok dllapotvdltozdsairol.burjanzo eger-mutaciok kovetkezteben). melyek epp a lenyomottsag vizsgalatanak vegett lettek bevezetve.vagy billentyukombinaciokat a 0 es 7 kozotti decirnalis egesz szamok reprezentaljak" (x:. bit-pozfci6k . jobb ill kozepsd .3. es a megfelelo esemeny-eljarasok reven lehetoseget nyujtanak valamifele kezelesukre (peldaul ilyenek az Itt a piros . A MouseDown ill a MouseUp esemeny az.minden tovabbi magyarazat helyett . 2. Mig a hardver-kozeli esemenyekhez csatolt informaciok szinte egysegesnek mondhat6k (az esemeny-eljarasok hivasi parameterei alig kulonboznek). igy az egyes egyidejiileg lenyomott eger-gomb. .vagy billentyii normal. ebben az esetben az esemenyt okoz6 gombnak megfelelo bit allitodik l-re 62 . addig a DragDrop es a DragOver megadja az eger aktualis poziciojat). A funkei6 megvalosftasaval kapesolatos DragDrop es DragOver esemenyek kezelesi modjaval valamint a programozasukhoz szukseges Drag met6dussal es a DragMode ill Drag/con tulajdonsagokkal nem foglalkozunk. x As Single. mivel a VB egyelore meg csak a hagyomanyos egerek ill gombjaik programozdsdt tamogatja (ellentetben az IDE-vel. ..hoi a piros program "gyufaskatulya"-cimkei...l.u kovetoen a LeftDown ill AltDown logikai valtozok mar hasznalhatok kifejezesek elemeikent. . masokat ellenben az operacios rendszer (pontosabban: a VB futtat6 magja) alakit ki es formal "olyanra". a kattintdst es a dupla-kattintdst azonban altalaban ezek is erzekelik. Vannak terrneszetesen olyan nem fokuszalhato. 1. 63 ahol az X ill y parameterek az egeraktualis hely-koordinatait jelentik (azon objektum koordinata-rendszereben. Az egerrel kapcsolatos esemenyek Immar tapasztalatokkal felvertezve. Vegul. Ctrl ill Alt) esemenykori allapotat tukrozik bit-kombinacioknak megfeleltetett egesz szdmkent abrazolva.majdnem kivetel nelkul.ragadd meg es ejtsd le") funkei6 hasznalatara. shift As Integer.. . ahogy oket az esemeny-kezelo eljarasaikbol.kiilonosen az ut6bbi idoben . A kattintds es a dupla-kattinids szerepe a kulonbozo tipusu . amelyek funkei6ik maradektalan ellatasahoz szuksegesek. Ov. O. reprezentdcioja (button ill shift) illetve a MouseUp esemenyhez mellekelt button parameter nem az egyes gombok allapotainak megfelelo bitkombinaciot tartalmazza. melynek ablakai mar elvezik az IntelliMouse-kerekes navigacios technika elonyeit). mig a Click es a DblClick semmilyen . csak megemlitjuk. hogy a megjelenitodo objektumok . 1).

most attekintjuk a fokusz birtoklasara kepes objektum-tipusok fokusszal . .Ula~aL a szoveg-mezo vegso tartalmanak a form egy nyomogombjara torteno kattintassal uj folyamatot indithat el. amit mar az adatbevitel ellenorizni kivanunk.es strukturaju tablazatok mezoivel kepes kapcsolatot letesiteni es fenntartani (lasd 7. egymasutani egesz szamokkal megjelolve)..u. azonostfpusu objektum tulajdonsagainak ertekeivel.barmilyen okbol is kovetkezzek be az. 3.fokuszba keriilhet. de egy fokuszalhato ob. TextBox (.lal£U\. melyik modszert jobb hasznalni. hogy a fokuszkalitkanal kicsit hatasosabban legyen jelezve az aktualisan fokuszt birtoklo objektum (lasd a Iemezmelleklet GotLostFoeus programjat)..n. mert egy masik objektum kapja meg azt. hogy elfogadja-e az adatokat vagy sem.v. mert az Index ablakanak mindig a aktualis tartalmaval kezdodo elso elemere kell rapozicionalnia). Az elso GotFoeus nevu esemeny akkor generalodik.14... "".3. A fokuszalhato cbjekrumoknak lathatoknak es mukodokepeseknek (~ Visible es Enabled tulajdonsagok) is kellIenniiik. amelyek TabStop tulajdonsaga 1rue-ra van allftva. Valojaban persze nem az egyes mezok vegzik az adatok kezeleset. akkor e program-funkciok elso medon megoldasa egy tovabbi nyornogombot (a felhasznalotol pedig egy kattintast) mig a masodik modszer alkalmazasa "automatizalt" rmikodtetest eredmenyez. esetben a form az objektum kulonbozo tulajdonsagainak bevitelere szolgalo szovegmezoket tartalmaz (az egyes mezokbe irand6 informaciok megjelolesere szolgalo fejcimke-mezokkel "parba fogva" oket). FEJEZET A FORM ES AZ ALAPVETO 3. zoveg) vezerles s Elsosorban a felhasznaloi interfesz formok szoveges adatbeviteli mezoinek letrehozasara szolgal. A TextBox vezerlcs azonban olyan . ugyhogy minden egyes urlap kitoltese az objektumokat lefro tablazatnak egy ujabb objektumra vonatkozo soraval val6 kiboviteset eredmenyezi. kepezik a veliik kapcsolatos programozasi tevekenysegek alapjat. utobbi esetben viszont az adatoknak II program valamely valtozoiban tOrteno ideiglenes.. A vezerlessel letrehozott objektumokat szoveg.az altala megjelenitett szoveg szerkeszthetove valik.I> Irp.l~ktumra torteno kattintas a f6kusz hozzarendelodeset eredmenyezi.vagy egy fajlbeli permanens megorzese altai) sajnos a programozo feladata.megjelenik benne a szoveg-kurzor. Hogy mikor.'-'llVClll. ha a rnezo elveszti a f6kuszt. melynek celja lehet pi egy tablazat feltoltese nagyszarmi. Az objektum GotFoeus esemeny-kezelojeben peldaul megvaltoztathatjuk a mezo hauerszfnet (a LostFoeus kezelojeben az eredetire visszaallitva azt). ilyenkor .14. azaz ideiglenesen hozzarendelodhet az ego!' es a billentytizet. EI'. altalaban a programozo feladata a tablazatot tartalmazo fajl kezelese (letrehozasa. ha a formon nincsen egyetlen fokuszolhato" objektum sem."'IJ".. A Form objektum-tipus is kepes a f6kusz fogadasara. de kepes informaciok szoveges megjelenitesere is. ha a mezo fokuszba' keriil . de egy form tenylegesen csak akkor kapja meg azt. hiszen ezck A felhasznalo altalaban ketfele medon jelezheti a program szamara: II. igy ennek letrejotterol valoszinuleg mas medon kell jelzest kapnun • Emlekeztetunk ra.mindent tudo" adatbeviteli interfesz objektum-tipust). _ tartalmanak barmely (akar csak egy karaktemyi. es szot ejtiink az adatbevitellel kapcsolatos egyeb fontosabb esemenyeikrol is.a". sorrendjuk a Tablndex tulajdonsaguk altal allfthato be.azon f6kuszt fogadni kepes objektumok. E reszben csak az adatbeviteli mezok elemi funkcioival foglalkozunk. felhasznaloi interfesz cell'l objektumok altalaban . es az olvasora bfzzuk annak vegiggondolasat. A f6kusszal kapcsolatos esemeny-tipusok A vizualis fejlesztorendszerek keszitoi a fokuszt birtokolni kepes objektum-tipusok szamara . Peldainkban a szoveg-mezot hasznaljuk (mint a Iegtermeszetesebb es .. es akar felhasznaloi tpu. igenylik a mezo-tartalom barmely megvaltozasarol sz616 ertesitest (ilyen peldaul Help Index ablakanak kereso-szoveg mezeje. esemenyeit. akar nem: az egyes mezokbe bevitt adatok tarolasarol valo gondoskodas (az elobbi eseten csak annak "kijelentesevel". "" a szovegmezo elhagyasakor automatikusan generalodo LostFoeus esemenyt hasznalhatja fel a szoveg-mezo tartalmanak feldolgozasara. hogy a f6kusz a Tab / Shift Ei3 Tab billentytiket hasznalva tud vegigvandorolni a a !1~bulaIhat6o~je. vagy aminek alapjan bizonyos mezo-tartalmak "aJlapl. Az tobbsegeben azonban reszeredmenyekre egyaltalan nem vagyunk kfvancsiak. Tipikus felhasznalasi teriilete a nagy-tomegii adatbevitel.ket specialis esemeny-tipust definialtak.2.amely a szoveg-mezo aktualis teljes tartalmara hivatkozik (a mezo Text tulajdonsaga altai). • \1"(' A Change esemeny azonban csak az olyan mezonel hasznalhato fel j61.7). melynek reven szinte tetszoleges forrnaju. A szoveg-mezo . a ciklikusan egymasutan k{\~etkezo mezoket a 0-t61 kezdodo. hanem csak informaciokkal latjak el a Windows adatkezelessel foglalkozo "automatizmusat". Termeszetesen.az elobb emlitetthez hasonlo problemak megoldasa celjabol . Azokban az esetekben ha a form mezoi kozott olyan osszefugges van.ktumokon (:.vagy adatbeviteli mezoknek nevezzuk.n hatasara akar programutasitassal eredmenyezett) megvaltozasa az objektumno kapcsolodo Change esemennyel jelzodik (a mezoben megjelenitett aktualis a mezo Text tulajdonsagaban olvashato).mint az informacio fogadasara szolgalo. azt a programtervezo es a programoz6 nil az alkalmazas aktualis reszenek jellege befolyasolja.mtelligenciaval" (azaz tulajdonsagokkal es metodusokkal) is fel leu ruhazva.1. A f6kusz programozottan is elbirtokolhato: a f6kuszt "kivan6" objektum SetFocus metodusanak vegrehajtatasa altal. Az elozoekben mar emlitett LostF oeus nevu esemeny viszont akkor generalodik.)rt(~lIrlezlett" ertekkel jelenitendok meg. csak vegso tartalomra. hogy az elmondottak mit jelentenek mas objektum-tipusok eseten. 64 65 . Akar akarja hasznalni az emlitett intelligenciat. stb). frasa.

vagy masik mezo kattintasaval).Jiivatalos" elvetele elott (tehat meg a fokusz atadasara kesziil6d6 objektum LostFocus esemenyet megelozoen) generalodik. KeepFocus = True ' nines f6kusz-val tas .parameterrel hivodik meg.6.3..objektum szamara. az elobbiek pedig azt. Azt akarjuk. Azesemenyek sorrendje tehat az alabbi: ezen utasitasoknak megfeleloen jart el. ami az eljaras mukodeso soran True ertekure allithato .. II nyomogornbet pedig False ertekure (ez ut6bbi biztositja. vbExclamation + vbOKOnly. Allitsa be a ket szoveg-mezo Causes Validation tulajdonsagat True-. _ vbExclamation + vbOKOnly. ha mind a f6kuszt elveszto. A nyom6gombnak ezekrol a megszoritasokrol kell informaciot adnia. vbExclamation ~'vbOKOnly. Ha a beirt adat nem iires es nem eeem-tzipueti.Text <> "" And Not IsNumeric(txtSzamAdat. a Lostbocus-tisi is alkalmasabh eserneny: a Validate (amely Causes Validation nevii tulajdonsaggal egyutt) szinten minden fokuszalhato objektum-tfpusban megtalalhato." + vbCrLf + "a masodikba pedig szamot irni !". figyelmeztetve a befrand6 adat-tfpusara. A felhasznalo figyelmeztetesere pedig az egerrel mezo folott allva jelenjcn meg egy kis tooltip. FEJEZET A FORM ES AZ ALAPVET6 A mezobe Irt adat ellenorzesere azonban letezik egy.Jielyes" agan termeszetesen nem banthatja a parametert). II mintapeldat val6sftja meg a Iemezmelleklet ValidationTeszt programja.2) . .Tab gombbal. hogy a nyomogomh "ingerlesekor" semmilyen objektummal kapcsolatosan sem generalodik Yalidate esemeny.. Ennek erdekeben: ivate Sub txtDatumAdat_Validate(KeepFocus As Boolean) If txtDatumAdat.a fokusz-athelyezesi igeny visszautasitasanak jelzesere (az eljaras az ellenorzes . <UV'UL<ll"l1L a cmdsugo nevre hallgat6 nyom6gomb az alabbi k6d produkalja: funkciojanak egy lehetseges cmdSugo_Click () "Keretik az els6 mez6be datumot. Peldakent tekintsiink egy olyan formot. de hiba-iizenetet adunk If ivate Sub txtSzaroAdat_Validate(KeepFocus As Boolean) If txtSzamAdat. hogy nem megfelelo tipusu adat beirasakor ne is engedjen a mezobol kilepni a program: helyette csak egy hibauzenetct adjon.Text) Then . Toltse ki a szoveg-mezok ToolTipText tulajdonsagat a megfelelo figyelmezte szovegekkel es egeszftse ki a nyom6gomb Click esemeny-kezelo eljarasat e Help-jellegii iizenetet tartalmaz6 MsgBox-hfvassal. A mezok Validate eserneny-eljarasait iigy toltse ki.Text) Then . hogy az IsDate( <sziiveg> dN az IsNumeric( <sziiveg> logikai fuggverryekkel ellenorzodjon a mezok tipusn hiba eseten uzenetet megjelenftve es a KeepFocus parametert True ertekre 3. Az elso mezobe csak datum-. 66 67 . amikor mezo-valtast kezdemenyezunk . A Validate esemeny csak akkor generalodik egy . Ha a beirt adat nem iires es nem detzum-r ipueii. _ . hogy szoveg-mezok kozotti fokusz-athelyezeskor mindig be fog kovetkezni).cfrnevel atadott (lasd: 4.Text <> "" And Not ISDate(txtDatumAdat. akkor a form nagyjabol az alabbi kinezetii cmdSug6 txtDatumAdat (Causes Validation = True) txtSzamAdat (Causes Validation = True) szoveg-mezoket "'IJ'_"V~VU'V txtDdtumAdat- Validate illetve txtSzdmAdat-nak elnevezve a hozzajuk esemeny-kezelo eljarasok az alabbi tartalmuak lehetnek: Az objektumok Validate esemeny-kezelo eljarasa egy KeepFocus nevu. mind az azt fogado objektum Causes Validation tulajdonsaga True erteku. a KeepFocus = True MsgBox "Az adat nem szam-tipusu" "A mez6 adat-ellen6rzese" ' nines f6kusz-val tas . amire ket tires szoveg-mezot es egy Sug() feliratu nyom6gombot helyeztiink. a nyom6gomb TabStop-ja pedig legyen False erteku' 2. MsgBox "Az adat nem datum-tipusu" .. de hiba-iizenetet adunk 1. . . Maga az esemeny a fokusz-athelyezodes kezdemenyezodese utan. a masodikba pedig csak szam-adat beirasat szeretnenk engedelyezni. _ "A mez6 adat-ellen6rzese" . "Adat-ellen6rzes: Sug6" A programot rmikodtetve figyeljuk meg a fokusz-valtast (az egyes szovegmezokhoz Validate esemeny-kezelo eljarasok csak akkor aktivalodnak. False ertekf .a f6kuszt eppen elveszteni kesznlo . de meg a fokusznak az objektumt61 tortenf .

hogy ehhez a gombhoz az operacios rendszer billentyuzet-kezcln programja . A GotFocus illetve LostFocus esemenyek a mezok szamara esak indikaljak a fokusz athelyezodeset... amellyel kapcsolatban az esemeny" generalodott. a KeyCode nevu parametereik pedig annak a billentyunek a kodjat (tehat a billentyuhoz . es egy masik dolog az.. tin Unicode kodolast tarolja.. sarga hatteni kalitka).II billentyukodok standard konstans-neveit es ertekeit az Object Browser segftsegevel tekintheti 11! (lasd: VBRUN library . • Egy dolog az... A form .az aktualis karakter-keszletnek megfeleloen milyen karakter-kodot rendel.rendelt egesz szamot) szolgaltatjak.KeyCodeConstants class) •• Ezek az esemeny-eljarasok igazabol a masodik parameteruk reven arr6l is informalnak.. holott szinte mindeniitt ANSI ("kiterjesztett" ASCII) ertelemben hasznalja azokat 68 69 . hanem a LostFocus esemenyt hasznalja az ellenorzes helyekent (a gondot az ebben a fazisban mar elvesztett fokusz okozza: hogyan lehet megis visszairanyftani? Otlet merftesere tanulmanyozza a melleklet Focus'Ieszt programjatl). Sot. Kezelesuk celjabol nem lehet megtiszni a KeyDown ill KeyUp esemeny-kezelo eljarasok alkalmazasat (de nem is fajdalmas). . Ha peldaul szoveg-mezo KeyPress esemeny-kezelo eljarasa azert aktivalodott. hogyan valtozik a program rmikodese. a Delete es az Insert kapcsolo-billentyuk.es nem az dltala reprezenialt' karakterhez . hogy fizikailag melyik a gomb (es mi a klaviauira hardvere altai' szolgaltatou billentyiikodja). FEJEZET A FORM ES AZ ALAPVETO Megjegyzesek: tanulsagos megfigyelni. A lemezmelleklet e temahoz kapcsol6d6 programjai: TextBoxlelsz6. ennek erteket az eljarasban egy masik legalis ANSI kod-ertekre atfrva a VB iigy tekinti.nek hfvjak (kompatibilitasi okokb61) vel a VB a szoveges adatokat az ANSI-nal is altalanosabb. hogy most nem a Validate. Jonehany ANSI k6d nem megjelenftesi celokat szolgal (lasd az on-line Help-nek az ANSI character codes chart Iapjat).. A f6kuszt fogadni kepes objektumok kepesek a billentyiizettel kapcsolatos OSSZCS esemeny feldolgozasara (sot befolyasolasara is kisse) a KeyDown. Sok ANSI k6d esak a numerikus billentyfizet-resz segitsegevel allithato elo (Alt EEl<az ANSI k6d decimdlis erteke> -t billentyuzve). hogy az ANSI k6dok hordozojat KeyAscii . <ANSI-k6d> ) fuggveny.1 legelejen). azonban rendelkezhet tigy. KeyUp Events temakort ••• A trefas csak az. . Alakitsa at a programot tigy.a KeyPress esemeny-kezeloje reven . lasd a Iemezmelleklet KeyPresslelsz6 programjat.. es ertse is meg!).beli KeyDown. amely tehat egy Unicode karakter ANSI' megfelelojet allitja elo.14.. mintha az esemenyt is az generalta volna. hogy egy mezoben tartozkodva.. mert !-t yomtunk. hogy standard nevek "Ascii" -t tartalmaznak es sokszor meg az IDE magyarazatai is ASCII k6dokat emlegetnek.. ezekhez a Chr fuggveny a I karaktert rendeli es ezert az x = Asc(Chr(x» esak az ezektol kulonbozo x ANSI kodokra teljesiil..3. amelyek a mezd Text tulajdonsaganak a tartalmat megvaltoztatjak).meghivodasa elott. hogy a fokusz birtoklasa nelkul is inforrnalodhasson a billentyuzettel kapesolatos esemenyekrol . de nem kapnak jelzest peldaul az Enter billentyu leuteserol sem. amelyeknek egyaltalan nines ANSI-kod megfelelojuk (ilyenek a funkcios. Szinten javasolhato a tooltip funkcio sajat eszkozokkel tortend megvalositasa (pI ugy. A KeyPress esemeny-eljarasban a KeyAscii erteket O-ra allitva az esemeny egyszenien ignoralodik (mintha nem is torrent volna semmi). txtSzoveg nevii szoveg-mezo tartalma lesz.. KeyUp illetve KeyPress esernenyek az elozokben leirt rnodon aktivalodni fognak . akkor az eltero mukodteteshez szukseg van a billentyfizettel kapesolatos esemenyek feldolgozasara is. hogy meg a mezo iiresen hagyasat se engedje meg! Keszitse el ugyanezt a programot ugy. a KeyUp illetve II KeyPress esemeny-eljarasaik altal. Ha a form KeyPreview tulajdonsaga True erteku. hiszen bekovetkeztukkor tipusuk II tevekenyseg jellegere utal (billentyu-Ieutes vagy felengedes). akkor az eljarasban levo txtSz6veg. • Zavart kelto. nevii parametere reven. lasd: az on-line Help .. elott azokat e kod szerinti abrazolasuva kell alakitani. hogy Ii billentyuvel tortent tenykedes kozben milyen volt a harem legfontosabb kapcsol6 billentyu (Alt. hogy a megfelelo funkciokat az egyes f6kuszt fogad6 objektumokba (KeyPress eljaras) epftenenk be.. ha . amelyen az egyes mezok adat-bevitelet az Enter billentytivel szeretnenk lezaratni ugy. Az ehhez hasonlo problemak megoldasat teszik lehetove a fokuszalhato objektumok billentyuzet-kezelessel kapesolatos esemenyei.veletlenul'' elfelejtjiik a nyomogomb Causes Validation vagy TabStop tulajdonsagait False-ra allftani (probalja ki. Erre szolgal a "". jelenjen meg kiesivel folotte a megfelelo szoveget tartalmazo. akkor a hozza-rendelt KeyDown. de maguk nem okozzak azt.kozvetlentil azelott. az ANSI karakterkodot szolgaltatja a Key/sscii' . Ha tehat nem elegsznnk meg a fokusz tabulator billentyiivel torteno pozicionalasaval (mert peldaul: egy nagy tomegf adatbevitelt kiszolgalo iirlapot terveziink. Vannak olyan billentyiik is. Az elso ket esemeny reven eszlelni lehet a billentytizettel kapesolatos barmilyen tenykedest. ennek inverze az Asc( <Unicode-karakter» ) . azert a KeyAscii k6doknak a szovegkezelo utasitasokban tOrteno '.Text = "Ez a sz6veg Unicode t ar oLasu " & Chr(KeyAscii) hatasara az aktualistol kulonbozo. hogy azok a fokusz tenyleges birtokosa szamara generalodnak. A KeyPress esemeny-eljaras mar inkabb emberkozeli.forditoja" is lehet ahelyett..es navigdcios billentytik es a veluk kepzett osszes billentyukombinacio.. KeyPressFilter. mert minden sallang nelkul. A form normalisan csak meghatarozott korulmenyek kozott birtokolja a f6kuszt (lasd 3.akar bizonyos ANSI-kodok generalis szuroje vagy . hogy hatasara a fokusz automatikusan II TabIndex altal meghatarozott soron kovetkezo mezore alljon). Shift ill Ctr!) allapota.de meg a fokusz-birtokos objektum megfelelo esemeny-eljarasainak . stb) es ezek nem is generalnak KeyPress esemenyt. A KeyPress esemeny-eljaras kod-felulbfralasi lehetosegei j61 hasznalhatok a jelszo funkcioju szoveg-rnezok programozasahoz (a beiitott karakterek *-gal helyettesitese vagy kifrasuk ignoralasa celjabol). Ugyan a szoveg-tipusu mezok a Change esemeny-kezelo eljarasaik altal ertesulhetnek minden egyes megjelenithetd karakter bevitelerol (hiszen ezek azok.

.programozasanak attekintesenel emliteu Text tulajdonsagan kfvul -a megjelenfteseben szerepet jatszo egyeb fontosabbakat: Text: mindenkor az objektum altal megjelenftett szoveg tukorkepe: m6dosfthat6 is. lehetseges ertekei: 0123None: egyik oldalon sem (ez az alapertelmezes). A <lista-mezti azonostt/o Removeltem <sorszdm> formaban RemoveItem met6dus az utasftasban megadott sorszarmi elemnek a val6 torleset vegzi.Listlndex =0 ' A "Valami van. * A mezo MultiSelect tulajdonsagatol fugg. a Ctrl EBEnter -billentydkombinacioval a listaban barhol uj sor kezdheto. eredmenyekent a mezo ListIndex tulajdonsaga automatikusan -1. Az alabbi . addig bevitt szovegeket listazo ablakot. melyet a listat kezelo (a hozza uj sort ado.ox I i .2. program-utasitassal: .iernet ..vagy tobbsoroskent kezelje-e. A frhato tulajdonsag.ista nevii listamezon: stLista.Addltem "nemaz igazi!" 'hozzaadja az elsa e. hogy a lista egyetlen eleme sines kivalasztva)?". Enter-reI a szerkesztes lezarhato: a program vegrehajtasa kozben hasznalhato met6dusai reven: a formok Load esemeny-eljarasaiban (a lista inicializalasa vagy a fejleszto-rendszerben kialakftott lista modositasa celjabol). 1 ' Ezt k ii Lor: s ork erit: a ketta k oz e rakja stLista. <ListCount> . mezo ListCount tulajdonsaga tartalmazza a lista elemeinek (. ertekenek a megvaltoztatasa a kivalasztott sor atjeloleset eredmenyezi. ill 10.".1] intervallumbeli egesz szam lehet u 71 . kozben nem feltetlenul van a listanak kijelolt eleme.. de szukseg eseten automatikusan gorgethetove valo . stLista. akkor a Windows aktualis szfn-semajanak' Selected Items szinevel festve meg. a pedig 0 ertektive valik.Clear ' torli az lstLista meza egesz listajat stLista. vagy a program futasa kozben . majd meghfv6dik a ektum Click esemeny-kezelo eljarasa (tehat az eljaras mukodese soran a ListIndex tulajdonsaganak aktualis erteke alapjan lehet azonosftani a kivalasztott hogy az alkalmazas jellegenek megfelelo kezelest meg lehessen tenni). liJtLista.Addltem "Valami van. Vertical: csak a fuggoleges gordftosav legyen (ajobb oldalan)." Amennyiben a mezo nem tobbsoros (azaz MultiLine tulajdonsagaban False ertekCi). . Az AddItem met6dus szolgal egy szoveg listaba illesztesere. A lista-elemek kozti valasztas *.pl nyom6gombhoz kapesolt . es m6dot nyiijtanak a lista egy.." ' .Listlndex = -1 ' Egyetlen lista-sor sem lesz k i j e Lol t: A Control Panel-ben: a Display Properties ablak Appearance lapjanak Item mezeje altai specifikalva . amelyben a megjeleno szoveg-kurzor vezerlo billentyiikel vagy kattintassal pozicionalhato. hogy utana mar . uUIUV.Addltem "Valami van. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK 3. e konyvbon csak az egy elem kivalasztasat megenged6 standard Iistakkal foglalkozunk (azaz: MultiSelect = 0 . ListCount esak olvashato tulajdonsag. A szoveg-mezd fontosabb tulajdonsagai E reszben foglaljuk ossze a szoveg-mezo .lista) vezerles A vezerles altal letrehozhato lista-mezok felhasznaloi interfesz celra szolgalo objektumok.'-l." sor legyen a k i j el oLt: gBox lstLista.List(2) . 0' "ertelmesebb s orren db en n illessze be. nzoknal a kivalasztott lista-elemek futas kozbeni azonositasa is az itt leirtaktol elteroen tortenik H+ E sorszamozas a lista-elemek felsorolasi sorrendjeben a O-val kezd6d6 egyrnas utani egesz szamokkal Wrtenik (ez egyebkent a programozasban szokasos gyakorlat. Ertekeul esak egy lista-elem sorszama adhat6. hogy tobb elem kivalasztasa is megengedett-e. MultiLine (logikai ertekii): azt szabalyozza. Ennelfogva ListIndex erteke csak [-1. A tobbsoros valasztast is megenged6 (MultiSelect = True) mez6k mas kijelolesi m6ddal rendelkeznek. A lista-objektum szokasos m6don torteno letrehozasa utan a lista szovegekkel vale feltoltese vagy meg a program fejlesztese kozben (a mezo List tulajdonsaga altai). "ViUU'.a mezo ListIndex tulajdonsaganak a listaelem sorszamara'" allltasaval.U. amelyek lehetove teszik szovegek listaszerii megjeleniteset 1\ mezo . uis az l-gyel kezdes nem olyan elonyos) . Horizontal: csak vizszintes gorditosav legyen (az aljan). azaz: amennyiben a szoveg tartalmaz egy kocsi vissza + soremeles karakterpart (.U listaelem barmelyik m6don torteno kivalasztodasakor a mezo ListIndex a kivalasztott elem sorszarnanak erteket veszi fel.Removeltem 1 ' ki is t.carriage return ill linefeed: az ASCII kodtablu 13.ablakaban.Addltem " de ". amely ele lesz tij besziirva a <sziiveg>. azaz a Chr(l3) ill Chr(lO) karakterek.utasitasok a omment-resznkben megadott tevekenysegeket vegzik az lstl. hogy egy tobbsoros TextBox tipusil objektumban legyenek-e gorditosavok a szoveg-mezo oldalain. Kiirasa lstLista.fix meretu. a «lista-mezo azonosito».stLista.List(O) & lstLista. de kesobb is barmikor.. False erteke ket I megjelenitodeset okozza: ScrollBars (egesz erteku): azt szabalyozza. Az utolso sor utan torteno irashoz az utasitas sorszamelhagyand6. (ami azzal egyenertekti. hogy a Text altal tarolt szoveget a VII egy. stLista . egyuttesen a vbtlrl] beepitett konstans).sorainak) a szamat. majd a mesodi ket: is.List(l) & lstLista.. elemei. ha a mezo van a fokuszban: a kurzor-vezerlokkel a megfelelo elemre lepegetve.14.l1"'ll".a program aktualis igenyei szerint .vagy tobb elemenek kivalasztasara'. de havan.es belole torlo) metodusok automatikusan allitanak. akkor a ScrollBars tulajdonsag barmely beallitasa hatastalan. de aztan . 3. es ha a mezonek nines vizszintes gorditosavja.3. mindig Ivl1llV'-'ll\. AddItem «sziiveg> [ . ListBox (.Noru') program futasa kozben a lista-mezore a Clear met6dust alkalmazva az torli a lista tartalmat.vegezheto: a fejleszto-kornyezetben a List tulajdonsag lenyflojara val6 kattintas nyitja ki al. a lista aktualizalasa erdekeben. akkor a szoveg automatikusan tordelodik. <sorszdm> ] utasftasban a <sorszdm» annak a lista-elemnek a sorszama.15. Both: vizszintes-es fuggoleges gorditosav is legyen. e tulajdonsag True erteke interpretaciot. akkor az a nem-nyomtathato karakterek jelevel megjelenitodjek vagy interpretalodjek (a megfelelo szoveg-helyen sor-elvalasztast eredmenyezve).. az alabbi m6dokon tortenhet: a megfelelo listaelemre torteno kattintassal.

rendezettseget is figyeIembe vevo . objektum ListIndex tulajdonsaga attol fuggoen -1 vagy a List altal reprezentalt lista soranak indexe. megjelenitesre szolgalo mezok szamara adatbazis-kapcsolatot is lehet definialni. hogy ezek ertekenc kezelese a programozora van bizva. . a fejlesztokornyezetben allithato tulajdonsaga az alabbiak szerint hatarozza meg: Combo: lehetove teszi a legorditheto lista alapjan torteno valasztast eppugy. de programhasznalat kozben akar dinamikusan m6dosfthat6 is (peldaul egy termek-nyilvantarto alkalmazasban a termekek korenek valtozasa a megnevezesuket tartalmaz6 listanak a rll'ogram vegrehajtasa kozbeni modosulasat kell. betiik beirasa a listat automatikusan a veluk kezdodo elso sorra pozicionalja (ambar ez nemjelenti a sor kivalasztasat is). hasznalata praktikus az olyan alkalmazasokban. akkor hasznalatos. ComboBox (.3. amelynek True ertekre allftusn eseten az AddItem met6dus sorszam-hivatkozas nelkul hfvhat6. esak a tartaIma valik tiresse. akkor a lista-mezo a szokvanyos egy-oszlopos. 73 . ha az utasitasban szereplo sorszam szoveg . mint a szoveges adat bevitelet. szinten indexelheto tulajdonsaga minden egyes list elemhez rendelten egy-egy (8 bajtos) szamot tartalmaz iigy.Simple Combo: rmikodese az elozovel azonos azt kiveve. es ekkor a szovegok automatikusan az abc szerinti ("telefonk6nyv"-. 2 . A listak futas alarti megvaltoztatasa termeszetesen valamennyi programozast igenyel. A lista-mezok j61 hasznalhato tulajdonsaga a Sorted. Az objektum rnegjeleniteset es mtikodesi modjat a Style nevti. es vizszintes gorditosav ellatva mutatja a listat (a tobb-oszlopos listak oszlopszam erteke . !1 «lista-mezd azonosiuc-Listi <sorszdm> altalanos formaban. 72 lista. peldaul: IstLista. Lec se re l i: az elozo s zov eqet: az ujra. Az eddig t{lrgyalt tipusu.a megtartasaval. es a szoveg-listabol valo torles alkalmaval a szam-list megfelelo eleme is automatikusan torlodik. Hiaba adunk ily m6don azonban egy lista-elemnek tires szoveg erteket ("").beillesztesi helyenek megfelelo). akkor abIakban az ertekeul adott szamu oszlopba csoportositva. J61 hasznalhato a esemeny-kezelo eljaras. hogy hogyan tortenjen a li megjelenftese. aIapheIyzetben esak a legordito nyillal kiegeszitett szoveg-mezo jelenitodik meg. j61 definialt szamot (azonosito. vertikal gorditosavval ellatott lesz. hogy a VB 6 verziojaban bevezettek a listamezok tulajdonsagat annak specifikalasara. att6l magi! a sor nem torlodik. a lista sorait a mezo List nevu.lasd 1.. esak a legorditheto listabol t6rteno valasztast engedi meg (a mezo TextBox resze esak a kivalasztott listaelem megjelenfteset vegzi).vagy lehet rendelni (peldaul a hallgat6 kodszamat vagy csoportjanak szamat). ha fontosabb a gyors valasztas lehetosegenek a biztositasa a hellyeI valo takarekoskodasnal.futas kozben is m6dosfthat6). hogy a mezo szovegreszeben megjelenitett szoveg manualis iteI vagy listabol torteno valasztas eredmenye.. akar mas . ez esetben a mezok modosulasa a "m6g6tti. A Combo Box tipusu mezok Change -eljarasa esak a TextBox resz manualis valtoztatasakor aktivalodik (tehat meg sem. a lista-elemek feldolgozas befolyasolasara viszont a szam-Iista szolgalhat. ha egy nem bovftheto listabol valo valasztas biztositasa a eel.5 A lista-mezok programozasaval kapesolatos alapveto funkciok bemutatasat szolgalja a lemezmelleklet ListBoxTeszt nevti projektje. FEJEZET A fORM ES AZ ALAPVETO VEZERLESEK Mint az a peldaban lathato. hogy a mezo ablaka minden lista-elem mell egy kipipalhato jelolo-negyzetet is tartalmazzon (e lehetoseg hasznalatat mutatja be IDE komponens-kivalasztasra szolgalo Components ablakanak listaja .Dropdown r Vegul itt csak megjegyezziik. alL'UU'-. a valasztas biIIentyiizetteI is vegezheto: barmely billentyiileutes a megfelelo karakterreI kezdodo sorok eiklikus kivalasztasat eredmenyezi. hivatalos neven: lexikografikuss rendezettseguk megtartasaval illesztodnek a listaba (a metodus ugyan hasznalhatc sorszam-hivatkozasos valtozataban is. A lista-mezok ItemData nevu. LUL/U-'U"~..az objektum merete altal meghatarozott szarmi sort tartalmazva.szoveges informacio bevitele is vezezheto legyen. hogy a ListIndex es a ListCount tulajdonsagok esak futas kozbcu erhetok el.lUI"Vr'"'' o . 1. ha a Dropdown List stflusti ComboBox-ban a kivalasztas billentyiizettel Egyeb vonatkozasokban a ComboBox-ok mukodtetese azonos a TextBox es a tipusii objektumokeval (lasd a ComboBoxTeszt projektet). ahol a Iista minden egyes egy megjelenfteni nem kfvant. elso ket esetben (amikor az objektum TextBox resze adat-bevitelre is hasznalhato) . hogy altala akar lista alapjan torteno Ua:lLla:l. E hivatkozas akar egy ertekado utasftas bal oldalan is allhat.kombinalt lista) vezerles A ComboBox vezerles egy egysoros TextBox es egy standard rmikodesi modu ListBox kombinacioja abbol a celbol. Megjegyezzuk. hogy az objektum mar eleve lenyitott listaval jelenitodik meg . indexelhet/i tulajdonsagn tartalmazza.illetve kombinalt-mezok listaja lehet akar . hogy aztan a nyil kattintasa a mezonek a listaval valo kiegeszuleset eredrnenyezze. E szam-lista a szoveglistaval egyiitt kezelodi azaz: annak uj elemmel valo bovitesekor ebbe is beillesztodik pontosan a megfele helyre egy uj (0 ertekii) szam. alkalmazasa igazan akkor praktikus. List (1) = " de meg " 16. Ha erteke 0. hogy eredmenyezze). objektum Text tulajdonsaga mindenkor a szoveg-reszeben lathato szoveget tukrozi. Az egyes lista-elemekre torteno hivatkozas a sorszamukkal tortenik.ik a116" tablazatok tartalmanak valtozasaval automatikusan es dinamikusan tortenik. Ha erteke egy nulldndl nagyobb egesz szam.Dropdown List: nem teszi lehetove szoveg befrasat. Az ItemData tulajdonsag hasznal termeszetesen nem szukseges a ListBox alapfunkciojanak a miikodtetesehez.a listaban nem szereplo . Ilyenkor megjelenftes es kivalasztas celjaira a szoveg-lista-.5. ezert programfejlesztes soran a Properties ablakban nem is listazodnak. ameIy kozvetlenul a fokusz elvesztese elott lehetoseget adva az esetIeg manualisan bevitt szoveg vizsgalatara. azonban iIyen medon torteno hivasa utilll tovdbbra is esak akkor fog heIyesen rmikodni. A lista-mezo Columns tulajdonsagban azt mutatja meg.6rok idokre" bebetonozott (pontosabban: a lista fejlesztorendszerben torteno modositasaig)..

tulajdonsag programozas altal is m6dosithat6 (az aktualis konyvtar-kijelolesnek objektum altal rneghatarozott m6don torteno. hogy ez nem egy specialis hasznalatra .a halozaton belul torteno eleres celjabol ellatva es a munkaallomason ez a \WtServerVlome teljes halozati eleresi alkonyvtar a h: meghajt6hoz van rendelve. DirListBox mezo alapszintii hasznalatat es a DriveListBox..Drive tulajdonsagn felel meg az objektum altal reprezentalt meghajt6nak. halozati meghajt6 eseten pedig x: \\<szerver-nev>\<share-nev>\<eteresi ut» .. hogy praktikusabb oket teljesen kulon alapokon tekinteni. A DriveListBox tipusu objektum .17.3.csak futas kozben elerheto .. Listlndex illetve ListCount lajdonsagokkal. pontos tartalma nem halozati drive eseten x:\<eleresi ta» . a DirListBox es a helyett az altalanosabb cehi. Az objektum f6kuszba kerulesekor a rnegfelelo drive valasztasa vagy az ot azonoslto betu billentyiijenek a lenyomasaval vagy a Combobox-nzi szokott m6don tortenik.'. A meghajto-valtas kezeleset az objektum Drive tulajdonsaganak barmilyen torteno megvaltozasakor az objektum szamara generalodo Change esemeny lehetove (hasznalatukat illetoen lasd a lemezmelleklet MyFileBrowser programj Megjegyezzlik.bar mutat nemi hasonlosagot a ListBox-szal _ mar specialitassal rendelkezik.. halozati drive eseten x: [ \\<szerver-nev>\<share-nev>J . A tulajdonsag vegso tartalma azonban nem feltetlenul lesz a beleirt ugyanis azt az objektum a meghajt6 tipusatol is fuggoen.Jciokosftott" Comboliosi. DirListBox* (.CfIllt:K az objektum Path tulajdonsaga altal specifikalt konyvtarahoz vezeto utat es a konyvtar kozvetlen eleresu alkonyvtarait" hierarchikus listaban Az aktualis konyvtar feletti sorokban a konyvtarhoz vezeto uton leva nyitott-. egyezzlik. hogy e vezerles szerepet sok alkalmazasban a CommonDialog vette ""-.i'l meghajt6k listaszeni. Pontos tartalma (szoveg): floppy drive eseten a: vagy b: (a floppy meghajt6k azonosit6ib61 kepzett szoveg): nem cserelheto drive eseten x: [cvolume id»]: . hogy ez kis. a Path tulajdonsag feldolgozasa is ennek a feladata. hogy a DriveListBox es a ComboBox egy kozos "os"-objektumtipus Ieszarmazottjai. Peldaul. Iathatoan VB-el fejlesztett alkalmazas dolgozik a DriveListBox. barmilyen okbol torteno megvaltozasa eseten az objektum szamara esemeny generalodik. csak az objektum eleteben jatszott szerepeikben van Egy konyvtar kozvetlen eleresu alkonyvtarain azon alkonyvtarakat ertjuk. "sajat tulajdonu" kozvetlen eleresu alkonyvtarak zart mappat abrazolo ikonnal lathatok. akkor a munkaallomason a vegrehajtasa kozben a DriveListBox tipusu rnezok legordithetc listaiban h: {\WtServerVlomeJ sor is olvashat6lesz. is.illetve FileListBox ""£AJn. esetleg nyom6gomb) Iehet beallitani. ahol x a drive-azonosft betiije.UJILln. Megjeleneseben szinte megszolalasig Dropdown Combo tfpusti ComboBox (es csak a lista soraiban lathato meghajro ikonok mutatjak. kijelolesi lehetoseget is biztosit6 megjelenitesero] alkalmas mezok letrehozasara szolgal. tipusu objektum egy szukseg eseten fuggoleges gorditosavval is ellatott a Drive" tulajdonsaga altal meghatarozott meghajt6n leva CUll:SZ. E vezerles . <share-nev> pedig a «szerver-nev> nevii szerver fajlrendszereben konyvtarnak a halozati elerhetosege celjabol adott "beceneve".VU'~"aktualis konyvtar rnanualis atjelolese) eredmenyekent az objektum (az ki (kezdeti erteke a meghajto fajlrendszerenek aktualis konyvtara).konyvtar) vezerles A DirListBox vezerles az altala letrehozott mezo reven egy meghajt6 (~ drive) fajlrendszerenek fa-strukturaszeni megjelenitesere es ut-kivalasztasi Iehetoseg """'H""""'" szolgal. Formajukon tulmenoen. A objektum (pI meghajtovagy valaszto-mezo. ahol x a drive-azonosito betujc. standardda valt CommonDialog vezerlessel (lasd 3. kezdeti erteke pedig az objektum megszuletesekor ervenyben leva aktualh meghajt6. DriveListBox (.". 8. A Path tulajdonsag ellenben tipikusan felhasznaloi . gyors megvaltoztatasa celjabol). amelyek szttlo-konyvtara parent directory) maga a konyvtar (ezert talan kifejezobb lenne "gyerek" konyvtaraknak hivni oket) A Drive tulajdonsag frasaval atallfthato az objektum altal reprezentalando meghaj (egyszersmind a meghajt6k listajanak iijrageneralasat eredmenyezve) a szamttoue egy aktualisan letezo meghajtojara (nem elerheto meghajt6 hivatkozasa TUl:aS-·KOZnt hibat okoz). ~"'HJL'A amely emlitett tulajdonsagok csak futas kozben erhetok eI. azonban a Listlndex a lista sorait a megszokott61 elteroen indexeli. ha NtServer nevu szerver valamelyik winchesterenek a fajlstrukturajaban konyvtar Home share-nevvel van ..20) A DirListBox es a DriveListBox vezerlesek Drive tulajdonsaga formailag es tartalmilag is azonos. FEJEZET A FORMES AZ VEZERLESEK 3.vagy nagybetuvel irodott-e: e karakter hatarozza meg meghajt6t. valo Szamos tij.". igy olvasdsa altai azonosfrhatd az.es ""LJI"C.1 kapcsolatat mutatja be a lemezmelleklet MyFileBrowser programja.meghajto) vezerles A DriveListBox vezerles meghajt6k reprezentaciojara (azaz a letc/. hogy e vezerles is rendelkezik List. a Drive ertekeul a "Hugo" szovc adva a gep h: meghajt6ja valik az aktualissa. A mutatott listaban a lista-mezonel m6dokon Iehet kozlekedni. az alatta levo.. az elobbiekben lo formajuva alakitja (az elozo peldanal maradva. csak olvasni szokas: az objektum altal reprezentalt teIjes eleresi lit celjabol. akkor viszont irhat6k. az aktualis konyvtar atjelolese viszont a 10 sorra val6 dupla-kattintassal vegezheto. a tulajdonsag erteke pediga VB full magja altal automatikusan formdlodik a h: drive-hoz rendelt konyvtar teljes hal eleresi nevevel megspekelve h: (\WtServerVlomeJ tartalrmiva).. DirListBox tfpusti objektumok Drive tulajdonsagat programozas altal. Az ertekeul adand6 szovegnek csak az else karaktere erdekes es meg sem szamit..l'.HV(ht 74 75 . kezelesuk es rmikodtetesuk hasonlosaga is azt valoszinusiti.ahol x a meghajto-azonosito betiije.'n.

amely a mukodesehez sziikseges informaciokkal torteno ellatasahoz illetve programozo-barat rmikodtetesehez kapcsolodik. sot: a nevnek teljes (akar halozati) eleresi uttal egytitt torteno megadasakor a vezerles Path tulajdonsaga is beallftodik.'''l1''''''':U kovetoen a megfelelo met6dusok vegrehajtatasa reven igenyelhetok.altalanos dialogus) vezerles feltetelt kielegito) fajlok listaszeni megjelenitese es szamukra kivalasztasl lehetoseg biztosftasa. Eleg egyetlen peldanyban elhelyezni akar tobb funkci6 vegzese celjabol is.es ikon-fajlok jelenitodnek meg..*.wildcard karaktereket (* ill ?) is tartalmazhat6 . Megjegyezzuk. Comdlg32.exe) - Path: az objektum altal listazando konyvtar teljes eleresi utjat tartalmazza (megvaltozasa eseten PathChange esemeny generalodik): FileName: a listabol kivalasziott fajlt nevet' vagy tires sztringet tartalmaz.. hiszen mivel az altala megval6sitott funkci6k kozul egyidejiileg esak egy aktivalhato..futas kozben nem jelenftodik meg (maga az objektum a szukseges tulajdonsagokat hordozva interfeszkent szolgal a program es a met6dusok k6djait tartalmaz6 ActiveX vezerles kozott).rajl) vezerles A FileListBox vezerles funkci6ja egy valamely konyvtaron beluli (szelekcios .es eleresi ut valtasra iN (ilyenkor Path Change esemeny is generalodik). A kovetkezokben ezek kozul a fontosabbakat tekintjuk at. valamint a Windows meta. Megvalosftasat tekintve a FileListBox tfpusu objektum egy specialis tulajdonsagokkal es automatizmusokkal ellatott ListBox vezerles (minden jel szerint a FileListBox objektum-tfpus a ListBox leszarmazottja). a kovetkezokeppen: it teljes szoveg az egy-egy fajl sziiresere szolgalo . Pattern: a konyvtar tartalmanak listazasakor alkalmazott szelekci6s feltetelt tarolju szoveges formaban. igy mtikodtetesehez szukseges beepiteni a Microsoft Common Dialog Control 6. Path Change illetve Pattern Change esemenyet szokas kezelni: a Click esemenyt a mezo listajaban levi) valamely fajl manualisan kezdemenyezett kivalasztasakor-.. amely azonban ott esak egy nem atmeretezheto ikon formajaban jelenik meg. amelyek azonos hatassal vannak az osszes funkci6 vegrehajtasa kozben. a dialogus-ablak futas-kozbeni megjeleniteset illetve a mukodteteset szabalyozo altalanos tulajdonsagok.bmp. Ismertetesuk csak a teljesseg kedveert tortenik. A FileListBox mezo alapszintii hasznalata kozben esak a Click-. de vannak olyan specialisak is. hiszen helyette a CommonDialog hasznalatat ajanljuk " A fajl teljes eleresi utja tehat a mezo Path.19.bar Visible tulajdonsaga sines . amikor az alapfunkcio aktivalasa nem az objektum megfelelo rnetodusaval. A fontosabb. hogy az altala letrehozhato objektummal alapveto dialogus-funkciok szamara egyseges megjelenitesu es mukodtetesu tamogasson.es FileName tulajdonsagainak egymas utan fuzesevel all elll Az objektum Action tulajdonsiiga csak a vezerles korabbi verziojaval valo kompatibilitast szolgalja. Megjegyezzuk.intrinsic) eleme a fejleszto-kornyezetnek.wmf.0 nevii ActiveX vezerles-komponenst. hogy tartalmanak megvaltozasa PatternChange esemenyt general. Programozasat tekintve nemi elteres tapasztalhat6. A CommonDialog vezerles nem beepftett (. es vegul n Pattern Change esernenyt a szelekei6s szempontoknak a (pI egy lista-rnezoben megadott valasztek alapjan vegzett atjeloles hatasara torteno) modosulasakor kell kezelni az esetleg sztikseges .ocx fajl-neven.specifikacios-szovegek pontosvesszokkel elvalasztott sorozata. FileListBox (. ha az ertekekent adand6 szoveg letezo fajlt ir Ie.". peldaul: a*. amelyek csak egyes alapfunkei6kat vezerelnek.3. es amely . {rasa altai kivalaszthato a listabeli nevevel adott fajl. amely a VB installalasakor automatikusan a Windowsoperaei6s rendszer "epito"-elemeket tartalmaz6 System konyvtaraba kerul. ezert a megjelenitest befolyasolo tulajdonsagok beallitasa kozvetlenul a funkci6t mukodteto met6dus vegrehajtatasa elott szokasos. hanem egyszenien az "akci6" jellegenek megfelelo Action-k6d beallftasaval tortent 76 77 . Az egyes alap-funkciok az objektum tulajdonsagainak V.mellek't-tevekenysegek vegrehajtasa celjabol. hogy tartalmanak programozds altal (ertekado utasitdssal) torterui megvaltoztatasa eseten DblClick esemeny generalodik.. A vezerlessel kapcsolatos informaciok ("j61 hasznalhato" konstansok) az Object Browser attekinteseben az MSComDlg konyvtarban olvashat6k. CommonDialog (. FEJEZET A FORM ES AZ ALAPVETO 3.. irasa altal beallithato a szelekei6 m6dja.ico Pauern-szoveg eseten az osszes a betiivel kezdodd es bmp kiterjesztesu. lehetoseget adva az egyetlen lepesben torteno meghajt6. a Path Change esemenyt a mutatott konyvtar mas objektum altal inicializalt megvaltoztatasakor-.*. . Ezek: ShowColor ShowFont ShowPrint ShowHelp szfn valasztasa palettaval es skalaval font -tulajdonsagok beallftasa nyomtatasi opci6k beallftasa indftas (azaz Winhlp32. futas kozben esemenyek az alabbiak": elerheto tulajdonsagok es a hozzajuk kapcsolodo A CommonDialog vezerles celja az. Vannak olyan. " A FileListBox mezo alapszintii hasznalatat es a DirListBox tipusu mezokkel kapcsolatat mutatja be a lemezmelleklet MyFileBrowser programja. erre utal II felhasznaloi szempontb61 teljesen azonos megjelenesuk es kezelesuk. Hasznalatahoz a fejlesztokornyezetben a szokasos m6don kell letrehozni a formon egy objektumot.

amely atlagosan kb 1118 masodpercenkent csokkenti a tartalmat az Interval-beli ertek kb 1118 reszevel (az id6zit6k a szamlaloik mukodteteset a ROM BIOS altai hasznalt hardver orara tamaszkodvavegzik.ico)I*. ha nem torrent kivalasztas). A Color dial6gus-ablak eseten: Color: a metodus meghivasa elott beirva kijeloli az RGB. Flags: tipusonkent kulonbozo un cdl-konstansok. CommonDialog tipusti objektum fajl-kijelclesre szolgalo Open alapfunkciojanak a lemezmelleklet CommonDialogTeszt programja mutatja.ommon Dialog tamogatassal toltik ki a mezok Text tulajdonsagat. FilterIndex (csak Open-riel): tobb-soros sztirofeltetel hasznalatakor a dialogus ablak elso megjelenesekor hasznalt szurofeltetel sorszama (~ 1). igy peldaul: a Bitmaps (*.*. FontStrikethru.txtIPictures (*. akkor az mindket modositast ervenyesfti): az egyes alapfunkciokhoz kapcsolodoan megadhat6 jelzo-konstansokrol az on-line Help funkcioknak megfelelo CommonDialog Control lefrasai adnak attekintest.wmf ket-sorban.3.lV A formra helyezett idozfto-objektum nem atmeretezheto. A k6d maradeka es a szoveges fajlok feldolgozasaval (magyarazat nelkul) foglalkozik. Maximalis erteke 65.wmJ. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK A fontosabb altalanos (minden funkcional hasznalatos) - tulajdonsagok: Font dial6gus-ablak eseten: FontName. Peldakent lasd a lemezmelleklet Timer'Ieszt. kulonben az idozito periodikusan riasztana. soronkent egy-. a Text (*. cdlCFPrinterFonts vagy cdlCFBoth konstansoknak megfeleloen valaszthato fontok listajat.IUHl. txt) I*.. FontSize. a metodus vegrehajtasat kovetoen e tulajdonsagok a kivalasztott font attribtitumait tartalmazzak CommonDialog vezerles nyomtato. 78 79 . vegul ha a cdlOFNFileMustExist + cdlOFNHideReadOnl1' konstans-kifejezest adjuk Flags ertekeul. akkor az ora Ieallftasa'" az objektum Timer esemeny-eljarasanak az elso meghivodasakor kell tortenjen.bmp. A Save As dial6gus-ablak eseten: .. hogy a fajl specifikalasara szolgalo mezoben csak egy mar letezo fajl neve Irhato be. . es ez csak ilyen pontossagot tcsz lehetove bizonyos nagyobb prioritast elvezo hardver funkci6k zavartalan mukodese erdekeben) . .bmp)1 *. CancelError: logikai tulajdonsag. kivalasztott fajl teljes eleresi utja. Az Open es Save As dial6gus-ablak eseten: Timer ("" idozito) vezerles A Timer idozitesek megvalositasanak alapjaul szolgalo beepitett vezerles. FontBold.bmpIMetafiles (*.535 lehet. es futas kozben nem lathato.. Ha a vezerlessel letrehozott objektum Interval tulajdonsaga 0-t61 kulonbozo egesz (es az objektum egyebkent mukodokepes. Fontltalic. melynek True erteke eseten a dialogus-ablakbol Cancel nyomogombbal vagy standard bezaro gombbal torteno visszateres eseten cdlCancel kodszarmi hiba tortenik. 1 mp .L. H met6dus vegrehajtasa utan pedig a kivalasztott fajl teljes eleresi iitjat tartalmazzu (vagy tires. a masodik soraban pedig harem fajltfpusra fogalmaz meg feltetelt. kulonben a met6dus There are no fonts installed tartalmu hibalizenettel ter vissza).""'~' DialogTitle: a megjeleno ablak Title soranak tartalma.1000 Az Enabled allitgatasaval is vegezheto (amikor az 6ra riasztasi idejet nem akarjuk m6dositani) . e konstansok egyikenek azonban beallitva keU lenni. melyek az egyes alapfunkciok soran megjeleno dialogus-ablakok variansainak es mukodesi modbeli eltereseinek a megadasara szolgalnak (peldaul : az Open es a SaveAs funkcioknal megadhato cdlOFNFileMustExistazt jelzi.wmf)I *. a program indulo-konyvtanlt tartalmazza.DefaultExt: a fajl elmentesekor alkalmazand6 nev-kiterjesztes.egy formon leva . a felhasznalo tevekenysegetol tobbe-kevesbe hosszrisagti" ido-intervallumonkent az objektum szamara Timer esemeny odik (azaz az idozito riaszt).'\. mert azokhoz meg tovabbi eloismeretekre is szukseg volna.wmf. Az id6zit6 valojaban egy szoftverileg megval6sitott count-down regiszter. azaz Enabled tulajdonsaga True). ami a Basic-ben szokott m6don dolgozhat6 fel. Filter (csak Open-nel): a fajl-sztironek a dialogus-ablak Filter mezejeben megjeleno szoveget es a szuro specifikaciojat tartalmazo szoveg. ha az a fajl nevevcl egyutt explicit m6don nem lett specifikalva.LU' V<U\'\. MyWatch ill MyStart programjait. InitDir: a dialogus-ablak altai megjelenitendo kiindulo konyvtar' teljes eleresi titjn: FileName: a funkciot aktivalo met6dus vegrehajtatasa elott beallithato benne II dialogusablakban megjeleno alapertelmezett. maskulonben II tulajdonsagot a fekete szinnek megfelelo 0 ertekkel inicializalja). az eredmenyt egy masik fajlba tarolva. Ez egy DOS atformalasat vegzi. Az idozito Interval tulajdonsdga a ket egyrnas utani riasztas kozotti idot" milliszekundumokban (ezred-masodpercben) merve tartalmazza. vagy a standard szfn-konstansaval megadott szfnt a palettan (ehhez meg a cdlCCRGBInit jelzo-kod beallitasa is sziikseges.egy idoben idozito objektumok a tevekenyseguket egymastol fuggetlenul Iatjak el.es Help-valasztast lehetove tevo funkcioival foglalkozunk. ami kevessel tobb mint I percnek felel meg.illetve a QBColor fuggvenyekkel. Az egyes . a benne leva erteknek megfelelo. es a hivasbdl tOrteno visszateres utan e tulajdonsagban tarolja a kijelolt szin kodjat. ami a programot a fejleszto-kornyezetben mukodtetve maganak a projekt-fajlnak-.\. II vegrehajthato programot futtatva az indftasara szolgalo (tin exe forrnajti) fajlnak a konyvtdra UIU"-V\. es amelyek . *. A program az elejen vannak azok az eljarasok. Ha feladata csak egyszeri ebresztes. amelyek a megfelelo fajlok nevet szoveg-mezokre torteno dupla-kattintas altai aktivalodnak.ico pedig az elsl'l soraban egy-. a cdlOFNHideReadOnly megadasa esetcu pedig a dialogus-ablakban nem jelenitodik meg egy Open as read-only cimket viselo kapcsolo-mezo.*. FontUnderline: a ShowFont metodus meghivasa elotti beallitasuk a dialogusablakban megjeleno font attribiitumait tartalmazhatjak (de ezek semmilyen m6don nem korlatozzak a Flags-ben beallfthato cdlCFScreenFonts..bmp. '''LI.*. * Az App objektum Path nevi! tulajdonsaga igen praktikusan hasznalhato.

. Barmilyen olyan esetben. ai. kapcsolatos az esemeny kivaltodasa. akkor az elso mezo ~I. automatikus generalasahoz).alapertelmezett . hogy mindegyik a "sajat" objektumara hivatkozik. es akkor a duplikalas folyamata iigy zajlik. Do you want to create a control array ( (azaz: Mar letezik egy XXXX' nevii objektumod. amde az automatikus index-kiosztast" kesobb modositva.re allftja (a kerdes nemleges megvalaszolasa eseten a neveben az elso szabad sorszamot viselo "normal" objektum keletkezik). akkor e kozos nev hasznalando). amikor .Click esemeny-kezelo eljarasanak a .Jcerete" : Sub lblBox_Click(Index As Integer) Ez kulonosen akkor tesz j6 szolgalatot. mintha a elemeinek duplikalasat egyenkent vegeztuk volna. hogy az egyes mezok Index-ertekei sorban 1.IIJJ·ll\. Caption = "Abba Manuel" utasftassal allfthato egy nevre. Egy objektumokb61 allo tomb a megfelelo.uplikalasa utan mar a kettot egyuttesen lemasolva hozhatjuk letre az elso negyet. Igy az objektum-tomb esemenykezelo eljarasa kepes ra.tombon beluli megkulonboztethetosegnk erdekeben .ket objektum Name tulajdonsaga azonosra allftodna'". 5 elemfi. Objektum-tombok" Programozas soran gyakran fordul elo olyan szituacio. mert feltetelezi.Jyukakat" is tartalmazoan ' atfrhato.didaktikai okokb61 a kevesbe felreertheto objektum-tomb elnevezest hasznaljuk •• Bar ezt nem vittek tulzasba a fejlesztoi: a sok "varazslo" egyike ezzel is foglalkozhatna ••• Ez implicit m6don egy objektum (Copy es Paste parancsokkal megval6sftott) duplikalasa-. amelynek elemei egy vezerlesen alapulnak. azonos tipusu objektumok azonos kezelesmodot iN igenyelnek. ennek eredmenyekent megjelenik az objektum-tomb . az IDE egynel tobb .control array) elnevezest hasznaljak olyan tombre gondolva.Ietrehoztak egy objektumtombnek nevezett konstrukciot. expli m6don pedig egy objektum nevenek egy mar letezo objektum nevere torteno modositasaval Iehetseges egy objektum-tombbe tartoz6 (azonos nevii) objektumoknak esemenytipusonkent esemeny-kezelo eljarasuk van. ) Figyelje meg. Az objektum-tombok ket teriileten nyujtanak programozasi elonyoket: a tomb.elemeik egyedi kod-hozzarendelesi igenyet is szem elott tart6 .. es igy tovabb .legalabbis' a tombon belul . peldaul bizonyos opcios-gombok tombjenek . A harem kulonbozo szinii cimke-mezo Click arasaiban szinte ugyanazt kell csinalni: a benniik leva utasitasok csak kulonboznek. de a lemezmelleklet altal is HolAPiros programot. hogy esak egy kulonbozo .letrehozasat az IDh' automatizmussal is tamogatja. A VB terminologiajaban e konstrukci6ra a vezerles-tomb (.ra illetve 1. "nem tornbositett" objektumok halmazatol a tomb-elemek elnevezesi (es ezert hivatkozasi) modjaban es esemeny-eljarasainak I. hogy bizonyos. Tehat. ez kesobb manualisan .akar "normal" akar tombosftett .objektumbol allo csoport is megengedi".rendelkeznek egy . melyek neve az objektum-tomb nevebol Az ilyen eljarasok azonban meghivodasukkor meg egy . Nemi tamogatast az IDE is ad a kezelesukhoz (az objektum-tomb elemeinck letrehozasahoz".22. kovetoen a Name tulajdonsagaban <objektum-tiimb nev> szoveget-. Megjegyezziik. Most kattintson duplan barmelyik objekturnra. egyenkent megirni).. hogy elso parametere a kivalasztott opcios-gomb Index tulajdonsaganak az erteket tartalmazza.3..el ugyamigy hivatkozhat6. automatikusan objektum-tomb utolso elemenek a Caption tulajdonsaga az iiCsibbeszek (4) .illetve elemeinek hivatkozasa a program utasftasaiban.>rn. FEJEZET A FORM ES AZ ALAPVETO VEZERLESEK 3. hogy a tombhoz tartoz6 objektum-elemeknek IIJ""'''JJ'''LV esetszetvalasztast vegrehajtsa. 2 illetve 3 legyenek). felteszi 1\ You already have a control named Xxxx'. Objektum-tombot akarsz letrehoznl. amikor a tomb igen nagy szamu objektumb61 (peldaul. hogy tomb-elem eseten mar fel sem teszi az elobbi kerdest. hogy a sorszamok szigoruan monoton novekvo szamsort alkossanak.tprj kapnak (az esetleges egyeb informaciok atadasara szolgalok mellett) es egy szamot: a tombbeli azon objektum Index tulajdonsaganak az erteket. hogy a cimke-mezok nevet egysegesen IblBox-ra valtoztatja (a masodik mezo modositasa soran megjeleno You already have . tulajdonsagaban pedig <objektum-elem index> szamot tartalmazo a program barrnely "normal" objektum-hivatkozast megengedo utasitasaban 'otnektum-tomb nev>( <objektum-elem index» . fejezetben bemutatott. hogy az egyes objektumok Index-ertekei a nev-modosftas sorrendjeben 0. egy eel erdekeben hasznalt.. cimke-mezokbol allo."a. rni . Ezt igenloen megvalaszolva az uj objektum nevet az elozovel azonosra.() kerdest..ramelyct az Index tulajdonsaguk hordoz (e kodszam barmely nem-negatfv egesz szam lehet) . egy formon levo. A VB nyelveben . A kodszam hozzarendelese a program fejlesztese soran tortenik. _ a tombbeli objektumok azonos tipusti esemenyeinek kezelese egy esemeny eljarasba koncentralhatok (es nem kell oket objektumonkent.Index nevfi '<lr. A tomb-elemek azonban . bar letrehozasakor az IDE automatizmusa az tij tomb-elem indexeul az else szabad szamot adja.uj tomb-elemet szandekozunk letrehozni. Egy objektum-tomb elemei a Name tulajdonsagukban valamennyien megegyeznek (ha egy utasftasban az objektum-tomb egeszere kell hivatkozni. M6dosftsa a programot ugy.megkonnyitendo az ilyen "egy tomegben" kezelendn objektumok programozasat . Nem kotelezo. tekintsuk a 2. ha egy form egy sakktabla clmke-mezokkel megval6sitott reprezentaciojaul szolgal.akar implicit akar explicit medon . I ill 2 lettek! all 80 81 .. de akar . meghozza ugy. Tehat. a ReegiiCsibbeszek nevti.valamely elemere kattintva meghivodik a tomb nevebol es a Click allo esemeny-eljaras.. parameterezeseben kulonbozik.a azaltal is tamogatja az objektum-tornb letrehozasat.termeszetesen az egyediseg kovetelmenyenek a fenntartasa mellett. Index tulajdonsagaikat pedig sorban 0 .egyedi koddal. valamint az esemeny-eljarasok "kereteinek" a tomb-konstrukciot iN figyelembevevo. Az objektum-tombok .az eddigi szohasznalatunknak megfeleloen . tomb-letrehozasra vonatkoz6 kerdest igenloen megvalaszolva.

3. FEJEZET

Megjegyezziik, hogy az eredeti cimke-kattintast kezelo esemeny-eljarasok nem tiintek el,csak mivel ezekhez mar nem tartozik objektum, ezeket az IDE olyan standard eljarasoknak gondolja, amelyek mas eljarasokbol - hason16an a program Set'I'ablc vagy ShortPause eljarasaihoz - meghfvhat6k. Uj eljarasunkba most irja be (vagy egy regibol a bemasolasat kovetoen alakitsa ki) alabbi utasftast:
SetTable Index, IblBox(Index) .Left, IblBox(Index) .Top

4. A Visual Basic programnyelve
elozo fej~zetekben attekintettuk a VB IDE beepitett vezerleseinek tobbseget; az megismerhette funkci6ikat es hogy milyen m6don lehet rmikodtetni oket, apaszuuuaua, hogy altaluk igen keyes program-utasftas frasaval is igen latvanyos '.\lVll<.V'.l\.<ll lehet produkalni. A programok kodjanak olvasasa kozben mar eddig is tobb talalkozhatott, amelyek nemelyiket (pl az ertek-ado utasftast) mar leirtuk, tobbseguk szerepet azonban az oket alkot6 szavak jelentese alapjan pontos lefrasuk hianyaban - eddig csak kovetkeztethette. E hianyossagot p6tland6 e a tovabbiakban hasznalt alapfogalmak es a Visual Basic utasftasok preciz H""'IUUL\.,"'" tiizi celul, A fejezet eppen ezert kicsit elvontnak es szaraznak tiinhet·, egy olyan szukseges rossz, amit a programozas gyakorlatanak a mezrsmeresekoi nem lehet kikeriilni. Az elvontsagot pedig peldakkal igyekszunk

majd torolje ki a regi cimke-mezo objektumokhoz tartoz6 Click esemeny-eljarasokut, Mentse is el a program m6dosftott verziojat HolsPiros'Iomb neven, A program felhasznaloi szempontb61 ugyanugy fog miikodni, mint elodjc, programozas-technikailag azonban lenyegesen korszeriibb lesz. Egy cimke-mezorc kattintva az alabbiak tortennek: • • a VB futtat6 magja konstatalja az objektumra (a cimke-mezore) torteno kattintast; az objektum Index tulajdonsaganak kitoltottsege alapjan feltetelezi, hogy 111, objektum egy tomb eleme, ezert meghivja az lblBox (objektum-tomb) objektum Click esemeny-eljarasat (lblBox_Click), a hfvott eljaras Index parameterebe elozoleg a kattintott objektum-tomb elem Index tulajdonsaganak az erteket toltve; az esemeny-eljaras vegrehajtja a benne levo, IblBox (Index) objektum-tomb elem hivatkozasokat tartalmaz6 utasftast az eljaras parametereben atvett Index ertekkcl (azaz: a kattintott objektum Index tulajdonsaganak az ertekevel).

4.1. Programozasrol altalaban
A Visual Basic program-k6djainak frasara" a strukturalt programozast praktikusan kialakitott utasitaskeszletti Basic" prograrnnyelv szolgal. tamogato,

3.22.1. Tdmbbe foglalt valaszto-mezdk

hasznalata

4.1.1. Programozunk,

tehat hibazunk

A valaszto-mezok kezelese igazan akkor kenyelmes (es tegytik hozza: programozastechnikailag akkor "tisztesseges" megoldasu), ha a mezok objektum-tombbe vannak szervezve (azaz az egyes opci6csoportokat kulon keret-mezokbe es kulon tombokbe foglaljuk). A lemezmelleklet OptionArrayTeszt mintapeldaja (aminek tomb-hasznalal nelkul tOrteno megvalositasat a valaszto-mezok targyalasanal gyakorl6 feladatul tiizttik ki) a valaszto-mezok tornbokbe szervezett megoldasat mutatja be.

3.22.2. Pelda mas tipusri objektum-tomb

hasznalatara

Az objektum-tombok igen sokretfien hasznalhatok, Ezt peldazza a lemezmelleklct Myliqualizer nevii, erositok equalizeret szimulalo programja, amely gombnyomasru egy veletlen [1, 10] intervallumbeli x egesz szamot general, hogy aztan a 10 egymas fole helyezett, negyzet alaku cimke-mezo kozul pontosan az also x darabot szfnezze sargara,

A kodolas soran az ember 6hatatlanul hibakat ejt, amelyek szavak elfrasabol, helytelen szohasznalatbol vagy folyamatok eleve rossz megfogalmazasabol eredhetnek. Az elkovetheto hibak minimalizalasa erdekeben a kulonbozf programnyelvek eltero szintii-, de altalaban eleg kemeny szabalyok betartasat kovetelik a programoz6t61. Ebbol a szempontb61 a Visual Basic a puhabb nyelvek koze tartozik, mivel keszitoi minden egyeb szempontnal fontosabbnak tartottak a nyelv rugalmassagat es konnyti megtanulhatosagat. Nehany praktikus szabaly betartasa mellett azonban a Visual Basic nyelven torteno programozas azert pontosan olyan kellemes vagy kellemetlen, mint mas hasonl6 fejleszto-rendszerek programnyelven. E szabalyok koztil nemelyikre " elokerulesukkor - direkt medon is felhivjuk a figyelmet, masokat pedig egyszeriien beleolvasztunk a targyalasba, meg sem emlitve azesetleg alkalmazhat6 - de rossznak tartott - alternativ lehetosegeket.

A program {rasa vagy kodoldsa helyett mostanaban divatosabb az angolban a scripting sz6 hasznalata; [obban utalva annak kezzel frott, es esak szovegreszeket (- scripts) eredmenyezo jellegere; magyar ~I)'elven ennek a sz6nak nines ugyanazt a tartalmat kifejez6 megfelel6je (kodoldst ill kodreszt mondunk) A nev a lleginners All-Purpose Symbolic Instruction Code rovidftese

83

4. FEJEZET

A VISUAL BASIC

4.1.2. A program celja, szervezddese
A mtikodo programok tevekenysegeinek targyai mindig valamilyen objektumok. Ezek az objektumok lehetnek olyan elemiek, mint a gep mernoriajanak egy bitje vagy bajtja, de lehetnek ezekbol felepitett, valamilyen celra (peldaul szamok, szovegek, vagy komplex adatok" reprezentalasara) szolgalo egyszenibb vagy bonyolultabb struknirak. A programozas folyaman az objektumok attribtitumainak (valamilyen tartalmuk; peldaul a vezerlesek reven letrehozott objektumok eseten: a tulajdonsagaik) megvaltoztatasa reven modosithatok az altaluk hordozott informaciok, akar elterd viselkedesre utasitva oket. A programozas az - altalaban nem csak onmagukban letez6, hanem egymasra hatassal levo objektumok kozti kapcsolatrendszer kialakftasat" celozza, hogy vegul is az egesz objektum-rendszer a "ktilvilag" fele it kfvant (azaz a program specifikaciojaban megfogalmazott) viselkedest mutassa. Maga a Visual Basic program a 2. fejezetben lefrt tfpusti programelemekbe szervezeu utasitasokbol all. Egy konkret program szervezodese altalaban sokkal inkabh szuksegszeruseg, mint olyan lehetoseg, aminek alkalmazasa a programozotol fugg; tulajdonkeppen az egyetlen kivetel a felhasznalo sajat eljarasainak szervezese. Az alapszintii programok csak a felhasznaloi interfesz-elemeket tarolo jorm- es a tobb projektbe is beillesztheto eljarasaikat tartalmaz6 un standard modulokbol'" allnak, Termeszetesen, egy konkret fejlesztes celja lehet csak egy meghatarozott funkciojil eljarasokat tartalmazo, tobb helyen is hasznalhato standard modul eloallitasa, azonban mivel az eljarasok kiprobalasahoz celszeru keretet (tin teszt-agyat) is biztositani, ezert tobbnyire az ilyen fejlesztesek is (egy formot is tartalmaz6), viszonylag komplett projektkent val6sulnak meg. Mivel a formok valojaban specialis tartalmu standard modulok, es programozas-technikai szempontb61 igen sok tekintetben hasonlitanak egymasra, a targyalas egyszerusftese vegett a tovabbiakban modul alatt II form- vagy a standard modul barmelyiket ertjuk, es csak akkor tesszuk ki a standard jelzot, ha kifejezetten arra gondolunk.

A program objektumai
helyezett felhasznaloi interfesz objektumokon kivul egy program hosszabb-rovidebb ideig (de legfeljebb a program rmikodese alatt) tarolasa celjabol (folyamatok reszeredmenyeinek tarolasara, egyes iaram-runkcrokoan adatforraskent vagy celtargykent torteno felhasznalasara, vagy celok elerese erdekeben) hasznalhat egyeb objektumokat is. Mar eddig is, tobb is hasznaltunk ilyen objektumokat: a tartalmuk rendkivul gyors (a szamitogep belul maxirnalis sebessegu) elereset lehetove tevo un, vdltozokat', Ezek a legegyszeriibb objektumai, mert csak egy meghatarozott tipusu adat egy konkret szam, szoveg, logikai ertek, datum / ido vagy eppen egy Im") tarolasara kepesek, es ezen az informacion kfvul nincsen egyeb ".<.,. V>""".'" ux; met6dusuk sem. Ilyen valtozo volt a HolAPiros programban a varakoztatasara szolgalo ShortPause eljarasban (a program teljes kodjat lasd 3.7 fejezetben) levo sngTillSeconds nevii "objektum", ami a memorianak egy 4 hosszusagu reszen a folytatas idopontjanak a taro lasara szolgalt. Kerem, hogy az aras alabbi kodjaban csak e valtozo megfigyelesere koncentraljon, es az egyelore utasftasokat csak a kommentjeik segitsegevel "kovesse nyomon":
sngTillSeconds 11Seconds masodpercig varakoztatja a programot As Single Egy lebegapontos-szam f-"rolasara ... szolgalo val tozo deklaralasa Timer + 0.5 Folytatas ideje = aktualis ida + ~ mp sngTillSeconds) , Mig az aktualis ida kisebb, mint ... a folytatas idapontja, addig ezt a DoEvents utasitast (lasd 3.Melleklet) ismeteltetjilk (lasd 4.5.5 fejezet)

iirlapokra

LUC;U:;Llvll

=

• Ezek akar gepi kodri utasitasok (!) is lehetnek, mert a Neumann-elv szerint csak felhasznalasuk rnodjatol fugg, hogy minek tekintodnek (altalunk, vagy a szamltogep processzora altal) •• Pontosan ezt tapasztalhattuk eddig is: az egyes interfesz-objektumok eserneny-eljarasaiba olyntt kodokat illesztettunk, amelyek a sajat-, vagy egy masik objektum valamely tulajdonsagat meg vagy egy valamely cselekvesenek (metodusanak) a vegrehajtasat eredrnenyeztek ••• A pelda kedveert a HolsPiros'Iomb programot modularizalt valtozaniva alakftottuk at ugy, hogy formhoz tartoz6 programk6db6l kiemeltuk a ShortPause nevti eljarast (amit varhatoan meg programunkba fogunk tudni beiIleszteni tevekenysegenek altalanos jellege miatt), es azt MyCommonProcedures modul- es MyCommonProcedures.bas fajlnevu standard modulba (egy kis modositassal: az eljarasnak mas programelemekbol tOrteno elerhetosege erdekeben a jelzojet Public-ra valtoztattuk). Ettol kezdve e modul-fajlt hozzaadva - az Add Module utasftassul egy barrnely projekthez, az jogosultta valik a modul ShortPause eljarasanak meghfvasara (a rovid varakoztatasa celjabol); lasd a lemez-melleklet HolAPirosTombModul projektjet

valtozo never es a benne tarolt informacio tipusat a Dim i6s utasitas jelentette ki, majd az utana levo ertekado utasitas ertekkel" latta I: a valtozo adattartalmat a szamitogep belso oraja altal az utasitas vegrehajtasakor idonel Y2 mp-el kesobbi idopontnak megfelelo szamertekre allitva, Mihelyt van egy valtozonak, vele miiveletek vegezhetok (peldaul a Do ... Loop ciklustasftas While felteteleben szereplo osszehasonlitas); addig azonban csak ertekado tasftas bal-oldalan vagy valamely program-funkci6 targy objektumakent hasznalhato .
sngTillSeconds

peldabol latszik, hogy a valtozok a mar eddig is Iatott, hivatkozhat6 alkatreszekhez az objektumokhoz, valamint azok tulajdonsagaihoz es esemeny-kezelo eljarasaihoz hasonloan egyertelmu azonosithatosaguk erdekeben sajat, egyedi'" nevvel vannak ellatva, E neveket - felhasznalasuk celjat61 es modjatol fuggetlenul - osszefoglaloan azonositoknak nevezziik.
, Mas, bonyolultabb objektumokkal e konyv szukos keretei kozott nem foglalkozhatunk " A valtozok a deklaralasukkor kapnak valami alapertelmezett erteket, de a program kulonbozo VBvcrziok kozotti szabad atvihetosege erdekeben nem praktikus kihasznalni a nyelvnek ezt a lehetoseget ... E kijelentest hamarosan pontositjuk: kulonboze eljarasok tartalmazhatnak azonos nevu objektumokat

84

85

4. FEJEZET

A VISUAL BASIC PROGRAMNYELVE

4.2. Az azonosit6k hasznalata
A VB programban hasznalhato azonositok (mint specialis objektumok) elnevezesevcl formai szempontbol mar foglalkoztunk (lasd 2.4); a kovetkezokben az azonositok hasznalaianak szabalyaival foglalkozunk. Ezzel kapcsolatban eloszoraltalanossagbau tisztazzuk a valtozo-azonosftok Lathatosaganak illetve elettartamdnak a fogalmat, Valamely valtozo-azonosfto lathatosagi osztalyat es elettartamat a bevezetesero szolgalo tin deklardcios utasitds jeloli meg: vagy explicitm6don megadva (megfelelo ku1cssz6val) vagy az utasftasnak a programbeli elhelyezkedese altal meghatarozottan

Valtozek es konstansok hasznalata
funkci6juk eltero, hasznalatuk hasonlosaga miatt a valtozokkal es a konstansokkal foglaIkozunk. Az eljarasok hasznalatat teljesen kulon reszben targyaljuk.

Valtozok fogalma; deklaralasuk
valtozo olyan.azonosito, amely informacio ideiglenes tarolasara szolgal. Hasznalata roexeoen torteno bevezetesere val6 a valtozo-deklaracios' utasitas. Egesz pontosan: utasitas-tipus feladata olyan - az utasitasnak a program strukuirajaban eifogialt es a benne szereplo kuIcssz6k altal meghatarozott elettartamu, hatokoril es - azonosft6k megnevezese, ameIyekhez a nyeiv fordft6programja altal az rendelt mem6riateriiIeteken az egyes azonosft6k adattipusanak informacio tarolhato. alapveto adattipusu valtozok deklaralasanak szintaxisa: Dim I Publ~c I Private I Static}
'<I",rPTn

4.2.1. Azonosit6k lathatosaga"
Az egyes azonositokra a programnak csak - a lathatosagi kategoriajuktol fligg6 rneghatarozott reszeiben lehet hivatkozni (azaz csak ott hasznalhatok). Ezen program reszeket az azonosft6 hatokorenek nevezik. Lathatosaga szerint egy azonosft6 Iehet: globdlis (- global): az azonosito a program osszes moduljanak osszes eljarasabau lathato; deklaracios ku1csszava I. utasftas-neve: Public; modul-szintii (- modullevel): az azonosft6 csak a deklaracios utasitast tartalmazd modul osszes eljarasaban lathato; deklaracios ku1csszava / utasitas-neve: Private; eljdras-szintii (- procedure level): az azonosft6 kizarolag a deklaralo utasitasl tartalmazo eljarasban lathato; az ilyen azonositokat deklaralo utasitas neve: Dim. Egy azonosito hatokoren beltil (de att61 eltero szinten) akar ugyanolyan nevti masik azonosft6k is deklaralhatok, azonban egy konkret programbeli azonosito-hivatkozas II!, egyforma nevu, adott helyen lathato azonositok kozul mindig a legalacsonyabh szintuhoz kapcsolodik (lasd: 4.3.1 peldajat).

{ { <valtozo-nev>}

[As <adat-tipus» ] }...

a «valtozo-nev» a deklaralando valtozo azonosft6ja es «adat-tipus > az adat-tipusok valamelyike (lasd 4.3.3). A deklaracios utasitas fajtaja es a helye kozti osszefuggest az alabbi tablazat mutatja:

4.2.2. Azonosit6k elettartama ...
Az azonosfto elettartama (szokasos szinonimaja: tarolasi vegrehajtasanak azon peri6dusa, amelyben az azonosft6 letezik j61 definialt ertekkel rendelkezik; ez valtozo eseten ekvivalens amikor ertekenek tarolasa celjabol a memoria egy teriilete hozza idoszak) a program (pontosabban: amikor azzal az idoszakkal, van rendelve) lehet:

Private Dim Static

modul modul eljaras modul eljaras elja

statikus statikus lokalis ikus

modul-szintii valtozok mint Private (porl6 osk5vlilet) eljarasok lokalis valtozoi eljarasok statikus valtozoi

statikus (- static): az azonosit6 a program vegrehajtasanak teljes idoszakaba letezik (szokasos szinonimaja; globdlis-elettartamu - global lifetime); az azonosft6kat deklaralo utasitas neve: Static " lokdlis (- local, esetleg automatic): az azonosft6 csak abban az eljaras rendelkezik j61 definialt ertekkel, amelyben lathato; ebbol kilepve azonban azonosft6 erteke definialatlanna valik.
* Megjegyezzuk, hogy nem minden azonoslto-fajtaval kapcsolatban van ertelme rnindegyikukrol beszelnl
•• A megfelelo angol szakkifejezesek: ldthatosdg - visibility; illetve hatokor - (lexical) scope ••• A megfelelo angol szakkifejezesek: elettartam - lifetime; iIIetve tdroldsi iddszak - storage duration

, A Basic ugyan lehetove teszi a valtozok automatikusan (az else rajuk vonatkoz6 ertekado utasitaskor) Wrteno deklaralasat, azonban ez valtozok veletlen ellrasara nyujt lehetoseget, ezert nem javasoljuk. Az Option Explicit utasltasnak egy program-modulba helyezesevel a kesobb hivatkozott azonosit6k nutomatikusan ellenorzodnek deklaralasuk megtortentere vonatkoz6an. Ezen utasitasnak a modulok lcgelejere, letrehozasukkor tortene automatikus generalasa igenyelheto az Options dialogus-ablak Editor ~pci6i kozott leva Require Variable Decalarations kapcsolo kipipalasaval A {} kapcsos-zarojelpar a benne leva szintaktikus elem megkovetelt voltat, a ... pedig az elotte allo nyclvi elem listaszeni ismetelhetoseget jelzi (a !ista egymas utani elemei vesszovel valasztandok el); IInagybetuvel kezdodo, nem <> jelek kozott rnegjeleno szavak a nyelv (maskent nem Irhato) kulcsszavai ... Deklaracios utasftas modul szinten csak a k6d-ablak (General) - (Declarations) szekciojaban frhato (ez ekvivalens az elso eljarasa ele helyezesevel); eljdrds szinten viszont a kereten belli I barhova teheto

86

87

ha u fordftas full compile opciojti. sngA As Single. az objektum-orientalt programozas un objektum-zdrtsdgi (. az alabbiak szerint: . Az allando-deklaracios utasitas szintaxisa: [Public I Private] Const ' eljA meghfvasa Meghfva a~ eljB-t valamilyen m6don (pi nyom6gomb esemeny-eljarasabol). es az eljarasbol kilepve nem hivatkozhatok (ertekuk definialatlan). lassunk nehany peldat valtozok deklaraciojaral Az alabbi deklaracios utasftnl4 egesz es .elemi adattipussal rendelkezo aZ()llC'S1tOK.szoveges kornyezetben pedig a O-hosszusagu szoveg- ahol <allando-nev> a deklaralando allando azonosft6ja. Ha az utasitas egy eljarasban van elhelyezve.vagy modul-stuiii: es .afix hosszusdgu String tfpusii valtozok a teljes hossrusdgukban "" karakterekkel feltoltott szoveg-. lathatokka valnak. egy standard modulban globalis valtozokat deklaralunk. hogy a valtozo szerepelt-e ertekado-utasitas bal oldalan. akkor a benniik modul-szinten deklaralt. hogy ha alapjan mar kikovetkeztetheto. hogy az egyes modulok eljdrdsai a modulok nevevel megfejelve egymasbol meg is hfvhat6k (anelkul. az eljB . k6dban frva: "") szoveg-. de) modulban lenne meg egy olyan eljaras is.hez rendelodik.a lokalisak kivetelevel . a gyakorlati szempontb61 fontosak azonban valamennyien jelen vannak. amik a hasukba zart. intA As Integer. a lokdlisak az eljdrdsukbol kilepve ertekiiket vesziik: lathato. -ontosanoan: az allandok olyan statikus elettartarmi.ugyanolyan formaban . a modul-szintu deklaracio utasitasaban a Dim kulcssz6t Private-ra cserelnenk. hogy az eljaras masodszori meghfvasakor (a nyom6gomb iijabb kattintasakor) az eljarasba lepve erteke az eljarasbeli ertekadaskor kapott. az adott helyen Iathato azonosito). azonos nevii valtozo hatokorebe sem.futas kozben megorzik az utols6 ertekadoutasftasban kapott ertekuket. akkor a k6d egy adott helyen kozulttk azok. azonos nevii valtozokat a Visual Basic kulonbozoknek tekinti es kizarolag az oket definialo modulok eljarasaibol ferhetok hozza".numerikus kiirnyezetben a 0 szdm-. akkor etta I az utasitas ertelme semmilyen m6don nem valtozna. globdlis.beli a 0 erteket.4. az eljA kilepesi pontja elott allva: a modul-szintil a 0 erteket. es nem inicializalodik ismet Empty-re. Az alabbi peldaban a keret egy modult reprezental.a vdltozo hosszusagu szoveges tfpusu valtozok a O-hosszusagu (azaz iires. azaz globalis valtozok deklaralasa nem tortenhet form-modulban (es a Basic ezert esak akkor szol. es . lasd a lemezmelleklet Public'Ieszt programjat). az eIjA . a <kifejezes> pedig allando ertekek es a deklaracio helyen lathato es kiertekelheto azonosit6k aritmetikaies/vagy logikai miiveletekkel osszekapcsolt rmivelet-sora. ez a lehetoseg . .sizedes-pontos" szamokat es egy dinamikus szoveget hordoz6 valtozot kreal: Dim i As Integer. a modulA melle tennenk meg egy modulB nevii masik modult is a modulA-val pontosan megegyezo tartalommal. es a program vegeig hozzajuk rendelt is marad. a Static utasftassal deklaralt valtozokhoz a memoria az utasftast tartalmaz6 eljanir4 elsa vegrehajtasakor rendelodik. amelyekhez meg a program forditdsi fazisaban kiertekelheto kifejezesek ertekei rendelodnek. az eljB-beli Dim deklaraciojat Static-ra cserelve megfigyelheto. FEJEZET A VISUAL BASIC PROGRAMNYELVE Megjegyzesek: ugyanazon deklaracios szinten nem deklaralhatok azonos nevu.ket eljarasban is szerepel. akkor benne megis hivatkozva ra a fordft6 a modul-szinten deklaralttal hozna kapesolatba (mivel ez a legkozelebbi. hogy messze nines megengedve az osszes hely-ldthatosdg-elettartatu variacio. amelynek eredmenye az aktualisan krealt «dllando-nev> . deklaralasuk allandok a program vegrehajtasa kozben nem m6dosfthat6.encapsulation) elvevel osszhangbana modul-valtoz6kkal kapcsolatban nem adott (hogy az objektumok kivulrol olyan fekete dobozokkent hathassanak. tenyleges adattartalmukat csak az eljarasaik altai teszik elerhetove) kezdoerteket kapjak deklaralasukkor. . amelyek nem esnek egyetlen alaesonyabb szinten deklaralt. elmondottak a lemezmelleklet Yariable'Ieszt projektjevel vizsgalgathatok. a valtozok . • Meg fogjuk latni. program-k6d ondokumentalo jellegenek tamogatasa. de eltero hatokorrl vagy elettartarmi valtozok (valtozo deklaracioja futas kozben nem modosfthato). es a kifejezesben nem lehet Is mtiveletet. hogy az eljarasokat globalis lathatosaguaknak deklaralnank).a numerikus tfpusti valtozok a 0 szdm-. * A kulonbozo kezdoertekek adat-tlpusonkent valtoznak. a benne szereplc azonos nevii valtozoknak egymashoz semmi kozuk sines: kulonbozoknek kepzelendok. A Variant tipusu valtozok kivetelevel tenylegesen megallapfthatatlan.a program jobban olvashatova tetele erdekeben). Vegul. viszont eltera szinten deklaralva az azonos nevuek is kiilonbozoknek tekintendok: Public utasitas esak standard modulban fordulhat ela. . a valtozok deklaralasukkor automatikusan kapnak kezdoerteket' (inicializalodnak).a Variant tfpusti valtozok . . azonosit6val hivatkozhat6 adatok (a k6d tobb is hivatkozott adatok egy helyen vegzett modositassal torteno megvaltoztatasa.explicit vagy implicit m6don megadott . de tijrafordftassal megvaltoztathato erteku. avagy csak az inicializalasakor kapott kezdoerteket tartalmazza 88 89 . ami nem deklaral a nevii azonosit6t. Ha az utasitas . akkor a valtozok csak annak mukodestl soran hasznalhatok.beli a 1 erteket mutat! Probalja is ki! i callando-nev» [As «adat-tipusz-i = <kifejezes> L. modulA Dim a As integer Sub eljAO Dim a As Integer a=l End Sub Sub eljBO Dim a As Integer eljA a=2 End Sub modul-szintii eljaras-szintf deklaracios utasftas deklaracios utasftasok AUand6k fogalma. A kiertekelt <kifejezes» erteke <adat-tipus>-ba atkonvertalhato kelllegyen.a tartalmat kifejezo alkalmazasa altal . strText As String kapcsolatban (bar az elobbiek a figyelmet.

402823E38 feltetelnek ".logikai): 2 bajton tarol egy logikai erteket (a False a csupa a bitekbol a116-. de megsp6rolja a helyettesitett adat elofordulasonkenti ismetelt lefrasat es az ebbdl szarmazo veletlen hibak javftasat. a szoveg hossza kb 231 karakterben van limitalva. az utols6 ejfeltoI eltelt idot pedig a tizedespont utani resze nap tortreszekent adja meg.penz): 8 bajton. azonban szoveges ertekadas eseten a datumkent ertelmes adat #-ok koze teendo (peldaul. Integer (egesz): 2 bajton tarol egy [-32. Double (. 2. 1028 ] hataron belul valtoztathatoan skalazhato. vegul n Decimal a Variant adattipuson belul hasznalhato.94065645841247E-324 feltetelnek eleget tevo 10-es szamrendszerbeli val6s szamot (meg lassubb aritmetikaju).datum-idoi: a 100 Jan 1 €os 9999 Dec 31 kozotti datumok illetve a [0:00:00. amikor peldaul 'It ertekenek nagyobb pontossagii megadasara Villi szukseg. az Integer es a Long! tizedespontos szamokat lebegopontos formaban hordoznak a Single es a Double tipusok. logikai.1) hossziisagu szovegeket kepesek tarolni. ha az jellege elore nem tudhat6 (vagy inkabb nem akarunk vacakolni az adat tipusara vonatkoz6 informael beszerzesevel).147. ~'~E>'~' tevo 10-es szamrendszerbeli val6s szamot (lassu Iebegopontos aritmetika).483.79769313486232E308:s.t61 eltelt napjainak a szamat egeszkent-.647] intervallumbeli 10-es szamrendszerbeli egesz szamot (kodolas.648.483. aritmetikaja a binaris szamoke: a muveletek gyorsak). A h6nap szammal ill az ev roviden torteno megadasakor iigyelni kell a datum ketertelmusegere (ekkor a Windows-beli Regional Settings beallftasai dontenek). Ha tortenetesen sngPi-t nem globalis lathatosagtinak deklaraltuk voIna. (. a Currency a penzvilag igenyeit kielegitendo olyan adattfpus.767] intervallumbeli lO-es szamrendszerbeli egesz szamot (2-es komplemens kodolas. Single (-precision floating-point.beli idopontok belsoleg 8-bajtos lebegopontos szamkent abrazolodnak: a valtozo altal tartalmazott tfzes szamrendszerbeli szam tizedespont elotti erteke a datum 1899 Dec 30 . • Date tipusti valtozoknak ertekiil akar numerikus. skalazott egesz szamkent kodolva tarol egy [ . i~ szoveges adattipusok szovegek (belsoleg Unicode kodolasu) tarolasara szolgalnak: Stnng-cegesz-szam» (.922 337 203 685 477 . kicsit Iasstibb kezelest biztosit. akkor az azonosit6 csak az adott modulban lett volna elerheto. a memoriaban pontosan <egesz-szdm> szamu bajtot elfoglalva. . Alapvetd adattipusok Az adattipus az allandok es a valtozok altal hordozott informacio jelleget es lehetseges ertekek tartomanyat hatarozza meg. 32. 1\ Public Const sngPi As Single adattipusok: 1 bajton tarol egy [0. sng2Log10 As Single = a 0.14159.egyszeres pontossdgu lebegdpontosy: az IEEE 32-bites szabvany szerint tarolja az 1.y kesobb barmikor. objektum illetve varidlhaui adatnpus-csoportokba sorolhat6k. Erdemes megfontolni: az allando-deklaralas csak egy somyi tobbletmunkat igenyel.3. String (. ha az ilyen valtozot String tipusu valtozo szamara torteno ertekadasban hasznaljuk) a Basic nyelv a Windows standard Short Date ill Tim€!style formajat hasznalja (lasd: Regional Settings).akar szoveges ertek is adhat6. Ennek eredmenyekent nem e szamokat. A kovetkezo reszben regi adossagot p6tolunk a valtozo.es / vagy idopont taro lasara kepes: Date (. a szoveg gyors kezeleset teszi Iehetove. Az egyes adattipusok soron kovetkezo reszletes attekinteseben rogton a kotojel utan all az adattipus deklaracios utasftasokban hasznalhato neve. Az adattipusok az informaciok j alapjan numerikus.dupla pontossdgu lebegopontosy: az IEEE 64-bitesszabvanya szerint tarolja az 1. i~. • Date tfpusti valtozok ertelmezesekor (peldaul. ha nem hasznaljuk az ennek felulbfralastirn szolgalo. amely lehetdve teszi a fix-hosszusagii kivetelevel bdrmely egyeb tipusu informacio tarolasat. a True pedig a legalabb egy bitjen nem erteku dupla-bajtnak felel meg). Azonban. 255] intervallumbeli 10-es szamrendszerbeli egesz szamot (binaris szamkent. stb: mint elobb). 23:59:59] .301020 allando-deklaracios utasftas a 'It erteket 5 tizedes-jegy pontossaggal. elegendo a programot csak egyetlen heIyen valtoztatni: ahol azsng/1i deklaralasa torrent.401298E-45 s Ixl s 3. elojeltelen egesz szamot. 4. 5807 ] intervallumbeli 10-es szamrendszerbeli vales szamot (gyors binaris aritmetika).es allando-deklaraciokban megadhat6 adattipusok attekintesevel.szovegesy : egy 10 bajtos adatfejet kovetoen a szoveg karakterei allnak. globalis lathatosagot specifikalo Public kulcsszot) modul-szinten lathatok az utasitasban esetleg megjeleno Public illetve Private kulcssz6k az utasftas aitHI deklaralt osszes allando lathatosagat befolyasoljak. sziiveges.2000# ill a #1 Jan 00# szoveges datum-ertek). illetve a szam lO-es alapii logaritmusanak az erteket 6 tizedes-jegy pontossaggal tarolva. es kulonben sem sok ilyen adatr61 van sz6. Ixl s 4. helyes a #January 1. Bar az informacio jellegenek pontosan megfel adattfpus hasznalata helyesebb es kevesebb memoriat is igenyel. a sziikseges heIyeken. Decimal (.3.147. fix): az adattipusban rogzitett «egesz-szam» (:s. Long (-integer): 4 bajton tarol egy [-2. leven ez nem kozvetlen aua'''III!H. A numerikus tipusok kozul egesz szamokat tarol a Byte. de csak 4 tizedes pontossagii szamokat gyors aritmetikajii egeszekkent kezeli. nagy szamolasigenyu feladatoknal jelentos hatekonysag-csokkenest okozva 90 91 . amely a nagy. 216 .szoveges. valamint a Public kulcsszovul kapcsolatban figyelembe ke11venni a csak standard modulbeli hasznalhatosagukat).768. hanem n megfelelo azonositokat Iehet hasznalni a program kodjaban. az ilyen valtozok hivatkozasa a direkt adattfpusuakinallenyegesen tobb gepi kodu utasftast (es ezert processzoridotl) igenyel.4. hasznos lehet a hasznalata. ill ertekeiket az sngPi illetve az sng2LoglO azonosit6k altal a program barmcly moduljaban hivatkozhatova teszi. ami a [ 0. FEJEZET A VISUAL BASIC Az allandok alapertelmezesben (azaz.decimdlisy: 12 bajton tarol egy kb 28 jegyii 10-es szamrendszerbeli . 5808. datum-ide adattipus datum. Currency (. = 3. datum-ida. binaris aritmetika). + 922 337 203 685 477 . valtozo ertektartomanyii adatokhoz A varialhato adattfpus valojaban egy olyan konstrukcio.

Termeszetesen. vagy .. hogy a ListBox vezerles kifejlesztoi is esak felhasznaltak egy Basic nyujtotta lehetoseget. es ugyanazt az objtlustomer valtozot kivannank mindket objektum . Nezzunk egy egyszerii peldatl Tegyuk fel.4. hogy a Basic tfpus-konverzi6t kulon keres nelkul is elvegez". azonos adattipusu. A tombok. majd az MsgBox "Year" + 2000 utasftast. magyarazat: a + operator ugy mukodik. es mivel ez nem feltetlenul van Igy (gondoljunk esak a Double => Single tfpus-konverzi6ra irracionalis szamok nagy pontossagii kozelfteseivel kapcsolatban). hogy operandusainak aktualis ertekevel az elvegezheto . hiszen meg a legutols6 is valtoztathat az atlagon. Egy-dimenzi6s Single tipusu tomb Peldaul.vagy kornbinalt mezo listajaba illesztve tarolhatok (altala meg at is tekinthetok). Ez a . PelMLUl. deklaralasuk es hasznalatuk - tombok'" feladata a program altal azonos kezelesmodot igenylo. A tisztanlatas miatt megemlftjuk.. ha vagy az objektum neve a program frasakor nem ismert (mert az objektum magu csak a program futasa kozben konkretizalodik).. parameter-atadaskor es miivelet elvegzesekor felteve. azonosftasuk celjabol 1 es 100 kozotti egyedi sorszammal ellatva: Dim sngVar(l To 100) As Single . a Set objCustomer CustomersForm. de mit szamit ez 100 db szam eseten. deklaralunk egyetlen sngVar nevii valtozot. hanem az operandusok osszeget akarja kepezni) ••• A tomb feladatkore es kezelese is hason16 a valtozokkal kapcsolatban. hogy deklaralnank 100 Single tipusu valtozot (sngVarl-tol sngVarJOO-ig)..lehetoseg: a tomb.Variant) adattfpusr61 mar beszeltunk e resz elejenek labjegyzeteben: csak a belso abrazolasukrol ejttink nehany sz6t (hogy ellehessen oket kepzelni): a numerikus tfpusok: 8-bajtos adatfej utan magat a szamot (max 8 bajton) taroljdk: a szoveges tfpusok: 22. es ne taroljuk hozza mind a 100 db szamot is. mint a vezerlesen alapu16 objektumtombnek a formra helyezett objektumok vonatkozasaban * A lemez-melleklet Konverzio'Ieszt projektje kifejezetten ezzel foglalkozik *.pontosan II szoveg hossza altal megkfvant nagysagu mem6riateriileten.a negyzetukrol nem is beszelve mar esak mind a szaz szam beolvasasa utan vegezheto. ha ugyanezt a + operatorral tessziik (frja egy nyom6gomb Click eserneny-eljarasaba az MsgBox "Year" & 2000. akkor a meglehetosen hOSSZli CustomersForm.. a programban tobbszor IN ismetlodik. ha mindket adattipus kepes is az informacio tarolasara (azaz ha az adat mindket adattfpus ertelmezesi tartomanyan belul van).bajtos adatfej utan magat a szoveget taroljak .r automatikusan" vegzi.tehat tenyleges inforrnacio-tartalmat valtozatlanul hagy6 . hogy mellekesen adatokat taroljon szamunkra."-l..a szuksegesse valo .''LV''''''«l Az objektum adattipus barmelyik.egyenkenti deklaralasnal es egyedi kezelesnel egyszeriibblepesben tOrteno deklaraciojanak es ugy az egyedi mint az egy tomegben torteno U"-"LolJ.. hivatkozasokat hasznalhatjuk.l""'.. on-the-fly vegezzuk. ListBox npusu objektumanak akarunk alnevet adni.CustomerListBox. Adatkonverzi6 Az adatkonverzi6 celia egy adatnak az eredetitol csak tipusaban kulonbozo formajuva torteno . hogy ha csak egy operandusa is numerikus. aminek a reven ok is kepesse valtak a lista kezelesere. akkor nem osszeilleszteni. a vasarlok mas medon is vegezheto kivalasztasa celjabol). aminek van 100. helyesen adja egy numerikus ertek es egy szoveg egymashoz-fuzesenek 93 .Jistas'' tulajdonsagainak es met6dusainak az eleresere hasznalni: e kettos eel elerese erdekeben esak az Object kulcsszavas variacio volna alkalmazhato. az adatkonverzi6 nem mindig vegezheto az informacio torzulasa nelkul.. FEJEZET A VISUAL BASIC PROGRAMNYELVE A itt • • varialhato (.List tulajdonsagnal Ienyegesen altalanosabban nyujtott .r'71.CustomerListBox referencia-specifikalo utasftas utan a "rovid" objCustomer.<tulajdonsaglmetodus-nev> hivatkozas helyett deklaralva az objCustomer nevii. majd szorasnegyzetuknek (azaz az atlagtol val6 eltereseik negyzet-osszegenek) a kiszamitasa. Ez esak akkor val6sfthat6 meg. Akkor hasznalatos.altalanos-objektumtipuskent tOrteno hasznalatra . Mas lenne azonban a helyzet. Object tfpusii valtozot a Dim objCustomer As Object deklaracios utasftassal. mar jelenlegi tudasunk birtokaban is van ra rnegoldas: pI a szamok egy lista. 92 eredmenyet.az Object kulcsszovul adand6 meg..3.. vagy ha a hasznalando objektum hivatkozasa hosszri. Masreszt nyilvanvalo.<tulajdonsaglmet6dus-nev. = 4. hogy luxus felhasznalni egy lista-mezot esak azert. Ahelyett. azt mondani. hiszen peldankban az utasitas altal bevezetett valtozoval az iirlap egy konkret. hogy a feladat 100 darab szam bevitele. Egy objektum listaelemeih. hogy esetunkben II valtozo-deklaracio lehetne Dim objCustomer As ListBox megadasii is. ha e celbol az & operatort hasznaljuk.atalakitasa. ha az iirlap tartalmazna meg egy ComboBox tfpusii objektumot is (peldaul. a program adott helyen elerheto objektumtipusu vagy az tin altalanos-objektumtfpus egy konkret elemenek a megjelolesere szolgal. hogy ertekadaskor.ez val6 hozzaferes ugyan nem a leggyorsabb. szdmu vdltozo . Variant adattipus kulonosen j61 hasznalhato.. ha mindig a CustomersForm nevii iirlap CustomerListBox nevii ListBOA tipusti objektumara szeretnenk hivatkozni (tulajdonsagainak es met6dusainak n program kodjaban tOrteno hasznalata celjabol). '''..GllQ. Ugyhogy e feladat megoldasahoz szukseg van mind a 100 szam tarolasara... Az objektum adattipus deklaracios utasitasban vagy egy letezo <objektumtipus-nev» kent. hogy az atlag-szamitast menetkozben. egyforman Single adattipusu eleme. eddig is lattuk. Erezheto azonban. Ezt mutatjuk be a lemezmelleklet Object'Teszt elnevezesu prograrnjaban.. Nemi furfanggal az meg elerheto lenne. de nemes egyszeruseggel csak Type mismatch-et mond... ami! nem kompatfbilis tfpusti valtozok es tulajdonsagok kozotti szabad informacio-aramlas biztositasa igenyel..a biztosftasa. Az ezen adattipusti valtozok a program objektumainak alneveikent szerepelhetnek. ha ktilonbozo numerikus tipusu vegzendo miiveletek eredmenyet kell tarolni: az eredmeny tlpusa mindig az legsziikebb ertelmezesi-tartomanyu adattipus lesz. hogy az elteresek kiszamitasa . amellyel erteke meg abrazolhato. es unjuk mindannyiszor a teljes nevet leirni.4. Sajnalatos azonban.

I a modul tovabbi tomb-deklaracioiban «also-hatdr> elhagyasa eseten az minek tekintodjon. kedveert megjegyezziik.. A .j + 1) illetve felettiek (i < n . A tovabbiakban nehany peldan mutatjuk be. majd a masodik-. j) = 0 hacsak i > j). A kh-dimenzi6s numerikus tombok a ket-dimenzios matrixoknak meg. ennek hianyaban «also-hatdr» alapertelmezesben 0. az Option Base n utasftas (ahol n erteke 0 vagy 1) azt jelenti ki. hogy aij eleme az elso matrix i-ik sorvektoranak es a masodik j-ik oszlopvektoranak a aris szorzatakent all elo. A tombnek tenylegesen annyi eleme van. azonos meretu matrix osszege ertelmezheto egy ugyanolyan meretu harmadik ixkent (az elobbi ketto megfelelo elemeinek az osszegekent ad6d6 elemekkel).. n-dimenzi6s vektor skaldris szorzatdnak (L Xi Yi) megfeleloen kepezheto ket tomb szorzata... A tomb azon nemcsak elemeire. ib . 2."VlIllV"'U negyzetes matrixokhoz kapcsolodo rmivelet a tiikrozes (a fo. Mindezen rmiveletek koordinata-geometriaban valamint """V". vegul a mellekatlo alattiak (i > n . kulonben viszont inicializalodik."'. c.program-futas kozben .iIIetve a mellekatlora). • A tomb egyes dimenzioinkkent. " indexu (ahol < also-hatdr-k > :S ik:s <felso-hatdr-k > hacsak 1:s k :S n ) hivatkozasa a < tombvdltozo-nev > ( ij. dbra: A ket-dimenrios mdtrixok. Definialhato ket ket-dimenzios (m x n -es ill n x I -es) rix szorzata is.illetve numerikus tombok megfeleltetese tombelemek mem6riabeli elhelyezkedese a matrix sorfolytonos bejarasanak felel g (elobb az elso-. es dimenzi6inak mere ttl megfelelo tartomanyok meretevel megegyezo.sngVar(1) ~sngVar(2) ~sngVar(3) illetve tornbok a memoriaban iigy vannak elhelyezve. hogy tomb-elemek minden olyan helyen hivatkozhat6k. amennyi az egyes index-tartomany mereteinek a szorzata. mert ekkor a sok-dimenzios tomb ok elerese sokkal hatekonyabban val6sul meg. in) format" olti. amelyben az dimenzi6khoz tartoz6 elemek a teglalap egy soraban illetve egy oszlopaban helyet. A tombot ugy lehet tekinteni. _ negyzetes matrixok (ahol m = n) specialis elemei a foatlobeliek (i = j) .illetve egy-dimenzi6s tomb-deklaracioja esetcnt sngVarl sngVar2 sngVar3 sngVar +.. iz. a foatlo alattiak (i > j) illetve felettiek (i < j) . konnyebb legyen elkepzelni. meg kiegeszul a tombre vonatkoz6 informaciokkal: a tomb-valtozo neve utan. amelyt dimenzioszama azonos az index-tartornanyok szamaval. hogy ott "egymas folott" a csak Is6 dimenzi6jukban kulonbozo.. sngVarlOO +.abrat). Az egyes tombelemek hivatkozasu hason16 m6don tortenik: egy n-dimenzi6s < tombvdltozo-nev > nevu tomb i. II valtozok ertek szerinti (lasd 4. abban is az egymas utani indexekhez tartoz6 vannak (egy-dimenzi6s tomb ok eseten lasd az 5.m6dosithat6 deklaralodik ugy.illetve tomb-deklaraciojakor A tomb-deklaracio a normal valtozo-deklaracios utasftasokhoz hason16an nez ki. mellekatlobeliek (i + j = n + 1). zarojelek kozott adand6(k) meg a tomb index-hatarari)" egymastol elvalasztva. kezelesuk technikajaval kesobb foglalkozunk. a dimenzi6k tenyleges also hatarai a felso hataruknal mindig kisebbek kell hogy legyenek. akkor azt az Option Base utasftas hatarozza meg. az index-hatar lelrasokat egymastol vesszovel elvalasztva •• Megjegyzesek: 1. FEJEZET A VISUAL BASIC PROGRAMNYELVE Memoria-kep a valtozok egyenkenti.. .. dbra: A memoria kepe valtozok egyenkenti.) ha az «also-hatdr» explicit m6don nem szerepel a tornb-deklaracio vala dimenzio-specifikaciojaban. megadasaval ..j + 1) negyzetes matrix-fajta az also haromszog-matrix (amelynek minden foatlo eleme 0 (vagyis a tombbel tOrteno reprezentaciojaban a(i.optimalizalasa soran kell odafigyelni. az egy-dimenzi6s n elemii numerikus adattipusu az n-dimenzi6s ter hely-koordinataikent. hogy a tenyleges meretet futas kozben a ReDim utasftassal (a Dim-hez teljesen formaban) kell megadni. az jnverz-szamftas (ez mar nil bonyolult ahhoz. azaz n-dimenzi6s vektorokkent tekinteni. a tombelemek hivatkozasanal rnindegyik dimenzi6beli index megadand6 6. milyen m6don hasznalhatok a informacio reprezentalasa celjabol. A tomb egy index-tartomanyanak megadasa a peldaban latott [ [ < also-hatdr > To] <felso-hatar>] formaban" tortenhet. Ilyen dolgokra persze altalaban az algoritmus . j) = 0 hacsak i < j).. A tobb-dimenzios csak az utolso dimenziojuk mereteben m6dosfthat6k ••• Termeszetesen. A Preserve kulcssz6t is tartalmaz6 Redim utasitas hasznalata eseten a esetleges meglevo adattartalma sem vesz el.) a zarojelek kozt dimenziot nem megadva a tomb-valtozo .sngVar(1 00) 5..6..eljarasok szamara az altala reprezentalt informacio egeszkent is atadhato.y tobbismeretlenes egyenletrendszerek megoldasakor igencsak hasznalatosak. hanem a teljes egeszere hivatkozva is hasznalhato: csak . Ennek ismerete akkor ha lehetosegunk van a tomb altai reprezentalt informaciok memoriabeli enek megfelelo feldolgozasara.2) hivatkozasa megengedett. mint egy mdtrixot. . definialhato a felso haromszog-matrix (a(i. .. * 94 .. amelynek az eredrnenye egy m x I -es meretu matrix ugy. hogy itt vezessuk be) .4. azaz szamok olyan teglalap alaku elrendezesenek. vegnl az utols6 sordnak elemein haladva).esetleg szuksegesse val6 .

/\ programnyelvek az operandusok tipus-egyeztetesevel kapcsolatban eleg szigoniak. a ket operandusu rmiveletek viszont nem minden. meglepo. alapveto mfiveletek (operatoraik): osszeadds (+). az eredmeny pedig az egesz-osztas maradeka. i! Basic azonban a nagy rugalmassagot biztosft6 adatkonverzios automatizmusai miutt sokkal kevesbe rigor6zus. hogy kifejezesnck fogadunk el barmit. Currency es Decimal. kivonds (-). egyes es hogy melyek a miiveletek es hogyan dolgoznak. hogy ez pontosan mit is takar. az osztas eredmenyenek tortresze pedig nemes egyszeruseggel torlodik. kisebb/egyenlo • Az adattipusok sorrendje novekvo 96 97 . de igaz.miiveletek (operatoraik): . amely egy valtozohoz vagy egy objektum valamely tulajdonsagahoz erteket rendcl Az utasftas targyalasakor (lasd 3.hatvanyozas (1\): a baloldali szam a hatvany-alap. nagyobb (».a miivelet fajtajatol ftigg6ell egy vagy ket . ragasztoanyagkent muveleteket alkalmazva osszetettebb reszkifejezeseket alkotunk. ha a fordfto a kifejezes korrekciojara utasftja . Egyes rmiveletek csak bizonyos tipusu adatokat fogadnak el (ezen adattipusokat a muvelethez megfelelonek. mert nemcsak az ertekado-. az eredmeny adattfpusa pedig tobbnyire az operandus( ok) kozul a pontosabb' adattfpusii lesz. rnegjegyezzuk. nem javasolt. • A fordftoprogram ."ln rmiveletek (operatoraik): szoveg-osszefuzes (&): az operandusok tetszoleges adattipusuak lehetnek. oszuis (/). azonban ezek megfelelo gondoskodassal elkerulhetok. Rekurziv definialasu'.1) .4. a minta egy .a DOS * es ? wildcard (. a muveletek bitenkent vegzodnek.bemeno" adatb61 egy kimono adatot gyartanak. azonos (Eqv) .reszekre altal vizsgalja a kifejezes helyesseget.nem-alapveto. a nyelvben vegezheto miiveletek attekinteset pedig most tesszuk meg 4. negatfv eseten fordftva . Termeszetesen. a konstansok es az objektum tulajdonsagok). nagyobb/egyenl/i (>=): operandusaik gyakorlatilag vagy mindketten numerikus vagy szoveges (rendezettseguk: az tin lexikografikus) tfpusiiak. . a_~'o'7. A kerekites szabalyai az angol szokasoknak megfelelok: ha egy pozitiv szam tizedes helyerteken levo 9zam az 1 '" 4 valamelyike. itmetikai miiveletek: operandusa(ik) barmilyen numerikus adattipustitak) lehet(nek). hogy ez a fogadd adattipusaval kompatfbilis kifejezes kell legyen. vagy (Or).azonossdg (Is): ket Object tfpusti valtozo altal tartalmazott objektum-referencia osszehasonlftasara szolgal. az operandusaik ertelmezes] tartomanyaban leva adatparra rmikodnek. nem-alapveto miiveletek (operatoraik): egesz-szdm osztds (\): a nem-egesz szamok elozoleg egeszre kerekltodnek". a programban hasznalt elem] epitoelemekbol kiindulva. .. mert a kulonbozo tipusu numerikus kifejezesekkel vegzett muveletek eredrnenye a nagyobb pontossagunak megfelelo tipusu lesz) additiv muveleteknel: Byte.4. Single. Az egy-valtozos miiveletek a bemeno adattipusuk ertelmezesi tartomanyaba leva barrnely adathoz altalaban kepesek egyertelmuen egy kimeno adatot rendelni. de csak azokhoz fuzunk megjegyzest.szelkdrtya) karaktereihez hasonlo . amig elo nem all az altalunk kivant. FEJEZET A VISUAL BASIC PROGRAMNYELVE 4. hogy az operator egy azonosito nevet csak szokoz kozbeiktatasaval kovetheti.atsiklottunk afolott. szorzds (*). ha a kitevo egesz ertekii. az eredmeny pedig barmely numerikus tipus lehet. ugyan az osszes miiveletet.4. Integer.es a programoz6 is. kovetkezik (Imp). kimono adatuk tipusa pedig a bemenok ttpusatol fugg. Most ezt a hianyossagot p6toljuk. A muveletek formai megjeleneserol altalanossagban annyit lehet mondani. azonban .minta (Like): a bal-oldalon aB6 szoveges tfpusti adat (mint karaktersorozat) vizsgalata tortenik: vajjon a jobb-oldali. a jobboldali pedig a kitevo. hogy II multiplikativ rmiveleteknel a Double es a Currency tfpusok e pontossagi sorban helyet cserelnek . Miiveletek es operatoraik Reldcios rmiveletek (az eredmeny adattfpusa mindig numerikus adattfpusii): alapveto miiveletek (operatoraik): A rmiveletek olyan automatanak kepzelendok. szoveges tfpusii adat (a minta) altal definialt struknira szerinti kialakitasu-e. vagy kompatibilisnak mondjuk). True eredmenyii azonos objektumok hivatkozasakor. A Basic alapvetf nyelvi szerkezetei Minden programozasi nyelv egyik legalapvetobb utasitasa az ertekadasra szolgalo. es (And). Logikai miiveletek (operatoraik): tagad (Not).maradek-kepzes (Mod): a nem-egesz szamok elozoleg egeszre kerekitodnek. hanem a hamarosan targyalando mas utasitasfajtakban is fontos szerepet jatszanak A kifejezes valojaban az elemi matematikabol kepletkent ismert fogalom kiterjesztesc miiveletek szeles korere. akkor le-. ami mar elfogadott kifejezesekbol rmiveletek alta] "osszekombinalva" allithato elo. kulonben pedig felfele tortenik a kerekftes. Long. •• A muveletek bemeno adatai mas sz6val: operandusok «=) . ehhez azt is meg kell mondanunk. kizdr (Xor) .dzs6ker-jeleket is tartalmazhato szoveg. pontos lefrasok az on-line Help Operators cimszavabol kiindulva talalhatok meg. szoveg-osszeftizes (+): csak szoveges tipusu adatok osszefuzesere. A kifejezes-atomok az elozoekbcn reszletesen targyalt szintaktikai elemek (a valtozok. hogy mik a kifejezesek "atomjai" miiveletek leirasaban helyhiany miatt nem lehetunk eleg precizek. . barmilyen tipusu operandusokkal miikodnek. Kifejezest frva eppen forditva jarunk el: a kifejezcs altal megvalositando kalkulacio celjanak megfeleloen. Ez ugyan kisse emeli a csak futas kozben jelentkezo hibtd{ es adattorzulasok lehetoseget. amelyik matematikai alapismeretek es a ]PE alapjan elvarhatotol elteroen viselkedik. ami annyit jelent. egyenldtlenseg «». amik . de a nem-szovegesek elozoleg szovegesse konvertalodnak. . az alap azonban csak akkor lehet negativ. sot operandusaik tekinteteben sem feltetlenul viselkednek teljesen szimmetrikusan (lasd peldaul az osztas mfiveletet). hogy egy-operandusu muveletekben a miiveleti jel (~operator) az operandust megeloz] a ket-operandusii muveletek operatora pedig az operandusok kozott all. Double. kisebb («). poniossdg szerint (amit azert fontos tudni.1.egyenldseg (=).bar pontosan megmondtuk.

Name = "Times New Roman" .ahol < objektum-vdltozo >: annak az utasftas vegrehajtasakor lathato. . ha legalabb 3-4. vagy logikai lehet. az IblProductAssistant nevii cimke-mezo Font tulajdonsaga feltetelezodik a With . ugyanazon objektummal kapcsolatos utasitast kell leirni egy sorozatban.2 resz peldajaban mutatott utasftast hasznalva a With utasftas helyett. utasitas val6di celja az Irott program-ked egyszenisitese es attekinthetobbe tetele. akkor is. .kifejezes.implicit medon bevezetett es a konkret ektumra iranyitott lokalis objekturn-valtozonak a keretbeli utasitasokra torteno van megvalosftva (lasd a peldahoz kapcsolodo Iabjegyzetet).az utasftas vegrehajtasakor Iathato objektum megfeleloen kvalifikalt hivatkozasa." A Let kulcssz6 az utasftas opcionalis eleme. . hogy vegrehajtasuk es ugyanazon . szoveges. szerint nem kellene (hiszen ok bitmuveletek is) '*' Azaz ilyenek eseteben a "balr6l jobbra" szabaly ervenyesul (nem arab vagy heber nyelvet feltetelcz .a fordftoprogram altal .. . Ez hatarozza meg ugyanis.Vi egy objektum-tulajdonsag teljes azonosito neve). hogy melylk muveletnel kezdodik a kifejezes kiertekelese illetve .reference) utasitas utasftas .nem feltetlentil az eUlb <szintaktikus-elem> tipusanak megfelel6 . es vegnl a logiknl rmiveletei hajt6dnak vegre'.3: objektum adattipus) konkret cel-objektumokra "iranyozza".. amely implicite feltetelezodik keretbeli.4. amelynek aktualis a < szintaktikus-elem > 6j erteke kepzodik (esetleges tipus-konverziot kovetoen). majd a relacios. Object tfpusti valtozonak a neve. '. Hivatkoz6 (.2.a programban hasznalt objektumok alneveikent szolgalo Object tfpusu (lasd4. Azaz a muveleti kategoriak precedenciaja csokkeno sorrendben: aritmetikai. A "With .utasftas-zarojelek" kozotti utasftasokban": With lblProductAssistant. a negy keretbeli utasftasban teljes objektum-azonositas volna szukseges (peldaul az elsoben obj Curren tFon t .Font utasitas az elozoleg tfpusiinak deklaralt objCurrentFont valtozot allftja egy konkret objekturnra.assignment) utasitas Az ertekado utasftas egy modosfthato tartalrmi szintaktikus elemet tij ertekre allft. With < objektum-azonosito > [ <utasitdst ok) > ] End With < objektum-azonosito > egy olyan objektum neve. . Csoporthivatkoz6 utasftas keretbe foglalasara szolgal annak jelzese celjabol. amit rna mar csak a hagyomanyok apolasa indokol < szintaktikus-elem >: • Ellentetben az ertekado utasftas Let kulcsszavaval. . End With" utasitas hasznalataakkor praktikus. nelkule utasftas a hivatkozott objektum alapertelmezett tulajdonsagat adna ertekul.szetbontasn Eloszor a kifejezes aritmetikai.az utasftasban specifikalt . loglku] " Mindenfelekeppen vegrehajtodnak. Kllejezesek A'kifejezesek reszkifejezesekre vain szetbontasanal (de a kifejezesek felepitesekor donto fontossagu a muveletekprecedenciaja. peldaul a hasznalt valtozok nevenek es adattipusanak a bevezetese celjab61 hanem a program vegrehajtasa soran tenylegesen vegre is hajtodnak.ahol a modositando szintaktikus elem (azaz egy valtozo. aztan a szoveges. szoveges. < objektum-hivatkozds >:egy » hogy az utasitasban szerepl6 Set kulcsszo nem hagyhato" el.3. az altaluk eloallitott informacio adattipusa szeriutt aritmetikai. Bold = Fal se) 98 99 .Bold = False . a Set objCurrentFont = lblProductAssistant . relacios. rmiveletek precedencia-szabaly altal eloirt vegrehajtasi sorrendjen zarojelezessel leh valtoztatni: a zarojelek kozott alIo kifejezes kiertekelese mindenkeppen a rajta kf allok eI6tt tortenik. FEJEZET A VISUAL BASIC PROGRAMNYELVE 4. 4.objektummal kapcsolatban tortenik.End With .szukseg eseten .5. A kifejezeseknek tipusuk is van. .5. Szintaxisa: [Let r'" < szintaktikus-elem > = < kifejezes > .Italic True 9 . utasitas egy . amelynek tartalmat uj cel-objektumra akarjuk modosftani. ami mar csak egy nilhaladott hagyomany .5. 4. < kifejezes >: az utasitas vegrehajtasakor kiertekelheto .4. ponttal kezdod/i utasftasok frasakor.' A 4. Ertekad6 (.Font . ha 1PF..1. A csak azonos kategoriabeli muveleteket tartalmnzn kifejezesekben a mfiveletek vegrehajtasi sorrendje (azaz a rmiveletek precedenciaja): aritmetikai miiveletek: hatvdnyozds ~ negdlds :---+ szorzas / oszids (azonos) ~ egesz-szdm osztds (\) ~ maradek-kepzes (Mod) ~ osszeadas / kivonds (azonos) szoveges muveletek: osszeadas ~ & relacios rmiveletek: azonos precedenciajuak logikai muveletek": Not ~ And ~ Or ~ Xor ~ Eqv ~ Imp Az azonos precedenciaju mtiveletek vegrehajtasi sorrendje azonos az Irasukeval . Set < objektum-vdltozd > = < objekium-hivatkozds > .. Vegrehajthato utasitasok A vegrehajthato utasftasok nem csak a Basic forditoprogramja szamara nyiijtanak szintaktikai elemzeshez szukseges informaciokat (mint azt a deklaracios teszik.

.errnekek avagy 13-mil nagyobb koduak" . 3... 7.< utasitdsi ok) > hajt6dnak vegre. vagy a hataraival adott intervallumba va16 esese. 13. > To < veg-kif. ha a vegrehajtasakor elore tudhato. es hogy a ciklus-vdltozo cikluson beluli explicit (ertekadassal tortenc) vdltoztatdsa nem ajdnlott. Felteteles (.. " ciklusutasftast akkor praktikus hasznalni.conditional) utasitasok A felteteles utasitasok a program utasitasainak az irasuk sorrendjetol elterc) vegrehajtasat eredmenyezik oly modon. Szintaxisa: < mdskidiinben-utasitdsi ok) > ] End Select A < teszi-kifejezes > barmely numerikus vagy szoveges kifejezes... vagy < 0 MsgBox "Hatvanyozottan j6. "Select Case" utasittis (egy kifejezes kulonbozc ertekei szerinti elagaztatasra): Szintaxisa: Select Case < teszt-kifejezes > [Case • < kifejezeslista-i > < utasitdst ok)-i > ] .collection) vagy tomb osszes elemere tOrteno ismeteltetese eseten.4.. hogy majd azok befejezeset kovetoen a program az End Select "utasftas-zar6jelet" k6veto utasitason folytatodjek. egymastol vesszovel elvalasztott lista.. A "For [Case Else A "For " ciklus-utasftas a ciklusmag ismetelteteset egy numerikus tfpusti valtozonak a < kezdet-kifejezes > aktualis erteketol a < veg-kifejezes > ertekeig.4. ok) > ] Megjegyezziik. 11. " ciklus-utasitds > ] .1 hamis dga az utasftast kompletten tartalmazza a lemezmelleklet SelectTeszt projektje. ha a ciklusmag ismetlese a vegrehajtasa elott. Az utasitas kiertekeli < teszi-kifejezes >-t. forma Szintaxisa: If > Then utasitdsi ok) > . 1. [O.5. Ciklusszervezd utasitasok A ciklusutasftasok olyan utasitasok. kiilOnbozo utasitasokat hajtja vegre. amelyek az altaluk "keretbe foglalt" utasftasok csomagjanak" ismetelt vegrehajtasat eredmenyezik. hogy az If-utasftas mindket formajaban az < igaz-utasitdsi ok) :> illetve a < hamis-utasttdst ok) > a Basic tetszoleges vegrehajthato utasitasai lehetnek.2. blnGoodFlag = True Case 4. < kifejezeslista-i :> pedig a < kifejezes > . • Az ismetlendo utasitasok a ciklus-magot alkotjak •• E ciklusutasftas-fajtaval nem foglalkozunk reszletesen 101 . Is > 13 ' primszam. A ciklus-szervezo utasitasoknak harem alapveto tipusa van: • • a "For .vagy utan ellenorzott feltetel teljesulesetol fugg vagy elso teljesitodeseig tart. " ciklusurasftas" hasznalatos a ciklus-magnak egy objektumokb61 allo kollekcio (. Megjegyzendo. Loop" ciklusutasitasok valamelyik fajtajanak hasznalata akkor celszeru. vagy> 13 : MsgBox "Prim(a) j6 t. feltetel-i. hogy a lepeskoz negativ is lehet. forma Szintaxisa: (egy feltetel szerinti elagaztatasra: egy sorban irva): If <feltetel > Then < igaz-utasitds > [Else < hamis-utasitds > ] (feltetelek lehetseges variacioi szerinti elagaztatasra): <feltetel-I = "If' utasittis . 9.5. 5. 2. < lepesko: > altal definialt novekmenyben tOrteno valtoztatasa mellett.5..Do ..12]-beli k6duak" "If' utasiuis -I. < min-kifejezes > To < max-kifejezes > vagy pedig az Is < alapvetd-relacio-jel > < kifejezes > formak valamelyikeibol osszeallitott. Case intProductTypeCode ' ha intProductTypeCode erteke . alabbi pelda a Select utasftas Case listajanak sokoldalu lehetosegeit mutatja. vagy negativ k6duak" blnVovFlag True Case Else ' egyik sem az e16z6k k6zul MsgBox "Nem-prim es nem-hatvany. hogy hanyszor lesz a ciklus-mag megismetelve. hogy egy logikai kifejezes aktualis erteket<11 fuggoen az utasitasok altal Ieirt algoritmusban elagazdsiokat) tesznek lehetove. 100 < ciklus-vdltozo > = < kezdet-kif.. Is < ' hatvany. vagy az Is utan megadott relacios kapcsolat fennallasakor a megfelelo Case .. > [Step < lepesko: > ] [ < utasitdst ok) > ] Next [< ciklus-valtozo > ] For A ciklus-magban hasznalhato Exit For utasftas vegrehajtasa a ciklus azonnali megszakitasat eredmenyezi: a program vegrehajtasa a ciklus-utasitast koveto utasitason folytat6dik. 8. a . FEJEZET A VISUAL BASIC PROGRAMNYELVE 4. 68 ertekenek vagy a «kifejezes» ertekevel val6 egyezese. a "For Each . intProductTypeCode valtozoba elozoleg beallitott egesz szam erteke . -c feltetel-I-igaz [Elself «feltetel-i > Then «feltetel-i-igaz-utasiuisiok) [Else «feltetel-utolso-hamis-utasitdst End!f 4..

Eszreveheto. Loop utasftasnak felel meg (annyi korlatozassal. kulonben a ciklus-utasitas vagy vagy egy felteteles utasitassal is helyettesitheto lett volna. a negyzetosszeg pedig az sngLeng2 nevii valtozoban allitando elo. lasd 4.. Ha szerepeI. az alabbi lehetosegek kornbinalasabol adodik: az ismetles a feltetel teljesulese eseten tortenik-e vagy az igazza valasaig tart-e ? a feltetel-teszteles a mag vegrehajtasat megelozoen. • A While <feltetel > ekvivalens az egyazon helyen a1I6 Until Not <feltetel > -Iel (tobb utasitas-lehetoseg kozul a megfelelo valasztasa a program-kod olvashatosagat noveli: a tagadas tagadasat nehezebb atgondolni es konnyebb hibazni).List{intX) = "Kunigunda" Then Exit For Next intX IF intX < lstNames. hogy egy IstNames nevii Iista-meze keresztneveket tartalmazo listajaban szerepeI-e . FEJEZET A VISUAL BASIC PROGRAMNYELVE A "For . amelynek (egy. sngVector{n) As Single..vagy hdtul-tesztelonek mondjuk). ' Az os szeqeo=v el cozo k i tiu lle zese a ciklus eIot:t: For i = 1 To n . A megfelelo (deklaraciokat is tartalmaz6) programreszlet: Option Base 1 ' Ez a koordinatak normalis sorszamozasahoz Const n As Integer = 10 Dim sngLeng2. hogy a vektor koordinatait !I~ sngVector tomb mar tartalmazza. es Loop kulcsszavakat tartalmaz6 sorok kozti utasitasokat ) ismetelteti egy felteteltol fuggoen.k ztit: e Next i MsgBox "A vektor hosszanak negyzete: " & sngLeng2 ciklus-magban hasznalhato Exit Do utasftas ** vegrehajtasa a ciklus azonnali eredmenyezi: a program vegrehajtasa a ciklus-utasitast koveto folytat6dik.. hogy a ciklusmagjaban nem lehet Exit Do utasftas).. Loop " ciklus-utasitds * ciklus-utasitas a Do.addig) kulcssz6 all. szintaxisat azert megadjuk: While «feltetel > < utasitasiok) > Wend •• Az Exit Sub / Exit Function utasftasok is azonnal megszakftjak a ciklus vegrehajtasat. akkor elsi'l elofordulasanak a tettyleges sorszama.vagy azt kovetoen tortenik-e ? utasftas frasmodja a valasztott variaciot hiven tukrozi: az elso lehetosegtol fuggoen a feltetel kifejezese elott a While (. "Do While .amig) vagy az Until (.. hogy • a hatul-tesztelo tipusok egyszer mindenkeppen vegrehajtjak a eiklusmagot. Megjegyezziik tovabba.ListCount Then MsgBox "A neva" & intX + 1 &" sorban fordul e16 e16szor" Else MsgBox "Nines KunigunSla" End If ~/.2 102 103 . amely az eloltesztelo Do While .' • Letezik egy e tipusba tartozo oskovulet.Kunigunda". Loop" eiklusok atirhatok egymasba... az utasitastipus megfeleloen: While. Tegyiik feI. Az utasitasnak negy variacioja is van...:>Vll sngLeng2 = 0.YlU"nU. kulonben pedig "Nines Kunigunda" frodik ki: Dim intX As Integer ' A ciklus-valtoz6t is deklaraljuk For intX = 0 To lstNames.ListCount -1 If lstNames.6. " ciklus-utasitas mukodeset az alabbi blokkdiagram szemlelteti: "Do . vegrehajtasa .vagy Until tipus. hogy a < feltetel > egy logikaijelol.4. a masodik jellernzo pedig a feltetelnek a ciklus-utasitas elejen vagy a vegen torteno elhelyezkedeseben latszodik (az utasftast elol. Ennek az un While utasftasnak a hasznalata nemjavasolt. i As Integer kell . Az sngLeng2 osszegzo-valtozo a ciklusmag (i-l).. elott az elso i-l koordinata negyzetenek osszeget tartalmazza sngLeng2 = sngLeng2 + sngVeetor(i) "2 'Hozzaadjuk a kov et.vagy tobb benne szereplo valtozojan keresztiil) kell a eiklusmagban leva utasitasoktol. Az alabbi peldaban egy n-dimenzi6s vektor hosszdnak a negyzetet (azaz: koordinatdl negyzetenek az osszeget) szamftjuk ki. egyfelol: Az alabbi programk6d azt vizsgalja meg.

4.. Mindketto kepes a hivas helyen szamara megadott informaciokat atvenni.adarhordozokenr" is szerepelni... intSzavak = intSzavak + 1 ' a karakter egy uj szo kezdete End If End If End If .Do . azonban a fuggveny meg tud valamit: kepes egy altala kiszamolt informaciot a hfvas helyere visszaadni. Az altalanos ..Text. mert altaluk az eljaras a hivasakor a mukodeset szabalyozo informaciokat kap. Specifikalasara az eljaras-deklaracios utasitas szolgal. (Az algoritmus akkor is j61 miikodik. A "For . Az IDE-ben a program fizikai szetbontasara a modularizacio szolgal.6.hivatkozva a modulokkal kapcsolatos ismeretekre . most a legaldbb egyszer vegrehajtodo "For .. akkor .az eljarasok kapcsan. 1) <> ''. " illetve a .. es informaciok adas-vetele celjabol kapcsolodasi feliilettel rendelkeznek. mint az apr6 technikai reszletekben elveszve. Loop While" ciklusok megfeleltese" hasonloan vegezheto. 1) =" "Then ' ha a megelozo szokoz. hibatlan celfunkciobol osszerakni a programot. • Meg mas lehetosegeket is tartalmaz.. a logikai strukturalas eszkozei pedig az eljarasok es a fuggvenyek.6. A benne leva szavak szama az alabbiak szerint hatarozhato meg: Dim intSzavak. intKarPoz-l. es fgy kifejezesben .." If Mid (txtMondat. sot azokon modositasokat is vegezni.2.Text) And Mid(txtMondat.a prograrnstrukturalas programozasi eszkozeit tekintjiik at. es akkor '" If Mid (txtMondat. Mindenkeppen noveljuk a: aktudlis karakter-poziciot intKarPoz intKarPoz + 1 . Tekintsiink egy tipikusan "Do . FEJEZET A VISUAL BASIC PROGRAMNYELVB De a megfeleltetes fordftottja sem komplikaltabb: 4.Do. intKarPoz As Integer intSzavak = 0: intKarPoz = 1 'A Mid fuggven» hasznalatara vonatkozoan ldsd a Lmellekletct ' Inicializdlds (utasitasok : . Loop" ciklus-utasitassal vegzendo feladatot! Tegyiik fel. Elemei parameterek. es akkor . intSzavak = intSzavak + 1 ' a karakter egy uj sz6 kezdete. Else ' vagy nem abszolut elsa karakter. sokoldalas programk6dban takolni ossze valamit ..megismetelhetetlenul. j61 attekintheto. hogy aztan kiegeszftsuk a fuggvenyek extra kepessegenek megtargyalasaval. intKarPoz. 1) <>" "Then ' Ha az aktudlis karakter nem blank.. A logikai szetbontas viszont elsosorban a jobb olvashatosagot es tesztelhetoseget szolgalja. amelyek hfvasuk celjabol sajat azonosft6 nevekkel rendelkeznek... kristalytiszta kapcsolodasi feliilettel rendelkezo. teljes egeszeben lasd az on-line Help: Sub Procedures cfrnszavanal = * Termeszetesen.. akkor . Loop" ciklus-utasitas mtikodesenek blokkdiagramja": 4.. " ciklusokr61 van sz6 ** A feltetelt tartalmaz6 dobozok pontozott kerete az utasitas jellegenek megfelelo esetlegessegukre 104 uta I 105 . es azert formalisak. intKarPoz..Text. funkcionalisan osszetartozo szegmensekre.. [ < eljdrds-torzs > ] End Sub A kerek zarojelek kozotti resz a formdlis parameterek listdja *.. mert tenyleges valtozokka csak az eljaras meghfvodasakor valnak. E reszben . 4. Eljarasok Az eljarasok olyan onallo programok. hogy formunk egy txtMondat nevu szoveg-mezeje egy mondatot tartalmaz (az elsa pont zarja Ie).. A program-strukturalo utasftasok A programnyelvek altalaban ketfele program-strukturalo utasftast ismernek: az eljarasokat (mas neven: szubrutinokat) illetve a fuggvenyeket. A fizikailag tOrtena szetbontas a programozasi egyseg komplett eljaras-konyvtarkent torteno beillesztesenek lehetove tetelehez szukseges.6.1. Hiszen nyilvan egyszenibb sok kis. Programstrukturalas A program strukturalasanak egy alapveto celja van: a programnak fizikailag es / vagy logikailag torteno szetbontasa aprobb. Ennek szintaxisa: Sub < eljdrds-nev > ( [ [ { ByRef I ByVal }] < vdltozo-nev > As < adat-tipus > Do While intKarPoz < Len(txtMondat.al elvdlasztva egy sorba is irhatok) Eloszor az eljarasok es fuggvenyek hivasakor hasznalt "informaci6s csatorna" letrehozasanak es rmikodtetesenek szabalyait es m6djait nezzuk meg . If intKarPoz = 1 Then ' vagy a mondat elsa karaktere. ha a szovegben nines pont) Loop 1) ..Text.

adathordozokent" (normalisan: kifejezesben operanduskent) is szerepelni. azonban e folyamat teljesebb megertesehez nem art tudni. Az eljaras-deklaracios utasitasok ele illesztett Static ku1cssz6val az eljaras osszes lokalis valtozoja statikus elettartamuvd teheto (igy nem egyenkent kell oket statikusnak deklaralni). Az ertek szerint atadasti formalis parameterek a memoriahasznalat tekinteteben az eljaras lokalis valtozoihoz teljesen hasonl6 viselkedest mutatnak. mert tenylegesen afogad6 eljaras hatarozza meg o Aformalis parameterek listdja . az eljdrds-hivo utasftasokban megadott aktudlis parameterek ertekeinek atvetelevel kapnak. Az informacio parameterek kozotti mozgatasanak m6dja az eljaras-deklaracioban a parameter szamara specifikalt . az aktualis. Az eljdrds-hivo utasitas az alabbl szintaxisii: [ Call 0] < eljdrds-nev > [< aktudlis parameterek listdja >] . a Public / Private valtozodeklaracios es a fuggvenybol val6 kilepesre szolgalo Exit Function utasftas. es igy hasznalatanak helyen .es a deklaracioban levo formalis parameterek megfeleltetese a listabeli poziciojuk (nem neviik vagy tipusuk) alapjan tortenik. azonban az adataramlasnak e m6dja nines teljes mertekben osszhangban a strukturalt programozas alapelveivel. Az eljaras meghfvodasakor az aktualis parametereknek a formalis parameterek szamara torteno atadasat (azaz a program es az eljaras kozti informacios csatorna rrnikodteteset) a Basic fordft6program es a VB futtat6 magja vegzi ldthatatlanul. Alapertelmezesben az eljarasok modul szintti lathatosaggal rendelkeznek. opcioallfto.. hogy a program melyik eljarasa m6dositja tartalmukat. Az eljarason beltil nem lehet masik eljarast vagy fuggvenyt deklaralni.illetve a formalis parameter-listak elemei vesszovel valasztandok el.pontosan az eljarasoknal megismert m6don nez ki . hogy aztan annak erteke beir6djon a formalis parameterbe (pontosabban az iment allokalt memoriatertiletre). amelyek ugyan az eljaras-torzs utasftasaiban hasznalhatok.3. az < aktudlis parameterek listdja > az eljarast hfv6 programban a hivds helyen ldthato vdltozokat illetve kiertekelheto kifejezeseket tartalmazhat. A fuggveny-deklaraciosutasftas szintaxisa: Function «fiiggveny-nev > ( <formdlis parameterek listdja >* ) As < adat-tipus > [ «fiiggveny-torzs End Function >] A Call kulcsszo opcionalis. mi is tortenik a hatterben. Az eljarast deklaralo utasftas ele illesztett Public illetve Private ku1cssz6k arra val6k. FEJEZET A VISUAL BASIC PROGRAMNYELVE A parameterek a listaban megadott nevfi es adattipusu [ormdlis valtozok. akkor a megfelelo aktualis parameter kifejezes kelllegyen. cim-szerinti parameter-atadasi m6d eseten (azaz ByRef kulcssz6 specifikalasakor vagy egyik ku1cssz6t sem megadva. Az eljarasnevek modulonkent (Public eseten programszinten is) egyediek kell legyenek. Helyesebb volna parameter-atveteli m6dnak nevezni. . ahol: - lathato: az aktudlis parameterek listaja nincsen zarojelek koze zarva. majd kiertekelodik az aktualis parameter. am ByRef eseten vagy egyiket se megadva: esak vdltozo lehet. Az eljarasbol torteno kilepeskor (az Exit Sub vagyaz End Sub utasftasok egyikenek a vegrehajtodasakor) az ertek szerint atadott formalis parameterekhez rendelt mem6ria-teriilet felszabadul. Ily medon az eljaras-torzs utasitasaiban "levo formalis-parameter hivatkozasok tenylegesen a megfelelo aktualis parameter-ertekek masolataira vonatkoznak. es a hozzarendelodes is megszunik. hiszen ez az dtadds alapertelmezett m6dja): nem ertekelodik ki a hivasbeli aktualis parameter (amely ekkor csak valtozo lehet) . az aktualis es a formalis lista megfelelo parametereinek kompatibilisaknak (azaz automatikus konverzi6val egymasba atkonvertalhatoknak) kell lenniuk. hogy az eljarast az iisszes illetve kizarolag a tartalmazo modul eljarasaibol tegyek lathatova (azaz meghfvhatova). Az eljarastorzsben nem hasznalhato az Option. Ezaltal egy formalis parameterre tortenf (eljaras-torzson beluli) hivatkozas valojaban a neki megfelelo aktualis parameterhez rendelt mem6riateriiletre tortenik es ennek az a lenyeges kovetkezmenye. a felsoroltakon kiviil viszont barmely mas utasitasfajta megengedett. hogy ertek szerinti parameter-dtadds eseten a formdlis parameter tartalmanak az eljarasban t6rteno modositdsa semmilyen tekintetben nem erinti a hivasban szerepl/i parametert. hiszen nem lehet tudni. hogy a cimszerint atadott formdlis parameter modosftasa a megfelelo aktudlis parametert (most valtozot) is m6dosftja. Fuggvenyek A fuggvenyek az eljarasokhoz kepest egyetlen tobblettudassal rendelkeznek: kepesek egy-egy.ha van egyaltalan . az eljarasbeli formalis parametereket ezaltal definialatlan tartalrmiakka teve.6.illetve az eljarassal azonos szinten deklaralt valtozo nevevel sem.vagy program-szintu globalis valtozokat is.paramcter-atadasi" m6dt61 fugg: ertek szerinti parameter-atadasi m6d eseten (azaz ByVal kulcssz6 specifikalasakor) eloszor a formalis parameter szamara a tipusanak megfelelo nagysagu memoriateriilet foglal6dik. 4. a hlvasban szereplo aktualis. altaluk eloallitott informaciot a hivas helyere visszaadni.ByVal vagy ByRef .. de tenyleges ertekeket majd esak ali eljaras haszndlatakor (. hanem "esak" annak memoria-teriilete (cime) rendelodik a formalis parameterhez.meghfvasakor). tovabba nem lehetnek azonosak egyetlen Basic kulcssz6val es egyetlen form. ami azzal a lenyeges kovetkezmennyel jar.4. de ha a formalis parameterek listajaban ByVal kulcssz6 all.. hasznalata eseten azonban a parameterlista kerek zarojelek koze teendo •. A program az eljarassal val6 kornmunikacio celjara a parametereken kiviil hasznalhat modul.

. Az elso parameter ByVal kulcsszavat ByReJ-re cserelve. Megjegyezziik. ezek vegrehajtasa utan ertekilk 5 illetve 6. amelyekkel reszletesen e konyv .4. A MaxNum fuggveny deklaracioja az alabbi lehet: Function MaxNum (ByVal X As Double. igen egyszeni fuggvenyt. es esetleg az elkerulesuk a modjat reszletezve.es a vizualis fejlesztokornyezetii rendszerek kulonosen .. addig a programozasi nyelvekben ez megengedhetetlen. a hibak" lehetosege sosem zarhato ki teljesen.6. B) B=" & B & " . hogy az mindig helyesen rmikodik. de altalaban eleg kemeny nyelvi szabalyokkal. ilyenkor a fuggveny altai visszaadott ertek nem kerul felhasznalasra: egyszenien "elvesz". Ehhez tekintsiik az alabbi. amely a kifejezesben operanduskent hasznalhato. Public nelkuli deklaraciot). is mennyi most A ? C = MaxNum(A. Hibakereses es -kezeles Az alapveto algoritmusokkal es programozasukkal torteno ismerkedes elott celszeni a hibakereses es -kezeles eszkozeit es modszereit attekinteni. ahova bernasoltuk a fenti. barmelyik medon is tortenjek a fuggvenybol valo kilepes (akar a fuggvenytorzsben alkalmazott Exit Function akar a fuggveny-zaro End Function utasftassal). Sajnalatos. hogy nem helyes a szoftver-gyarto cegeknek (tisztelet a kivetelnek) az iment lefrt elhdrito torekvese. * Az else ilyen jellegii kodok eredetileg komoly program-termekek masolas elleni vedelmet szolgaltak.informaciot nelkulozo . Fontossaga miatt az eljaras. koltsegmentesen juthasson hozza. amik akar kotber fizeteset is eloirhatjak. amelyek csak egy-egy konkret program-termek felfedezett (de egyidejiileg nem feltetlenul javitott) hibait soroljak fel az elofordulasuk korulmenyeit ill felteteleit.2 resz alapjan persze konnyen ertelmezheto) jelenseget tapasztalunk: Dim A As Double. hogy a mar felismertek koztudotta is valjanak.a lemezmelleklet ByValRefJeszt. operanduskent tOrteno felhasznalasa eseten iigyelni kell a fuggveny visszatero erteke adattipusanak az elso vele vegzendo muvelettel valo kompatibilitasara. B As Double. Ha a mindennapi eletben lehet is tenyleges . mivel az operacios rendszertol a VB-n at az alkalmazasokig minden programot emberek Irnak. A fuggvenyeknek a celjuktol eltero felhasznalasa keveredesre ad lehetoseget es az atlathatosagot is csokkenti. 5. Ezzel szemben az ezeket az alapszoftvernek tekintheto termekeket felhasznalo fejlesztoknek a megrendeloikkel szemben sokszor kemeny garancialis kotelezettsegeik vannak. ha Y nagyobb X-enel. hogy a fuggveny a tobb programozasi egysegbol allo programunk barmely reszebol hivhato legyen (es ne esak abban a formban vagy modulban legyen hasznalhato. Az informaciot nelkulozo utasitasok jo esetben esak feleslegesen lassitjak a program mukodeset. akkor X erteke legyen Y MaxNum = X ' a filggveny X (esetleg m6dosftott) erteket nyUjtja End Function Public If Y A Public kulcssz6t annak jelzesere frtuk. hogy termekeik javftasaihoz a felhasznalo valamifele garancialis szolgaltatas kereteben. az eljarasok es fuggvenyek programstrukturalo szerepet pedig a Sorozattlenerdlds programja mutatja be! 108 109 .a program futasanak hatekony nyomkoveteset biztosit6 eszkozokkel tamogatjak. mivel MaxNUm atirta! MsgBox "A=" & A & " rnanapsag viszont mar a szamitogepes bunozes eszkozeive.de viszonylag nagy tudasti . azt megelozoen vegre kellett hajt6dnia a fuggveny-torzs egy olyan utasitasanak. C=" & C '6. amely a fuggveny nevenek ad erteket: ez lesz a fuggveny altai visszaadott ertek. hogy a programoz6k ezeket a pongyolasagbol vagy a program folyamatainak nem kello atgondolasabol eredo hibakat meg idoben felfedezhessek. Ugyanis trefas kedvu. amely ket szam maximumanak meghatarozasara szolgal. A mar felfedezett programozasi hibak kijavitasat pedig a programnyelvek .ik). hogy mikent hiv6dott: akkor is eloallitja a fuggvenyerteket.nagyjabol az elobb leirt modon "teszt-agy"ba foglaltan . nem zarhato ki a tevedes. hogy a szoftver-gyarto cegek ugyan . meg kevesebbet azert. de a program kodjanak az attekinteset mindenkeppen nehezitik.. es szamos programmal kapcsolatban pedig egyszeriien csak minden jogi felelosseget elharitanak magukt61. sot (mint a virus-programok is mutatjak) a szandekos karokozas * Iehetosege sem. C As Double . mint a kozben elkovetett hibakjavftasa . E fuggvenyt programba helyezve es kulonfele m6dokon hiva megbizonyosodhatunk rola. azonban tenylegesen igen keveset csinalnak annak erdekeben.sajnos . Ezt mutatjak azok az ismert hibak jegyzeke cimet viselo. A kulonbozo celkittizesu programnyelvek a megtervezett algoritmusok keyes hibaval tOrteno beprogramozasat eltero szintu.programoz6k jatekszereive valtak. a hibas algoritmus alapjan kivitelezett kodolas vagy a j6 algoritmus program-utasitasokban helytelenul torteno megfogalmazasa pedig vagy eleve mukodeskeptelenne vagy hibas mukodesuve teszik a programokat. azert az eljarasszeni hivasukat is legjobb elkerulni. Persze. a strukturalt programozas elveit ervenyesito utasitaskeszletukkel valamint objektumorientaltsagukkal "kenyszeritik ki".nem foglalkozhat . hogy a fuggveny eljarasszenien is hivhat6. ahol: <eljdrds-nev > [ ( < aktudlis parameterek listdja > )] - tires aktudlis parameter-lista eseten meg a zarojelek is elhagyandok. a fuggvenyt az alabbi miniattir programbol hfva furcsa (de a 4. de ekkor a parameter-listat tartalmazo zdrojeleket nem szabad kitenni.min dent megtesznek a terrnekeikben elofordulo hibak szamanak csokkentese erdekeben. valtoz6k deklaralasa . ez utan C erteke uperszeu 6.mint mondjak .sot hibas dolgokat mondani kulonosebb kovetkezmeny nelkul (az ember legfeljebb megmosolyogja azokat vagy egyszeruen atsiklik feletti.. AJiiggveny-hlv6 utasftas az alabbi szintaxisii: . Bar a manapsag hasznalatos magas szintti programnyelvek igen sokat tesznek annak erdekeben. ha nines ra szukseg. es pszichikailag instabil .es fuggvenyparameterekkel kapesolatban megadhato ByReJill ByVal kulcsszok szerepet ezt celzo peldaval is illusztraljuk. ByVal Y As Double) As Double > X Then X = Y . programozassal foglalkozo szakemberek szerint: a programfejlesztes nem mas. A szerzonek az a velemenye. majd A=5 B=6 . akar tobb ezer oldalas listak is. es ezen a fejlett vilag piaca elobb-utobb valtozast fog kikenyszerlteni A ByVal ill ByReJkulessz6k hasznalatat . A fuggveny onmaga nem kepes megallapitani. FEJEZET A fuggveny deklaracioja ket ponton ter el az eljarasetol: • • a fuggvenynek a formalis parameter-listajat bezaro kerek zarojelet kovetoen definialnia kell az altala visszaadando ertek adattfpusat.

A fejlesztok vagy megtalaljak egy hiba okat. arnfg nem jovunk a problema okara. A program-hibak fajtai A programban elofordulo hibak ket fo esoportba sorolhat6k: a nyelvtani szabalyok be nem tartasabol szarmazok (ezek tobbseget mar az utasftas befrasa kozben eszreveszi a Basic "ertelmezoje". az adat-hordoz6t hasznalo utasftast rosszul fogalmaztuk meg) cs 110 111 . ezek a program-Iogikai hibdk. hogy a kesobbiekben mar esak a programba tr.1. mindenre kiterjedo vizsgalata fejezi be. de korantsem olyan mindenhat6k. HlQ~"l\"l\. vagy pI ha az ures halmaz esete nines megfeleloen kezelve. A vizsgalt korben az osszes hasznalt adat helyesseget erdemes megvizsgalni. ha a tervek azt is tartalmazzak.. visszautaljak a fejlesztokhoz.. ameIyek vagy program-logikai hibara vagy a komyezet (hardver vagy szoftver) feltetelezettol eltero viselkedesere vezethetok vissza. hogy milyen kapesolatban milyen jellemzok vizsgalatara terjedjen ki a teszteles).gyakran sokszorosan . hu egy ciklus-utasitas a lista-elemek nemelyiket (altalaban az elsot vagy az utolsot) . akar a program egeszenek az informacio-tartalmi teszteleserol van is sz6.informacio-hordozok (valtozok.'U UIUlllftau.. • Az ellenorzest nemcsak a programok elMlliUlsat eredmenyezo alkalmazas-fejlesztesekkel. hancm minden egyeb jellegu tevekenysegekkel kapcsolatban is nagyjabol hasonl6 szisztematikussaggal kellene vegezni: a nem kello melysegu atgondolasbol szarmazo hibak igen nagy reszet ezzel elkerulhetove teve.:".UC. A bonyolultabb programok kisebb funkcionalis egysegekben torteno ellenorzeset a program egeszenek osszeallitasa es komplett egeszkent torteno.az alkalmazas jellegetol fuggoen .futas-idejti vagy roviden futdsi) hibak. de k6d alapjan is vegighaladnak a program osszes vezerlesi utjan. es Igy valamilyen veliik kapesolatos kalkulacio nem vesz figyelembe minden eshetoseget.elozoleg e munkafolyamatot is megtervezve es reszletesen dokumentalva funkcionalisan is.esetleg rajzok. vegul is nem-tiszta. ad-hoc . azonban eloszor mindig a legkezenfekvobb dolgokra erdemes gondolni (peldaul. ha eiozotol elkulonulo tesztelesi folyamatban tortenik az eloallitott informaciok .jelre" (amely lehet egy mezoben feleslegesen megjelenftett egyetlen karakter. Eppen ezert egy program fejlesztesi idejenek viszonylag jelentos reszet (minimum 15-20 szazalekat) kell a program szisziematikus teszielesere szanni. hogy a problema oka valahol egesz masutt gyokerezik (peldaul egy egesz masutt leirt hibas logikaju k6d memoria-felulirast okoz).. ha e tervek maganak az alkalmazas-fejlesztesi tervnek kepezik a reszet). Az else inkorrektsegre utal6 .es egyeb eroforras-hianyokra hivatkozva (am valojaban sokszor csak partikularis erdekekbol) ezeket az alapelveket igen gyakran hagyjak figyelmen kivul.1-". amiket a Basic .ha nem olyan lenyeges . az a . grafikonok) jellemzoinek megfigyelesebol es az altalunk elvarttal val6 osszehasonlitasabol all.. Sajnos. Sajnos.tervek alapjan kijelolt . Ez addig tart. esak eppen a program nem II kivant m6don miikodik. futasihibat okozva).nagyobb koltseggel lehessen csak a szukseges korrekci6kat elvegezni. A talalt hibakat . amikor azt a terv eloirja es ez az egesz alkalmazas logikajahoz illeszkedo m6don tortenik-e (helyes az. A teszteles' is tobb szinten val6sul meg. beillesztesuk korrektsegevel kelljen foglalkozni (programozas illetve teszteles szintjen). FEJEZET HIBAKERESES ES -KEZELES 5.:. es fgy a program kibocsathatova valik. Akar egy kis modul.1.a nem ttil szigoni szabalyrendszer es az altalaban beallitott Compile on demand forditasi opci6 miatt .5. amelyek koziil egyesek olyan jelleguek. a programok modularizdcioja iranyaba hat6 szempont.. mint amilyennek hirdetik: alkalmazasukkor is sok fugg a resztvevok egyeni hozrddlldsdto! (lasd: patkoszog). penz.elofordulasuk korulmenyeivel egyiitt ..JlC>. Legfelso szintje program fO folyamatait ellenorzi: a bemeno adatok ott es akkor igenylodnek-e. A mostanaban divatba jott minosegbiztosito rendszerek egy fejlesztes helyessegenek fontos biztosftekai.megoldasokat" eredmenyezve •• EI6fordulhat persze. eppen ezek legnehezebb felfedezhetok. a program rrnikodtetese soran jelentkezo egyeb jellegii hibak. Ilyen tipikus hiba az. ra es A tovabbiakban azt tekintjiik at. A tobb programba torteno beilleszthetosegen es a fejlesztes esoportval6 vegezhetosegen tul ez a legfontosabb. program-generalta informaciok akkor allitodnak-e elo.UJ - A kovetkezokben a program-Iogikai hibdkkal fogunk foglalkozni. mezotartalmak. A program-logikai hibak felderftesenek m6djai 5. azonban vannak olyanok is. amit komoly fejlesztointezetekben a fejlesztoktol fuggetlen szemelyek vegeznek (meg kell jegyezni.1. amig egyetlen lenyeges hibat sem talalnak.:.esak a program futtatasa kozben eszlel.Jcifelejti". egesz addig.e tevekenyseg eroforras-igenyeit hajlamosak bagatellizalni es alabecsulni. hogy valamely. holott a teszteles Iegalabb annyira fontos. A VB IDE hibakeresest tamogato eszkozei E reszben a programhibak kategorizalasaval es keresesevel.l'I.:'. hogy a programot nem felkeszitve rajuk a vegrehajtas azonnali befejezeset eredmenyezik. a hibaiizenet alapjan e hibak altalaban konnyen javfthat6k. hogy milyen lehetosegeket ad a VB IDE a program adathordoz6inak program-futas kozbeni vizsgalgatasara. ezek az tin run-time (.kiegeszftik az ismert hibak jegyzeket es a program lij fejlesztesi verziojat kiadva azt ismet a tesztelok rendelkezesere bocsatjak. hogy vezetok . hogy aztan a kesobbiekben a tesztelesre forditandonal lenyegesen . a programok igen bonyolultak is lehetnek. hogy a hiba mar esak kovetkezmenye valami mas jellegti problemanak). vagy .jegyzekbe foglaljak. a mindennapi eletben ido-. Praktikus. Ennek folyaman a tesztelok . onalloan is teljesen reszekbol osszeallitani."r.l'I. de akar egy szam-adat teljesen hibas erteke is) az adat-hordoz6 tartalmat befolyasolo k6dokat egyre bovuio korben' at kell vizsgalni.. - utaltunk ra. legalabb annyi szakertelmet kivan mint a fejlesztes). majd a mar felfedezeu hibak okanak megtalalasat tarnogato VB IDE eszkozok hasznalataval foglalkozunk. vagy . masok viszont ugyan nem allftjaIc le a programot. bizonytalanul mukodgeto. vizsgalata (helyes az. hiszen lehet. ."lI:. helyes oket kis. hogy az elso lepes az alkalmazas (~a program) rendszerezett a megtervezese..

a Spc es Tab beepitett fuggvenyek a szoveg-kurzor pozfcionalasara szolgalnaf'" Spc a parametereben megadott szamu betukoz beszurasat eredmenyezi. paranes reven meg felteteles megszakftasi pontok is letrehozhatok. ciklusonkent m6dositott valtozo megfigyelesere nem megfelelf ** A debug amerikai-angol sz6.u.5.11". ha ez valamilyen ok miatt megse kovetkezne be.a Run To Cursor paranecsal.a Set Next Statement paranccsal... . ha a program vegrehajtasat az aktualis eljaras valamely masik utasftasanal akarjuk folytatni (peldaul. azaz olyan feltetelek definialhatok. mert az ablak tartalmat mas helyen leva k6d nezegetese celjabol arrebb lapoztuk . Ebben az allapotban is tetszolegesen allithatok a megszakitasi pontok.persze a hasznalt valtozok kello beallitasat kovetoen) . lasd az Options dial6gusablak Editor Format lapjat). program kodjanak - A program kodjanak barmely vegrehajthato utasitasa ele megszakitasi pont helyezhe (es a mar odatett torolheto) a fejlesztorendszer Debug menujenek Toggle * Egy gyors lefutasu ciklusban hasznalt..1'. hozzajuk rendelt cimke-mezoben jelenitjuk meg. atjelolheto a kovetkezokent vegrehajtando utasitas. ".print [[ {Spc(n) I Tab(n)}] parancsaval" (a megszakftasi ponttal megfejelt utasftasok Breakpoint Text szinevel Irodnak...... Ez azonban ket okbol sem javasolhato: egyreszl a program minden valtoztatasa egy tijabbhiba forrasa lehet. az alabbiak szerint (csak itt: eljaras alatt fuggvenyt is ertunk): - - < kifejezes > [< karakter-pozicio > ] 1. es az eljarashfvasok "tortenetet" mutat6 Call Stack ablak (szinten a View menu parancsaival). a program forrasnyelvf kodjaban kalandozva vizsgalhatok futas kozben a program objektumai (a Debug menu paranesainak illetve a Debug eszkozsor gombjainak hasznalataval). sot megjelenftese a Watches ablakban allandosfthato is. hogy az osszes hivatkozott objektumnak a program aktualis allapotaban elerhetonek kelliennie). A met6dus a hasznalatakor automatikusan megnyflo Immediate ablakba'" frja parameterlistaja altal meghatarozott informaciokat. a szamrt technikaban a dibagolds hiba-felderftes ertelemben kiirthatatlanul elterjedt (akar a poloska) *** A Debug objektum csak a fejlesztokornyezetbeli programfuttatas soran aktlv. viszont valtozatlan program-megjelenites mellett biztosftjn az "instabil" valtozok megfigyeleset is (a Debug" objektum hasznalata reven): egyaltalan semmilyen program-modositast nem igenyelve.. A met6dus hfvasanak szintaxisa: debug.'u esemenyek sorrendiseget. vagy egy programkodot akarunk megismetelni .az aktualis program-allapotban kiertekelheto kifejezese fole allva annak tartalma ToolTip-szeriien megjelenitodik."" valtozatanak futtatasakor a Debug objektummal kapcsolatos met6dus tires utasftaskent hat **** Az igazsag az. amelyek egyik m6dja ugyan igenyli a program kodjanak modositasat is...•~r"nv".'". akkor a k6dbeli megfelelo reszt kivalasztva annak tartalma a Quick Watch. Print met6dus reszletes lefrasat az on-line Help: Print method temakore nyiijtja. a k6d-ablak szoveg-kurzorat az aktualis eljaras tetszoleges vegrehajthato utasitasat tartalmaz6 soraba vive kezdemenyezheto a program tovabb-futtatasa. amikor objektumokkal . de meg tovabbi nyomkovetest tamogato paranesok es tevekenysegek is vegrehajthatok: az eger-kurzorral a k6dnak egy . az Add Watch .a Show Next Statement paranccsal.ha az mar nem lathato. . ahogy azt a lemezmelleklet MyFileJ3rowser nevu programjaban tetti. hogy e kurzor-pozicionalasra szolgalo lehetosegek a legritkabb esetben """£.~~ah. - - A hatralevo reszben a fejleszto-kornyezetben futtatott kozbeni.. a program vegrehajtasi pont (. hiszen a VB futtat6 magja ilyenkor minden egyes programbeli utasitas vegrehajtasakor ellenorzi a beallitott felteteleket .az utasltas-vegrehajtasi Itll\ . vagy barmilyen megvaltozasakor a program vegrehajtasat a feltetel teljesuleset kivalto utasftasnal azonnal megallftjak". masreszt a modszer esak 11 viszonylag stabil tartalrmi vdltoz6k* megfigyelesere alkalmas. amelynel megszakftasi pontot allitottunk. hogy benne a kodban nem szereplo kifejezesek erteket nezzuk meg'" vagy hogy a megfelelo vegrehajthato utasitast beirva megvaltoztassuk egy valtozo vagy objektumtulajdonsag erteket (ezzel kapcsolatban csak arra kell vigyazni. A Debug objektum a VB IDE beepitett objektuma."r~erzekeny programok (pi az id6zit6t tartalmaz6k) nyomkovetese extra gondossagot kivan Egy «kifejezes> erteket megjelenito Immediate ablakbeli parancs szintaxisa: ? «kifejezes» 112 113 . E met6dus kivaloan hasznalhato olyan esetekben. ahol a parameter-lista elemei egymastol betukozzel vagy pontosvesszovel Iehetne elvalasztva. FEJEZET HffiAKERES13S 13S -KEZELES Az IDE altal biztositott nyomkoveto eszkozoktol fuggetlenul megteheto kezenfekvn lehetoseg az.. kozvetlen vizsgalataval foglalkozunk. elohivhato az Immediate ablak (a View menu megfelelo parancsaval).. a kodablak az aktualis program vegrehajtasi pontra pozicionalhato . a program ". hibajavitas kozben. de csak a szoveg-kurzort tartalmaz6 utasftasig . letezesuk oka az. hogy bizonyos program-valtozok ertekeit egy-egy."'''"" vegrehajtasa elott marad az utolso iras altal meghatarozott karakter-pozici6n. amelynek sz6 szerinti fordftasa poloskatlanftast jelent. de az garantaltuu nem okoz problemakat.. akkor vegrehajtasa felfuggesztodik (az utasitast az Execution Point Text szfnevel kiemelve) es elojon az utasitast tartalmazo programelem k6dablaka. a ToolTip-tartalmak alapjan pedig konnyen azonosithat6k a megfelelo eszkozsor gombok is •• Ez nyilvan jelentosen lassitja a program vegrehajtasat. a program kisebb-nagyobb lepesenkenti vegrehajtatdsa kezdemenyezheto a Step parancsokkal. hogy e met6dus szolgal aformok es a kepmezok hatterenek frasal'll • A tovabbiakban csak a menu-elerneket emlitjtik. A VB IDE viszont olyan Iehetosegeket nyujt.. amik az aktualisan kivalasztott kifejezes ertekenek igazza valasakor. Ha a VB IDE-ben futtatott program olyan utasftashoz er. elohivhato az aktualis eljaras lokalis valtozoit tartalmaz6 Locals. pontosvesszovel tOrteno elvalasztas eseten a szoveg-kurzor a '"<0'. paraneesal elohivhato. Tab pedi a kurzort a sor megadott abszohit karakterpozfciojara pozfcionalja. mert at akarunk ugratni egy feleslegesnek Itelt utasitast. vagy esemeny-eljarasok parametereinek tartalmat vizsgalgatni. amelynek hasznalatba-vetele egyszenien esak az objektum Print metodusara torteno kodbeli hivatkozassal tortenik.ik. roviden. de beloluk kiolvashat6 az oket aktivalo billentyukombinaciok.program execution point).

aztan a VB IDE gombjara nyomva visszaterhet az IDE nyornkovetesre szolgalo ablakaihoz •• Mivel a For ciklus hatarait a Basic belso. es a beillesztendo szovegnek a jobboldali Iistaban val6 letezeset is eszrevette.1 vegtelen eiklusba kerul (egy ciklus-utasitas feltetelenek "elszurasakor .. bar az nem vilagos.Jeg~~z~e f~l!).ListIndex a erteku.:n ~ ~rogr~\Il.l). hogy a fej leszto-kornyeze~ben ~eg~ett tesztel~s. A eiklusb61 kilepve" (a Step-ek valamelyikevel vegiglepdelve vagy a Run To Cursor paranee sal az IIF .5. hogy rniert engedi duplikalni.. hogy a IstSource. " nelkuli atlepesehez a Set Next Statement parancsot hasznalhato.1 es a szo~~g : kozott kell futnia 2. hanem I-tol indul).: . Foleallva az eger-kurzorral latjuk. azert n ciklushatarok utasftason beluli modosftasa a ciklusvaltozo altai vegigfutott ertekhalmazra nines hatassall 114 115 . kozb. hogy a szerkezet futas-hibat sem jelzett. A program be is teszi a kivalasztott szoveget a jobboldali listaba.! felfuggesztett allapotba keriil. ezert a For ciklusnak nem 0 es Len(strTe~t!) .s . mindjart a lista-elem kivalasztottsagat vizsgalo lfutasftashoz.az azonnali befejezese (.a sajat k~szitesii. FEJEZET a Step Into es a Step Over paranesok nem eljaras-hfvo utasftason allva egyforman hatnak: vegrehajtatjak a/'. vajon mit sz61 hozza (az Immediate ablakba frt i = 1 utasftassal. Ezert ellenorizni kell a Mid fuggveny Iefrasanal a lehetseges ertekeiket (konstataljuk. utasitast es kovetkezo vegrehajtando utasitaskent a logikailag soron kovetkezot mutatjak. Step Into eseten a hivas (a sziikseges parameter-atadas / atvetel~el egyutt) lebonyol6dik.a Jelzod. Az elso elem kivalasztasat kovetoen. ez mar a nyom6gomb kattintast kezelo kodjara ranezve latszik: [obboldali lista elso soraban allo szovegnek az osszehasonlitasbol a torteno kihagyasat Ha az ember nyornkovetes kozben barrnikor kfvancsi ra. elt~~? szavak eseten helytelenul aIlit. eS:1 kilepest is vegrehajtva.ert e ~~sta . mert a baloldaliy~ta .End paranes). tulajdonsaganak pozitiv voltat vizsgalja. azonnal be IN !.) ~ Click esemeny-eljarasaban nem foglalkozik a ba! oldali h~ta elso ~lemevel \m.. probaljuk meg egyszer berakni: egyreszt a javitasunk. a hivott eljaras elso vegrehajthato utasitasat mutatja Step Over eseten a hivasban szereplo eljaras teljes . a Debug gombra torteno kattintassal (persze. a megjeleno dialogus-ablak most IS lehetove teszi . Loop ciklus-utasitas feltetele sosem valt hamisra). a Step Out paranesot kiadva a program tovabbfut az aktualis eljaras .) aJob~ ?Idal~.ll! fuggveny erteket. . hiszen a Iista-rnezok Iistajanak indexelese 0-t6l indul: az lenne a esoda.az ujrainditasa (. hogy milyen kepet mutattak a fut6 program ublakai. nem-negativ helyett) e. Peldakent tekintsiik a lemezmelleklet DebugCommands" programjat! ~e. . kovetkezc vegrehajtand6kent a kod-ablakban az utolso vegrehajtottat logikailag koveto utasitast mutatva. Most vizsgaljuk meg a mellekesen talalt problematl Miert nem csinal semmit a program a baloldali Iista elso elemet valasztva? Mivel ez egy generalis problemanak latszik..) ugyanitt a csak az utols6 karakteril. 4. miert van ez a kiilonekodes? . mert az IIF utasitasbeli feltetel meg az el?z? tevhlt~nknek ~elelt meg 3. a megszakftas-mentes tovabbfutas igenylesere. Mivel a hibat jelzo dialogus-ablak okkent valami eljaras argumentum (~ parameter) problemat jelzett. Aztan adjuk ki a Continue paranesot.Restart paranes) celjabol . ezert ennek hibas parameterezesere kell gyanakodnunk. vagy .ig terjedo kodot vegrehajtatva) akar m6dosithatjuk is a For utasftast a hatarok figyelernbevetelevel 1 To Len(strTextl) . ami nem esoda. ha ne~ ~rde~elnek I~! vegrehajuls I·' . Az elobbi lehetoseget valasztva megjelenik a kod-ablak.I Do While .es nyomkovetes kozben vagyunk: probakent valtoztassuk meg i erteket l-ie.II program vizsgalatat.egeszebclI vegrehajtodik.. a Step Out gyors visszateresre IVa c: ! •• A program kodjaba negy apro logikai hibat rejtett~nk.~:. Megtortenhet.allva viszont ~ paranesok.elte~o h~tas~ak. akkor a Step Over alkalmazando. a szovegeket osszehasonlito For eiklus Mid fuggveny-hfvasokat tartalmaz6 sorat aktualis program vegrehajtasi pontkent mutatva". .~em O-I~'lk! hanem l-nek feltetelezi.1. Szerencsere. ha az utasitasban szereplo kodot ennek ellenere vegrehajtana. a mutatott hibat okozo utasftasban pedig esak a Mid fuggveny szerepelt.. • eljaras-hfvo utasitason. akkor a Step Into. hanem. Akar most is m6dosithatjuk a feltetel szoveget: az egyenlotlenseg jobboldalat O-ra modosftva a program mar a baloldali lista elso elemet is kezeli. ki '16 eJaras e 0 u .1 vizsgalo fuggvenyben a szoveg karaktereit eloszedo MId eljaras az elso karakter I~dexet . sorbeli ele~l~o!1 valasztva (az elsa somal j6 ! Hoh6. masreszt az azonossag felfedezesenek ellenorzesere.~~~n. peldaul ha .. ideiglenes valtozokban tarolja (lasd a blokkdiagramjat).ertelemszenien hasznalhatok. Ugyan a For ciklus-utasftas ciklus-valtozojat nagyfokii illetlenseg ciklus kozben megvaltoztatni. az eljarashfvo utasftason allva az eljaras. . hogy ennek hatasara az ertek tenyleg rnegvaltozott). vagy a Locals dialogus-ablak elohfvasaval).re (anelkul. a hive eljarasnak a hivast koveto utasitasat mutatja aktualis program vegrehajtasi pontkent.lk Mint minden futasi hibanal.. hogy a programot megallftanank es az utasftas editalasa utan tijraindftanank). .. _ a Run menu paranesai illetve a megfelelo eszkozsor-gombok ~ program futasanak _ a kovetkezo megszakitasi pontig torteno folytatasa (~Contmue paranes). Meghagyva a baloldali listaban az elozo kivalasztast. a nyom6gombra nyomva meg is all itt a program futasa. . A szoveges tfpusu valtozokkal valoszfrnileg nem tudtunk sok hibat veteni. "e~ ~! nyom6gombra nyomva Invalid procedure call ot argument szo~egu hl?. • Osszefozlalva: ha az eljarasbeli utasftasok megvizsgalandok.hivasa ~lt~1l ertse meg a feladatot. es figyelje meg alaposan a program futas kozbeni vlsel~edes(!~I Nem gond az elso hiba megtalalasa. . b Is""" ugyei . az eljaras hivasat kezdemenyezo utasitas utamt mutatju aktualis program vegrehajtasi pontkent. Ezert celszeru megnezni az egyes parameterek aktualis ertekeit (vagy az eger-kurzorral az egyes parameter-nevek fole allva. akkor a Taskbar-on az ikonjukra kattintva azokat elohivhatja. hogy a szoveg indexelese nem 0-t61.e~elg. Ekkor a Ctrl ® Break vagy pedig a Ctrl ® Scroll Lock hillentyti-kombinacio lenyomasara a progra.el: .' ". '. szovegek azonossa~I. . figyeljiik meg. de most a ciklus-mag elejen. a nyomozasahoz egy megszakftasi pontot helyeziink a nyom6gomb esemenykezelojenek a legelejere. Orommel tapasztaljuk. es 4. h:ta elso el~m~t duplikalni engedi (mert a !ista elemeivel va16 egyezest vizsgalo ciklus-utasitas I-tol es nem O-tol indul) fejezheto a program futasa az End gomb lenyomasaval). viszont a karakterindexek (amik most O-t mutatnak) ketsegesek lehetnek.

b. Break in Class Module: nem foglalkozunk vele. ahol a hiba-kezeles valarnilyen m6dja aktivalva volt. 5. a ket szoveg csak akkor azonos. tehat vagy azon belul van a hiba. vagy egyes eljarasok kozponti hibakezelo eljaras-reszenek elkeszitesevel.. 2. Sorban kapjuk ket sz6 azonos I. A fuggveny erteket meghatarozo IIF utasitas igy True erteket ad vissza. Hibakezeldk: a futas kozbeni hibak kezelesenek eszkozei A program tesztelese soran gyakran fordulnak elo olyan futasi hibak. Aztan . stb) vagy "klilso" szoftver-elem rosszul vagy egyszeruen nem a vart m6don (off-line printer.alabbi modokon kivitelezheto lehetosegeket biztositja: a program egyes vegrehajtasi pontjain vegzett hiba-analizissel. m. Tegyiink be egy megszakftasi pontot a fuggveny ertekenck vizsgalatara a hfvasi helyehez. hatha talalunk meg valami hibatl Tegyiik be lmdniiell-ll+.VanjU~. Iehetove teve a program aktualis allapotanak a vizsgalatat. FEJEZET HIBAKERESES ES -KEZELES az eljarasban lev6 For utasitas eiklus valtozojanak hibas kezdoerteke okozza: a listaelemek indexelese ugyanis O-t61 (es nem I-t(1) indu!. ami a ciklust azonnali hatallyal (i erteken sem valtoztatva). tarolo. Peldaul megtortenhet.5.helyesen . A gondot okoz6 lmaniiell-la nal maradva. Egeszitsuk ki a Watch ablakot a parameterek aktualis: osszehasonlitott karaktereit nyujto Mid(strTextl. egy form adat-mezejenek kitoltese nem a megkivant m6don tortent: valam~lyen rendszer-eroforras kapacitasa (mem6ria. hogy erre a masodik parameterenek (az aktualis jobboldaJi lista-mezo elerne) Imdniiell-ll erteke eseten keruk sor (az mindenesetre megnyugtat6. 117 . adattarolo. mutatva el6zo helyesseget. hogy lenyegescn kulonbozo szoparok eseten a fuggveny mindig False erteket szolgaltat). az alabbiak valamelyikere: B:_eakon All Erro~s: bekapcsolasa eseten a Basic ignordl minden. mivel ennek elsosorban (~. Ez ut6bbi esetben meg a programvegrehajtas hiba-analizist koveto folytatodasanak modjarol is rendelkezni kell.a. nines gond. 1). Azonban i = 11 eseten a ket karakter elter6 (a illetve l).1. hogy utasitasonkon ellen6rizziik a sok gondot okozo paranyi k6dot! Az strTextl es az strText2 fiI kertilve az eger-kurzorral lathatjuk. ha i meg az utols6 eiklus utan is megnove (a lepeskoz ertekevel. Az ilyen es ehhez hasonl6 futasi hibak program altali kezelese celjabol a Basic .False erteket mond. Ia tipusjelfi baratnojet. i. a karaktereit (i = 1. figyelve e karaktereket. a nyom6gombra kattintva a futas megall a most elhelyezett megszakiraxl pontnal. csak leadminisztralia oket a program altali esetleges hiba-analizis szamara.. Ezt ismetelve figyeljuk a Watch ablakot: mikor mutat az isEqual fuggveny True erteket. 3 mellett).2. On Error . hogy a problemat a hozza nagyon hasonl6 sz6 jelenletc okozza. A szovegek hossza megegyezik.vagy floppy) "viselkedik". es hogy azt rnilyen m6don kl.auromatikusen'' aktivalodo eljaras-r~~zb~n hi~a-analfzist vegezhetunk. amelyek a hardver vagy a szoftver kornyezet feltetelezettol eltero allapotabol szarmaznak vagy azok nem vart mukodtetesebol erednek.v~gezn~. valamilyen hardver. stb) ki~erlil.Ih sajat fejlesztesu objekturn-tipusok tesztelesekor van szerepe. Nem vagyunk nilzottan meglepvo. A hibakezelessel kapcsolatos opci6k A program fejlesztokornyezetben torteno mtikodtetese kozbeni hibakezelessel kapcsolatos 0~ci6 az Options dial6gus-ablak General lapjanak Error Trapping allfthato be. Holott. itt valami gond van: a program iigy latja. a fiiggvenyertekekben Imdniiell-la-t es Orokszem-ei mutatva (a hfvrisi parameterek fOle allva ezeket olvashattuk). Valasszuk ki a tole esak egy karakterben eltero. illetve Mid(strText2. utasitast: e lehet~seg elsosorban a program osszes hibaforrasainak a feltarasat szolgalja. a hiba-felderitest. hogy a parameterek atadasa / atvetele helyeso zajlott le (Imdniiell-Ia es Imdniiell-Il). A szovegek azonossagat a nyom6gomb For ciklusaban lev6 isliqua! fiiggvenyiink vizsgalja. mintha az mar a jobboldali listaban lenne. ha a karaktcr egyenkenti osszehasonlltasat tartalmaz6 ciklus-utasitas kozbenso kiugras nelkul vegigfutni.2. ez esetben l-el). tehat ha i erteke nagyobb a szoveg hossza IIF feltetelet szigoru egyenlotlensegre m6dosftva az utasitas mar j6 erteket szolga A teszteles a valaszuisi lehetosegek tovabbi szisztematikus vizsgalataval folytatodik S. i. a hiba-kezelesre igenyt nem bejelento kodreszekben bekovetkezo hiba eseten viszont a futasi hibaval kapcsolatos szokasos dial6gus-ablakot jeleniti meg.~ progra~ ~DE-beli futtatasakor meg az Error Trapping opei6t61 is fuggo . Vagyis pontosan akkor. Break on Unhandled Errors: a program az olyan kodreszekben bekovetkezo u. Lepjunk be most a fuggvenybe a Step Into paranecsal. ez elkezdOdik a For ciklus. es a kifejezes ertekeul a Watch ablakbcl] kifejezes . vegrehajt6dik az Exit For utasitas.(halozat. Most Continue-val fussunk a fiiggvcny kovetkezo hivasahoz kapesol6d6 megallasig. Lepdeljt tovabb ntasitasonkent: mivel az oket osszehasonlit6 utasitas feltetele teljesul. de meg esak nem is jelZl bekovetkeztuket. "Jatszunk" a programmal. vagy annak visszaadoll erteket kezeljiik le rosszul. az el6jov6 dialogus ablakban pedig a Watch Expression opei6t valasztva). Mindket megvalositasi m6d eseten elobb egy specialis Basic utasftassal kell meg~o~d~nunk: hog~ saja~ hibakezelesre tartunk igenyt. kifejezeseivel es kiserjiik vegig a For ciklust. M i lehet a baj? Er6s a gyanunk. a program kozben hasznalt hiba-kezelesi m6d beallitasara vonatkoz6. eseten. valasztott ~6dnak megfeleloen vagy a program vegrehajtasanak altalunk meghatarozott pontjain (a feltetelezhetoen hibat produkalo utasitasokat kovetoen) vagy a hiba bekovetkeztekor . hogy egy hivatkozott fajl nem letezik. es adjuk is hozza a juggvenyh{vas kijejezeset a Watch ablakhoz (a kifejezes kivalasztasa utan az Add Watch paranesot.

Clear met6dus) vagy hibat akar maga is generalhat (. mert a benne elofordulo hibakrol mar nem kapunk semmilyen ertesitest. beallitott hiba-kezelest az utasitdst 5.Clear ' es a hiba-info torlese End If < eljdrdsresz cimke > az elobbi utasitast tartalmaz6 eljarasban / fuggvenyben < utasitds > prefixe a hiba-kezelo eljarasresz kezdetenek < eljdrdsresz cimke > : < utasitds > formaban hasznalva. a A hiba-kezeles ilyen m6don tOrteno igenylese eseten hiba bekovetkeztekor vegrehajtas az eljaras < eljdrdsres: cimke > prefixii utasitasan folytat6dik. A hibaval kapcsolatos korrekci6s intezkedeseket kovetoen a hiba-informaci6kat torolni kell az Err. Peldaul. met6dusai segftsegevel pedig torolheti a tartalmat (. . Hiba-ellenfirzessel vegzett kezeles A hibakezeles e modjahoz a kovetkezoket kell tenni: 1.Jetezik" (mindig az utols6 hiba adatait tartalmazva). abban a remenyben.5.Number 68 Then ' Ha a hiba = nDevice unavailablen.javithato" hibak jegyzeke a VB on-line Help Trappable Errors cfmszava alatt talalhato. ugyanazon eljarasban hasznalt On Error utasitas vegrehajtasaig tart. Clear metodus-hfvassal (kulonben az Err. Hiba-analizis Hiba eseten az Err objektum Number tulajdonsagaba annak k6dja kerul (egy 0-t61 kUIonbozo egesz szam). Egy programban az Err objektum csak egyetlen peldanyban . Szintaxis-varidcioi • (a hibakezeles valasztott forrnajatol fuggoen): On Error Resume Next Az ezen utasitas vegrehajtasat koveto futas-idejii hiba eseten a program vegrehajtasa a hibat okoz6 utasitast kozvetlenul koveto utasitason folytat6dik.2. azaz a hibat okoz6 utasftas vegrehajtasa nelkiil . Hiba-informaciok: az Err objektum A program futasa kozben bekovetkezo hibarol a VB futtat6 magja ertesul.Number nem torlodik. egy beerkezo hibanak masikka transzformalasa erdekeben). de kevesebb rendszer-eroforrast igenyel. az MsgBox hivasi parametereben leva tulajdonsag nevet elirva nem lesz se dialogus-ablak se hibauzenet. a hiba ~n~lfz~se e t.c •.3. a hiba azonositasa ceIjab6I olvasni-.monitorozott'' hiba-kezelesi m6d jelzesere. ott ahol 5. . FEJEZET HIBAKERESES ES -KEZELES 5.Drive 'Ez az utuie i t ee okoziie a iH1_. hibauzenet megjelenitesevel utasitani lehet a felhasznalot a lemeznek a meghajt6ba rakasara. A hibakezelesi mod beallltasa: az On Error utasitas Az On Error utasftas azt mondja meg.2 fejezetreszben emlftett masodik tipusti. Megjegyezzuk. egy mas tipusti hiba generalasa celjabol pedig Irni is lehet. peldaul. 119 . a hibaval kapcsolatos informaciokat az Err tipusu es nevu. 3. a drive-box visszaallitasa C:-re Err. Akarrnelyik hiba-kezelesi m6dot is alkalmazzuk. A hiba-kezeles lete.2.ul~jd?nsag vizsg~~atat jelen~i.Drive "C" .Path = drvList. A hiba-kezeles e m6dszere a kozponti hibakezelos megoldasnal altalaban hosszabb k6dot eredmenyez.2. akkor nem torrent hiba es egyeb tevekenyseg vegzese nelkul tovabb folytat6dhat a program vegrehajtasa.4. Osszegyujtesuket koveton. Az Err objektum tulajdonsagai: _ Number (eges: tfpusii): az objektum altal jelzett hiba k6dja. hogy milyen m6don tortenjek a hibakezeles az utasftast tartalmaz6 eljdrdson beliil.Raise met6dus. lokalis jellegii inforrnacio (amelyek VB altali adminisztralasa a lokalis valtozokhoz hasonl6an van megoldva). En?ek soran a hibak6d feimeriilo lehetseges ertekei szennti hiba-korrekciot Iehet vegezm. ezt hasznaljuk az 5. • On Error GoTo < eljdrdsresz cimke > szereplo valamely azonosftasara. If Err. kulonben pedig hiba-analfzist kell vegezni.2.Description ' akkor standaru drvList. hogy annak soran mar nem fordul elo a hiba (peldaul. Az eljaras feltetelezhetoen hibat okoz6 utasitasai utan meg kell vizsgalni az Err. MsgBox "Error: " & Err. mintha semmi sem tortent volna.2. 2. es a kovetkezo ellenorzesenel ok nelkul is hibat jelezne). _ Description tszoveges tfpusii): a Number tfpusii hiba szoveges lefrasa. Az On Error utasitas e formaja hasznalhato az 5. _ Source (szdveges tfpusii): a hibat generalo alkalmazas neve.a program tigy folytat6dik. vagy egy bonyolult szamftas-sorozat kozben keletkezett szam-tulcsordulas eseten ertesiteni lehet a felhasznaI6t a tenyrol es az altala beirt adatok kis modosltasara lehet kerni: hatha ezzel mar elvegezhetove valik a szamftas). • On Error GoTo 0 Hatalyon kivul helyez barmely elozoleg tartalmazo eljarasban / fuggvenyben. 5.a hiba adminisztralasat kovetoen . hibak6d szerinti rendezettsegben. m6dja vagy nemlete az eljarashoz kotott.Jtiba-ellenorzeses" kezelesi m6d bejelentesere. Hatalya a kovetkezo.2 fejezetreszben emlitett else tipusu.5. A programoz6 ezen objektum tulajdonsagait hasznalhatja fel a hiba azonosftasara.Number erteket: ha ez 0. Az alabbi kodresz a lemezmelleklet MyFileBrowser programjanak kiegeszftese hibakezelessel (a program nelkule futasi hibaval all meg lemezt nem tartalmazo floppy-meghajto kivalasztasakor): Private Sub drvList_Change() On Error Resume Next ' Hiba-ellen6rzeses mod beipJpn~~-dirList. Ki kell adni az On Error Resume Next hiba-kezeles m6d beallito utasftast. 118 = = End Sub A hiba analizalasa soran a programozast kulonos gonddal kell vegezni. beepitett. hogy a . globalis elerhetosegti hiba-objektumba "csomagolja".

akkor . . _ "Error handling") 'standard iizenet. A Resume utasitas A Resume utasitas csak a kozponti hiba-kezelo aktivalodasa eseten hatasos vegrehajtasa egyeb kodreszben hibat nem okoz).. mert kulonben . mig Megjegyezzuk. cimkevel megfejelt Exit . "C:" "Retry". a cimke viszont nem szukseges: nelkule a hibakezelobeli raugrato utasitasok helyett mindenutt irhatnank a megfelelo Exit . akkor a programvegrehajtas mindenkeppen a meghivast koveto utasitason folytat6dik (azaz a meghivott eljaras / fuggveny nem ismeteltetheto). akkor End csak befejezziik a programot Case vbRetry Resume Case vbIgnore drvList. akkor az az eljarasbol / fuggvenybol val6 kilepes elott egyszersmind a hibakezelest is befejezteti. A Resume utasitas mar a szintaxisdval is kifejezi a ketfele rmikodesi modjat: _ ismeteltetes celjabol Resume vagy Resume 0 _ ignoralashoz Resume Next utasftast kell frni. A kdzponti hibakezelf formaja Az eljarasok. a VB futtat6 magja minden egyes utasttas vegrehajtasakor hiba-ellenorzest vegez. az aktualis hiba szolgalo utasitast...5. Nagyon tanulsagos a program vegrehajtasanak lepesenkenti nyomon kovetese 111 alabbi k6d *****-galjelolt utasftasatol kezdodoen (megszakitasi pontot helyezve oda)] Private Sub drvList_Change() Dim intAnswer As Integer ' MsgBox valaszanak fogadasara On Error GoTo drvList_Change_Error ' Kozponti hiba-kezeles igenye dirList. vagy az eljarasbol fuggvenybol / programbol torteno kilepest okozo Exit Sub / Exit Function / utasitasok valamelyikevel fejezodik be. Ha ezen utasitasok valamelyike hajt6dik vegre a kozponti hibakezeloben. FEJEZET HIBAKERESES ES -KEZELES 5..Ignore". . a Select Case utasitas az eljarasban elofordulo hibaknak a hiba-kod. Bakfi tty ..2. 120 121 .nel kezdodo kodreszt (terrneszetescn elotte beallitva a hibaval kapcsolatos inforrnaciokat az Err objektum tulajdonsagaiba). Err objektumban tarolt informaciokat (ezt megteszik a hiba-kezelo logikai vegen szerepeltetheto. es hiba eseten eljarasszeriien hivja meg it bejelentesben foglalt < eljards-res: cimke > .Drive Resume Next End Select "My Error: 5..Number == 68 Then ' Ha a hiba = "Device unavailable". korrekci6t vegziink (111) es a a hibat kdvet6n folytattatjuk Else MsgBox ' Mas jellegu ti i. Ha az eljaras / fuggveny utasitasainak vegrehajtasa kozben ezek valamelyikere "csorognank". vagy ignoralasara (pontosabban: a program vegrehajtasanak az okozot koveto utasitason torteno folytatatasara). hogy ha a hiba a kozponti hibakezelot aktivalo eljarasbol meghivott valamely eljaras / fuggveny vegrehajtasa kozben fordult elo.2. make the drive ready!".Path == drvList.. .illetve az MsgBox fuggvennyel megjelenitett dialogus-ablakokban adott felhasznaloi valaszok visszaadott ertek szerinti szetvalasztasara a kodban jol attekinthetoen es kenyelmesen hasznalhato.7. elobb felsorolt egyeb utasitasok is).6. utasftas (az Exit . Exit Sub ' a kilepes k6dja drvList_Change_Error: ' Ez "hiv6dik meg" barmilyen hibancU If Err.Description ' csak "My Error" iizenet: ' es eljarasb6l End If GoTo drvList_Change_Exit End Sub va16 kileptetes A drvList_Change_Error dolog figyelheto meg: cfrnkenel kezdodo hiba-kezelo k6ddal kapcsolatban a hiba-analfzis vegen nem tartalmaz semmilyen explicit. " & Err. azaz hogy: _ a hibakezelo az eljaras vegen foglal helyet. ez valaszt ad az elobbi elso megfigyelesunkre _ masreszt lehetoseget ad a hibat okozo utasitas megismetlesere (ami megfelelo felhasznaloi. Funkci6ja kettos: (de azert egyreszt torli az aktualis hibaval kapcsolatos. utasitast.btik: eseten . Vizsgaljuk meg a MyFileBrowser program kozponti hibakezelovel torte n(II kiegesziteset (a prograrnnak az alabbi k6dot tartalmaz6 valtozata a lemezmellekletcn MyDiskErrorHandler neven talalhato)! A kozponti hiba-ellenorzesre vonatkozo igenyunk bejelenteset kovetoen.2. 5.. utasftast is). Kozponti hibakezelovel vegzett kezeles E m6dszer alkalmazasa egyreszt a hiba kozponti kezeleset.8. intAnswer == MsgBox("Please. elotte helyezkedik el a kilepest explicite igenylo. Case vbAbort "Abort".. Praktikus betartani a kozponti hibakezelo peldaban mutatott formajat.vagy programozasi tevekenysegek utan mar esetleg sikerrel jarhat). _ vbAbortRetryIgnore + vbExclamation. majd Select Case intAnswer ha a felhaszna16 valasza . akkor egy implicit Exit Sub illetbe Exit Function utasftas kenil vegrehajtasra. Hiba: nincs ilyen nevu tulajdons~CJ{/ drvList_Change_Exi t: ' E cimlcerie kezd6dik (nem kotelezo) l. masreszt a hiba ut{UII folytatas lehetosegeinek az elobbi mod altai nyujtottnal szelesebb skalajat nyujtja.Drive ' Ez az utasitas hibat okozhat ****"" MsgBox Err..illetve fuggvenyek fizikai veget az End Sub illetve az End Function utasftasok jelzik. utasftas lenyeges. akkor megismeteltetjiik a hibat okoz6t "..' ! a hiba-analizis logikailag vagy egy Resume tipusu-.racsoroghamenk" a kozponti hibakezelonkre.

e i. ez ut6bbi egyben minta a dinamikus tombok" hasznalatara is). Az aktudlis reszosszeget tarolja ' Minden .~"celjabol mindenkeppen ajanlott megtenni. ami a. a kattintgatasok koze iktatott . mint DoEvents a To Ly t. Nezzuk csak meg egyszer a kodjat (kommentjeit leroviditve)! Az alabbi k6d fel masodpercig varakoztatja a programot Dim sngTillSeconds As Single 'A folytatasi ida taro16ja. hogy duplajara novelve az eljarasbeli varakoztatas idotartamat. • A dinamikus tombiik fogalmaval kapcsolatos megjegyzest 123 . hogy az egyes .l az.Ii! erzekelhetove tegye...... hogy elegendoen hosszu idot hagyva a kattintasok kozott: a progrmn (es benne a veletlenszam-generator is) hibatlanul mukodik. Altalaban nem lett programokba foglaljuk oket... A hiba kijavitasa mar meglehetosen egyszeni: tortenhet llgy. Osszegzes n elemu numerikus tipusu tomb a tomb osszes eleme osszegenek meghatarozasa Const n As Integer = 100 'A dblTomb elemszama: csak itt m6dositand6! i As Integer. FEJEZET 5. sot meg a cimke k()I'Ul! keret kirajzolodasa is csak az utols6 kattintast kovetoen tortenik.jatszmak" teljes lebonyolitodasanak a vegeill nem engedjiik szoho: jutni a cimke-kattintgatassal kapcsolatos esemeny-kezelo eljarasokat.. az nyilvanvalo.3..Suui-Iioadjuk a kovetikezo . abban. i smet.. erteke :~ sngTillSeconds = Timer + 0.. hogy a SetTable eljarasbeli veletlenszam-generalast kozvetlenul a szam es a kattintott cfmke azonossaganak vizsgalata ele tessziik (a veletlenszam-generalas egy tisztrin matematikai algoritmuson alapszik es nem befolyasoljak holmi kattintasokj.. dblT6mb(l To n) As Double .5 'az ejfel 6ta eltelt masodpercek + ?1 fill) Do While (Timer < sngTillSeconds) . hogy az ember el sem hiszi. Hogy valahol problema van.7 folytatasa): Hibas a program! Visszaterve a 2. Azt is eszrevesszuk azonban.meg hibat okozo . Ennek soran HII tapasztaljuk... de egy konkret problemara e megoldasok termeszetesen egy-az-egyben feltetlemil alkalmazhat6k: csak a benniik felismert ely hasznalhato fel Iemszeriien.. ida. onmagaban minden eljaras latsz611l}!. A db l..A korrckt megoldas azonban az. a kozben becsuszo "kattintasok" esemeny kezelese soran az eredmeny-tabla dllitdsa meg az elozdleg gondolt skatulyrit feltetelezve tortenik.3. hogy a program "maniputalja" futasanak idejet: a ShowPause eljaras (ami! 11 cimke-mezok kattintasakor aktivalodo esemeny-kezelo eljarasok kozvetve. Egy dolog azert szoget uthet a fejiinkbe.. tesztelese es lepesenkenti nyomkovetessel vegzett tanulmanyozasa.DoEvents-t ces Loop (a DoEvents fiiggvenyt lasd a 3. a reszrendszerek okozta osszes hatasokat szambaveve..Mellekletben) 6. . lasd: 2. Mintapelda (2..5 . espedl/. Igen tanulsagos az fgy elkeszftett . Mig az aktualis ida kisebb.-' . Igy. is (lasd a lemezmelleklet Szummal. hogy a futas rovid idejii varakoztatasaval az eredmenyjelzest az ember szamara . ait. akar egy vdrakoztatdsi dllapotot jelzo logikai vdltozo bevezetesevel. . Ezt egyebkent . 0 eeetienr ) Az algoritmushoz kapcsol6d6 tovdbbi Jeladatok: - a tomb-elemek atlaganak meghatarozasa a tomb-elemek szorzatanak meghatarozasa a tomb pozitfv elemeinek es szamuknak a meghatarozasa ket tomb altai reprezentalt vektor skalaris szorzatanak a kiszamftasa az n es k parametereivel adott binomialis egyiitthat6 kiszamftasa n! ertekenek a kiszamitasa es deklaraciojaval kapcsolatban lasd a 4.. hanem programunk Iogikajaban van.. hogy az uj veletlenszam generalasa (a gepnek masik skatulyara gondoltatasa eeljabdl) csak a varakoztatast kovetoen tortenik. dblSum As Double. .feladata.beIi. hanem csak kodreszeket irunk Ie es elemzunk.. pontosan azt csinalja. z . n SetTable-bol hivodo ShowFrame altal mtikodtetnek.. az eredmenyjelzo tabl~lnnlt mindig csak az egyik oldala valtozik (marpedig ennyire azert nem lehet egyenetlen II veletlenszam-generator altal produkalt szamsorozat eloszlasa). dblTomb-elemet (mi lenne n ::. A hiba persze nem is ebben az eljarasban. kodreszekben csak az algoritmus feladatara koncentralunk es mindig csak beszelunk (amelyek egyfajta deklaraciojat .az egyertelmuseg kedveert is adjuk).. egy rendszerkent kelt szemlelni. Alapvetd algoritmusok fejezetreszben nehany alapveto aIgoritmust vizsgalunk meg. hogy ebben is lehet hibn.7) eppen arra szolgdl.egyes tomb-elemen vegigfut6 ciklus + dblT6mb(i) . A dblTomb-elemek konkret feladatnak megfelelaen vegzett feltoltese Megerositi gyanunkat.1 fejezetben specifikalt HolAPiros jatekunkhoz. Bfzunk hogy e mintapeldak es az eddigi eloisrneretek elegendo alapot nyujtanak a algoritmus komplett programba illesztesere es kiprobalasara is.ista'Ieszt es Szumma'Iomb'Ieszt . hogy eleg gyorsan kattintgatva egy cimkere.. tombhatarokkal E hiba 122 igazi tanulsaga azonban az. For i = 1 To n dblSum = dblSum . a k6d megfrasa uuiu a mar kesz programot meg egy alapos. atfog6 tesztelesnekvetjiik ala. A kod olyan rovid es egyszeru.3.. hogy a programokat mindig teljes egesziikben.3..5.Li.3. Az algoritmusok programba illesztesenek es a leirttol eltero a peldajakent elkeszftettuk az osszegzes algoritmusanak ketfele . illetve lenyegi reszeiket (akar a cirnkek miikodokepessegenek-ideiglenes felfiiggesztesevel.. a lemezmelleklet HolAPiros/gazi programja ez ut6bbi megoldast szemlelteti).maximalis sziinet is a duplajara nil. De hoI? A dolog eleg misztikus Vegigolvasva a k6dot: nem latunk hibat.

Kivalogatas Adott: Feladat: n elemii numerikus tipusu tomb.(intIndex > n-1) Or (dblT6mb(intIndex»dblT6mb(intlnaex+l)) blnMonoton = intIndex > n-1 Az algoritmushoz kapcsol6d6 tovdbbi Jeladat: Keressiik meg a tomb egy T tulajdonsagii elemet. intIndexT6mb(1 To n) As Integer . dblT6mb(1 To n) As Double Dim intDb As Integer. hogy 1.varidcio: Const dblMin MAXDOUBLEVALUE As Double 1. A dblTomb-elemek konkret feladatnak megfele16en vegzett feltoltese A T' tulajdonsagu tiomb=e lemek: szamla16ja Az osszes tomb-elemen vegigfut To n Ha T tulajdonsagu: If < db I'I'omb t i ) T tulajdonsagu > Then szamla16-noveles. intIndex As Integer Dim dblMin As Double. van-e a tomb elemei kozott T tulajdonsagti? 2. Ezert: annak eldontese. keresesi algoritmus . dblT6mb(1 To n) As Double .4. akkot a hasonlo ely alapjan kivitelezett megvalositas nem mtikodne helyesen.vagy igaz vagy hamis erteket ad6 .1. Peldaul: dblTomb elemei monoton novekv6 sorozatot alkotnak-e. FEJEZET ALAPVET6 dblTomb-elemek konkret 6.linearis valtozata.T tulajdonsagu) 6. intIndex = 0 Do intIndex = intIndex + 1 Loop Until . Van-e megoldasa intIndex = 0 intIndex = intIndex + 1 Until (intIndex > n) Or «dblTomb(intIndex) blnVan = intIndex =0 <= n ' blnVan erteke True konkret M egvalositds.T tulajdonsag a tomb T tulajdonsagu elemeinek (az indexeiknek) a kigytijtese intIndex = intIndex + 1 Loop Until (intIndex > n) Or «dblTomb(intIndex) blnMind = intIndex > n nam T tulajdonsagu» Megvalositds: Const n As Integer = 100 Dim i As Integer.79769313486232E308 A legnagyobb Then' Double adat-tipusu = MAXDOUBLEVALUE sulm As Boolean torten6 ellatasa For i = 1 To n If dblT6mb(i) < dblMin intIndex = i dblMin = dblT6mb(i) End If Next i T tulajdonsag-ertekekkel Ha tomb-elem kisebb az addiginal: ' a minimalist taro16 elem indexe d.2.6. blnMind As Boolean. elemt61 kezd6dLk If dblT6mb(i) < dblT6mb(intIndex) Then intIndex i Next i dblMin = dblT6mb(intIndex) = 1. dblT6mb(1 To n) As Double Dim blnVan As Boolean.altai anosan megfogalmazott . megjegyezziik. Minimum-kereses Adott: Feladat: n elemfi numerikus tipusu tomb a tomb-elemek legkisebbike ertekenek a meghatarozasa a legkisebb erteku tomb-elemek kozul az elsa indexenek a meghatarozasa T tulajdonsag-ertekekkel torten6 ellatasa Megvalositds: Const n As Integer = 100 Dim i As Integer. vajjon minden tomb-elem T tulajdonsagti-e? Const n As Integer = 100 Dim intIndex As Integer. Mind-e megoldasa intIndex (mind ilyen. hogy a tomb elsa elemere nem vonatkozna 11 minimum-kereses (peldaul: a pdros ertekii elemek minimumanak keresesekor). Eldontes n elemii numerikus tipusu tomb. . amelynek elemein ertelmezve . A dblTomb-elemek . T tulajdonsag (mint elobb) Ha a feladat jellege olyan lenne. blnMonoton .3. intDb = intDb + 1 kigy(ijtes intIndexT6mb(intDb) =i End If algoritmushoz kapcsol6d6 tovdbbi Jeladat: meghatarozandok egy numerikus tomb azon elemei. es a tombresz-minimum az aktuali~ T tulajdonsagu» <=? Az algoritmushoz kapcsol6d6 tovdbbi feladatok: a tomb-elemek legnagyobbikanak a meghatarozasa a pares erteku tomb-elemek minimumanak a meghatarozasa intIndex <= n . amelyek erteke megegyezik a legnagyobb ertekti tomb-elemekevel intIndex = 1 ' A dblTomb mar vizsgalt reszenek a minimumat taroljm For i = 2 To n ' A eiklus a 2. ha nines nam.1. hogy ez a 124 125 .

es ha az nem az utols6 volt.. Linedris kereses. A bindris kereses k. intIndex As Integer Dim blnVan As Boolean. A dblT8mb elemeinek rendezettseget produka16 felt81tese Then intIndex j intKezdet = 1 intVeg = n Do intIndex = (intKezdet + intVeg) \ 2 If dblTornb(intIndex) > dblErtek Then intVeg = intIndex . Next Next i End If j db l. vagy egyenlo") firtat6 kerdesekre. az algoritmus logikaja az alabbi: Az elso korben kivalasztjuk a tomb legnagyobb elemet. mi az indexe) 6. egy teljesen lerendezett tombhoz jutunk. Ezt az eljarast . . ahol 1". akkor felcsereljuk oket. hogy e modszer az elozonel gyorsabb (viszont rendezettseget igenyel). FEJEZET ALAPVETO ALGORITMUSOK 6.1. Maximum-kivdlasztasos rendezes. dblTomb(l To n) As Double Dim i As Integer. a jatekosnak pedig valaszolnia kell a gondolt szamnak az egyes tippekbez valo viszonyat ("kisebb. utoljara pedig az elso ket elembol allo tombreszre vegezzuk ezt.1.6. lgy az elso korben a legnagyobb elem az utols6 helyre keriil. intIndex As Integer . For i = n To 2 Step -1 For j = 1 To i . amelyikbe a keresett ertek esik (a tomb rendezettsege folytan ehhez elegendo esak az adatnak a reszeket szetvalaszto elemmel val6 osszehasonlitasa). A programnak ezt kell kitalalnia iigy. az algoritmus lenyege a kovetkezokben foglalhato ossze: Mindegyik elemet osszehasonlftjuk a kovetkezovel. az algoritmus logikaja a kovetkezokben foglalhato ossze: a tornb-elemekbol allo halmazt az index-tartomanynak a kozepen tortenc megfelezesevel ket reszre osztjuk.5. Kereses Adott: Feladat: n elernfi numerikus tipusu tomb (amely a keresesnek a binaris nevvel jelzett megvalositdsi m6dja eseten rendezett kelllegyen) es egy ertek szerepel-e az adott ertek a tomb elemei kozott (es ha igen. E halmaz-felezeses eljarast addig folytatjuk. utoljara az else ket elembol allo tombreszen vegrehajtva. j As Integer.1 If dblTornb(intIndex) < dblErtek Then intKezdet = intIndex + 1 Loop Until (intKezdet > intVeg) Or (dblTornb(intIndex) = dblErtek) blnVan = intKezdet <= intVeg 2.6. lepese utanaz index-tartomany hossziisaga n / 2\ tehat az elemet legfeljebb olyan k-nal kell megtalalnunk. A linedris keresesnel egy tombbeli elem atlagosan n /2 lepes utan talalhato meg. intVeg As Integer. hogy a T tulajdonsag: a tomb-elem erteke az adott ertekkel megegyezo-e 2.az elozo algoritmushoz hasonloan mindig az eggyel rovidebb tombresszel folytatva. Rendezes Adott: Feladat: n elemu numerikus tipusu tomb a tomb elemek indexeiknek megfelelo novekvo sorrendbe allitasa Megvalositdsai (a sokfele rendezesi "strategia" kozul ket igen egyszenit mutatunk be): 1. akkor felcsereljiik az utolsoval: fgy a legnagyobb elem all az utols6 helyen.'I'omb (j + 1) Then dblSeged = dblT6mb(j) dblTomb(j) = dblTornb(j + 1) dblT6rnb(j + 1) = dblSeged A elobbi rendezesi algoritmusok iisszehasonlitdsa: 126 127 . 2.'I'omb (j) > db l. Const n As Integer = 100 Dim intKezdet As Integer. es a tovabbiakban mar esak azzal a felevel foglalkozunk. dblT6rnb(1 To n) As Double . dblErtek As Double. algoritmusanak logikajahoz lasd az elozo resz vegenek feladatat tigy. vagy egy felezes alkalmaval a tovabbvizsgalando reszhalmaz mar lires (a tombnek nines keresettel megegyezo eleme). n /2\ azaz k". nagyobb. majd az annal is eggyel rovidebbel. Bindris kereses. amig vagy a keresett ertekkel megegyezo tomb-elemet talalunk. Lathato. A linedris es a bindris algoritmus osszehasonlitdsa: 1. log2n. Const n As Integer = 100 Dim dblSeged As Double.1 If A bindris algoritmushoz kapcsolodotovabbi Jeladat: A kovetkezo "szam-kitalaI6s" jatek beprogramozasa: a jatekosnak gondolnia kell egy 1024-nel kisebb pozitfv egesz szamra. . Ezutan az eggyel rovidebb tomb-resszel csinaljuk ugyanezt.. Ha a sorrendjuk nem felel meg a kivant rendezettsegnek. hogy legfeljebb 1O-szer tippelhet. A dblT8mb-elemek For konkret feladatnak megfele16en vegzett felt81tese i = n To 2 Step -1 intIndex = 1 For j = 2 To i If dblTornb(j) > dblTornb(intIndex) Next j dblSeged = dblTomb(intindex) dblTornb(intIndex) = db 1 Tornb(i) dblTomb(i) = dblSeged Next i Megvalositdsai: 1. Buborekos rendezes.

a COBOL-t kifejezetten az uzleti cehi alkalmazasok fejlesztesere keszftettek. es ezeknek program-nyelvekbe integrdldsdra ". Tovabbi programozasi lehetosegek E fejezetben ket kulonbozo celu. A menuk a programok interaktivvd valasa soran . Igy szulettek meg sorra a rna is szeles korben hasznalt rendszerek (dBase.hatekony parancsad6 es programvezerlo eszkozokkent .es rendszer) interfeszt nyujt. a program aktualis allapotanak megfelelo modositasa. hogy beepitesukhoz mar az operacios rendszerek is jelentos tamogatast nyujtanak. legegyszenibben megvalosithato es felhasznalas szempontjabol kiemelkedoen fontos fajtajaval. amely tartalmazza az elereshez szukseges interfeszeket. Az adatbazisok kezelese napjainkban altalaban ketfele m6don vegezheto: vagy az adatbazis sajat rendszerevel. Informix. FoxPro. Access.feltalalasa" pedig valosagos reneszanszukat eredmenyezte. a fejezet hatralevo reszeben megis csak az adatbazisok legkonnyebben attekintheto. Ingres. A menuknek a program futasa kozbeni.mondatok" formajaban teszi lehetove. felhasznaloi szempontbol igen fontos terUlet (a men ii. Bar a Visual Basic szinte tetszoleges adatbazis-kezelok szamara egyseges (felhasznaloi. hogy ne keUjen az egyes adatbazis-kezelo rendszerek hasznalatat biztosit6 nyelveket megtanulni ** Ilyen a szeles korben elterjedt S_tructured Query Language (SQL) nyelv. a tartalmi modosftastol a struktura-valtoztatasig az adatbazissal vegezheto muveletek teljes skalajat felolelve 128 129 . a gyorsmeniik . amelyek a kaionbiizo tipusu adatbazisokkal val6 kapcsolat megteremteset iIIetve tartalmuk hasznalatat biztosftjak. Paradox. aztan kiegeszitettek olyan interfesz leir6 lehetosegekkel iIIetve utasitasokkal. DB2. vizualis fejlesztokornyezetu 4GL-nyelvek (pl Delphi. vagy egy olyan programnyelv' altal. ami az adatbazis-funkciokat kezdemenyezo utasitasok megfogalmazasat j61 attekintheto . stb). a Visual Basic illetve a C++ az adatbazis-kezeles szamara kulonosen egyszeni eszkozoket nyujtanak.jelentek meg a szarnitastechnika hoskoraban. a relacios adatbazisokkal foglalkozunk. Sybase. Teljes reszletesseggel nem foglalkozhatunk veluk. Manapsag mar minden elterjedt programozasi nyelvnek van interfesze SQL-alapu adatbaziskezelo rendszerekhez.JEGYZET 7. amelyek a legaltalanosabb menu-struknirak elkeszfteset is jatszi konnyedseggel megvalosithatova teszik. PowerBuilder). Programokban val6 hasznalatuk annyira altalanossa valt. egymassal versengo es nem-kompatfbilis adatbazis-kezelo rendszerekkel biztositottak. Oracie. de remelhetoleg biztos alapokat es iranymutatast adunk tovabbi tanulmanyozasukhoz. A. es az egyes menuelemeknek programfunkciokhoz kapcsolasa programozast igenyel: ezzel foglalkozunk a fejezet else feleben.illetve az adatbazis-kezelesy programozasaba pillantunk bele. A 80-as evek elejetol azonban hatarozott torekves mutatkozott a kulonbozo adatbazisoknak a felhasznaloi szempontbol egyseges kezeleset es hasznalatat lehetove tevo interfeszek Ietrehozasara. Clipper. Ezekre tamaszkodva a vizualis program-fejleszto rendszerekbe (mint a VB IDE-be) oIyan menu-tervezo segedeszkozoket integraltak. Ez azonban nem mindig volt fgy: az adatbazisok hasznalatat hosszu ideig csak specifikus. * Az els6 programnyelvek egyiket.

A tovabbiakban eloszor attekintjuk a Menii Editor mukodtetesehez sziikseges tudnivalokat.i aktivalasara szolgalo eljaras ugyanis a benne hivatkozott menu-objektum megjelenites-mcdjatol fuggetlenul.vagy a mar letezo meni. hogy miert nem inkabb az alapokhoz inkabb kozeli fajlfeldolgozas temakoret valasztottuk: a valasz azonbanegyszeni: az adatbazis-kezeles technikajanak felhasznalobaratta valasaval parhuzamosan egyre csokken a fajlok kozvetlen feldolgozasara vonatkoz6 felhasznaloi igeny.1. Programozasa ket reszbol all: a menti-hierarchia Ietrehozasabol.es a betti gombjanak egyidejii lenyomasaval aktivalhato).a Tools menubeli Menu Editor . es az egyes menuelemekhez kapcsolodo (futas kozben a kivalasztasuk akti valodo) esemenyek kezelesenek beprogramozasabol.jeleniti meg.csak form szerkesztese kozben . iIIetve a kornyezetfuggo Help aktivalasahoz nyiijtanak informaciot. "nem-megjelenitend6" aggal kell kiegesziteni a form menujet. E dialogus-ablakban a Next gomb az alapertelmezett. Egyetlen esemeny-tipus kapcsolodik hozzajuk: ami az aktivalodasukkor generalodik. A Visible tulajdonsagaban False ertekii mentielem (az esetleg alatta levo hierarchiaval egyi. es ekkor kezelesuk a "normal" objektum-tombokehez teljesen hasonl6an tortenik.. 130 131 . hatasara A menti-hierarchia elemei objektumok.mezo altai specifikalhato billentyu-kombinacio a meni. Mentikezeles A menu formhoz kapcsol6d6an keszitendo. Gyorsmeniikent aktivalhato a menu-hierarchia egy teljes aga vagy egy dgdnak a vegeig terjed6 res:e. a Shortcut . a Caption a meni.1. A dialogus-ablaknak az atstrukturalo gombok feletti reszei egy-egy meniielem ktilonbozo tulajdonsagait tartalmazzak: a Name es az Index mezok a meni. az Enabled tulajdonsag False erteke eseten pedig a mentielem inaktfvkent jelenik meg es nem is aktivalhato. Menii-elem szdveg Objektum-azonosit6k Megjelenitesi tulajdonsagok Atstruktunil6 gombok < 7. 7. A megjeleno Menu Editor cfrnsoni dialogus-ablak a form aktualis menu-hierarchiajat mutatja menu letrehozasa. majd a menuvel kapcsolatos esemenyek kezelesevel. tenyleges megjelenitodesenek. mukodokepessegenek. de ezeken a program a futasa kozben szinte tetszolegesen valtoztathat (egyedtil a menu-hierarchian nem modosfthat). valamint az ablak-nev lista . egyetlen kotojelbol alia szoveg eseten a mentielem helyen egy csoportkepzesre szolgalo vizszintes vonal jelenitodik meg.itt) meg sem jelenitodik. hogy a menuelem az Alt billentyu. A gyorsmeni. es a gyorsmenut aktivalo eljarassal foglalkozunk. a Menii Editor tamogatja.i rnodositasa celjabol. dbra: A Menii Editor dialogus-ablakdnak reszei A Menii Editorban vegzett osszes tevekenyseg eredmenyenek az elmentesere az OK-.. Ezek sorban a mezo pipdltsdganak.FEJEZET TOVABBIPROG~ozASILEHET6SEGEK Felmeriilhet a kerdes.7.beallitott tulajdonsagaiknak megfeleloen . Menii-hierarchia Ieiras 7.1. a menu-hierarchiaban alatta leva valamennyi elemet . es amit Click esemenykent "elnek meg". akkor egy uj.a praktikusan csak MDI formok eseten beallithato igenylesenek a kapcsoloi. A menu-objektumok tulajdonsagai az altaluk reprezentalt elemek megjelenesi modjat szabalyozzak. paranccsal aktivalhato. es azt jelzi.ielem gyorseleresere szolgal. az ignoralasukra pedig a Cancel gomb szolgal. Az azonos hierarchia-szinten levo menu-objektumok "tOmbosithet6k" is. tehat az Enter gomb lenyomasa a Next gombra torteno kattintassal egyenerteku (hacsak nem valamelyik nyornogombnal van a f6kusz). amelyek letrehozasat es a koztuk lev6 kapcsolatrendszer helyes felepiteset az IDE vizualis menu-tervezoje. amelynek hierarchiaja nem felel meg egyetlen meglevo agresznek sem.i-objektum azonositasara szolgalnak. Ezert. A Menii Editor hasznalata A Menii Editor a VB fejlesztorendszereben . ha olyan gyorsmenu kialakftasara volna sztiks~~. Kozvetlenul az atstrukturalo gombok feletti sorban a menuelem negy logikai jellegti megjelenitesi tulajdonsaga all (ugyanilyen tenyleges tulajdonsag-nevekkel).iben megjeleno szoveg megadasara szolgal (a nem megjelerio & jelnek a szoveg egy betuje ele Irasa azon karakter alahuzasos megjeleniteset eredmenyezi. A form a menujet az Editorbeli beallitasoknak megfeleloen mutatja az else megjelenitesekor.

7. FEJEZET Az atstrukturalo gombok a menii-hierarchia valtoztatasakor jutnak szerephez. Ehhez kapcsolodoan, a Menu Editor mukodesenek magyarazatahoz bevezetett fogalom al aktudlis meniielem. Ez az a meniielem, amelynek tulajdonsagai az Editor mezoiben aktualisan meg vannak jelenftve es amelynek sora a menii-hierarchia listajaban kiemelt hatterszfnnel van megjelenftve): az aktualis menuelem kivdlaszidsa legegyszeriibben a meni.i-hierarchia megfelelo sorara torteno kattinuissal vegezheto. Ezek utan az egyes atstrukturalo gombok szerepe: - Next gomb - a menunek az Editorban felrajzolt hierarchiajaban az aktualis meni.ielem jeloleset egy sorral Iejjebb lepteti (a meni.i strukturajanak barminemf modositasa nelkul); utolso soron allva a meni.i kiegeszitodik egy uj elemmel, mindjart aktualissa is teve azt; - Insert gomb - egy uj meniielem besziirasa; a meniinek az Editorban felrajzolt hierarchiajaban az aktualis sor ele egy iijat sztir; , _ Delete gomb egy meniielem torlese; a meniinek az Editorban felrajzolt hierarchiajaban torli az aktualis sort; ill -+ gomb - az aktualis meniielemnek az Editorban felrajzolt struknirajaban egy meniiszinttel feljebb illetve lejjebb helyezese; ill ~ gomb - az aktualis meni.ielem soranak a folotte illetve alatta leva sorral tortenc kicserelese. Reszben- vagy teljes egeszeben tOrteno letrehozasat kovetoen a menu mukodese a fejlesztorendszerben is tesztelheto (termeszetesen csak a meni.ielemekhez kapcsolodo aktivitasok nelkiil), aztan megfrhat6k az egyes meniielemekhez tartoz6 tevekenysegek kodjat tartalmazo esemeny-kezelo eljarasok,

TOVABBIPROG~ozASILEHET6SEGEK

7.1.3. A gyorsmenii' aktivalasa
A gyorsmenii aktivalasara a Form- es az MDI-form tipusu objektumok met6dusa szolgal. Ennek szintaxisa az alabbi: PopupMenu < menii-objektum >, PopupMenu

[< opciok > ], [< x > ], [< y > ], _

[ < alapertelmezett menii-objektum > ]
ahol PopupMenu termeszetesen "megfejelendo" a nienut tartalmazo (Form vagy MDI-form) objektum nevevel, ha az nem azonos az aktualissal; tovabba:

- < menii-objektum >: annak a menii-objektumnak a neve, amely alatt leva meni.ihierarchiabeli elemeket kfvanjuk a gyorsmeniiben megjelenfttetni (ez az objektum nem lehet objektum-tomb eleme); < opci6k >: a gyorsmeniinek a koordinatakhoz viszonyitott elhelyezkedeset illetve a gyorsmenii egy elemenek kivalasztasra hasznalhato eger-gombot specifikalo konstansok (lasd az on-line Help: PopupMenu method temakoret); < x > illetve < y »: a gyorsmeniinek az aktualis form koordinatarendszereben mert pozici6ja (elhagyasuk eseten az eger poziciojaban jelenitodik meg); < alapertelmezett menii-objektum »: a < menii-objektum > alatti szinten levo menii-objektumok kozul egy - nem objektum-tombhoz tartoz6 - neve, amelynek menu-szovege a gyors-meni.iben majd kover betiikkel jelenitodik meg (jelezve, hogy ez az alapertelmezett meniielem).

-+

+

Megjegyzendo, hogy egy idoben csak egy meni.i lehet aktiv, azaz menu aktivalasa nem kezdemenyezheto sem egy gyors-menu sem a form legordnlo meni.ije aktiv allapotaban; a gyors-meni.i egy ag-vegenek aktivalasakor a neki megfelelo, menu-hierarchiaban levo meni.ielemhez kapcsolt esemeny-eljaras hivodik fel; a gyakorlatban a gyors-meniik tobbnyire csak a menii-hierarchia form-meniiben nem elohivhato againak feleltethetok meg (hiszen celjuk eppen a kulonbozo agakon leva meni.i-parancsoknak egyetlen, gyorsan elohfvhato meni.ibe torteno osszegytijtese). A tobb meni.ielem altal is kezdemenyezheto tevekenysegeket celszeni eljarasokkent frni, hogy az esemeny-eljarasokbol csak hfvni kelljen azokat.

7.1.2. Menu-esemenyek programbeli feldolgozasa
A program futasa kozben a meniielem aktivalasa a Name tulajdonsagban megadott nevvel megkulonboztetett Click esemenyt general. Az ennek kezelesere szolgalo esemeny-eljaras formalis parameterlistajaban megjeleno Index parameter az elemnek a menu-tombon beli.ili indexe, a meni.ielem egyertelmti azonosithatosaga vegett, Ebben az esemeny-kezelo eljarasban vegzendo el a meni.ielem kezelesevel kapcsolatos osszes sziikseges tevekenyseg. Megjegyezziik, hogy esemeny-kezeles definialasa altalabau csak a legalso szintii meni.ielemekhez kapcsoltan praktikus, hiszen eppen azert alkotjuk meg a menu-hierarchiat, hogy a feljebb elhelyezkedo menuelemek mukodteteset automatizalni tudjuk; neha azonban szukseg lehet felsobb szintil meniielemekhez kapcsolt eserneny-kezelesre is (peldaul a programban hasznalt kapcsolok beallitasa celjabol). Az egyes meni.ielemekhez tartozo esemeny-eljarasok a megfelelo meni.ielemeknek _ a fejleszto-kornyezetben miikodtetett meni.i altali aktivalasaval, - a k6dablak Objects menujeben tOrteno kivalasztasaval hivhatok elo, vagy

7.1.4. Meniik hasznalatat bemutat6 peldak
A lemezmelleklet Menu'Ieszt illetve MyFileBrowser programjai a meniik hasznalatat dernonstralo tanulsagos mintapeldak, Elobbit az IDE-ben erdemes vizsgalni, tekintve hogy a menii-objektumok esemeny-eljarasaiba az Immediate ablakba irkalo nyomkoveto utasitasokat helyezti.ink el. A programok a meni.i-objektumok Visible illetve Checked tulajdonsaganak kezeleset is bemutatjak,
angolul: quick-menu; mas elnevezesei: kornyezet (- context) vagy felhfvott (- pop-up) menu

132

133

7~ FEJEZET

TOVABBIPROG~ozAsILEHET6SEGEK

7.2. Adatbazts-kezeles
E fejezetreszben a Visual Basic adatbazis-kezelo lehetosegeinek hasznalatahoz kfvanunk utmutatot adni. A temakor - es kulonosen a relacios adatbazisok - melyebh elmeleti megismeresehez erdemes .attanulmanyozni konyvsorozatunk adatbazisokkul foglalkoz6 tagjainak (lasd [3] ill [13]) elmeleti fejezeteit. E konyvben igen rovid altalanos illetve VB-specifikus elvi bevezetest kovetoen, a szukseges VB eszkoz(lk hasznalati szempontb61 torteno attanulmanyozasa utan az Access- es az Excel adatbazisok hasznalatat vizsgaljuk meg. A VB6 Professional verzi6ja igen baratsagos tejlesztc-kornyezetet nyujt adatbazisok hasznalatahoz. Mivel hely szukeben ezek attekintesere nem vallalkozhattunk; helyette inkabb a korabbi verzi6k altal nyiijtott, de tovabbra is teljes mertekben tamogatott lehetosegeket nezzuk at; kozuluk is csak a gyakorlati szempontb61 fontosakat. S61, az adatbazisok kozvetlen programozasaval egyaltalan nem foglalkozunk. A temavul megismerkedni szandekozok szamara a [4], [6], [7], [10] es [12] konyvek ajanlhatok,

rekordokban a konyv cimenekes egyes szerzoinek adatbazisbeli kapcsolatokat mutatja az alabbi abra,

az azonositojaval),

Az

8. dbra: A .Konyvnyilvdntartds"

adatbdzis adatkapcsolatai

7.2.3. Az adatbazis-kezeles

technologiaja

7.2.1. Adatbazisokrol

altahiban

Adatbazisoknak hetkoznapi nyelven a szamitogepek altal tarolt, rendszerezett informaci6-gyiijtmenyeket nevezziik. Az ezek kezeleset vegzo rendszerek manapsag altalaban tamogatjak tobb (sok) felhasznalo egyidejii kiszolgalasat, es biztositjak HZ adatbazis integritasat (mind fizikai mind logikai szinten). A napjaink gyakorlataban elofordulo adatbazisok tulnyomo tobbsegukben relaciosak.

7.2.2. Relacios adatbazisok
A reldcios adatbazisok az adatokat - matematikai logikai relaciot definialando tablazatokban taroljak ugy, hogy - elvben a sorok ismetlodesenek meg a lehetoseget is elkeriilve - a szorosan osszetartozo adatok keriilnek egy tablaba. Az egyes konkret informaciokhoz kapcsol6d6 adatok a tablazatok soraiban vannak elhelyezve tigy, hogy az azonos jellegu adatok azonos oszlopokban vannak (a tablazatok sorait rekordoknak, oszlopait mezoknek hivjuk). A relacios adatbazisokban a kUlOnbozl'1 tablazatokban tarolt adatok kozti kapcsolatokat (- relationships) a rekordok bizonyos mezoinek tartalmi azonossaga teremti meg. Peldaul, egy konyv-nyilvantartasbart kulon-kulon tablazatba keriilhetnek a szerzok, a kiad6k illetve a konyvek adatal (amelyeket egy-egy, sajat tablazaton beliili egyedi azonosft6 sorszammal latunk el konnyebb .hivatkozasuk erdekeben). Feltetelezve, hogy egy konyvet csak egy kiad6 ad ki, a konyvek tablazat egy-egy konkret konyvet leir6 rekordjai tartalmazzdk (/ megfelelo kiad6-azonosft6t is. A szerzok konyvekhez koteset viszont (mivel egy konyvnek akar tobb fr6ja is lehet) egy olyan tablazat segiti, amely oszlopaiban II szerzok es a konyvek azonosit6it tartalmazza: a konyv - szerzok tablazathu konyvenkent annyi rekord kerul, ahany szerzoje van a konyvnek (az egyes

Egyseges programoz6i interfesz celjabol az adatbazisok eleresere szolgalo eszkoztarat egy elvonatkoztatott adatbdzist mozgato (abb61 informaciokat kivevo, berak6, m6dosft6, atstrukturalo) kezelo rendszerre (amit tevekenysegere utalva szokas adatbazis-motomak' nevezni), illetve a konkret adatbazis-fajtak es az adatbazis-motor kozotti kapcsolatot biztosft6 adatbdzis-meghajtokra" bontjak a gyartok'". Manapsag azonban nem feltetlenul ezaz adatbazisok eleresenek az egyetlen eszkoze, Az egyes adatbazis-kezelo rendszereket kifejleszto cegek - felismerve az adatbazisok egyseges eleresere vonatkoz6 igenyeket - olyan standardokat keszitettek, amelyek reven adatbazisaik mar - legalabbis "a kulvilag fele" - egyseges arculatot oltottek, Ilyen regebbi standard az Indexed S_equential Access Methods (lSAM) , az ut6bbi evekben viszont az Qpen Datal2.ase 1:_onnectivity(ODBC) protokoll van inkabb terjedoben. Az ODBC az SQL nyelvet (lasd [13]) hasznalja az adatforrassal folytatott kommunikacio celjara, termeszetesen az SQL parancsokat a forras adatbazis-motorja szamara kozvetito ODBC meghajt6 tamogatasaval"?".
:.Angolul: database engine; a Microsoft motorjanak neve: Jet, az InPrise (a volt Borland) motorjae: BDE •••Angolul: database-driver (a let-nek minden jelent6sebb adatbazis-tipushoz van megfelelo meghair« A Microsoft absztrakciojanak a legmagasabb szintjet az Universal Data Access architektura jeienti; amelyaz ActiveX Qata Qbjects (ADO) iIIetve az Qbject L.inking- and !imbedding Qata!1ase ((JT,. '''' te~hnol6giakon alapszik, Az ADO egyseges programozasi feliiletet nyiijt az osszes Microsojt plUgl,Ullfejleszto eszkoz (igy peldaul az Office terrnekek, a VB, a Visual C++ iIIetve a 1++, stb) szam~r~. ~/ OLE DB pedig a kUlonboz6 tlpusu adatbazisokhoz torteno hozzaferest biztosit6 meghajt6k es az AiJu kozti egyseges interfeszt biztosftja (a MS adatbazisok programozasaval kapcsolatban erdeklodoknek !~!~etIeniil erdernes az ADO nyujtotta tervezo- es programozasi eszkozokkel megismerkedni) A Microsoft a Jet meIIett nyiijt meg egy ODBCDirect elnevezesu programozdsi interfeszt is, amely - a hasznalt tin Remote Qata Qbjects (RDO) eleresi technika altai - lehetove teszi a gyartoik altai ODBC interfesszel ellatott adatbazisok kozvetlenebb (nemcsak a let-en keresztiil torteno) elereset is

134

135

7. FEJEZET

TovABBIPROG~ozASILEHET6SEGEK

7.2.4. A Microsoft Jet adatbazis-motor
,. adatbazisok lefrasara szolgalo informaci6kat

7.2.6. Data (- adat) vezerles
Az adat-vezerles altal letrehozott objektum definialja a hasznalando adatbazist, a kapcsolodas modjat es az elerendo informacio koret (azaz a RecordSet-et). A .Jiarterben" kezeli - az adatbazis adatkapcsolati rendszere altal meghatarozottan az objektumhoz kapcsolt formbeli mezokben megjelenitett adatokat, az altaluk vegzett valtoztatasok alapjan frissiti az adatbazis tartalmat, es lehetoseget nyujt az adatbazishozzaferessel kapcsolatos hibak program altali kezelesere (Error esemeny-eljaras).

=E~~~':~i~~::E.;~~t~':~ =:O!t~d~~e:~~~rrnl-t&~~~~~etEIE;;~
. kk gfelelo objektumok meto USaIva vege ~~~~k~!~:~~o:ti1 ~rD:ta~:se tfpusii a~ a~a~bazisra ;o~~~ktC:a~:~~o: (az adatb~zis neve, az alkalma~o~t ~~~l::::~i:~~:~ ~ relaci6kat), a Fields a mez?i\ a alatta leva TableDefs az adatbazls. ,. I A datbazis altal tartalmazott informaciok Relation(ship)s pedi~ a k~p~s?lataItRlrJa edS ~ ~biektum-tipus tolt be fontos szerepet. elohivasaban es meg)elemteseben a ecor e J

P:e~:~~::::~
.

Az adat-vezerles tfpusii objektum formhoz adasa az egyeb objektumokhoz hasonl6an tortenik, es annyi peldanyban kell tenni, ahany kulonbozo RecordSet-hez keII elerest biztositani (a RecordSet-ek termeszetesen kulonbozo adatbazisokhoz is tartozhatnak). A vezerles fontosabb tulajdonsagai: DataBaseName: az elerendo adatbazis specifikacioja (eleresi utja megadasaval); RecordsetType: az elerni kfvant RecordSet tipusa (lasd az elozo resz tablazatat); RecordSource *: Table tipusti RecordSetType eseten az adatbazis egy tdbldzata; egyebkent pedig lehet meg egy SQL utasitds vagy egy adatbazisbeli lekerdezes is; Connect": az elerendo adatbazis tipusat es a kapcsolodas altalanos parametereit meghatarozo szoveg (a parameterek tipus-fuggo, egyedi beallitasok is Iehetnek); ReadOnly: az adatbazis e vezerles altali elsf megnyitasi m6dja; Exclusive: az adatbazis-hasznalat kizarolagossaganak kapcso16ja; BOFAction: a rekord-halmazon beluli elso rekord "ele" lepes eseten vegzendo tevekenyseg (lasd on-line Help: BOFAction, EOFAction Properties temakor); EOFAction: a rekord-halmazon beluli utols6 rekord "utan" lepes eseten vegzendo. tevekenyseg (megjegyzendo, hogy ahhoz, hogy az utolso rekord utan lepve uj rekord besziirasa tortenjen, az erteke: 2 - Add New kell Iegyen).

7.2.5. A RecordSet objektum-tipus
A RecordSet npusu objektu~ vag! eg~e~~;!~:~sre:r~::~~;~g~e;~~ze~t:~~~t~~ tO~~ ta~lazatb61 is adatok~t ta~a ma~o - me hatarozottan). A RecordSet objektu;n?k obJektum Type tulaJd,?nsaga a~;l b '~tett Data vezerlese segftsegevel tortemk. letrehozasa legegyszerubben, a , e~p, ' usokat tekinti at: Az alabbi tablazat az e vezerles altaI krealhato RecordSet up

-

t 'bldzatnak rekord-halmazkent tOrten6 reprezentaci6ja egy ad" T'b61 . tOrten6 kereses, torles illetve mo osttas ce ja

beszuras,

. . hl amely az adatbazis egy tablazatat vagy egy reko;d~~ dl?aI~llku~'1 .a m~za, az6 mez6ket tartalmaz6 _ lekerdezes eredmenyet - akar tobb tablazat 0 l~ szar~ .. ho a rekord-halmaz barrnilyen ra reprezentalja. A dinaml~us J~l~o harl ,ut~;v6 !~at automatikus m6dosulasat m6dositasa az adat szarrnazasi e yen eredmenyezi; ez az alapertelmezett RecordSetType
a rekord-halmaz hasonl6 az el6bbihez, azonban nem m6dosithat6

Megjegyezzuk, hogy mindezen tulajdonsagok program-futas kozben is allithatok, azonban a kfvant beallftasok megtortente utan az adat-vezerles Refresh met6dusa alkalmazand6 az adatbazis tijra-megnyitasa es a rekord-halmaz iijra-epftese erdekeben, A DataBaseName (illetve kulso adatbazis eseten a Connect) es a RecordSource tulajdonsagok kitolteset kovetoen az adat-vezerles altai reprezentalt RecordSet teljes mertekben definialtta valik, es a formra helyezett adat-megjelenito vezerlesek a DataSource tulajdonsaguk altal az adat-vezerleshez kapcsoltan mar kepesek lesznek a RecordSet-et alkot6 mezok felismeresere (lasd e vezerlesek DataField tulajdonsagat), Mas sz6vaI, az adat-vezerles tipusu objektumok az adatbazis es a megjelenftesre szolgalo objektumok kozti, a RecordSet tipusatol fuggoen egy-vagy ketiranyu inforrnaci6-aramlastintezik.
* Kitolteset ** Az ADO

" dSet-et kell kivalasztani. Azadatbazis olyan Mindig a celnak megfelelo Recor. 'kat mas tablazatokra a mezoikben, tablazatait, amelyek nem tar!almaZn;; h~~t:~~~:~alni mert a tablazat m6dositasa ez celszeru mindi~ Table ti~usu Recor. ": den A yr'nashoz kapcsol6d6 klilOnbOzo esetben tortemk a legkoz~et1enebb ,~~ 0:. kt zm~t altal torteno) kezelese D,ynaSet tablazatbeli adatok automatl~u~ (vezer 0-0 '~~e u ekkor a kapcsolatok is taroI6dnak). ttpusii RecordSet-be s~ervezesukk~l oldh~t~z a:at~azis egy-felhasznaI6s. Adatbazisok Ez nem is okoz semmi gondot addig, a~g b az adatbazis-motorba epitctt tobb- felhasznal6s miikodtetese, ese~e~ az07 :l~ _ altalanos algoritmusok gyakran - egyidejii m6dosfta~ok n:e,gakada~:~.~sa~~ ~z~;kor programozashoz kell folyamodni: nem kielegito funkclonahtassal muko t~ su RecordSet _ et rendelve, az egyes

;~z'

:d~;~:~~~~fat:~~~:~~~t

~ife;~::6~os~a:ftUprogramozassal

kell megoldani.

az ADO (lasd: el6z6 labjegyzet) vizualis tervez6 komponensei igen hatekonyan tamogatjak Data Environment tervez6 komponense hathat6s eszkoz e tulajdonsag kitolteseben

137 136

egyrnassal csak egy harmadik tablazat tablazat egy-e~y mezejet mutatjak. az MSFlexGrid (.felhasznaloi kozremtikodesre).adat-fogad6) vezerlesek Az adat-fogad6 vezerlesek olyan.DBList) _ a Data-bound ComboBox (.7.'K6nyv-ID' = K6nyvek. A p~ogramot futtatva.2. A Visual Basic heepitett.2. .identification) vegzodessel lattuk el 139 138 . egy adat-objektumhoz kapcsolt megjelenito objektumok az adatobjektum altal reprezentalt tdbldzat vagy RecordSet egyetlen (a kurrens) rekordjanak mezoit mutatjak.es a fogad6-mezok lathatatlan allapotaban IS.sot mukodokepesek maradnak meg az adat. Szerz6k.2 reszben emlitett feladat MS Access program altal elert. Az adat-fogad6 mezok ezen mlajdonsagai a program futasa kozben is beallithat6k. a szoveg-. a cimke-. adatbazis never a SQL-utasftast Irtuk: AND SELECT K6nyvek. a Kony~~k tablazat adatainak "kozvetitese" illetve megjelenftese celjabol. es termeszetesen ezzel is ugyanugy rmikodtetheto a program. es akar m6dosithatjuk is a .ils6" objektumok beillesztesere ill beagyazasara szolgal (nem targyaljuk 6ket) 7. es a DataField mezejeben ki kell valasztani a felkfnalt (a RecordSet altal lefedett) mezok koztil az adat-fogad6 objektum altal megjelenitendot. 'K6nyv~ID'. A formra helyezett. 'Szerz6-ID' 'K6nyv-Szerz6k' . Az objektum DataChanged tulajdonsaga csak futas kozben erheto el. hogy mivel a Konyv-Il) nem modosfthato ezert cimkeobjektumban to. 'K6nYV-Szerz6k'. RecordSet haszndlata A form bal-oldali also kereteben egy adat. mint a mogotte levo adatbazisbeli mezoe. EIoszor az adat-mezonek a DataBaseName tulajdonsagaba frtuk az adatbazis neve! (a • gomb altal felhfvodo dialogus-ablak reven).7.vagy megelozo-. amelyek DataChanged tulajdonsaga meg akkor is True ertekii (tehat a DataChanged ertekenek az objektum-m6dositas es a rekordrol torteno elrnozdulas" kozott eltelt idoben vegrehajtott False-ra allttasanak hatasara az " adatm6dositasi igeny figyelmen kfvul marad).rteno megjelenitese igazabol helyesebb lett volna. Kiado-Il) -re illetve Kiinyv-cim-te. melyek kepesek a Data-vezerles reprezentalta RecordSet altal tartalmazott informaciok ablakaikent is mukodni.2. hanem csak akkor.MSFlexGrid).mezok" tartalmat. majd egyeb tulajdonsagait alapertelmezett ertekukon hagyva. Data-bound (. hogy a datKonyvSzelekcLO objektum RecordSource mezejenek listaja alapjan valaszthato Konyv:Sz~rzok 9~ery ugyanazt a lekerdezest mas szelekcios utasftassal val6sftja meg (ez utobbi utasitast az MS Access adatbazis-kezelo program lekerdezes-tervezojevel "gyartattuk Ie"). A VB-el egyiitt adott ActiveX vezerlesek koztil _ a Data-bound ListBox (.vagy elsa rekord elohivasat es data-bound mezokben torteno megjeleniteset.~ntaprogr~~ formjan~~ bal fe~so kereteben egy adat. Egy adat-fogad6 mezo tartalmanak (akar programozas akar felhasznalo altal vegzett) modositasakor a valtozas nem azonnal vezetodik at az adatbazisba.DBGrid) igen hatekony megjelenitesi es adat-kezele lehetosegeket kinalnak. fejezetben latott. * Az adatbazis kulcsmezoit a tablazatok letrehozasakor ID (. FEJEZET TovABBIPROG~ozASILEHET6sEaEK 7. ha az objektum tartalma mas. csak hozza kell kapcsolni a megfelelo Data-objektumhoz (az elobbi objektum DataSource mezejebe az ut6bbi never Irva) . altal . * Az OLE vezerles "ki. _ az Apex Data-bound Grid (. amikor a tdbldzat vagy a RecordSet masik rekordra pozicionalodik (akar programozas. A tablazat vagy. az adat-meri: gombjait hasznalva lepegethetunk a tablazat soram. Ezutan a szoveg-mezok DataSource tulajdonsagaba beallftva az adat-taezo nevet (megint csak listabol torteno kivalasztasa al~al)" a DataF_ield tulajdonsagukat allftotruk (ismet csak lista reven) Konyv-ID -re.e~?t. Tdbldzat haszndlata A m.zt~?keI. 'azonban meg akartuk mutatm az adat-mezok adatbazis-muveletekkel kapcsolatos hibainak a kezelesi modjat is (lasd a datKonyvTablazat objektum Error esemeny-eljarasat).tablazatkulcsmezejetol kulonbozo . Megjegyezziik. a kep-. MS Access adatbazis elerese Az alabbi peldaban a 7.osszekapcsolt adat-mezovel egyiitt. az adat-aramlast biztosfto Az adat-mezo DataBaseName tulajdonsagaba befrva az RecordSource tulajdonsagaba most az alabbi egyszeni szelekci6s mezot helyeztunk el. K6nyvek WHERE Szerz6k. Konyvek-tet. adat-megjelenitesre szolgalo vezerlesek. a~ dbra-. Az adat-vezerleshez tartoz6 nyom6gombok segitsegevel lehet igenyelni a uibldzatbeli vagy RecordSet-beli kovetkezo. es jelzi. akar az elobb emlitett gombok altai .8.DBCombo). a 'kombindlt listaes az OLE hasznalhatok adatbazisbeli adatok fogadasara. 'K6nyv-cim'. ~z a~onosit6ik alapjan keresi elo es listazza. utolso. adat-megjelenftesrc szolgalo vezerlesei kozul a jeiola-. a RecordSet elpozicionalodasakor csak azon adat-fogad6 mezok modositasa vezetodik at az adatbazisba. a lista-.es ket szoveg-tipusu Ezek azonban most ket . hogy egy adat-fogad6 vezerles altai letrehozott objektum megjelenftse egy RecordSet valamely mezejenek a tartalmat. a 3. let-tel kezelt adatbazisat hasznaljuk fel (a mintaprogram a vele kapcsolatban hasznalt adatbdzlssal egyiitt a konyv lemezmellekleten Konyvnyilvdntartds neven erheto eI). Ahhoz. 'Szerz6-nev' FROM Szerz6k. beallftottuk a reprezentalando tablazat nevet (a listabol torteno kivalasztasa altal. Megjegyezziik.illetve harem szoveg-tipusu m.heIY~. Ez az utasftas a K6nyv-cim es Szerz6-nev adatokat a K6nyv-Szerz6k tablazatban feisorol~ konyvekre. 'Szerz6-ID' = 'K6nYV-Szerz6k'.

fejezetet. A program formjaban egy adat.DataChanged Then ' Ha v. 8. az Excel dokumentum megnyitasakor automatikusan indulhasson el egy makro.Htozott a mezo. A programot futtatva. azok erteke nemjelenik meg). kibovitesevel figyelembe kfvantak venni az Excel ill az egyeb Office-programok igenyeit is. _ komplikalt formulak vegrehajtasat nagysagrendekkel meg lehessen gyorsftani. hogy egy regebbi verzi6ban keszitett. A regi verzi6k elaggott funkci6i ugyan meg altalaban miikodtethetok.ili-.meg a program felsegteruleten belul maradva . hogy a makr6k mar kizarolag csak Basic nyelvu utasftasokka fordftott formaban leteznek (az Excel4-es verziojaban bevezetett makro-nyelven mar nem) E m6dszer alkalmazasaval .2. Az Excel programozasi fejlesztokdrnyezete Az Excel'97 verzi6 e teren az elobbiekhez kepest eleg sok valtozast tartalmaz. egyetlen dial6gus-ablakban kerhessunk be. de j61 hasznalhato es programozast sem igenylo lehetosegeket ugyan mar az Excel legkorabbi verzi6i is adtak.2. ami valojaban nem mas. amelyek az Excel mukodtetese soran a program felhasznaloi interfesze altal aktivalodnak (az Excel megszokott kepernyoje csak egyfajta. es akar m6dosithatjuk is az Excel dokumentumbeli (!) adatbazis alapadatokat tartalmaz6 mezoit. az adat-mez6 gombjait hasznalva lepegethetunk a tablazat sorain. hanem szoveg-mezos megjelenitesnel maradunk) kenytelenek vagyunk a modositasi igenyt visszautasitani. Ezzel szemben az adat-vezerles Error esemenye csak a mar megkiserelt adatbazis-m6dosftas visszautasitdsat kepes jelezni: a rekord eI lett ktildve az Excel adatbazis-motorjahoz a valtoztatas vegrehajtasara. az ezzel kapcsolatos problema kezelese celjabol (mar ha nem a legegyszeriibb megoldast valasztjuk es nem cfmke.9. majd beallftottuk a reprezentalando tablazat nevet (a lista most nehany standard objektum neven kivul csak a nevvel ellatott tartomanyokat mutatja) Lakdsok-te. ezek azonban valojaban ugyanazok az epitoelemek.FEJEZET 7. a dokumentum altai tartalmazott adatbazis egy kulso adatbazis forrasakent.vagy celjakent szolgalhasson. hanem egy annal j6val kedvezobb m6dszer szerint jarunk el: az adat-mez6 valtoztatasok elott (is) felhiv6d6 Validate esemeny-eljarasaban vizsgaljuk a tiltott mezo-modositasokat: Private Sub datLakasok_Validate(Action As Integer. amely szinte teljes egeszeben e lehetosegekkel foglalkozik ** Ezek ket torol fakadnak: egyreszt a fejlesztok nem akartak teljesen elszakadni az Excel elozo verzi6ban hasznalt elnevezesektol es eszkozoktol. hogy a VB nyeIvnek az Excel-be illesztese az Excel 5-os verziojatol kezdve foIyik.automatizalhato es baratsagosabba tehet6.szer a programon belul marad6 vizsgalathoz kepest Ienyegesen nagyobb apparatust igenyel. Megjegyezziik. es a felhasznalok meg is kedveltek oket (ilyenek peldaul a makr6k es a munkalapokra helyezheto pdrbeszedes elemek'v.az adatvezerles adatbazis-frissito met6dusa ignordlja az Ar /Negyzetm adatbazis-mezo m6dosftasara iranyulo kezdemenyezest. amelyeket az MS Excel'97 nyujt standard tablazat-kezelesi lehetosegeinek a kiterjesztesere. A programozas legfobb eszkoze a Y. hogy peldaul _ munkalapokon is hasznalhato fuggvenyeket lehessen kifejleszteni. Abban mindenesetre biztosak lehetlink. Mivel ez ut6bbi m6d.a felhasznalo igenyei szerint . Bar a nyelv bovitesenek tunik az uj objektum-tipusok es metodusok oriasi garnituraja is. akar programk6dokat tartalmaz6 Excel-dokumcllllllll .illetve fejleszt6i kornyezetenek az Excel testere (objektumaira) val6 rahiizasa. Excel adatbazisokkal kapcsolatban csak tdbldzatos eleres (lasd 7.es jo-nehany szoveg-tipusu mezot helyeztlink el.5) val6sfthat6 meg. csak akkor celszeni hasznalni. es amelyek altal a tablazatok kezelese . mint a Visual Basic nyelvnek. 140 141 . a dokumentum Adatbdzis munkalapjan elhelyezett.1. Save As Integer) If txtArperNegyzetm. de az a m6dosftand6 tablazat szerkezetet analizalva "rajon" a feladat vegrehajthatatlansagara. masreszt a standard VB nyujtotta vezerlesek funkcion.asic for Applications (VBA).isuall!.DataChanged = False nem menti az adatot End If End Sub 8. * Lasd az [5] konyv 6. de mivel most mar az on-line Help tamogatasukat is megszuntettek. de mind kezelesuket. azonban programozas sztikseges ahhoz. Bizonyos egyszerii. es hibat jelez a kuldo objektum szamara (lasd 7.8 peldajat). MS Excel adatbazis elerese Az alabbi pelda egy egyszerii MS Excel adatbazis hasznalatat mutatja be (VB programja es az adatbazist tartalmaz6 Excel dokumentum a lemezmellekleten Lakasnyilvdntartds neven erheto el). hasznalatuk bizony eleg kfnkeserves. A valtozatossag kedveert azonban most nem az e16z6 reszben alkalmazott megoldast alkalmazzuk. Lakdsok nevvel ellatott tartomany altal tartalmazott tablazat adatainak "kozvetitese" es megjelenitese celjabol.a megnyitasakor vegrehajtott konverzi6 utan . es az Excel'97-ben valt teljesse azzaI. mind utasftaskeszleteiket tekintve teljesen azonosak. Az Excel programozasa E fejezetben azokat a programozasi eszkozoket vessziik szemiigyre. ha a masik eljaras nem kivitelezheto. '" MsgBox "Az ""Ar/Negyzetmeter"" kalkulalt: nem m6dosithat6!" txtArperNegyzetm. osszefuggo adatokatellenorzes mellett.. Kisebb-nagyobb elteresek" azert persze vannak. Ezutan az egyes szovegmezok DataSource illetve DataField tulajdonsagai az Access tablazat eleresenel lefrt m6don allfthatok be.2. Nem m6dosithat6k viszont a kalkulalt mezok. es akar sajat-fejlesztesu makrokat.az uj verzi6ban is j6J fog mfikodni.7. a standard Excel objektumokat fedo program-interfesz). Az adat-mezo EOFAction tulajdonsagat a fejlesztokornyezetben Add New ertekre allitva a program meg az adatbazisnak uj sorral torteno kiegeszitesere is kepesse valik (de mivel ez a kalkulalt mezok kihagyasaval tortenik. Mivel az Excel adatbazis-meghajto igen egyszerti. Eloszor az adatmezonek a DataBaseName tulajdonsagaba frtuk az Excel dokumentum nevet.

az Add met6dus' reven a '''Vuv. vagy ha egyszenien csak at szeretnenk tekinteni az irt k6dokat).'''' elemmel bovitheto. Az Excel programozasi kornyezete ketfelekeppen aktivalhato: • vagy makro szerkesztesenek kezdemenyezesekor (peldaul a Macro dial6gus-ablak ilIetve a munkalapokra. h~l~ezett gombjara kattintva keszul egy MS Excel WorkSheet tfpusii objektum. azonos tipusu objektumai kollekciot" alkotnak. ~ta~~ard . ami a VBA-beli programozas kozben tortenik. .'T''''vtstrValue objExcel. es hogy rendszerezesuk is logikusabb (jobb attekinthetoseget es gyorsabb mukodest nyujtva). vagy direkt m6don: a Tools . stb) tartalmaz.1. standard neviik egyertelmuen azonosftja (peldaul Application. az Item tulajdonsaga az a neve vel) adott objektum eleresere szolgal. tehat rendelkeznek tulajdonsagokkal es met6dusokkal: egy kollekci6 Count tulajdonsaga az • Amelyben az als6bb szintii objektum altalaban egy felsobb szintii objektum tulajdonsagakent letezik. A kollekci6k is objektumok. ezert feltetlenul praktikus megismemi a nemtamogatott funkci6k uj megfeleloinek a hasznalatat (es peldaul parbeszed-lapok celjara DialogSheet-ek helyett inkabb UserForm-okat alkalmazni). hogy az elemnek . Minden. amelyek az MS Excel program egesz rmikodese soran csak egy peldanyban leteznek.. vegul az eredmeny az A2-bol masolodik be eljarasunk strValue valtozojaba (a szamolast az A2-belijormula vegzi): Set objExcel = CreateObject("Excel.ve Egy kollekci6 egy konkret elemere akar annak a kollekci6beli sorszamaval akar kulcs-nevevel hivatkozhatunk (felteve.Microsoft Excel Objects tema •• A kollekci6k elnevezesi szabalya: objektumok tfpus-neve + tobbes szam jele (s) Az alabbi pelda a lemezmelleklet lustSinusIt nevfi Visual Basic programja.. altala tartalmazott objektumok szamat adja. egy hierarchia-szinten levo. Collection) temakoreit Ekkor azonban erdemes alaposan attanulmanyozni a konkret kollekcio-npusnak a VBA on-line Helpben leva Microsoft Excel Visual Basic Reference-beli leirasat.Microsoft Excel Visual Basic Reference .. WorkSheet besziirasakor. de olyanok is. az User Defined fuggvenyek mas fuggvenykategoriaba sorolasara szolgalo MacroOptions. Chart.lgal6 kollekci6k azonos nevii es funkcioju met6dusainak parameterezese . Az Excel minden elemet (legyen az akar a workbook. .Open App. kezdetu tulajdonsagai kvalifikaciokent alkalmazva a hivatkozast jelentosen leegyszenisitik. valamely chart vagy cell. Az Excel objektumai Tisztan a programoz6 szemevel nezve.WorkSheets("Sinus") .kollekci6hoz adasakor ilyen nev specifikalva lett). VBProject). mert a kulonbozo tipusu objektumok ta~almazasara szo. Vannak viszont olyan objektumok.Text)) & ") = " & strValue • Reszletesen lasd a Microsoft Excel Visual Basic Reference on-line Help-je Add Method (. Window).Sheet") .jelentosen elterhet 142 143 .Application.Path + "\JustSinuslt.Workbooks. lasd: VBA on-line Help .xls" objExcel.2. Az ~gyert~lmuse~ er~ekeb:n celszeni a kollekci6-elemet minel teljesebb (szukseg eseten akar Application objekturntol kezdodo) objektum-kvalifikacioval hivatkozni (az Application objektum Active . ha ilyen programozasi igeny" tamad).. tartomany-nev definialasakor). majd befrodik a Sinus nevti munkalapjanak Al-es cellajaba a szog erteke. de ott esetleg tobb peldanyban is elofordulo. megnyitodik hozza a lustSinusIt. 8. ~~ Delete Method illetve Item Property (. A kovetkezokben a legalapvetobb Excel objektumok hasznalatat nezzuk at. WorkBooks es WorkSheets) es met6dusokat (peldaul az aktualisan megnyitott dokumentumok tijraszamolasat kezdemenyezo Calculate. • 8. hogy az uj eszkozok . WorkSheets ("Sinus") .explicit vagy m6don vegrehajtott . barmely Excel dokumentum egymassal hierarchikus kapcsolatban a1I6 objektumok gytijtemenye.. vegul pedig a Delete metodussal a kolIekci6 egy eleme HIUlC.I>.Application. Megjegyezziik.2.Range ("A2") IblValue = "sin(" & Format(Val(txtRadian. valamint tulajdonsagokat (peldaul a mar emlftett Active .Range("Al") = txtRadian. de akar a programot kepviselo application is) egy-egy objektum reprezentalja.1 vagy VBA on-line Help).::. amelynek formra. amik mar csak dokumentumonkent egyediek (pl WorkBook.es a dial6gus-Iapokra helyezheto parbeszedes elemek gyorsmenujevel elohivott Assign Macro ablak Edit gombja altal). Collection).ob~ektumainak kollekci6ba szervezeset letrehozasukkor az MS Excel maga lllt~z~. Name. Az Application objektum Az objektum az aktualis MS Excel alkalmazast reprezentalja es program-szintu beallitasokat (peldaul az Options dial6gus-ablak beallftasai). FEJEZET E valtoztatasok a VBA-nak es az Excel programozasahoz hasznalt egyeb eszkozoknek (peldaul ActiveX komponenseknek) az MS Office osszes programjaba torteno cgyseges bevezeteset celozzak. (~eldaul: do~umentum megnyitasakor. lasd 8. Assistant. biztositjak az elodok szinte programozas-nelkuli hasznalatat is. Egyszerti azonosfthatosaguk es egyiittes kezelhetoseguk erdekeben az Excel s"tandard. rogton a megfelelo makro-eljarasba navigalodva.· de nemi programozassal mar azoknal lenyegesen tobbre kepesek.. WorkSheetFunction. Excel WorkSheet ob7Pcr objExcel.A.Visual Basic Editor menii-parancs altal (peldaul tij. stb). . Az objektumok hierarchiaja a tfpusaikja-strukturdjdva[* szemleltetheto.Macros .Application.xls nevii Excel dokumentum.bar prograrnozasuk ketsegkivul mas kinezetu kornyezetben tortenik . amik meg egy-egy dokumentumban is akar tobb peldanyban letezhetnek (pl WorkSheet. Az olyan objektumokat.s. az a kulonbozo standard Excel objektumok manipulalasat celozza. formulakban is hasznalhato tin User Defined kategoriajii fuggveny keszitese celjabol.az egyes objektum-tipusok jellegzetessegeinek megfeleloen .2. ezert ezzel altalaban nem szukseges foglalkozni (kiveve. ezert hasznalatukhoz ismernunk kell funkci6ikat es azonositani is kell tudnunk oket. egy worksheet.

es hogy ket.egye~ie: ~e~at ange t~pusu objektumot rendeIi. _ ActiveChart (Charts kollekcio) az aktualisan aktiv grafikonra hivatkozik (a kollekci6k lefrasat 8.tartomany) tfpusti objektumot rendeli.~vaI adott cellar _ < objektum > C II ' . < oszlop-szdm » . _ ActiveDialog (DialogSheets kollekci6) az aktiv dokumentum aktiv dialoguslapjara.W kb 00k s. Range ("A1 :B12") illetve WorkSheets ("Megrende16k") . WorkSheets (1) .' ugyanazok a rnegjegyzesek erven ese . Cells. viszont • WorkSheets ("Megrende16k") . hasznalatukat pedig peldaba agyazva az Application objektumhoz kapcso16d6an eppen az iment lathattuk). Peldaul. megnyitott osszes WorkBook ob' kt p g ~ a tuahs peIdanya altaI aktuahsan tartalmazza.0 s 1 letve a WorkBooks. Egyeb kvalifikacio hiii k ~l~todusb. hogy parameterkent Range-objektumok vesszovel elvalasztott list~j{11 megadva a tartomanyok uniojat kapjuk. a WorkSheet es a Range objektumok e 1 ~meIY a para.ce so 0 ytonos listajanak tekintve). E specialis Hivatkozas celldra A Cells az Application. Range ( "A1").etodus egy d. _ ActiveWindow (Windows kollekci6) az aktualisan aktiv ablakra... e erne.Range("C5:C10"). _ < objektum » : valamely Application. es ekkor az ActiveSheet feltetelezodik. F ormula tenylegesen az elso mun a ap -es cellajanak a formulajara-. Count ..2..!tem("bakjitty.an ~egadott (vagy .. uj dokumentum hozzaadasa eseten vis~o:t ~~OA~ 1 l~s-neve a fajl-nevukkel d az alapertelmezett) lesz.x!s") .t0tt (Clo~e met6dus).Acti veSheet. amely a parametereben a megszokott m6don hivatkozott cellahoz vagy tartomanyhoz . Szintaxisa pontosabban: < objektum >.Open fl.Cells(1 (1) 'e kI ' 5) .Range( < cella. dor 0.WorkSheets (1) . lezarhato az oss~:~~~~6~: megny~that6 egy letezo dokumentum uj dokumentum krealhato (Add metodus).vagy tartomdny >: tetszoleges. A " • (zarojelek neIktil) az osszes objektumbeli cellar hivatkozza z e szintaxis-variaciokhan szereplo < bi k h . Altala az aktualis ~e amba vagyi~ az Excel . WorkSheet vagy Range tfpusii objektum: Application eseten nem kotelezo megadni. Hivatkozas tartomdnyra Mind az Application mind a WorkSheet objektum (sot meg a Range-objektumok is) rendelkeznek egy Range nevu tulajdonsaggal. d Worksheets C9 .~~:~:s h~l~"" readonly:. A dOkumentumok k ~ k a~'bt~r:z :. de • WorkSheets ("Megrende16k") . < objektum >. az MS Excel-ben hasznalhato cella. vagy egy azonosftasat szolgalja.u megfelelo Range (. Peldaul: • Range(" A5") vagy Range ( "A1:B12") vagy Range ( "gyarak") valamennyien at.Item(ActiveWorkbook. gye asznos kis peldak: Dim wbActualBook As WorkBook Set wbActualBook -.vagy tartomdny > ) ahol _ < cella.leName.. _ ActiveCell (Cells kollekci6) az aktiv dokumentum aktiv munkalapja aktiv cellajara.1) .x s nun annyran ugyanarra a WorkB k tf 'b' ~jl-~evu E(eslY'bohrkBooks-~eli ~u~~sne~~sud:k~~~~:~ . es -. FEJEZET Hivatkozas akttv objektumra Az Application objektumnak a leggyakrabban hasznalt standard Excel objektumok eleresere hasznalt tulajdonsagai es met6dusai nem igenylik az Application objektummegjelolest sem. or MsgBox "A lap k .Name) o ~zama: " & wbActualBook. Range ( "gyarak") valamennyien a Megrendelok nevti munkalap tartomanyait hivatkozzak. ah oa<ro~~m> ' I bi k az < oszlop-szdm > a cellat azonosft6 egesz szamok: . Value az elso munkalap A2-es cellaja ertekere. wOkrk~heets (1) . valamint a Range ( "A1") hivatkozas.~kumentum azonos.dokumentumokat) (Open met6dus).< 0 ']e tum >. '" . Megjegyezzuk. =T~ue ' Ez pelda u ' ~i~~~~~Oa:ks h:O~I:~~~::t!~ ~vasara (nem m~nd~g lehetseges) * Az Item met6dus a Collection objektumok alapertelmezett met6dusa.8. kB k (2)* '1 WorkBooks("bakfiitty' I ") '. cellar hivatkoz6 Range-objektuHI vesszovel elvalasztottan torteno megadasa a ket cella altal kijelolt tartomanyt adja. IJJan az a tua IS Application ertendo.Cells (257) . A WorkBooks objekturn A WorkBooks objektum az MS Excel ro ra ktua . ActiveSheet objektumot feltetelezik. 0 ']e > asz~aIat~val kapcsolatban az objektumokkaI kapcsoIatban te~nk~' mmt armt a Range szmtaxis-magyarazatanaI - e.Cells (1. 8. Peldaul a WorkBooks ltem(2) W. Szintaxis-variacioi pontosabban: I tulajdonsagnevek kozul ActiveWorkBook (WorkBooks kollekci6) az aktiv dokumentumra. Value az elso munkalap osszes cellajanak az ertekere h ivat ozik. .2.egny. Range ( "A1") az Acti veSheet.' hivatkozza (ekkor < objektum > _t llak rf ~ sors~a~.2 bevezetoje tartalmazza.vagy tartomany-hivatkozas.-"Kolt" .met~reiben hivatkozott cellahoz a megfelelo . _ ActiveSheet (WorkSheets kollekci6) az aktiv dokumentum aktiv munkalapjara. Range tipusu objektum eseten azonban a < cella-vagy tartomdny > parameterben szereplo hivatkozas az objektumhoz relativnak tekint6dik.Range("A3:B12") . v~ r.Cells( < sor-szdm > . az aktiv munkalap Al-es cellajanak hivatkozasaul programk6dban egyforman hasznalhato az Application .:.Range("B2") tenylegesen II Megrendelok nevfi munkalap B4-es cellajabol allo tartomanyt jelenti (a masodik tartomany az elsohoz kepest relatfv hivatkozast tartalmaz). ezert neve el is hagyhat6 144 145 . = Peldaul: .a fliggvenyekhez hasonl6an .Cells( < long integer sorszdm > ) . Value az elso munkalap Al-es cellaja ertekere-. met6dus kulcsszavas ~~ramet:.WorkSheets Workbooks.

Hide Cancel: = < logikai ertek > metodus: a dialogusablak bezarasa celjabol.0 Dialog utasftas megjelenfti a Pdrbeszed nevu dialogus-ablakot es bezarasa tipusanak megfelel6 ertekre allitja a retVal valtozo erteket (a Cancel-.Add 'hogy hivatkozni tudjunk a kx ee Ltu:« . Set objExcel : CreateObject("Excel.Value lblValue: "sin(" & Format(Val(txtRad. eloszor ekkor is az elso megoldas modszerevel celszeni letesztelni a forrnulak es a . a megfelel6 tulajdonsagaik beallitasa (lasd a gyorsmenujuk Format Control..WorkSheets("Sheetl"} .3.Name wbActualBook.vagy a jelzett WorkBook dialogus-lapjait kepviseli (mar emlftettuk...WorkSheets("Sheetl"} .Name a . (ettal kezdve .2. egyebkent tires dialogus-lapot. vagy az ablak jobb fels6 sarkaban lev6 bezaro gomb lenyomasanak hatasara False.megfelel6 kezelest biztosito . Worksheets ("Bakfitty") . Az egyes objektumoknak makro-eljarashoz kapcsolasa a gyorsmenujukben Ievo Assign Macro.kodik. mig az OK gomb hatasara True lesz az erteke. vagy kezelesuk programozast igenyel. A lemezmelleklet DialogSheetTeszt konyvtarban levo Excel dokumentuma peldan mutatja be az Edit Box vezerlo-objektumok kezeleset.Show 8. Felhelyezesuket kovetoen.4. es esak aztan uj formara pofozni. valamint a parbeszed-Iapra helyezheto vezerlo-elemek Forms eszkozsorat.tieve ze s e ce l j ebo l. Add MsgBox "Az en nevem: " & wbActualBook.az Edit Box vezerlo-objektumok altai -. Hatasara az Excel un dialogus-tervezo kapesol: megjelenft egy negyzethalot. Name = "Bakfitty" . A Visible tulajdonsag a munkalap lathatosagat szabalyozza. ahol < logikai ertek > a kilepes modjat hatarozza meg (ez a Show met6dus altal visszaadott ertek negdltja). Egy ilyen panel letrehozasa a munkalapok fulenek gyorsmenujeben az Insert. helyette: atnevezes 8.Name : "Nyilvanmartas" wbActualBook.Text) strValue: objExcel. igy peldaul: ("Megrende16") Ha a kepletek nem uil bonyolultak (esetleg esak nehany egymasra-hivatkozo formulabol es kis-meretu tablazatokbol allnak). Fontosabb met6dusai: Show: retVal a dialoguslap megjelenftesere szolgal. ami a fulen Irva jelenitodik meg.8. A WorkSheets objektum A WorkSheets kollekcio az aktfv. valamint a nyom6gombok Dismiss tulajdonsaganak a hasznalatat. ami kis programozassal jar). A DialogSheets objektum A DialogSheets kollekcio az aktiv.Range("A2"} . Parbeszedpaneleket leggyakrabban opei6k kozul t6rten6 valasztas celjabol hasznalnak (ha mar adatbekeresre is sor keriil . Set wrkSheet : Worksheets. Uj WorkBook hozzaadasa Nev olvasasa: mukodik. parancsaval felhivott Format Control dialogus-ablak Control.Caption : "Fej" . 147 . Az alabbi pelda a JustSinusIt program modosftasa. az objektumok vagy egy mar Ietezo.. et. wrkSheet .DialogFrame.Activate ' mar hallgat a nevere (lap aktivalasa) Worksheets ("Bakfitty") . akkor e modszer konnyen kivitelezheto (kellemes dolog tudni. rJj Excel WorkSheet object objExcel. Hasznos peldak: Dim wrkSheet As Worksheet ' Dekl e. es rajta egy esak ket (OK es Cancel feliraui) nyom6gombot tartalmazo. hogy kalkulacionkba senki sem piszkalhat bele).. FEJEZET WorkBooks . amikor az objektum altal reprezentalt vezerlo-adat megvaltozik). amely nem igenyli egy megfeleloen elokeszitett Excel dokumentum letezeset..Labels ("Nevfej") . amelyek igen keyes programozassal kezelhetok. Az Add metodust a WorkSheets kollekciora alkalmazva egy vagy tobb tij (automatikusan Sheet .Caption ("Megrendel6") a Megrendelo dialogus- lapon levo dialogus-ablak fejlecere hivatkozik.2. Bonyolult.. Fontosabb tulajdonsagai: Name: a dialoguslap neve (ami a lap fulen olvashato).vagy ajelzett WorkBook munkalapjait kepviseli.es egyeb tulajdonsag-lefro lapjait) utan az egyes objektumok vagy mar onmagukban is mukodesre keszek (ha az altaluk megjelenftett adatok esak munkalapok cellaihoz vagy tartomanyaihoz kapeso16dnak). Az Activate met6dussal vegezheto aktivalasa hatasara a munkalap kerul eloterbe es miikodokepesse valik.Range("A2"} .es kimeno adattal dolgoz6 kalkulaciok eseten az elso m6dszer ajarhatobb. Cimke-szoveg DialogSheets DialogFrame: DialogSheets Megrendel/i dial6guslap nevere hivatkozik. Ez esetben az egyetlen lehetoseg a vezerlo-' objektumoknak egy . WorkSheets ("Sheetl") . . aminek Sheet] munkalapjat felhasznalhatjuk a kalkulaciora: az A2-es eellajaba belrva a kivant formulat (egyebkent a megoldas az el6z6hoz hasonlo). hogy ez az objektum-tipus mar az on-line Help altai sines tamogatva). Ennek uj erteket adva nevezheto at a munkalap. nevu) munkalap szurhato be egy megadott lap ele vagy utan (nem mondva: az utolso lap utan).urik: egy WorkSheet objektumot. igy peldaul: .meghfvas" tokeletes mukodeset.rsil..Visible : False' A lapot lathatatlanna tessziik WorkSheets ("Bakfitty") . akkor ez mar altalaban az adattartalom vizsgalatat is igenyli.makro-eljarashoz kapcsolasa (ez az eljaras minden olyan alkalommallefut.Sheet"} .SaveAs Filename:: "Nyilvanmartas" ' ' . paraneesal el6hiv6d6 Insert dialogusablakban MS Excel 5. A kollekcio elemei olyan parbeszedpanelek.Value: Val (txtRad. paranes hatasara el6j6v6 Assign Macro dialogus-ablakkal tortenhet. haesak nem valtoztatunk e gombok beallitasan). peldaul a : DialogSheets("Parbeszed"}..vagy egy akkor letrej6v6 uj rnakro-eljarashoz kothetok. Az Excel ugyanis egy tires dokumentummal indul. sok be. A WorkSheet hasznos tulajdonsaga a Name. a dialoguslap dialogus-ablakat reprezentalja. de ez igy nem mti..Formula: ":SIN(RADIANS(Al}}" objExcel.Text}} & "} : " & strValue valasztassal kezdemenyezheto.. A kovetkezokben a DialogSheet objektummal kapesolatos informaciok feldolgozasahoz adunk tampontokat. Range ("Al") .. Persze.

Buttons (nyom6gombok) specifikacios Dialogus-ablakba helyezve megsziinnek a Font es az Alignment Iehetosegek. A Cancel jelolo-mezo ki / be . szoveg-megjelenites: mint elobb.kapcsolt allapota a Value (alapertelmezett) tulajdonsaganak logikai ertekekent allfthato be (False / True). A parbeszedes vezerld-elemek programozasa Az egyes parbeszedes vezerlo-elemek programozott feldolgozasahoz sziikseges kulcsinformaciokat targyaljuk (az [5] konyv alig reszletesebb. hogy e gomb aktivalodik az Enter billentyii lenyomasanak a hatasara (amennyiben a fokuszt nem e gomb birtokolja). a szoveg akar a Text akar a Caption tulajdonsagaikban beallfthato.vagy parancsa valasztasakor. az ilyen nyom6gomb lenyomasanak hatasara (fuggetlenul a gomb Dismiss kapcsolojanak az allasatol) a dial6gusablakot megjelenito Show met6dus False ertekkel ter vissza. Height. az InputType tulajdonsaga pedig a beviheto adat tipusat specifikalja (erre szolgalo konstansokkal: xlFormula / xlInteger / xlNumber / xlReference / xIText). hivatkozassal a Dial6gus ab"tak nevfi dialoguslap okButton nevii nyomogombjanak DismissButton tulajdonsagat lehet elerni". viszont harem fontos uj tulajdonsagot kapnak. A gomb aktivalasa eseten az Excel a gomb OnAction tulajdonsaga altal definialt makro-eljarast indftja (lasd: Assign Macro dial6gus-ablak). • A vezerlo-objektumok kollekcio-neve a leirasuk cimeben szereplo angol nyelvu sz6 •• Igen j6 szolgalatot tesz egy objektum egymasutani sorozatban torteno tulajdonsag-hivatkozasainak egyszenisitesere a With.lathatosag.pozicio).es a Max tulajdonsagai specifikaljak. Ha a bevitt adat nem felel meg az objektum InputType tulajdonsaganak. Dismiss (jelolo-mezo): egy bekapcsolt Dismiss es kikapcsolt Cancel jelOlojii nyom6gomb megnyomasa a dialogus-ablak bezarasat eredmenyezi (egy dialogusablaknak tetszoleges szamu bekapcsolt Dismiss kapcsolojii nyom6gombja lehet). EditBoxes (adatbeviteli objektum) - A befrt adatot az objektum Text tulajdonsaga tartalmazza. csoport-hivatkozo utasftas (lasd: 4. OptionButtons (opci6gombok vagy valasztokapcsolok) Cancel (jelolc-mezo) : egy dial6gus-ablak csak egy bekapcsolt Cancel tulajdonsagti nyom6gombot tartalmazhat.3 fejezet) 148 149 . akkor a dialogus-ablak eltunik es a dialogus-ablakot elindft6 Show met6dus True ertekkel ter vissza. GroupBoxes. nyom6gombok) is Szoveget is megjelenitenek. Az objektumoknak vannak altalanos tulajdonsagaik (Visible . Left. Az egyes vezerlo-objektumok a kollekciojukon keresztul erhetok a programban'.. also. Spinners (leptetok) - A lepteto aktualis erteket a Value tulajdonsaga tartalmazza.kapcsolt allapota a gomb DismissButton tulajdonsaga False / True ertekenek felel meg.. de mar a True ertekii DismissButton tulajdonsagu gombhoz tartoz6 OnAction eljaras rnukodeset kovetoen) a f6kusz az adat-hibas rnezore allitodik es hibailzenet jelenitodik meg (lehetoseget adva a hiba korrigalasara). az alabbiakban az eltero kezelesmodot igenyloket reszletezzuk.8. ezek: - Default (jelolo-mezo) : bekapcsolt allapota (illetve True erteke) jelzi. de peldakat is tartalmaz). Top. A DismissButton tulajdonsagaban True erteku nyom6gombra kattintva az alabbiak tortennek: az Excel a gomb OnAction tulajdonsaga altal definialt makro-eljarast inditja (ez az eljaras szolgalhat a dialogus-ablak mezoibe vitt adatok helyessegenek az ellenorzesere). akkor (meg a dial6guslap bezarasa elott. az OnAction eljaras vegeztevel az adatbeviteli mezok tartalmahoz kapcsolodoan tfpus / konzisztencia ellenorzes hajt6dik vegre (a mezoknek a Tab Order-uk Az opci6gomb ki / be . Width .es felso hatarait az objektum Min. Buttons (cimkek.. Labels.ra allftasaval tobbsoros megjelenftes is lehetseges. az adatbeviteli mezok MultiLine tulajdonsaganak True . az input-f6kuszt hibatizenet mellett a mezore allitva..3.Buttons ("okButton") .DismissButton altal meghatarozott sorrendjeben): az elsa nem megfelelo adat-tipusu mezonsl leall az ellenorzes. CheckBoxes (jeloldnegyzetek avagy roviden: jelol/ik) Harom lehetseges allapotuk (On / Off / Grayed) a Value tulajdonsaguk ertekevel ekvivalens (a megfelelo konstansok: xlOn / xlOff / xIMixed). FEJEZET 8. amely a DismissButton tulajdonsagot False .ra allfthatja. A Dismiss jelolo-mezo ki / be . amennyiben a dialogus-ablak osszes adatbeviteli mezejenek tipus-ellenorzese hiba nelkul zarul es a lenyomott gomb DismissButton tulajdonsaga sem lett a gomb OnAction eljarasa altal False-ra allitva. Bekapcsolt allapotaban e gomb aktivalodik az Esc billentyii lenyomasakor. Igy a DialogSheets("Dia16gus ablak") .kapcsolt allapota a gomb CancelButton tulajdonsaga False / True ertekenek felel meg. csoportpanelek. ilyenkor megjelenitheto a fuggoleges gorditosav is (DisplayVerticaIScrollBar-t True-ra allftva).a nyilakra torteno kattintas altal bekovetkezo Value ertekvaltoztatas merteket a SmaliChange tulajdonsag szabalyozza. szoveg-megjelenftes: mint elobb. Enabled mukodokepesseg.5. illetve a rendszermenu bezaro ikonja.

. Mivel mindezek kezelese a VB-hez hasonl6. x 1~~P ded : tobb elem is kivalaszthat6 (a kijel6leshez a Wzndows Explorerxh xhea~onI6' m6don a Shlift. tobb okbol is: • • • • II Az objektumok tulajdonsagai: _ List: tombkent tarolja az altaluk megjelenitett. ' al .i§retii.:.eszkoztarakban illetve -sorokban miikodtetett nyom6gombok kesziteset tamogato objektum-tipus.a.xls dokumentumot) 151 150 ..tobb-kevesebb elteressel . a Min. DropDownes (leny{[6k) (a tombot akar explicit 8.'alOg'SheetS("DatumLap") ~ Array ( "Jan".formra helyezett adat-objektumhoz kapcsolva . "Marc.ListBoxes("Fedev") D1.a~ok. ToggleButton vezerles: a kapcso16 jelleggel .tat m6don akar az Array fiiggvennyel kepezve). a UserFormilletve a rahelyezett vezerlesek programozasa . " .epteto~6z h~so?l? "k"d" liek de' a g6rditosavnak a g6rditokockatol kulonbozo helyere tort~no mu 0 esu.altalaban nagyobb tudasuUserForm-ra teheto megfeleloje. az elozovel azonos listat produkal (de masik tulaidonsag allitas~ ~l~al). az egyes lapok azonosftasa a lapok fulen olvashat6 nev alapjan tortenik. FEJEZET Scrollliars (gorditosavok) . Ha lehet valasztani. amelyet praktikusan az objektum szamara . String tipusii tomb a fel~v h6napnev~inek r6:vidites~vel van feltoltve akkor a vele vegzett ertekadas ugyanugy megfelelo eredmenyt ad.!tal1(\il". peldaul: . . az ilyen tipusu mezok . . mintapeldakkal kiegeszftve targyaljak.~~. a Visual Basic for Applications on-line Help-nek a Microsoft Forms programozasaval foglalkoz6 ~ temakorei e vezerleseket tobbe-kevesbe reszletesen es j61.a ~stap~~e~ ListIndex tulajdonsagaba is a megfelelo sorsza~ kerul? az adatbevite 1 0 ~e urn x tulajdonsaganak vaItoztatasa ellenben nines hatassal a hstapanelre. de ha a Felev nevii. de a kivalasztott vagy a beirt szoveg az objektum Text tulajdonsagaban is megtalalhat6. ez . az bekerul az adatbeviteli objektu~ tulajdonsag~b~ e~. MultiSelect (csak listapanel eseten) : a kivalasztasi m6dot definialja. A Value.AZ EXCEL PROGRAMOzAsA 8. ezert reszletesen nem foglalkozunk veluk."l ehozasuk az Excel programfejleszto kornyezeteben az Insert menu UserForm p:. _ ListFill~ange (a lista alternatfv megadasi m6dja): tartalma a li~tat ho~d~z6 tartomany (Range-kent megadva). eletszagu peldan mi is bemutatjuk hasznalatukat (lasd a UserFormTeszt.. az MS Office programok minden teren a UserForm kesziteset tamogatjak..~ist Anr . de mar teljesen megjelenitheto reszet mutatva).es a Max valamint a SmallChange tu~a~don~.erteke tlPUSU a istana meg e eo. a standard Excel hivatkozas-szoveget az objektum Text tulajdonsaga tartalmazza.k?mbinaci6ja > ~ az adatbeviteli-objektum resz sajat nevvel IS rendelkezik.:. amely egy formon beluli vezerlo-mezok lapozhat6 megjelenfteset teszi lehetove.a mezo elhagyasakor generalodo Exit esemeny-eljaras dolgozhat feI. a lista'megfelelo elernenek a kivalasztottsagaval ekvlvalens). Itt c. tires useiform-al).~. r r U. Kivalas~tva egy ~~~~el:!~t. MultiPage vezerles: mas objektumok tarolasara .oroljukaz alapvetoen uj funkci6kat biztosft6 vezerles-tfpusokat.L~stF~llRange . konstanSa1: _ xlNone: csak egy elem valaszthato ki. egyszerre megjelenitendo mezoket az objektum egy kartoteklapjara teve. Az e vezerlo-mezo reven megjelenitett kartoteklapok altalaban egyedi kinezetiiek (a mezo altal reprezentalt objektummal kapcsolatos osszes inforrnacio egy-egy osszefuggo.. Combination List-Edit (listapanellel kombinalt adatbeviteli objektum) Az obiektum tenylegesen egy listapanel es egy. egerrel tamogatott lehetoseget biztositja. IS' le : tobb elem is kivalaszthat6 (kattintas kapcsolja a klv~lasztottsagot). valamint a Forms eszkoztar (benne a UserFormfa helyezheto standard vezerlesekkel). .ListBoxes "H6napok!Al:A6" (nFelev") . - i-: ~. egy tanulsagos. ' DialogSheets ("DatumLap") . UserFormok keszitese A UserForm a dial6guslap alternativaja a felhasznaloval torteno kommunikaciot biztosit6 parbeszed-lapok keszftese celjabol. peldaul: ha a H6napok nevu mun a ap tartomanya a fenti honapneveket tartalmazza.' . Az egy lapon."" " liMa] II IIJunll) r megsziint a tamogatas a DialogSheet-fejlesztok szamara. akkor a.vagy tartomany-hivatkozasok specifikalasanak az Excel beepitett dial6gusaiban is hasznalt intelligens. Hatasara megnyilik a form-tervezo (benne egy ". raadasul az ut6bbi vezerlesek kore bovitheto is. I'd ' _ ListIndex (csak xlNone ertekii MultiSelect eseten): a kivala~ztott lista-e em m e~e" Selected (csak xlNone-t61 kU16nbOzo MultiSelect eseten): tart~lma egy l~gl~al I' k f 1 1" rneretii tomb (e tomb valamely elemenek a True.a Frame-hez hasonl6an . . minden dial6guslapra helyezheto vezerlesnek van .a rnegfelelo Visual Basic beepftett vezerlesekehez hasonl6 (hacsak nem hasznaljuk a nagyobb rugalmassagot biztosito specialis lehetosegeiket). - Combination Drop-Down Edit (lenyiloval kombinalt adatbeviteli objektum) Hasznalata a lenyil6kehoz hason16. akkor a ketfele megoldas kozul az elobbit ajanljuk. lis. tt 'rt 'kk 1 altoztaqa kattintas a Value tulajdonsagot a LargeChange altal tart mazo e e e v ' ListBoxes (listapanelek).' .' .'('am:saval kezdemenyezheto.akar adatbazis-rekordok logikai tulajdonsagainak reprezentalasara is hasznalhatok. es szcretnenk tag terer hagyni az Oivaso=ak a vezerlesek programozasi lehetosegeinek rnegismereset szolgalo felfedezo kedve szamara'.. adat~eviteli-obje~tum. "Febr".illetve a Ctrl billentyiik is hasznalhat6k).~~6 .'~I. ~~K:gem1i{ve feladatkoruket es a hasznalatukhoz szukseges legfontosabb tudnival6kat: RefEdit vezerles: cella.. A lapok kozti lapozast a lap fulenek kivalasztasa (rakattintas) kezdemenyezi.kepes vezerles.4. 11 II .

Sub Workbook_Open() tesztButton_Click() End Sub . Nehany esemenyfajta kezelese akar tobb objektum-szinten is tortenhet. Az alabbiakban csak felsoroljuk az egyes objektum-tipusokhoz esemeny-fajtakat. lapozhatova. hatasukra a megfelelo eljarasok aktivalodnak (lasd: Assign Macro).a WorkBook mentese (a mentes megakadalyozharoj. hogy aztan az esemeny tipusat benne kivalasztva az esemeny-eljaras kerete is megjelenjen (bar az eljarasok neve csak az objektum tipusat es az esemeny jelleget tukrozi.n azonnal aktivalodik a tesztButton_Click eljaras.femjelzett" ese~eny-kategona ~ekap~solasaaz esemeny bekovetkeztekor meghfvand6 eljdrds nevenek a megfelelo tulajdonsagba Irasaval tortenik (az aktualis hozzarendelest fires szoveg befrasa szunteti meg): Application.igen . hogy esetleg csak a tablazat bizonyos .a WorkBook megnyitasa. tartalmanak barmilyen okbol tdrteno megvaltozasakor keletkeznek: • • • • vagy Activate .a WorkSheet deaktivalasa (inaktfvva valasat kovetoen). Ezeket foglaljuk ossze e fejezetresz hatralevo reszeben. latvanyossa teszi az Excel-szerii. Az informaciok megjelenitese e mezo reven is kartoteklapok altal tartalmazott vezerlo-elemekkel tortenik.a WorkBook aktivalasa (ha nem az volt az aktfv).4 fejezetreszben emlftett DialogSheetTeszt dokumentum WorkBook o~Jektuma Open eserneny-eljarasat az alabbi m6don megfrva a dokumentum ~m?en megnyita~at k?~et?e.egy kepernyon bemutathat6 oszlopainak tartalma valik gyorsan elerhetove. a 8.vagy deaktivalodasakor. egy munkakonyvhoz kapcsolodoan viszont csak a benne levo lapok aktivalodasakor. esemenykezelesi eljarasok Esemeny-kezelo eljarasok Application. de itt minden kartoteklap azonos elrendezesu: az egyes lapok az informacio-gyujtemeny egyes kartotekjainak felelnek meg.barmely munkalapjanak ujrakalkulalasat kovetden. A lap-fiilre tOrten6 kattintas az objektum szamara Click esemenyt general (Iehetoseget nyujtva az altal a tartalmazott vezerlo-elemeknek a kivalasztott lapfiilnek megfelelo informaciokkal val6 feltoltesere). Az esemeny-eljarasok szerepet az Excel el6zCl verzioiban specialis nevti makrok toltottek be.igaz: nemr programozas aran . egye~ e~emen~tfpusok akkor generalodnak. direkt mentes vegezheto. A tesztButton_Click eljaras meghivasa a Wor~heet . A TabStrip mezo . vagy a WorkBook bezarasa megakadalyozhato). valamint a vele kapcso!~tb~ tarolt informaciok megvaltozasakor generalodnak (zarojelben pontositas. hogy a celunknak megfelelore talaljunk.5. a Sheet Activate esemeny akar Application-. akar WorkBook szinten is elofordulhat: ! az alkalmazas szintjen barmely munkakonyvbeli. adatbeviteli mezo megvaltozasa) generalodnak. azonban valamennyi esemeny-eljaras ahhoz az objekturnhoz kototten tarolodik. Esemenyek. Calculate .s :" Ezen utasftas eredmenyekent az aktualis Excel alkalmazasbeli ablakot aktivalva meghi~6dik az utasitasban szereplo < eljaras > (az ablak tipusanak megfelelo valamilyen tevekenyseg vegrehajtasa celjabol). ha a rajuk vonatkoz6 igenyunket az App_lz~at~onobJ.a WorkSheet aktivalasa (ha nem az volt az aktfv). egy • • • • • 8. - a J?ialog~heet szi~t?ek a dialogus-lapon vegzett felhasznaloi kezdemenyezesii tevek~n~segek ha~asara (gomb Ienyomasa. Using events with Microsoft Excel Objects temakore alatt olvashato lefrasok es n hozzajuk fuzott mintapeldak. Ebben egyebkent jol segitenek a VBA on-line Help.a WorkBook bezarasa (meg mentes-kerdes eldtt. - • E m6dszer lathatoan nem teszi lehetove az Application objektumhoz kotott esemeny-eljarasok ehhez mas eszkoz (a konyvunkben nem targyalt Class-modul) keszftese szukseges fnisttl! 152 153 .2. fajtai a Workbook szintuek a vele kapcsolatos tevekenysegek soran. BeforeSave . Peldaul. tablazatos adatbazisok rekordonkenti (azaz: soronkenti) megjeleniteset es megkonnyiti a koztuk torteno valasztast _ azzal a hatulutovel. WorkBook. illetve benne vegezheto tevekenyseg): Open . • SheetCalculate . OnWindows= < elj ara. WorkSheet es Chart tipusii esemeny-eljarasok barmely konkret. Activa!e .Applicat~o~ objektum On Windows tulajdonsag-nevevel . FEJEZET AZ EXCEL PROGRAMOZA. Pe!daul. Az . Maga a mezo csak a kartoteklapok fiilein megjeleno szovegeket tarolja (egesz pontosan: a Tabs tulajdonsagaban tarolt Tab-objektumok kollekciojan keresztiil elerhetoen). definialt fontosabh - dialogus-lap megjelenftodeset eredmenyezve. Deactivate .8. A WorkBook.sA TabStrip vezerles: az ilyen tipusu mezo kartotekszenien tarolt informaciogytijtemenyek megjelenitese celjabol praktikus.a WorkSheet tijrakalkulalasat kovetoen. WorkSheet es Chart tipusu objektumokkal kapcsolatban frhat6k.ektum ~egfelel6 tulajdonsaganak beallitasaval vagy met6dusainak segitsegevel bejelentettuk. Change _ barmely cellajanak nem ujrakalkulalasb61 eredo megvaltozasakor. Egy konkret objektum esemenyeljarasainak k6dablaka a program VBA fejleszto-kornyezetenek Project ablakaban a megfelelo Excel objektumra' torten6 dupla-kattintassal hivhato e16. amelyiknek a kodablakaban lathato is).a WorkBook deaktivalasa (inaktfvva valasat kovetoen).szi~tiiek a munkalap aktivalodasakor. Deactivate . Az egyes objektum-tipusokhoz kot6d6 esemenyfajtak neve eleg kifejezo ahhoz. aktualisan megnyitott allapoui munkakonyv megfelelo objektumaihoz kapcsolhat6k. B~foreCI~se . Az Excel -ben elofordulo Ienyegesebh esemenyek szintjei.

a MacroOptions met6dus pedig a fuggvenyhez kapcsoI6d6an "sajat" on-line Help informaciok specifikalasahoz. standard helyuk a Windows installacios fokonyvtaranak-.2. de nem foglalkoztunk veluk): • • • az eljarasokat / fuggvenyeket / eszkozoket tartalmaz6 (modul.OnTime Az ilyen . parameterekkel rendelkezo (!) esemenyek bekapcsolasa az alabbi szintaxisok szerint tortenik: • OnKey ahol • (eljaraselinditasaegy Key:= > is 8.6.. nehany .List of Worksheet Functions Available to Visual Basic temakoret). 8. False erteke eseten pedig az < eljaras > "ebresztesenek" kikapcsolasa tortenik. szoveges vagy datum adattfpusiiak lehetnek (termeszetesen. WorkSheetFunction kvalifikacio hasznalando.fuggvenyek csak VBA for Excel .< eljaras 8. gomb lenyomasara megjeleno Macro Options dialogus-ablakban beallithato a fuggvenyvarazslo altal vegzett szerkesztesuk soran megjeleno Ieiras.torteno aktivalasanak modjaval. a tartalmaz6 (modul. "abszohit" szoftver-vedelmet biztosft6 Add-In modul keszftesevel (ezekolyan Excel dokumentumok. azaz: cellak ertekei nem m6dosithat6k. Beepitett.alapveto kovetelmenynek kell teIjesiilni. Beepitett fuggvenyek hivatkozasa programban Az Excel munkalapon hasznalhato fuggvenyeinek a programk6dban alkalmazasaval kapcsolatban az alabbiakat kell figyelembe venni: torten6 Az e kriteriumokat kielegito fuggvenyek a fuggvenyvarazslo User Defined fuggveny .ill dial6gus lapokb61 allo) Excel alkalmazas bemasolasa az Excel installacio XLStart konyvtaraba.Range ("Al: C10" ) answer = Application.valamint a parameterei kizarolag elemi numerikus.formulaban hasznalva a fuggveny valamely parametere tartomanyra.3). Felhasznaloi fiiggvenyek hivatkozasa munkalapon billentyu-kombinacio < bill-komb >.amint az az. hivasukkor a fuggveny neve elott az Application. FEJEZET . sem a kepemyo kinezete. ha . lenyomasanak hatasara) : := < eljaras > Application.6. Procedure := < eljaras >. peldaul: Set myRange = Worksheets ("Sheetl") . alabbi peldaban is latszik. valamint a fuggvenyt aktivalo billentyii-kombinacio. LatestTime := < legkes6bbi inditasi id6 >. akkor helyette Range-tfpusu objektum-hivatkozas alkalmazand6. e fuggveny a mukodese soran sem kozvetlenul.Repeat Text :=< uj-nev >.1. a fuggveny.OnUndo Text := < uj-nev >.xls dokumentuma szolgal. munkalapon is hasznalhato .vagy megfelelo tipusu konstansok. - es kezelo eljaras > Procedure := < eljaras • OnRepeat (az Edit menu Repeat parancsa nev-kiegeszftese hozzarendelese) : Application. vagy cellara hivatkozik. fiiggvenykent deklaralandok (lasd 4. Schedule := < allitas jelz6 > OnTime (eljaras elinditasa egy idointervallumon belul) : Application. vagy a fuggvenynek mas varazslo-kategoriaba val6 atsorolasahoz is tamogatast nyiijt is)..az irasuk kozben betartand6 .Min(myRange) 154 155 . cellak nem szurhatok be.es felhaszmil6i fiiggvenyek E fejezetreszben a munkalapon is hasznalhato.tin felhasznalo altai definialt.7.OnKey < eljaras Procedure az eljaras neve (ha iires. hogy az Excel el is fogadja es j6l mukodtesse 6ket. azonban neviiket a Macro Name mezobe beirvaa szerkezet ismeroskent udvozli oket. Ahhoz.beli programozassal keszithetok. Hasznalatuk peldajaul a lemezmelleklet ExcelFunctionTeszt. EarliestTime := < legkorabbi inditasi id6 >. ezek az alabbiak: a VB-ben szokasos m6don. AZEXCEL Az Application objektum metodus-neveivel "femjelzett".6. a WorkSheets kollekci6val kapcsolatban semmilyen rnuvelet sem vegezheto. es lehetove teszi szamukra tovdbbi opci6k definialasat is (az Options. Eljaras / fuggveny . sem kozvetve nem valtoztathatja meg az Excel-komyezetet.lsAddin tulajdonsaga True ertekure lett allftva Microsoft Excel Add-In formaban torteno kimentesuk elott. kategoriajaban listazodnak. amik WorkBook.. vagy a parameter deklaraciojanak megfelelo tipusu adatokat eloallito cellak).6. • OnUndo (az Edit menu UnDo parancsanak nev-kiegeszitese hozzarendelese) : Application. ahol az < aLl i. es kezelo eljaras > - Procedure . 8. a fuggveny-hfvaskori parameterek . valamint azok "sajat" fuggvenyekkel tOrten6 kiegeszitesenek a modjaval fogialkozunk.8.WorksheetFunction.alkaImazkodva az Excel korulmenyeihez . es bar a Macro dialogus-ablakban nem lathatok (hiszen nem is makr6k) . akkor a hozzarendeles t6rZffdik).ill dial6gus) lapoknak a hasznalo alkalmazasba tOrten6 bemdsoldsdval. esetleg elozoleg rejtette teve oket.gyiijtemenyek Keszftesuk m6djai (az tin DLL-ek keszftese a legjobb. a cellak formulaiban meghfvhat6 standard Excel fltggvenyek program-kodban. nem valtozhat meg sem az Excel kalkulacios m6dja. vagy felhasznaloi profilok hasznalatakor a megfelelo profilkonyvtar Application Datd-Microsofi-Addlns alkonyvtara).t a s jelz6 > True ertekenel e "vekker" beallftasa-. - a legtobb munkalap-fuggveny hasznalhato (az elerheto fuggvenyek listajat illetoen lasd a VBA on-line Help .. nem torolhetok es nem formazhatok at.

MsgBox "Az ada. (A Forms Cance1-hez hason16 return-valtoz6ir61 . A form a fajl megnyitasakor automatikusan jon elo. 1. Intersect (Range (ref Destination. de nyomogombbal is elohivhato... Melh~klet: Elnevezesi konvenci6k Objektum-nev prefixek Valtozd-nev prefixek A program junkci6ja az. Else ' kii10nben pedig az eLebb i. nero fedheti 1e a ""kigyujtes he1ye"""" "Hiba" Cancel = True 'a f6kuszvaltast (a mez6 e1hagyasat) is letiltjuk . hogy gyakran bonyolultnak tuna funkciok oldhat6k meg egyetlen lepesben. Esemeny-keze10 . Az alabbi k6d (mely a refDestination mezo Exit esemeny-kezelo eljarasa) azt mutatja _ ami egyebkent az Excel programozasara igen jellemzo -.. hogy Solver-szeruen komplex funkciok (lasd [2]) Excel-beli megvalosftasahoz programozasi peldakent szolgaljon. ad . mar emlitett UserFormTeszt program dial6gus megvalositdsdra hasznalt formjat. amit .. Set tab1eDestination = Range(refDestination.. valtoz6t. hibaiizenetet kovecoeri . amely az ezen ertekekkel sziirt sorokra egy kijelolt . es az adatbazis-fuggvenyek "osszekapcsolasa" utjan lehet megtenni. FEJEZET 8. a ByVal References in Microsoft Forms tema sz61) End If If 156 157 . hogy egy Excel adatbazis valamely oszlopanak ktilonbozo ertekei alapjan olyan tabldzatot generdljon. fedes eseten hibailzenetet . Mintapelda: az Excel programozasa Az alabbiakban a konyv lemezmellekleten is kozreadott. valamint a dialogus altal kapott adatok alapjan elodllitott tdbldzatot mutatjuk be. .. mez6k nem fedik-e 1e egymast. vagyis hogy egy lepesben vegezzen el egy olyan tevekenyseget.8. tab1eSe1ected) Is Nothing Then 'Ha nincs tiedee : bea11itjuk a tab1eDestination . csak a megfelelo eszkozt kell hasznalni hozza (tehat..s t..es szinonimai alapjan).8. art .Text) ' . A program val6di celja azonban az. kicsit altalanosabban ..az Excel tablazat-generald automatizmusa (Table funkci6. lasd [2]).baz i. Text) . mielott lazasan elkezdenenk programozni. Application.. nem kicsit kutakodni a Help-ben az elvegzendo funkci6 lehetseges neve.igaz. e1jaras: hogy az HKigyiljtes he1ye:H mezo e1hagyasakor hiv6dik HAdatbazis-tab1a: H es a HKigyiijtes he1ye: H . Azt vizsga1ja.muveleti'' oszloppal kapcsolatosan kiszamitja az Excel adatbazisfuggvenyek ertekeit.t.

kep cfmke hurok. itt: csinald! dupla kattintas (egerrel) kiertekelni eserneny f6kusz • E melleklet az informatikai szakszavaknak csak a modern jelenteset tartalmazza 159 . Mellt~klet: Visual Basic "Szakszotar" Informatikaban hasznalatos szakszavak: * assignment array bug bound breakpoint button checkbox click combobox command condition conditional constant control debug directory drive do double click evaluate event focus ertekadas. ablak keret (.csoportkepzo) fuggveny csoport kiemelt abra. csinalni. itt: hiba vmihez kapcsoI6d6 megszakftas] pont gomb jelolo-negyzet (mezo) kattintas (egerrel) kombimilt listamezo parancs. form.button: nyom6gomb feltetel felteteles konstans. ertekad6 tomb poloska. itt: objektum eljarasa opci6 opci6s-.2. de . maszk. karika met6dus. valaszto. (US) bogar. nem valtozo form frame function group highlightffd image label loop method option optionbutton picture procedure reference resume subroutine textbox timer until userform while wildcard urlap. vagy radi6-gomb kep eljaras hivatkozas folytatas eljaras (rov: sub) szovegmezo id6zitO addig form (az iirlap VBA szinonimaja) mfg. amfg sziiro karakter vezerlo: itt: vezerles (vezerlo-mezok tipusa) poloskatlanftani itt: hi bat javftani konyvtar meghajt6 tenni.

Sizable 160 161 .Center 0..informacio tarolo tartalmazott szoveg objektum fulszovege y-koordinata (objektum) beallftott ertek lathato form (ablak) allapota objektum szelessege szoveg-tordeltseg balra igazitott jobbra igazitott kozepre igazitott "sima" megjelenes 3D megjelenes vonalas rogzftett atmeretezheto kar.Left Justify I .. skal-rnod skala kezdete-y skalazas terjedelme-x gordttosavok TaskBar-ikon rendezett indfto-form pozfci6ja objektum stilusa Tab-bejarasi sorszam felh.x koord. alkalmazas objektum megjelenesi m6d automata iijrarajzolas automata meretezes hatter-szfn hatter-stilus keret-stflus validitas-vizsgalat reszek ujrafestese vezerlo-ikon mez6 neve tablazat neve forrasadatok specifikacioja mukodokepes kitolto-szin kitolto-stilus font (nyomdai) font karakter-szfne objektum magassaga objektum-sorszam egesz-soros lista peri6dus adatelem billentyu-ellenorzes x-koordinata (objektum) lista-mezo listaja maximalizalo gomb MDI-gyerek minimalizalo gomb eger-ikon kepe eger-ikon tipusa athelyezheto 3.Fixed Single 2 . Melleklet: Fontosabb Visual Basic beepitett fuggvenyek Matematikai fuggvenyek Konverzios fuggvenyek . es ertekek: 0. MELLEKLET .2.9- Fontosabb vezerles-tulajdonsag Alignment App Appearance AutoRedraw AutoSize BackColor BackStyle BorderStyle Causes Validation Clip Controls ControlBox DataField DataMember DataSource Enabled FillColor FillStyle Font Fo re Color Height Index IntegralHeight Interval ItemData KeyPreview Left List MaxButton MDIChild MinButton MouseIcon MousePointer Moveable igazftottsag nevek: MultiLine MultiSelect Name PasswordChar Picture ScaleHeight ScaleLeft ScaleMode Sea IeTop Sea IeWidth ScrollBars ShowInTaskbar Sorted StartUpPosition Style TabIndex Tag Text ToolTipText Top Value Visible WindowState Width WordWrap tobbsoros tobb-valasztasos objektum neve jelszo-karakter kep skalazas terjedelme-y skala kezdete.rend.Right Justify 2 .Flat I-3D I .

vbOkCancel. Szintaxisa: <valtozo» - = InputBox( <prompt> [.. <default-vdlasz>: sziiveges tfpusti kifejezes. 2.. <Modalitds'Tipus>: a dial6gusablak modalitas-tfpusat hatarozza meg (megadhat6 konstansok: vbApplicationModal illetve vbSystemModal).DialagusTlpus+D(faultGomb+ModalitasTlpus>. <default-valaszi-i ) . vbNo). A fuggveny hasznalatanak peldajakent lasd a lemezmelleklet MyCounter programjat. meg e parameteren belul is osszegezheto konstansai: vbOkOnly. MELLEKLET FONTOSABB VISUAL BASIC BEEPiTETT FOOOVENYEK Szdveg-kezelo fuggvenyek InputBox ftiggveny Egysoros szoveges adat bevitelere szolgalo dial6gusablak megjeleniteset vegzi. akkor ez feltetlenul MsgBox fuggvenyszerii hfvasat igenyli: ekkor a fuggveny altal visszaadott egesz altipusii Variant tipusu adat altal azonosfthato a felhasznalonak a kerdesre adott valasza (reszletesen lasd az on-line Help: Msgllox function temakoret). vbIgnore. vb . vb Critical.. Szintaxisa: ahol: <sziiveg>: a dial6gusablakban megjeleno szoveg (kerdes. vb YesNo.dialogusablak segitsegevel (es biztosftja a kerdesre adott valasz hfvo program altali azonosfthatosagat is). amely a dialogus-ablak adatbevitelre szolgalo szoveg-mezejet inicializalja a dialogus-ablak megjeleriesekor. <. vbRetryCancel. <. 3). Csak iizenet megjelenftese celjabol praktikusabb MsgBox eljarasszerii hivasa.Chr(l3) illetve a soremeles (. amelybe a dialogus-ablak szoveg-mezejenek tartalma masolodik az ablak OK gombbal torteno lezarasa eseten.DefaultGomb>: a dial6gusablakban megjeleno nyom6gombok koztil a megfelelot teszi Default tulajdonsagiiva (vbDefaultButtonl. vbExclamation. <jejlec>] [. <fejlec>: szoveges tipusti kifejezes. e parameter elhagyasa eseten a mezo uresen jelenik meg. de ha a dialogusablak kerdesere adott valasz fogadasara van szukseg (annak feldolgozasa celjabol). vbRetry. vagy vb . a kocsi vissza (. legfeljebb kb 1024 karakter hosszrisagii kifejezes. amely a dialogus-ablakban megjelenitendo Iizenetet tartalmazza. . 162 163 . vbYes.Chr(lO)) karakterek alkalmazasaval a szoveg sorokra bontva is megjelenitheto.linefeed . [<valtoza> =l <fejlec > [)] MsgBox [(] «szdveg». - A dial6gusablakb6I egesz szam erteke t6rteno kilepes modjarol tajekoztat a fuggveny altal visszaadott (vbOk. <prompt>: szoveges tfpusii. vbAbort. vb Cancel. informacio). vblnformation).esetleg standard jellegti kerdessel is kiegeszitett . e parameter elhagyasa eseten a fejlec-sor tartalma az alkalmazas neve lesz.3. MsgBox fuggveny Informatfv sziiveg megjeleniteset teszi lehetove egy . vbQuestion. vbYesNoCancel. vbAbortRetryIgnore. mely a dialogus-ablak fejleceben jelenik meg.. <Dialogus'Iipus>: a diaI6gusablakban megjeleno ikon illetve a nyom6gomb( ok) meghatarozasara szolgal (Iehetseges. uzenet. ahol: - <vdltozo>: sziiveges tipusti valtozo.carriage return .

a hosszu idon keresztiil csak processzort dolgoztat6 kodreszekben (pI egy olyan fuggvenyben. Benko Laszlo. 1998 Windows 98 with Visual Basic alapjai a gyakorlatban <vdltozo>: egesz tfpusii valtozo. most nem az ilyen tipusu esemenyekrol van szo). Tarl6s Bela: Informatika ComputerBooks. hogy primszam-e vagy sem) lehetoseget kell adni idonkent az operacios-rendszer szamara az egesz rendszerrel kapcsolatos tevekenysegeinek elvegzesere (a hardver-megszakitasok megfelelo kezelesere az operacios-rendszer mindig kap idot. 1991 Microsoft Office 2000 Visual Basic Programmer's Guide (The Essential Guide to Microsoft Visual Basic for Applicatons in Office 2000) Microsoft Press. Szirmay-Kalos Laszlo: Objektum-orientalt szoftverfejlesztes ComputerBooks. vagy az egertol erkezo esemenyeknek a programokhoz tOrteno . vagy ha egyszeriien csak riem akarunk idozitot hasznalni a program varakoztatasa vagy valamilyen hatterben fut6 feldolgozas vegzese celjabol. MELLEKLET DoEvents fiiggveny A fuggveny a vezerlesnek az operacios rendszer szamara tOrteno atadasara szolgal. Tamas Peter. amelybe a fuggveny Visual Basic programb61 torteno hivasa eseten azaktualisan nyitva levo ablakok szama keriil (mas tipusu programb61 torteno hfvasa eseten a fuggveny 0 erteket szolgaltat). 2000 Czenky Marta: Adatmodellezes ComputerBooks. ahol: [1] [2] [3] [4] [5] [6] [7] [8] [9] Irodalomjegyzek Csala Peter. akkor nagyon meg kell fontolni. 1998 The Guide to Building Client I Server Applications Microsoft Press. 1997 Guide to Data Access Objects Microsoft Press.vagy a modul szintii valtozokat. ha az egy szalon fut6 programunkban sokszor ismetlodoen kell valamilyen. 1997 Charles Petzold: Programming Microsoft Press. 2000 Levayne Lakner Maria: Excel tablazatkezeld Computerlsooks. amelynek a parametereben levo szamrol el kell dontenie. Ha a DoEvents fuggveny olyan eljarasbol (pI valamilyen esemeny-kezelo eljarasbol) hivodik.Jdkozvetttesere"). amely a varakoztatas ideje alatt ismetelten aktivalhato (pI a felhasznalo tevekenykedesenek hatasara). Programmer's Guide to Microsoft Windows 95 Microsoft Press. 1998 Krizsak Laszlo: Az Excel 7. Kuzmina Jekatyerina: Windows alkalmazasok fejlesztese Visual Basic 5 rendszerben ComputerBooks. Szintaxisa: <vdltozo> = DoEvents() . 1998 164 165 .3. A DoEvents fuggveny hasznalata akkor praktikus. 1997 [11] [12] Microsoft C/C++ Tutorial Microsoft Press. Csetenyi Arthur. 1999 [13] Czenky Marta: SQL es Access alkalmazas ComputerBooks. 2000 Mastering Microsoft Visual Basic 6 Development Microsoft Press. Olyan operacios-rendszerek alatt miikodve. Laszlo Zoltan. amelyek az idoosztast nem teljes mertekben valosftjak meg (pI Windows '95 ill '98). 2000 [14] Benko Tiborne. hogy az kepes legyen a beerkezett szoftver-generalta esemenyek feldolgozasara (pI a kepemyo tartalmi frissitesere. 1998 [10] Kondorosi Karoly. igen gyorsan elintezheto ellenorzeseket vegezni. hogy milyen m6don hasznalhatjuk a program.0 programozasa ComputerBooks.

135 MS Access tablazatok. 97 (ertekadas. 136 adat-fogado (. 87 . relacio). 78. operator). 49 (nagyobb. iii. 127 Alignment. kod-jel).HAROM RESZES NYELVOKTAT6 CD . 138 kezelesi technologiajuk. 124 minimum-kereses. 56 (egesz-szdm osztds. 77 ControlBox.. 97 > (nagyobb v. 97 <> <. szintaktikai jel). • TeL/fax: (36) 79/325A67 . 35 E9 (szorzas. 52. 148 allandok. 97 + (kisebb. 97 * tosztds. 92 adattfpusok. 86 B BackColor.ROMSOROZATRAJZFILMMEL Targymutato '97 . szintaktikai jel).107 Byte.&rl. 124 osszegzes.Data) mezo.38. 30 AddItem metodus. 140 RecordSet objektum-tfpus.54 Application objektum.9l. szintaktikai jel). 57 CommonDialog vezerles. J (opciondlis. egyenld. operator). 90 Add-Ins menu. 25. 91 ByVal kulcsszo.. 54 Code Editor.52. 58 azonosft6k elettartamuk. 24. 52 BackStyle. billentyu-nyomas). 86 lathatosaguk. 134 adatkonverzio. 77 App.. szintaktikai jel). 46 (osszejiizes.com a minosegi oktat6programok ov. 145 CheckBox vezerles. relacio). 59 cimke-mezo. 91 pmed@profi-media. 144 algoritmusok eldontes. 97 <= (egyenltitlenseg. 97 >= (ismetelheto. kivalogatas.mqh'dQl~:97 EZOST DiJ (kivonas... 39.. 86 hasznalatuk. 47 {. 97 < (kisebb v. operator). 56. 89 altalanos dialogus-mezo. 49 (osszeadas ill -fiizes . operator). 54 Currency. operator).143 Appearance. relacio).ni 4. 87 I (vagy. szintaktikai jel). 97 \ (hatvdnyozds. 134 adat (. relacio). 143 AutoRedraw. operator). 123 rendezes. 71 aktfv objektumok hivatkozasa. 56 Clip Controls. 97 (sor-folytatodds: kod-jel). 126 r c Causes Validation. 167 . relacio). 97 & (kombindcio. 106 A abra-mezo. 54 AutoSize. operator). 91 BorderStyle. 139 MS Excel tablazatok. 13 ComboBox vezerles.Data-bound) mezo. 137 adatbazis-motor (MS Jet). 97 I [ . 54 ByRejkulcssz6. 97 (komment. relacio). 136 relacios tfpusuak. 22 > (egyenliiseg. operator).. 24. 59 adatbazisok. 73 CommandButton vezerles. 66. 68 cellak hivatkozasa. } (megkiivetelt. 39. (nyelvi egyseg. 125 kereses. egyenlii. 39 Boolean.

108 hfvasuk. 71. 52. 54.' menu programozasa. 87 eljarasok.. 73. 48 numerikus adattipus Boolean. 59 144 K kep-rnezo.~. 91 Long. 112 Debugging ablakok. 56 f6bb tulajdonsagok. 70 ListBox vezerles.80. 62 esemeny-kezelo eljarasok. Loop utasftas.. 105 deklaraciojuk. 39. 100 Image vezerles. 91 Double. 132 menusor. 91 nyom6gomb.146. 91 Interval. 68 egerhez kapcsoI6d6k. 91 Byte. 57. 75. 34 szelekci6s m6d. 52. '156 RefEdit vezerles. 17.. 35. 155 UserForm objektum. 151 tartomanyok hivatkozasa. 91 Integer. 139 MS Excel. 141 aktfv objektumok hivatkozasa. 97 Mod. 91 datum adattfpus.16 hfvasa (vegrehajtatasar. 97 L Label vezerles. hfvasuk. 91 DtiveListBox vezerles. 152 fejlesztokornyezete. cellak hivatkozasa. 79 ItemData. 91 DialogSheets objektum.131. 107 fuggvenyek. 97 Is.. 37. 72 TARGYMU'I'A't'!~ ---=. 13 projekt ablak. 59 Index.132.10 tulajdonsagok ablak. 91 Single. 13 indftasa. 77.. 13 urlap-tervezo ablak. 150 lista-mezo.53. 13 lehetosegei. 16 elnevezesi szabalyaik."0""""".52. 47 kod-szerkeszto ablak. 118 kapcsoI6d6 opci6k. 37. 133 kinezete.. 75 Do . 11 eszkozsor..11 menukezeles.. 46 _ (sz6koz utan aldhuzds).. 108 J jelolo-negyzet. 49 esemenyek billentytizethez kapcsoI6d6k. 70. 91 Currency. operator. 142 programozasi mintapelda. 154 WorkSheets objektum. 144 User Defined fuggvenyek. 11 met6dus. 91 H Height. 112 MenuBar. 97 szoveg-kezelok. 80. 35. 54 MousePointer.79 168 169 . 70. 43. 37. 138. 17. 120 On Error utasftas. 138.::. 81. 146 D DataField.131. 69 kifejezesek. 80 Frame vezerles. 130 gyorsmenu programozasa. 146 MSVBVM60. operator.10 megjelenftesi m6djai. 13 Form objektumtfpus.P k6d~szerkeszt6 ablak. 5 MultiLine. 54 Mouse/con.44 kombinalt lista-mez6.. 97 Like. 54 MDI-sziil6k es gyerekek. 12 SDI. 70. 145 DialogSheets objektum. 98 k6d frasa. 72. 97 Iogikaiak. 107 deklaralasuk. 130 a menu-editor hasznalata. 149 MultiSelect. 101 ForeColor. 75 I vezerlo-elemek programozasa. 10 I id6zit6. 146 Dim. 106 105 parameterezesuk. 137. 117 azonnali ellenorzessel. 65. 52. 11 eszkozsor. 57 F fajl-lista mezo. 55 fobb met6dusok.. . 65 Font. 139.DLL. 13 Decimal.. 79. 13 felhasznaloi fuggvenyek.:.10 MD/Child. 42 Form-fejlesztes.148 hibafelderito ablakok. 74 E Edit menu. 140 DataSource. 23. 41. 87 DirListBox vezerles. 48. 119 Err objektum. 91 Debug objektum. 34.es kezelo eljarasaik.. 53 meghajt6-mez6. 11 menusor. 145 WorkSheet (beepftett) fuggvenyek.Bo Long. 25 FileListBox vezerles. 13 hibakezeles.21 f6bb esemenyek. 58 KeyPreview. 31 hibafelderit6 ablakok. 12 urlap-eirendezes ablak. 139. 87 Left. 35. 34 vezerlo-mezok letrehozasa. 28 elettartam. 10 Double.. 54 MS Access adatbazis. 58 keret-mezo.82. 52 Form designer.55. 34 objektum-krealo m6d.:.fil MinButton. 96 aritmetikaiak.39 Form. 52 Format menu. 73 konyvtar-mezo. 36. 58 Function utasftas.148 ertekado utasftas. 19. 148 For utasftas. 140 Date.148 List.. 121 N Name. 103 dokkolhatosag.131.45 eszkoztar. 151 mtiveletek precedenciaja. 79. 150 rmiveletek. 8 MDl. 99.. 155 File menu. 11 objektum-attekinto ablak.74 megszakftasi pontok. 137. 148 WorkBooks objektum.132 Integer. 56 lathatosag. 106 Enabled. 117 kozponti hibakezelovel. 118 Resume utasftas. 19.· TARGYMUTAT6 ________________ lj'utasftas. 13 Form layout. operator.11 hasznalata. 51 k6d-jelek (single quote karakter).55 kapcsol6d6 esemenyek.. 91 Decimal. 70 Iokalis. 97 relaciosak. 141 objektumok.. 81. 13. 76 f6kusz.147 nevadasi-szabalyok. 76 fejleszt6 kornyezet (/DE) eszkoztar. 96 esemenyek.9 M MDl.. 51.

13 v valaszto-mezo. r s ScrollBars. 41. 92 Variant.85 deklaralasuk.28. 57. 73 Sub utasftas.36.. 82 operatorok (.peldaul. 80 altalanos hasznalatuk. 64. 150 varialhato adattfpus. 12 Public.. 91 szoveg-mezo.s a tobbi.44. 36. 87 statikus. 58 program-hibak felderftesi m6djaik. 70 105 SDI.TARGYMUTAT6 o Object Browser. 82 valaszto-mezok hasznalata. 3 Run menu. 145 WorkSheet (beepftett) fuggvenyek. 91 Sorted. 87 szoveges adattfpusok. 52 tartomanyok hivatkozasa.16 objektumtfpusok. 105 szintaktikai frasjelek [ •. 57. 54 With utasftas. 11 Tools menu. ertekado. 99 11\1\ 048572 020 1. 58. 22 (harem pont egymas utan). 13 urlap-tervezo ablak. 65. 79 TooLBar. 70.150. 98 ertekado utasftas.93 deklaraciojuk. 72 Standard modul. 64 tulajdonsagok. 61. 16 esemenyek. 60 valtoz6k. If f6kusz. 144 Text. 100 Set utasftas. 70 (j tirlap-elrendezes ablak. 16 tulajdonsagok ablak. 26 projekt ablak. 51 program-strukturalok.. 96 OptionButton vezerles. 98 ciklusszervezo. 23.52. 3 stb . 151 rovidftesek ill . 72. 18 tulajdonsagok. 6 pi .• J (szogletes zarojel-par). 86 String.51. 30 Top.30. 87 VaLue. 65. 49 <.151 TextBox vezerles. 111 Project Explorer. 16 objektum-tombok.lO Select Case utasftas.> (kisebb-nagyobb zarojel-par).10. 60 Options dial6gusablak. II TooLBox. 30 u utasftasok.52. 49 met6dus hfvasa.19 objektumok. 59 PictureBox vezerles. 64 Timer vezerles. 154 WorkSheets objektum.29. 13 objektum-attekinto ablak. 12 Project menu. 94 funkci6juk..68. 9. 87 T Tablndex. 17. 92 w Width. 60.1 \0000 \ II III 171 170 ------- . 24. 91 Style.11. 36 Ref Edit vezerles. 1 un . 101 csoporthivatkoz6. 25. 12 twip. 12 Properties. 146 vegrehajthato utasftasok.mtiveleti jelek). 17. 22 Static.117 ShowlnTaskbar. 73.35. 54 Single. 149.} (kapcsos zarojel-par). 148 tombOk.148 WindowState.illetve.113. 99 WordWrap.56 WorkBooks objektum.tigynevezett.149. 93 bivatkozasuk. 68 Tag. 98 99 p Picture.Pd tulajdonsagok. 86. 52 R racshalo.. 87 I (fiigg6leges vonal). 13 objektum-modell. 56 {.

BenkO L. Dr... Tanuljuk egyiitt az informatikit .4..498..az OKJ es ECDL vizsgakhoz. Kovacsne Cohner Js-Ozsvath Mi-G....M. Moricz A. Maig C.sikbeli rajzok .994.-Benko T'ne-Toth B. NagyJ.997.: Programozzunk C++ nyelven! . L..900.Kovacsne CiJ. Hatvany Bela Csaba AS" 3 Programozas . Dr..: OFFICE XP .Nagy J. .... Kovacsne Cohner Ji-Ossvath M-G. Office 97 szoftverek.3. . Moricz A..2..3. .. Molnar Matyas: Lotus Notes 6 felhasznaloknak .6.500...5.497. Pinter Miklos: AutoCAD 2002 tanklinyv es peldatar 2..: Haromdimenzios grafika.1. Dr. Kovalcsik Geza: EXCEL 2000 -@ Kovalcsikne Pinter Orsolya: Az EXCEL fiiggvenyei A-tol Z-ig Laszlo Jozseft Hangkartya programozasa Pascal es Assembly nyelven .Kovacsne 3..779.Kohalmt Mariann Tunde: CorelDraw 11 ..990.Pinter M: AutoCAD 2004 felhaszn3ioi ismeretek . .919. lnternet Mit kell tudni? a PC-rol.. Mobiltelefon a kezekben . Windows 95. Nagy J.2.- 2F 2000 Szamitastechnikai es Szolgaltato Kft. . Kovacs T.Dr.......• ..500.2. . Toth B.4.: OFFICE 2000 . Laszl» Jozsef: Mindenkinek az Internetrfil .. klitet .: • LAN...lli'J ..495. Szamitastechnikai a1apismeretek.J. Kovacs Ti-Dr.0 a1kalmazasaval .2....Kovacsne c.400.398. animacio es jatekfejlesztes .: .: Mit kell tudni? a PC-:rOl ...bu EDATA FELLOWS J.500.2..965.MEGRENDELOLAP Yisszakiildesi cim: 1253 Budapest pf. Szirmay-Kalos. az adattitkositas elvalaszthatatlanok.. Dr.900.350. .999. WAN.....3.4.3.Q Kovalcsik Geza: EXCEL 97 programezasa .496.3.3. Adatkezeles az MS ACCESS 2000 a1kalmazasaval . e. Moricz Atti/a: Tippek a CD irashoz .terbeli abrazolas .5 kiegeszitessel .Q .2. tanklinyv es p~ldatar 1.....400.3.3. J.Peldatar ... Czenky Mi-Tamas P.497.. ECDL elmeleti modul .pinter MiklOs: AutoCAD 2002 + LT. Dr.71 info@computer"ooks..500..Ozsvath. adatbazis-kezeles.- volt egyetlen rendszer sem. -Poppe A.lli'J Kohalmi Eva .964..: Programozzunk.. -Ozsvath M -G.5.-OzsvathM-G. teljes tavoli Objektum-orient3it programezas C++ nyelven .~.2.@ 3. levelezes 1.8 LaszlO Jozsefi Dinamikus weboldalak pregramezasa . C nyelven-lli'J .. .Vagasi J... -Dr.990..NagyJ.WinIMac .990.2...Kovacs T.500. Programozasl alapfeladatok WAP oldalakhoz es WEB lapokhoz 2.. klitet . Mudrt Istvan: Digitalis vide6zas Adobe Premiere 6. amely eqykent keezt a komplex es lenyeqes problem at. Benko Ti-ne-Benko .

499..860.: Vatlalatiranyitasi informacios rendszerek Mo-n 2.994.Toth B. Gero Judit: WORD 2000 L kotet .600. TamasP.:Hetyei J. Gero Judit: WORD 2000 kotet ...l\iJ Balogh Gabor: Visual Basic es EXCEL programozas .1. Mortcz A..: Programozzunk Visual Basic rendszerben ...: WORD for WINDOWS 6.magyar & angol. ..: Penzintezetek r. . ~ TothB. es tarsai. . is tarsai. .- ..6.. SQL programozoknak • .4.:Hetyei J. MS Project 2000 . .999.4.995.• .499..Kovacs Peter Szamitogep-hatozatok Praktikus utmutato hatoiatepiteshez Internet beatlitasokhoz.tHetyet J..3. Tamas P..5. Gazdasdgi injormatika: ..900...• A Weboldalunkon reszletes ismertetest talal konyveinkrol: www.: ProgramozasifeladatokesaigoritlllusokDELPBI nyelven-.970. Laszlo J6zse[PC 3.kezdoknek es halad6knak .500.Web + interaktiv.925. Stolniczki Gyula.200..3.Juhasz Tibor-Kiss Zsolt Tanuljunk Prograinozni Visual Basic Script .3..900. Benko Tne.Dr.... Hatvany Bela Csab:... . Vezetekes es vezetek nelkili hatozatokhoz 4..2..3.'Mudri Istvan dr: QuarkXpress 5 .l\iJ Csala Peter-Csetenyi Athur-Tarlos Bela: Informatika alapjai Czenky Marta: Adatmodellezes • SQL es Access a1kalmazas ...... .. Szerk.4...2. Gottdank Tibor :WEBszolgattatasok •• ....: Vezetoi dontestamogato es elektronikus kereskedelmi rendszerek Mo-n es allami intezmenyek informacios rendszerei Magyarorszagon • . Levayne Lakner Maria: EXCEL tablazatkezelo a gyakorlatban .2.1.... Szerk.: Programozasi feladatok es a1goritmusok Visual Basic nyelven -'.: ERP rendszerek Magyarorszagon a 21. Szerk..4. Tatro! T. melleklettel hardver programozas valos es vedett modban . Szerk...- 2.500.....2.900..1.halad6knak . Megrendelo neve: _ Szlillitasi cim: _ ...999..499.L-Reich G.hu Ceg.5.(feladok C++ es Delphi nyelven ) .. Bit kepek feldolgozasa VISUL BASIC rendszerben .500.900. WINDOWS tlppek az ujratelepiteshez ..computerbooks..' n..4.: ProgramozzunkDELPBI7 rendszerben-. M6ricz Attila: WEBDESIGN a gyakorlatban .399..395. Tamas P. szazadban .900..999..500. .720..0 ..-Dr..999. ..2.3. es tarsai: WINDOWS 98 & ~icrosoft PLUS -magyar vattozat (angol keresztreferenciaval) .3. Benko Tibome... Gero .tHetyei J. . Toth B.- Objektumok ...3.

Sign up to vote on this title
UsefulNot useful