P. 1
Visual Basic és Excel programozás

Visual Basic és Excel programozás

|Views: 239|Likes:
Published by sutiadi

More info:

Published by: sutiadi on Apr 30, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

01/29/2015

pdf

text

original

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

49 51 51 51 52 54 55 56 56 57 58 58 59 59 60 62 64 65 70 70 73 74 75 76 77 79 80 82 82 83 83 83 84 85 3..2.meghajt6) vezerles DirListBox (. : 86 86 86 87 87 89 90 92 93 96 96 98 98 98 99 99 100 101 105 105 105 107 es -kezeles .19..2....raj I) vezerles CommonDialog (. deklaralasuk 4.22..1... 3..1.... A hibakezelesi m6d beallftasa: az On Error utasftas 5.......7..... Kozponti hibakezelovel vegzett kezeles 5.. ....konyvtar) vezerles FileListBox (.3......1.2.....•... Hiba-ellenorzessel vegzett kezeles 5..1....5. ......' . A f6kusszal kapcsolatos esemeny-tfpusok 3.... A kozponti hibakezelo formaja Mintapelda (2...1.. 3.1.4..4...... Mintapelda (folytatas): A projekt es az interfesz form elkeszftese 2....... 4... deklaralasuk 4.. 6.. Mintapelda (2...•.....3.... Mintapelda: A program specifikacioja es megtervezese 2..1....1..4.3.4..... 6. Programozasrol altalaban 4.......8.....•. Azonosft6k elettartama 4.14.1.. Ciklusszervezo utasitasok 4...1..1..5.3.3.. 3...........cfmke) vezerles CommandButton (.. 6. Azonosft6k Iathatosaga 4..3..5.3.....4.•. 3. 3..•... Vegrehajthato utasftasok 4..reference) utasftas 4.2. Az ertekado utasftas Met6dus vegrehajtasa ("hfvasa") A kodolas formai szabalyai Altalanos tulajdonsagok Form (~iirlap) 3..•.2.•...•... Mintapelda (folytatas): A VB projekt letrehozasa 2.•....2. 11 iii . Hibakezelok: a futas kozbeni hibak kezelesenek eszkozei... 3.. 3.. 3....1 A program-hibak fajtai 5.. 3.•....1...10.. A formok fobb tulajdonsagai 3... A Visual Basic programuyelve 4..1....3..... A strukturalt programozas kodolas-technikaja Altalanos elnevezesi szabalyok 31 31 33 34 ..valaszto) vezerles Az egerrel kapcsolatos esemenyek TextBox (. 4. Ertekad6 (.8. A Resume utasftas 5.......5. Felteteles (.. Alapveto adattipusok 4.....5. Hivatkoz6 (...3... Tombbe foglalt valaszto-mezok hasznalata 3...12.1...••.. Muveletek es operatoraik 4..•......3.. Csoporthivatkoz6 utasftas 4. 3..15...3........ Pelda mas tfpusti objektum-tomb hasznalatara ........ ..altalanos dial6gus) vezerles Timer (~idozito) vezerles Objektum-tombok 3...5....•.1. 3....6..6..•......40 ...1. deklaralasuk es hasznalatuk 4. 3.7..•.. 3...... 5... Minimum-kereses Kivalogatas Eldontes Rendezes ...2.1.....2.•......6. A hibakezelessel kapcsolatos opci6k 5.4......5.45 ......8.. 3.... Fuggvenyek 5.2.48 .2.•.48 49 .........TARTALOMJEGYzEK TARTALOMJEGYzEK 2...5.7 folytatasa): Hibas a program! ..conditional) utasftasok 4. szervezodese A program objektumai Kereses ...2.. 4.... Eljarasok 4..... Osszegzes....4...3.... utasftasok Label (..•...2..assignment) utasftas 4.....20...2... 3. 109 110 110 111 117 117 118 118 119 119 120 121 .•.keret) vezerles PictureBox (.17.....3... Programstrukturalas 4.•.......9. Valtozok fogalma.. Hiba-informaciok: az Err objektum 5. A program-k6d frasa 2..2..14..4.... tehat hibazunk A program celja... Alapveto algoritmusok 6.2. 4. A program-logikai hibak felderftesenek m6djai....5... A program-strukturalo utasftasok 4. A formrnal kapcsolatos lenyegesebb esemenyek 3.... 3.3...•.2.. 6..3........3...•.....szoveg) vezerles 3......•....21...........2.......3..3..•..1...5.nyom6gomb) vezerles Frame (...3.1. Az esemeny-kezelo eljarasok elnevezese 2..2..... Programozunk.3.5......3..1....2...16.. 3. Hibakereses 5.. Valtozok es konstansok hasznalata 4.4 folytatasa): A program-k6d elkeszitese ~.....14... A tombok....kombinalt lista) vezerles DriveListBox (. 3..........1..... A Basic alapveto nyelvi szerkezetei 4..5..2. 5.. 2.... 121 122 123 123 124 ....43 .1.•••. Allandok fogalma.1. 6..3..2......4.11.•.kep) vezerles Image (.•. A form lenyegesebb met6dusai..abra) vezerles CheckBox (~jelolo) vezerles OptionButton (...... Kifejezesek 4.•.... 6...6..45 .••.....•...5.2.1..1.. Az azonosft6k hasznalata 4....13.....2..6. 124 125 126 127 A VB IDE hibakeresest tamogato eszkozei 5. 2.......7.. A felhasznaloi interfesz form keszftese 2. A szoveg-mezo fontosabb tulajdonsagai..2..18.5.3.4. 3... Hiba-analfzis 5..6...3. Adatkonverzi6 4... 3... 3. 5....2.3......5..3..•.... ListBox (-lista) vezerles .••....6...•. es az alapveto vezerlesek ..1.22.•.. Az IDE hasznalata . ComboBox (.3..22..6....2. A form 3..

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->