VISUAL BASIC ~

ES EXCEL

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

IS09001

'

PROGRAMOZAS

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

II,stb. vizsgakhoz

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

BALOGH GABOR

VISUAL BASIC , ES EXCEL , PROGRAMOZAS

COMPUTERBoOKS BUDAPEST,2004

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

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

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

Elso kiadas, 2000. februar

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

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

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

21

,,1
,_1

,22

23
,.25

25 26 28 29

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

es ertekek: 0.x koord.Left Justify I .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.Sizable 160 161 . Melleklet: Fontosabb Visual Basic beepitett fuggvenyek Matematikai fuggvenyek Konverzios fuggvenyek .Fixed Single 2 .rend. skal-rnod skala kezdete-y skalazas terjedelme-x gordttosavok TaskBar-ikon rendezett indfto-form pozfci6ja objektum stilusa Tab-bejarasi sorszam felh.Center 0..informacio tarolo tartalmazott szoveg objektum fulszovege y-koordinata (objektum) beallftott ertek lathato form (ablak) allapota objektum szelessege szoveg-tordeltseg balra igazitott jobbra igazitott kozepre igazitott "sima" megjelenes 3D megjelenes vonalas rogzftett atmeretezheto kar.Flat I-3D I .9- Fontosabb vezerles-tulajdonsag Alignment App Appearance AutoRedraw AutoSize BackColor BackStyle BorderStyle Causes Validation Clip Controls ControlBox DataField DataMember DataSource Enabled FillColor FillStyle Font Fo re Color Height Index IntegralHeight Interval ItemData KeyPreview Left List MaxButton MDIChild MinButton MouseIcon MousePointer Moveable igazftottsag nevek: MultiLine MultiSelect Name PasswordChar Picture ScaleHeight ScaleLeft ScaleMode Sea IeTop Sea IeWidth ScrollBars ShowInTaskbar Sorted StartUpPosition Style TabIndex Tag Text ToolTipText Top Value Visible WindowState Width WordWrap tobbsoros tobb-valasztasos objektum neve jelszo-karakter kep skalazas terjedelme-y skala kezdete. MELLEKLET .2..

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful