VISUAL BASIC ~

ES EXCEL

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

IS09001

'

PROGRAMOZAS

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

II,stb. vizsgakhoz

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

BALOGH GABOR

VISUAL BASIC , ES EXCEL , PROGRAMOZAS

COMPUTERBoOKS BUDAPEST,2004

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

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

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

Elso kiadas, 2000. februar

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

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

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

21

,,1
,_1

,22

23
,.25

25 26 28 29

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful