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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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. es ertekek: 0.rend.Right Justify 2 ...2.Left Justify I .Center 0. MELLEKLET .Sizable 160 161 . alkalmazas objektum megjelenesi m6d automata iijrarajzolas automata meretezes hatter-szfn hatter-stilus keret-stflus validitas-vizsgalat reszek ujrafestese vezerlo-ikon mez6 neve tablazat neve forrasadatok specifikacioja mukodokepes kitolto-szin kitolto-stilus font (nyomdai) font karakter-szfne objektum magassaga objektum-sorszam egesz-soros lista peri6dus adatelem billentyu-ellenorzes x-koordinata (objektum) lista-mezo listaja maximalizalo gomb MDI-gyerek minimalizalo gomb eger-ikon kepe eger-ikon tipusa athelyezheto 3.Fixed Single 2 .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. Melleklet: Fontosabb Visual Basic beepitett fuggvenyek Matematikai fuggvenyek Konverzios fuggvenyek .x koord.Flat I-3D I .

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful