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

...3.... Csoporthivatkoz6 utasftas 4....•••..2... 6...2....1..2.43 .. A Visual Basic programuyelve 4..22. Fuggvenyek 5.....17. 3. ..... 3.3....1. Alapveto adattipusok 4.. A hibakezelessel kapcsolatos opci6k 5.••..•...1.•..4... Tombbe foglalt valaszto-mezok hasznalata 3...2.1......TARTALOMJEGYzEK TARTALOMJEGYzEK 2.1.3.......15.48 49 ..4 folytatasa): A program-k6d elkeszitese ~.3...••...nyom6gomb) vezerles Frame (....1. Mintapelda (folytatas): A projekt es az interfesz form elkeszftese 2.1... 3.2.. 4.45 ..5. 6......3.... 6.......3. 4.. A form 3.........kep) vezerles Image (..20.. 3.4..3.. 6....4.....assignment) utasftas 4....1.. 3..•....5..•....14..1....8..11..2... A Resume utasftas 5.......1.... Hiba-informaciok: az Err objektum 5...•.6.7.... Mintapelda (folytatas): A VB projekt letrehozasa 2.3..5. Hiba-ellenorzessel vegzett kezeles 5.....45 ..•.5..19. A form lenyegesebb met6dusai.1. Muveletek es operatoraik 4.... 5..•.......1.. Ciklusszervezo utasitasok 4..2..12. ListBox (-lista) vezerles ......... 3.6..16..3.... .3.4.. Vegrehajthato utasftasok 4...2.5..cfmke) vezerles CommandButton (.... Azonosft6k Iathatosaga 4...•....18.reference) utasftas 4..3.........3..6. 3..•. Ertekad6 (..22. szervezodese A program objektumai Kereses ..1.... 5...2. A tombok. A program-k6d frasa 2. utasftasok Label (.. 2. 4.. Hibakezelok: a futas kozbeni hibak kezelesenek eszkozei.3. 3.kombinalt lista) vezerles DriveListBox (.14.2......2.8.5.....1.. A kozponti hibakezelo formaja Mintapelda (2...4...... A formrnal kapcsolatos lenyegesebb esemenyek 3......raj I) vezerles CommonDialog (..........2.1..2.. A Basic alapveto nyelvi szerkezetei 4.. Programstrukturalas 4..5....1...5.valaszto) vezerles Az egerrel kapcsolatos esemenyek TextBox (...1..... A program-strukturalo utasftasok 4.......4..5. Felteteles (...2....•.....1.conditional) utasftasok 4...•.5. deklaralasuk 4..2.. Valtozok es konstansok hasznalata 4... Mintapelda (2.3.....•....••..2..•..6. Programozasrol altalaban 4.........2..meghajt6) vezerles DirListBox (.1...10.4..3...•.....szoveg) vezerles 3. 5....' . 6.... 109 110 110 111 117 117 118 118 119 119 120 121 ...6.6...3..... 11 iii ..•.. Mintapelda: A program specifikacioja es megtervezese 2. Programozunk....2....5.40 .....•.5.. Az azonosft6k hasznalata 4.altalanos dial6gus) vezerles Timer (~idozito) vezerles Objektum-tombok 3... 3.5. A program-logikai hibak felderftesenek m6djai.9................. Kozponti hibakezelovel vegzett kezeles 5... A formok fobb tulajdonsagai 3..... A felhasznaloi interfesz form keszftese 2. Hivatkoz6 (.5.. ComboBox (....2...•. deklaralasuk 4..1.. tehat hibazunk A program celja.....22..•..2.4.•..1 A program-hibak fajtai 5....7.7. .•.... 2.. 3...2....•..3.... Az ertekado utasftas Met6dus vegrehajtasa ("hfvasa") A kodolas formai szabalyai Altalanos tulajdonsagok Form (~iirlap) 3....2..... Azonosft6k elettartama 4........ 3.konyvtar) vezerles FileListBox (. Adatkonverzi6 4.1.....•... Minimum-kereses Kivalogatas Eldontes Rendezes ..•.3..... 3.....1. A hibakezelesi m6d beallftasa: az On Error utasftas 5..1... 3... Hiba-analfzis 5....3. Eljarasok 4.7 folytatasa): Hibas a program! .48 . deklaralasuk es hasznalatuk 4..... 3.......5. 3..3.2.•.•.•..6. A szoveg-mezo fontosabb tulajdonsagai.. Pelda mas tfpusti objektum-tomb hasznalatara ..1.6...... 3.21..•. Kifejezesek 4..........3.4...1. Az esemeny-kezelo eljarasok elnevezese 2.3....8...14.. Alapveto algoritmusok 6..3. 3.abra) vezerles CheckBox (~jelolo) vezerles OptionButton (...2......3.3...... Hibakereses 5......•..keret) vezerles PictureBox (.. 3.4.. : 86 86 86 87 87 89 90 92 93 96 96 98 98 98 99 99 100 101 105 105 105 107 es -kezeles ......2.... Valtozok fogalma.•.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.13.. 124 125 126 127 A VB IDE hibakeresest tamogato eszkozei 5.... 3. Osszegzes.3... A f6kusszal kapcsolatos esemeny-tfpusok 3...... 3...1..2.3... es az alapveto vezerlesek . 4. 6.. 3. A strukturalt programozas kodolas-technikaja Altalanos elnevezesi szabalyok 31 31 33 34 .. Az IDE hasznalata .... 121 122 123 123 124 . Allandok fogalma.•.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Kivalogatas Adott: Feladat: n elemii numerikus tipusu tomb. ha nines nam.3. A dblTomb-elemek .T tulajdonsagu) 6.altai anosan megfogalmazott . dblT6mb(1 To n) As Double .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. 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. Mind-e megoldasa intIndex (mind ilyen. Ezert: annak eldontese. megjegyezziik.(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. intIndex As Integer Dim dblMin As Double.1. intDb = intDb + 1 kigy(ijtes intIndexT6mb(intDb) =i End If algoritmushoz kapcsol6d6 tovdbbi Jeladat: meghatarozandok egy numerikus tomb azon elemei. blnMonoton . dblT6mb(1 To n) As Double Dim blnVan As Boolean. Van-e megoldasa intIndex = 0 intIndex = intIndex + 1 Until (intIndex > n) Or «dblTomb(intIndex) blnVan = intIndex =0 <= n ' blnVan erteke True konkret M egvalositds.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. .vagy igaz vagy hamis erteket ad6 . vajjon minden tomb-elem T tulajdonsagti-e? Const n As Integer = 100 Dim intIndex As Integer. van-e a tomb elemei kozott T tulajdonsagti? 2. intIndexT6mb(1 To n) As Integer . intIndex = 0 Do intIndex = intIndex + 1 Loop Until . T tulajdonsag (mint elobb) Ha a feladat jellege olyan lenne.4.2.varidcio: Const dblMin MAXDOUBLEVALUE As Double 1. blnMind As Boolean. hogy a tomb elsa elemere nem vonatkozna 11 minimum-kereses (peldaul: a pdros ertekii elemek minimumanak keresesekor). Peldaul: dblTomb elemei monoton novekv6 sorozatot alkotnak-e. 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. keresesi algoritmus . amelynek elemein ertelmezve . akkot a hasonlo ely alapjan kivitelezett megvalositas nem mtikodne helyesen.linearis valtozata.6. 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 . hogy 1. FEJEZET ALAPVET6 dblTomb-elemek konkret 6. elemt61 kezd6dLk If dblT6mb(i) < dblT6mb(intIndex) Then intIndex i Next i dblMin = dblT6mb(intIndex) = 1. Eldontes n elemii numerikus tipusu tomb. 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. dblT6mb(1 To n) As Double Dim intDb As Integer. hogy ez a 124 125 .1.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ablak keret (. amfg sziiro karakter vezerlo: itt: vezerles (vezerlo-mezok tipusa) poloskatlanftani itt: hi bat javftani konyvtar meghajt6 tenni. (US) bogar. valaszto. csinalni.button: nyom6gomb feltetel felteteles konstans. 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. de . karika met6dus. 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. itt: csinald! dupla kattintas (egerrel) kiertekelni eserneny f6kusz • E melleklet az informatikai szakszavaknak csak a modern jelenteset tartalmazza 159 . itt: objektum eljarasa opci6 opci6s-. ertekad6 tomb poloska. form.csoportkepzo) fuggveny csoport kiemelt abra. itt: hiba vmihez kapcsoI6d6 megszakftas] pont gomb jelolo-negyzet (mezo) kattintas (egerrel) kombimilt listamezo parancs. maszk.2. vagy radi6-gomb kep eljaras hivatkozas folytatas eljaras (rov: sub) szovegmezo id6zitO addig form (az iirlap VBA szinonimaja) mfg. kep cfmke hurok.

.Fixed Single 2 .Center 0..Right Justify 2 . 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.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. skal-rnod skala kezdete-y skalazas terjedelme-x gordttosavok TaskBar-ikon rendezett indfto-form pozfci6ja objektum stilusa Tab-bejarasi sorszam felh.Flat I-3D I .2.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.rend. es ertekek: 0.x koord. Melleklet: Fontosabb Visual Basic beepitett fuggvenyek Matematikai fuggvenyek Konverzios fuggvenyek .Sizable 160 161 .Left Justify I . MELLEKLET .

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

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

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

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

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

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

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