VISUAL BASIC ~

ES EXCEL

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

IS09001

'

PROGRAMOZAS

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

II,stb. vizsgakhoz

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

BALOGH GABOR

VISUAL BASIC , ES EXCEL , PROGRAMOZAS

COMPUTERBoOKS BUDAPEST,2004

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

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

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

Elso kiadas, 2000. februar

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

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

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

21

,,1
,_1

,22

23
,.25

25 26 28 29

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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