324 p.; il.; 22,5 cm ISBN 973-9295-94-0 Ioan BOLDEA Maria BOLDEA Claudiu BRNDA
VISUAL BASIC
Conf. Dr. Ioan BOLDEA coordonator Prof. Dr. Maria BOLDEA Prep. Univ. Claudiu BRNDA
Tehnoredactare computerizat: Claudiu BRNDA
BRUMAR 2000 ISBN 973-9295-94-0 Bun de tipar: 01.06.2000 Aprut: iunie, 2000 Tiparul executat la Tipografia BRUMAR, Timioara Str. Pestalozzi, Nr. 22 Tel. / Fax: +40(56)203934; +40(56)293441 E-mail: arbeit@arbeit.dnttm.ro 5
CUPRINS
CAPITOLUL I. INTRODUCERE
1.1. Evoluia limbajului BASIC .... 1.2. Limbajul Visual Basic .... 1.3. Specificitatea limbajului Visual Basic sub Windows ......
CAPITOLUL II. MEDIUL DE DEZVOLTARE VISUAL BASIC
2.1. Conceptul de mediu integrat de dezvoltare 2.2. Lansarea n execuie a mediului de programare Visual Basic 2.3. Elementele mediului de programare Visual Basic . 2.3.1. Fereastra principal .. 2.3.1.1. Linia de meniu . 2.3.1.2. Bara cu instrumente . 2.3.2. Fereastra cu controale (Toolbox) ..... 2.3.2.1. Elementele ferestrei cu controale (Toolbox ) .... 2.3.2.2. ncrcarea i modificarea elementelor ferestrei ........ 2.3.3. Forma ( Form ) . 2.3.4. Fereastra Project ....... 2.3.5. Ferastra Properties .... 2.3.6. Fereastra Color Palette ..... 2.3.7. Fereastra Form Layout .....
9 11
15 17 18 22 22 22 51 53 53 74 76 78 79 81 82 6
CAPITOLUL III. PROPRIETILE, METODELE I EVENIMENTELE OBIECTELOR
Limbajul BASIC (acronim pentru Beginners All-purpouse Symbolic Instruction Code) a fost creat la nceputul anilor 60, de un colectiv de cercettori de la Universitatea Darmouth, SUA, condus de profesorii Thomas Kurtz i John Kemeny. i-a ctigat rapid popularitatea dorit noutilor oferite utilizatorilor, strnind ntr-o msur mai mare dect alte limbaje prerile specialitilor, dintre care unii l-au admirat, n timp ce alii l-au dezavuat. Ca i majoritatea limbajelor de nivel nalt (High-Level Languages - HLL) cu o larg rspndire: Pascal, Fortran, Cobol, Prolog etc., limbajul Basic a prezentat att avantaje ct i inconveniente. Succesele limbajului Basic i inclusiv laudele aduse vizau simplificarea comunicrii cu utilizatorul i uurina n folosirea instruciunilor de ctre persoane care se iniiau n programare. Printre caracteristicile iniiale ale limbajului se numr: era de uz general, permitea introducerea ulterioar a unor caracteristici, era un limbaj interactiv, afia mesaje de eroare, nu necesita cunoaterea hardware-ului, sistemul de operare devenea transparent pentru utilizatori etc. Critica viza, mai ales, faptul c limbajul Basic nu permitea o programare structurat (utilizarea instruciunii GOTO i etichetarea liniilor surs), lipsa parametrilor formali n definirea subprogramelor, viteza de calcul sczut n condiiile utilizrii interpretorului etc. n cursul evoluiei sale, limbajul Basic a cunoscut o continu perfecionare, prin noi versiuni, devenind din ce n ce mai puternic astfel nct s poat fi utilizat n elaborarea unor aplicaii complexe. Visual Basic 10 William (Bill) Gates i Paul Allen, n 1975, implementeaz n premier limbajul Basic pe micro-calculatoare. n anul 1981 firma IBM comercializeaz primul su PC cu sistemul de operare Microsoft-DOS, crendu-se astfel enorme posibiliti de difuzare pe plan mondial pentru limbajul Basic n versiunile GW-Basic sau PC- Basic. Faptul c posesorul unui PC beneficia mpreun cu sistemul de operare MS-DOS i de o versiune de Basic, ofer utilizatorului acestui limbaj posibilitatea realizrii unor programe mici si mijlocii. Lipsa unor funcii si insuficienele editorului GW/PC-Basic au creat dificulti n dezvoltarea unor aplicaii complexe, lucru care a condus la apariia unor versiuni mult mai puternice. Astfel, Microsoft elaboreaz QuickBasic care dispune de un editor performant i de alte funciuni ce simplific programarea aplicaiilor si creeaz premisele pentru o programare de calitate. Pe de alt parte apariia unui compilator (care transform programul Basic n programe DOS) face ca programele s fie executate n mod direct i mult mai rapid. Versiunile MS-DOS 5 i MS-DOS 6 favorizeaz apariia unei versiuni mai uoare a lui QuickBasic i anume: QBasic, care, n ciuda lipsei unor funciuni, permite o utilizare confortabil. Dotat cu un excelent editor nzestrat cu o bun capacitate de tratare si dezvoltare optim pentru programarea structurat, QBasic este un produs universal. Din pcate, i lipsete capacitatea de a crea programe autonome (fiiere.EXE) capabile s fie executate fr QBasic. Facilitile lui QuickBasic sub MS-DOS au permis deprtarea de Basic a imaginii de limbaj pentru nceptori, imagine rspndit n anumite instituii de nvmnt. Limbajul Basic a cunoscut i alte implementri i anume: versiunile Turbo Basic si Basica care au adugat noi faciliti n dezvoltarea aplicaiilor informatice. De-a lungul anilor s-a simit o real nevoie de convivialitate, care va da natere interfeei Windows, ajungndu-se astfel la o standardizare a dialogului om-main. O realizare deosebit o reprezint implementarea, realizat de ctre firma Microsoft, a produsului Visual Basic care reunete numeroasele faciliti ale versiunilor anterioare de Basic cu facilitile interfeei Windows, reprezentnd cea mai uoar i rapid cale de dezvoltare a aplicaiilor sub mediul Windows (RAD Rapid Applicantion Development).
Introducere 11 1.2. Limbajul Visual Basic
Visual Basic-ul a fost realizat de firma Microsoft n mai 1991. El constituie o materializare a proiectului acestei firme pentru primul su limbaj de dezvoltare de nivel nalt sub Windows. Dup versiunea 1 i 2, a aprut versiunea 3 n Ediie Standard i Profesional, apoi versiunea 4 n octombrie 1995, n toamna lui 1996 versiunea 5, iar n prezent se lucreaz cu versiunea 6. Interesul major pentru limbajul Visual Basic este determinat de faptul c el permite dezvoltarea aplicaiilor sub Windows ntr-un limbaj simplu i de nivel nalt. Marele avantaj n raport cu limbajul C sau C+ (utilizate pentru dezvoltarea aplicaiilor sub Windows) const n faptul c nu mai trebuie apelate funcii complexe Windows, deoarece se apeleaz API (Aplication Program Interface). Aplicaiile realizate n Visual Basic pot comunica cu alte aplicaii dezvoltate sub Windows prin intermediul unor interfee: DDE (Dynamic Data Exchange), OLE (Object Linking and Empedding), ActiveX, Microsoft Jet DataBase Engine, ODBC (Open DataBase Connectivity) i Crystal Reports. Pe de alt parte, se impune a rectifica o idee preconceput, aceea de a considera c Visual Basic-ul este destinat mai ales crerii de aplicaii grafice i de jocuri. Firma Microsoft a comis o eroare strategic incluznd cuvntul Basic n numele principalului instrument de dezvoltare a aplicaiilor sub Windows, oferindu-i o imagine fals de limbaj elementar pentru amatori. ncepnd cu versiunea 3 a limbajului Visual Basic, care a integrat maina pentru baze de date Jet provenit de la Access, firmele care creeaz aplicaii de gestiune au nceput s utilizeze efectiv Visual Basic n cadrul acestor aplicaii. Astzi, cu versiunea 6 de Visual Basic se dispune de un excelent instrument de dezvoltare a aplicaiilor mult mai facil dect al altor medii informatice concurente. Visual Basic se dezvolt i se impune din ce n ce mai mult pe pia nu n mod singular, ci alturi i n concuren cu alte noi limbaje de nivel Visual Basic 12 nalt sub Windows. Principalele medii de programare care se impun i care sunt n concuren cu Visual Basic sunt:
ACCESS: este un sistem dezvoltat de firma Microsoft complet orientat pe gestiunea bazelor de date; CA-VISUAL OBJECTS: este succesorul lui Clipper derivat din dBASE, fiind un limbaj orientat pe obiecte. El conine un compilator i poate fi utilizat n mod procedural clasic, pe evenimente sau n mod obiect; DELPHI: este creat de firma Borland (Inprise) i prezint urmtoarele caracteristici: programare vizual; programare orientata obiect i pe evenimente, gestiunea bazelor de date; dispune de un compilator foarte puternic; genereaz cod executabil ce poate rula pe orice calculator pe care este instalat Windows-ul; este un concurent veritabil al lui Visual Basic; LIMBAJUL C: este un limbaj apropiat de asamblare. Permite construirea de subprograme numite funcii care pot fi reutilizate n alte programe sau n alte funcii superioare. Programele n limbajul C sunt complexe, de aceea sunt puine ntreprinderile care se aventureaz n programarea aplicaiilor de gestiune n acest limbaj; LIMBAJUL C++: este un subansamblu al limbajului C ce ofer posibilitatea programrii orientat obiect. Microsoft furnizeaz o versiune particular i atractiv a limbajului C++ i anume Visual C++ care funcioneaz pe 16 bii sau 32 bii. Acesta permite o programare parial vizual, manipuleaz icon-uri i mouse-ul pentru a redacta liniile de program. Firma Borland este prezent n acest domeniu cu limbajul Borland C++, respectiv C++ Builder; Introducere 13 PARADOX: este un concurent direct a lui Access. Paradox pentru Windows a fost editat de Borland i se programeaz n limbajul Object Pal; PASCAL: este un limbaj uor de abordat i bine adaptat pentru efectuarea calculelor tiinifice. Societatea Borland este primul editor al compilatorului Pascal. Versiunea Borland Object Pascal pentru Windows este foarte puternic facilitnd ntr-un grad foarte mare programarea orientat obiect; POWERBUILDER: editat de firma Powersoft este un concurent foarte serios al Visual Basic-ului. Se apropie de programarea orientat obiect. Fuziunea celor dou firme PowerSoft i Sybase, autoare ale mediului de gestiune a bazelor de date SQL Server, iar ulterior i cu alte ateliere productoare de medii AMC Designer, poate conduce la crearea unui trio foarte promitor pentru arhitectura client-server: AMC Designer pentru concepere, Powerbuilder pentru dezvoltarea prii client i SQL Server pentru partea de servicii a bazei de date; SQL FORMS este un produs al firmei Oracle Corporation destinat s gestioneze sub Windows baze de date. Astzi este integrat n mediul de dezvoltare Developer 2000, care mai conine alte dou produse: Forms i Graphics i care completeaz oferta client-server a societii Oracle Corporation. Sistemul de gestiune a bazelor de date Oracle + va fi instalat pe partea de Server, iar Developer 2000 va permite crearea de programe pe partea de Client; SQL WINDOWS: foarte orientat pe arhitectura client-server, este un limbaj de programare sub Windows ce se rspndete foarte rapid; VISUAL dBASE: urmeaz vechilor dBase 2, dBase 3, dBase 4. Sistemul de gestiune a bazelor de date dBase 5 este prima versiune Windows a familiei dBase. A fost tardiv pe piaa sistemelor de dezvoltare sub Windows (finele anului 1994) i nu a reuit s recupereze pe aceast pia avansul principalului su concurent Access. Firma Borland, care la angajat pe creatorul Astiton Tate al familiei dBase, face s urmeze dBase 5 prin Visual Basic 14 Visual dBase versiunea 5.5 ca o reacie la apariia lui FoxPro. Acest sistem de dezvoltare prezint avantajul c recunoate vechile programe scrise n dBase 4. n prezent se utilizeaz versiunea 7 a acestui sistem; VISUAL FOXPRO: a fost conceput la origine pentru a concura primele versiuni de dBase. Produsul FoxPro a fost preluat de Microsoft care l-a fcut s evolueze spre actualul produs Visual FoxPro. El este un limbaj destul de clasic dar foarte performant n execuie. Visual Basic 4 i-a mprumutat maina de gestionat baze de date numita Jet, main gsit i n Access; INSTRUMENTE ALE BIROTICII: cum ar fi Excel 2000 sau Word 2000, orientate pe lucrul cu tablouri, respectiv pe tratarea textelor, cu ajutorul crora se pot realiza aplicaii destul de complexe sub Windows. Ele utilizeaz butoane, baze de date i limbaje apropiate de Visual Basic: Word Basic cu Word i Visual Basic pentru Aplicaii cu Excel. Toate programele scrise cu Visual Basic pentru Excel pot fi copiate i executate n Visual Basic. Compatibilitatea este total. Exist preri potrivit crora Visual Basic este un limbaj orientat pe obiecte. ns el nu dispune de toate funciunile caracteristice unui limbaj orientat pe obiecte, dar se apropie mult de un astfel de limbaj, deoarece prezint o serie de avantaje care permit o trecere uoar la ceea ce toi informaticienii numesc: programarea orientata pe obiecte (POO). Visual Basic poate fi calificat ca un limbaj de programare pe evenimente. De fapt, acestea sunt aciunile utilizatorului asupra unui obiect proiectat pe ecran care declaneaz execuia procedurilor. O caracteristic esenial a lui Visual Basic o constituie faptul c este un limbaj de programare vizual, ceea ce nseamn c o bun parte din codul program este generat fr introducerea instruciunilor de la tastatur ci printr-un simplu clic pe icon-uri cu ajutorul mouse-ului.
Introducere 15 1.3. Specificitatea limbajului Visual Basic sub Windows
Cu toate c denumirea de Visual Basic a produsului face aluzie la clasicul BASIC (Beginners All-purpouse Symbolic Instruction Code), el se deosebete foarte mult de acesta, prin introducerea de concepte noi ca urmare a evoluiei metodelor de programare care urmresc crearea rapid a unor aplicaii puternice (programarea vizual), elementele comune cu BASIC-ul fiind doar instruciunile folosite n generarea codului program a aplicaiei. Versiunea de BASIC pe baza creia este conceput limbajul de programare Visual Basic, este versiunea QuickBasic. Conceptul de programare vizual este un concept modern i se refer la posibilitatea, pe care o are programatorul, de a crea o aplicaie folosind un ablon pe care se ncarc toate elementele de control (obiecte) a aplicaiei, fr a scrie nici o linie de program. Acest tip de programare dezvolt metoda de programare orientat pe obiecte. Elementele definitorii ale programrii vizuale sunt: obiectele: acestea pot fi obiecte speciale (clipboard-ul, printer-ul) i controale sau elemente de control (butoane de comand, butoane radio, csue de opiune, bare de defilare, zone de listare, casete de introducere date, casete combo, etc.). Tot ca obiect este tratat i ablonul sau fereastra aplicaiei, cunoscut n Visual Basic sub denumirea de form (form), care reprezint elementul de baz ntr-o aplicaie programat n mod vizual; proprietatile obiectelor: fiecrui obiect ii aparine un grup de proprieti care determina comportamentul obiectului respectiv in cadrul aplicaiei; metodele: reprezint instruciuni (proceduri) sau funcii speciale asociate obiectelor; evenimentele: fiecrui obiect i aparin un grup de evenimente, care reprezint aciunile ce pot aprea pe parcursul execuiei aplicaiei, n legtura cu acel obiect (apsarea butoanelor mouse-ului, apsarea unei taste, micarea cursorului mouse-ului pe suprafaa obiectului .a.). n cadrul familiei limbajelor axate pe programarea vizual alturi de Visual Basic mai pot fi amintite mediile de programare Visual FoxPro, Visual dBase, Delphi, Visual C++ , C++ Builder, Visual JAVA .a. De Visual Basic 16 reinut este faptul c programarea vizual, cu toate c este ntlnit cel mai frecvent n cadrul mediilor de dezvoltare a aplicaiilor Windows, poate fi ntlnit i n cadrul unor medii de dezvoltare a aplicaiilor i sub alte sisteme de operare cum ar fi, de exemplu, Visual Basic-ul pentru MS-DOS.
Mediul de dezvoltare Visual Basic 17
2.1. Conceptul de mediu integrat de dezvoltare
Limbajele de programare actuale au fost dotate cu faciliti de asistare a programatorului n conceperea i execuia programelor pe un sistem de calcul. Iniial a aprut noiunea de mediu de programare, ce reprezint un sistem de programe pentru asistarea programatorului n proiectarea i codificarea algoritmilor, apoi n editarea i depanarea programelor. Creterea gradului de asisten oferit de ctre acest sistem a contribuit la introducerea noiunii de mediu integrat de dezvoltare (IDE - Integrated Development Environment), caz n care programatorul este asistat n toate fazele de realizare a unei aplicaii. Visual Basic este un mediu de dezvoltare a aplicaiilor ce ruleaz sub Windows. Datorit uurinei dialogului pe care utilizatorul l are prin intermediul unei interfee grafice (GUI - Graphic User Interface) foarte prietenoas i totodat a performanelor mediului Windows l face pe acesta din ce n ce mai rspndit att ca program obinuit ce ruleaz sub sistemul de operare MS-DOS, versiunile Windows 3.x, ct i ca sistem de operare prin versiunea Windows 95 sau Windows NT, Windows 98, Windows 2000. Exist i o versiune a acestui limbaj i anume Visual Basic pentru MS-DOS, cu ajutorul creia pot fi realizate aplicaii deosebit de puternice care ruleaz direct de sub sistemul de operare MS-DOS. Mediul de dezvoltare Visual Basic cuprinde un sistem de aplicaii care pot fi lansate n execuie independent una de cealalt. Aceste aplicaii sunt: Visual Basic 18
mediul de programare Visual Basic, (din cadrul cruia pot fi executate i celelalte aplicaii ale mediului de dezvoltare); API Text Viewer; Application Performance Explorer; Application Setup Wizard; Automation Manager; Crystal Reports; RemAuto Connection Manager.
Este necesar s se fac distincie ntre mediul de programare Visual Basic i limbajul de programare Visual Basic deoarece primul se refer la interfaa grafic a mediului de programare i anume la fereastra cu obiecte (Toolbox), bara de meniu, fereastra de setare a proprietilor, fereastra proiect, fereastra de editare a codului program a aplicaiei etc., n timp ce limbajul de programare cuprinde un ansamblu de simboluri i regulile de sintax utilizate n descrierea procedurilor de prelucrare automat a datelor.
2.2. Lansarea n execuie a mediului de programare Visual Basic
Pentru lansarea n execuie a mediului de programare Visual Basic se procedeaz astfel: - din cadrul mediului de lucru Windows (95/98/NT/2000): A. se apas butonul Start; se selecteaz meniul (grupul) Programs; se selecteaz meniul (grupul) Microsoft Visual Studio; se execut un clic mouse pe icon-ul Microsoft Visual Basic.
Mediul de dezvoltare Visual Basic 19 B. se lanseaz n execuie Microsoft Windows Explorer; se deschide folder-ul (directorul) \Programs Files\Developer Studio\Microsoft Visual Basic; se execut un dublu click mouse pe icon-ul vb (5 sau 6).
n urma lansrii n execuie a mediului Visual Basic, este afiat pe ecran o fereastr de dialog cu titlul New Project (figura 2.1) din cadrul creia programatorul poate alege de la nceput ablonul unei anumite aplicaii. Fereastra conine trei tabele, astfel: New: permite selectarea unui ablon de proiect nou; Existing: permite deschiderea unui proiect existent deja pe disc; Recent: permite afiarea i selectarea dintr-o list a unui proiect care a fost prelucrat recent. Lista conine un anumit numr de proiecte (fiiere proiect) care au fost prelucrate n sesiunile de lucru anterioare.
Fig. 2.1. Fereastra de dialog New Project.
Visual Basic 20
Dup selectarea unei alternative din fereastra New Project va fi afiat un ansamblu de ferestre (figura 2.2), care constituie interfaa dintre acesta i programator.
Fig. 2.2. Mediul de programare Visual Basic
Interfaa Visual Basic este alctuit din urmtoarele ferestre: Fereastra principal compus din dou elemente: Linia de meniu (Menu Bar): este alcatuit din meniuri folosite la crearea i executarea unei aplicaii Visual Basic; Bara cu instrumente (Toolbar): conine un grup de butoane ce corespund comenzilor obinuite ale unui mediu de programare pentru ncarcare fiiere, salvare fiiere, lansare program, depanare, etc. i dou casete care indic poziia i dimensiunea obiectului curent. Toolbar Linia de meniu Toolbar Fereastra Project Fereastra Properties Toolbox Forma Fereastra de afiaj a formei n execuie Mediul de dezvoltare Visual Basic 21 Fereastra (caseta) cu controale (Toolbox): conine un set de butoane ce reprezint controalele (elemente de control) care pot fi ncrcate pe foaia de lucru (fereastra aplicaiei). Foaia de lucru (fereastra aplicaiei - Form): reprezint ablonul aplicaiei, fereastra pe care vor fi plasate controalele i care va constituii interfaa dintre aplicaie i utilizator purtnd denumirea de form. Fereastra Project (proiect): conine numele tuturor fiierelor (modulelor) ce reprezint formele (ferestrele .FRM), modulele de cod (.BAS), fiiere ce conin definiia unor clase (.CLS) i fiiere cu resurse (.RES), care constituie proiectul aplicaiei curente (fiier cu extensia .MAK sau .VBP). Fereastra Properties: conine proprietile elementului de control curent sau a formei, proprieti ce reprezint caracteristicile unui obiect (controale sau forme) cum ar fi dimensiunea, culoarea, numele etc. i ale cror valori determin comportamentul obiectului respectiv n cadrul aplicaiei. Fereastra Color Palette: permite modificarea interactiv a culorilor elementelor unui obiect crendu-se astfel noi scheme de culori asociate aplicaiei. Fereastra Form Layout: permite modificarea poziiei ferestrei aplicaiei n cadrul desktop-ului.
2.3. Elementele mediului de programare Visual Basic 22 Visual Basic
2.3.1. Fereastra principal
Fereastra principal (fig. 2.3) conine: linia de meniu i bara de instrumente.
Fig. 2.3. Fereastra principal
2.3.1.1. Linia de meniu
Fig. 2.4. Linia (bara) de meniu
Conine urmtoarele meniuri principale: File, Edit, View, Project, Format, Debug, Run, Tools, Add-Ins, Windows i Help.
Mediul de dezvoltare Visual Basic 23 Meniul FILE
Fig. 2.5. Meniul File.
Meniul File este alctuit dintr-un set de opiuni ce pot fi folosite la gestionarea i prelucrarea fiierelor proiect (.MAK, .VBP, .VBG) precum i a fiierelor componente ale proiectului unei aplicaii Visual Basic. Opiunile meniului File sunt: New Project: permite crearea unui nou proiect. Selectarea acestei opiuni are ca efect imediat apariia unei ferestre de dialog n cadrul creia programatorul este ntrebat dac dorete s salveze proiectul anterior, nainte de a se iniializa unul nou. Nu poate fi deschis la un moment dat dect un singur proiect;
Open Project (<Ctrl>+<O>): permite ncrcarea (deschiderea) unui proiect deja existent. Dup selectarea acestei opiuni vechiul proiect va fi nchis (nu nainte de a fi salvat) i se va afia o fereastr de dialog n cadrul creia se selecteaz numele fiierului proiect (.MAK, .VBP) ce se dorete a fi ncrcat spre prelucrare;
Save Form1 (<Ctrl>+<S>): permite salvarea pe disc a fiierelor ce compun proiectul. Aceste fiiere pot fi fiiere ce conin o form cu toate controalele din cadrul ei avnd extensia .FRM, fiiere (module) ce conin declaraii globale, de variabile i proceduri, avnd extensia .BAS i fiiere Visual Basic 24 (module) ce conin definiia unei clase i care au extensia .CLS. Dac fiierul respectiv a mai fost salvat i el exist pe disc atunci apelarea acestei opiuni are ca efect simpla salvare a fiierului fr nici o interogare din partea mediului de programare, iar dac fiierul respectiv nu a mai fost salvat se va afia o fereastr de dialog n cadrul creia se va introduce numele i extensia sub care se dorete a fi salvat fiierul;
Save Form1 As (<Ctrl>+<A>): are aceleai efecte ca i opiunea Save Form1 cu deosebirea c de fiecare dat cnd este apelat aceast opiune mediul Visual Basic afieaz o fereastr de dialog n care se va introduce numele fiierului respectiv dac el nu a mai fost salvat niciodat sau un alt nume dac fiierul respectiv a mai fost salvat i el exist pe disc, caz n care fiierul vechi rmne neschimbat, modificrile curente fiind salvate n noul fiier al crui nume va apare i n cadrul ferestrei Project, a proiectului curent;
Save Project: permite salvarea pe disc a proiectului curent i a fiierelor ce compun proiectul. Dac proiectul curent a mai fost salvat i el exist pe disc efectul alegerii acestei opiuni este doar salvarea proiectului fr nici o interogare din partea mediului de programare, iar dac proiectul nu a mai fost salvat se va afia o fereastr de dialog n cadrul creia se va introduce, n primul rnd, numele fiierelor ce compun proiectul i apoi numele sub care se dorete salvarea proiectului pe disc;
Save Project As : are aceleai efecte ca i opiunea Save Project dar acesta opiune permite salvarea proiectului curent i sub o alta denumire. Salvarea proiectului sub o alt denumire nu are ca efect i salvarea sub o alt denumire a fiierelor ce-l compun. De aceea, poate aprea situaia n care dou proiecte s conin aceleai fiiere. Pentru nlturarea acestei situaii dup salvarea unui proiect cu un alt nume se va salva sub o alt denumire i fiierele care l compun folosind opiunea Save Form1 As ;
Add Project : permite adugarea unui proiect nou, sau a unuia deja existent, la proiectul curent rezultnd astfel un grup de proiecte. Salvarea unui grup de proiecte pe disc se va face ntr-un fiier cu extensia .VBG;
Mediul de dezvoltare Visual Basic 25 Remove Project: permite nchiderea proiectului curent (aflat n lucru) cu posibilitatea de a fi salvat. Prin intermediul acestei opiuni pot fi eliminate (terse) unele proiecte din cadrul unui grup de proiecte;
Print Setup i Print : permit setarea parametrilor imprimantei i tiprirea la imprimant a diverselor elemente ale unui proiect (coninutul fiierului, forma, imaginile din cadrul unei forme, coninutul fiierului (modulului) de declaraii globale) sau a ntregului proiect;
Make Project1.exe : are ca efect crearea unui fiier executabil ce conine ntregul proiect al aplicaiei i care va putea fi lansat n execuie independent de mediul Visual Basic. Numele fiierului executabil se va introduce n cadrul ferestrei de dialog ce se afieaz n urma selectrii acestei opiuni. O aplicaie independent, att fa de mediul Visual Basic ct i fa de fiierele din directorul n care este instalat Windows-ul, poate fi obinut cu ajutorul aplicaiei Application Setup Wizard ce se gsete n cadrul grupului n care a fost instalat Visual Basic-ul. n cadrul acestei aplicaii se introduce numele proiectului ce se dorete a fi transformat ntr- un fiier executabil, iar n urma prelucrrii va rezulta un kit de instalare (distribuire) cu ajutorul cruia aplicaia creat cu Visual Basic va putea fi instalat pe orice calculator;
Make Project Group: permite compilarea i generarea unui cod executabil pentru fiecare proiect dintr-un grup de proiecte. Apelarea acestei instruciuni are ca efect imediat afiarea unei ferestre (figura 2.6) care conine numele proiectelor, iar pentru compilare i generare a codului executabil se valideaz butonul Build;
Visual Basic 26
Fig. 2.6. Fereastra pentru compilarea i generarea programului executabil pentru un grup de proiecte.
Exit: permite prsirea mediului de programare Visual Basic. Poate fi apelat i prin acionarea combinaiei de taste <ALT>+<Q>.
Meniul EDIT
Fig. 2.7. Meniul Edit.
Mediul de dezvoltare Visual Basic 27 Meniul Edit (figura2.7.) permite, prin opiunile sale, efectuarea unor operaiuni att asupra textului din cadrul ferestrei de editare a programului surs ct i asupra controalelor din cadrul unei forme. Cele mai folosite opiuni sunt:
Undo (<Ctrl>+<Z>): anuleaz ultima operaiune efectuat asupra controalelor sau textului; Cut (<Ctrl>+<X>): terge elementul de control din cadrul unei forme sau textul selectat i le copiaz n Clipboard (zona tampon); Copy (<Ctrl>+<C>): se comport la fel ca i Cut, dar obiectele selectate nu sunt terse;
Paste (<Ctrl>+<V>): readuce coninutul zonei tampon (Clipboard) n locul marcat, fie cu ajutorul mouse-ului, fie cu ajutorul cursorului de editare;
Find (<Ctrl>+<F>) : permite cutarea unui anumit ir de caractere n cadrul modulelor proiectului;
Replace (<Ctrl>+<H>): permite nlocuirea unui anumit ir de caractere, care va fi cutat n cadrul modulelor proiectului, cu un alt ir introdus de programator;
Insert File: ofer posibilitatea inserrii, n poziia curent a cursorului, a mai multor linii de text (explicativ sau cod program) existente n fiiere externe, fiiere ce au extensia .TXT, .BAS, .CLS;
List Properties/Methods (<Ctrl>+<J>): permite afiarea n fereastra de scriere programului surs, a unei liste care conine proprietile i metodele unui anumit obiect sau a tuturor obiectelor disponibile. O facilitate major a mediului de programare Visual Basic este i aceea c la editarea (scrierea) programului surs se afieaz n mod automat o list cu proprietile i metodele unui obiect dac se introduce dup denumirea acestuia caracterul . (punct). Din lista derulant afiat se poate alege o proprietate sau o metod (cu ajutorul tastelor direcionale) dup care se Visual Basic 28 apas tasta <ENTER>, aceasta fiind afiat n continuarea caracterului . sub forma: obiect.proprietate|metod;
Exemplu: Dac se deschide fereastra de editare a codului program i n cadrul ei se tasteaz denumirea obiectului Form dup care se tasteaz caracterul ., rezultatul va fi afiarea automat a listei cu proprietile i metodele acestui obiect (figura 2.8), care pot fi selectate i utilizate.
Fig. 2.8. Afiarea automat a listei cu proprietile i metodele unui obiect
List Constants (<Ctrl>+<Shift>+<J>): permite afiarea n timpul scrierii programului surs, a unei liste derulante care conine valorile constante ale unei proprieti sau funcii. Pentru afiarea listei derulante cu aceste valori constante se tasteaz numele proprietii sau funciei i apoi caracterul = (egal);
Exemplu: n fereastra de editare a codului program se introduce obiectul Form1 cu proprietatea Visible dup care se introduce caracterul =. Rezultatul (figura 2.9) este afiarea automat lng caracterul = a listei cu constantele corespunztoare proprietii Visible (True sau False). Una dintre valorile constante pot fi alese (selectate) din list cu ajutorul tastelor direcionale i validat prin <ENTER>.
Mediul de dezvoltare Visual Basic 29
Fig. 2.9. Lista cu constantele proprietii Visible.
Quick Info (<Ctrl>+<I>): poate fi folosit doar n cadrul ferestrei de scriere a codului program. Permite afiarea unor informaii despre obiectele, proprietile, metodele, funciile, procedurile i variabilele din program, n mod separat pentru fiecare. Pentru a obine informaii despre un element enumerat mai sus se poziioneaz cursorul mouse-ului deasupra denumirii elementului i se alege opiunea Quick Info din cadrul meniului Edit. Elementul la care se refer mesajul este prezentat cu text de tip bold (ngroat);
Exemplu: Pentru a obine informaii despre tipul proprietii Visible a obiectului Form1 (fereastra aplicaiei) se poziioneaz cursorul mouse-ului deasupra cuvntului Visible i se alege opiunea Quick Info, rezultatul fiind afiarea sub cuvnt a mesajului Visible As Boolean. Rezultatul este prezentat n figura 2.10.
Fig. 2.10. Tipul proprietii Visible a obiectului Form1.
Parameter Info (<Ctrl>+<Shift>+<I>): permite afiarea argumentului (parametrilor), a tipului de dat pentru fiecare parametru n parte din cadrul unei funcii, precum i tipul de dat returnat de funcie. Aceast opiune poate fi utilizat doar n cadrul ferestrei de scriere a programului surs. Pentru a avea efect se poziioneaz cursorul mouse-ului n zona argumentului funciei (ntre cele dou paranteze) i se activeaz Visual Basic 30 opiunea. Aceast facilitate este foarte util pentru c la scrierea unei funcii afieaz toi parametrii i tipul parametrilor de care funcia respectiv are nevoie. Parametrul ce trebuie introdus la un moment dat este prezentat cu text bold. Informaiile furnizate de opiunea Parameter Info apar n mod automat i atunci cnd, la scrierea codului program, se tasteaz dup denumirea funciei caracterul ( (parantez rotund deschis);
Exemplu: Pentru afiarea informaiilor despre parametrii funciei MsgBox se poate proceda n dou moduri, astfel: se tasteaz (n cadrul ferestrei de scriere a programului surs) numele funciei MsgBox dup care se tasteaz (, rezultatul fiind afiarea automat a parametrilor funciei (figura 2.11).
Fig. 2.11. Lista parametrilor funciei MsgBox.
dup ce funcia a fost introdus i se dorete modificarea sau introducerea unui parametru, se poziioneaz cursorul mouse-ului n interiorul argumentului i se selecteaz din meniul Edit opiunea Parameter Info (figura 2.12).
Fig. 2.12. Lista parametrilor funciei MsgBox pe parcursul editrii funciei.
Mediul de dezvoltare Visual Basic 31 Complete Word (<Ctrl>+<Space>): poate fi utilizat doar n cadrul ferestrei de scriere a programului surs i permite completarea unui cuvnt (denumire obiect, proprietate, metod, funcie, eveniment, procedur, etc.) dac s-a introdus suficiente litere din acel cuvnt pentru a fi identificat de interpretorul mediului de programare. Dac se introduce un anumit numr de litere dintr-un cuvnt care pot fi interpretate i completate (continuate) n cel puin dou sensuri, atunci apelarea acestei opiuni are ca efect afiarea unei liste derulante din care se poate alege sensul dorit n funcie de context;
Exemplu: Dac pentru funcia MsgBox se tasteaz doar primele trei litere Msg i se apeleaz opiunea Complete Word, efectul va fi completarea automat a celor trei litere cu urmtoarele trei Box rezultnd astfel cuvntul funciei MsgBox; Dac pentru utilizarea obiectului Form1 se introduc primele trei litere For i se apeleaz pentru completare opiunea Complete Word, rezultatul este afiarea unei liste derulante din care se poate alege completarea n funcie de context (figura 2.13).
Fig. 2.13. Afiarea unei liste derulante pentru completare n funcie de context.
Bookmarks: permite inserarea i apelul unor repere n cadrul programului surs. Odat inserate aceste repere se poate face foarte uor i rapid saltul cursorului de editare (scriere) de la o anumit linie program Visual Basic 32 (reper) dintr-o procedur la o alt linie program mult mai ndeprtat. Aceast opiune are urmtoarele subopiuni (figura 2.14):
Fig. 2.14. Elementele opiunii Bookmarks.
Toggle Bookmark: permite inserarea unui reper; Next Bookmark: permite deplasarea (saltul) cursorului de editare la urmtorul reper; Previous Bookmark: permite deplasarea cursorului de editare la reperul precedent; Clear All Bookmarks: are ca efect tergerea tuturor reperelor din cadrul codului program al proiectului curent (n lucru).
Observaie: Majoritatea opiunilor meniului Edit pot fi selectate i utiliznd meniul contextual apelat din cadrul ferestrei de editare a programului surs (figura 2.15). Pentru apelarea meniului contextual se poziioneaz cursorul mouse-ului n interiorul ferestrei de editare a programului surs i se execut un click pe butonul din dreapta al mouse-ului.
Mediul de dezvoltare Visual Basic 33
Fig.2.15. Meniul contextual din cadrul ferestrei de editare a programului surs.
Meniul VIEW
Fig.2.16. Meniul View.
Visual Basic 34 Acest meniu permite, prin intermediul opiunilor sale, vizualizarea unor obiecte, proceduri, ferestre sau bare de instrumente astfel:
Code: permite afiarea ferestrei de editare (scriere) a programului surs a aplicaiei corespunztor obiectului curent;
Object (<Shift>+<F7>): afieaz forma, selectat n cadrul ferestrei Project, mpreun cu toate obiectele din cadrul acesteia;
Definition (<Shift>+<F2>): afieaz coninutul unei proceduri, funcii (apelate) care este apelat de o alt procedur (apelant). Aceast opiune poate fi activat doar n momentul n care cursorul se gsete n cadrul procedurii apelante.
Exemplu: Dac n cadrul procedurii eveniment Form_Load() asociat ferestrei Form1 se apeleaz funcia MsgBox, rezultatul seleciei opiunii Definition va fi afiarea unei ferestre ce conine informaii despre funcia MsgBox ;
Last Position (<Ctrl>+<Shift>+<F2>): plaseaz cursorul la poziia n care s-a gsit, naintea poziiei curente, n cadrul ferestrelor Code (editor de cod program) i Debug. De exemplu dac cursorul se afl la linia 3, iar nainte de aceasta se afla la linia 1, n urma apelrii opiunii Last Position cursorul va fi mutat automat la linia 1;
Object Browser (<F2>): permite afiarea pe ecran a unei ferestre de dialog denumit fereastra Object Browser n cadrul creia sunt listate toate obiectele, clasele disponibile n cadrul mediului Visual Basic;
Imediate Window (<Ctrl>+<G>): permite afiarea unei ferestre n care programatorul poate introduce valori noi unor variabile sau apela anumite proceduri, dar toate acestea numai cnd programul a fost lansat n execuie (start) i apoi ntrerupt (break mode). Utilitatea acestei ferestre const n faptul c programatorul poate vizualiza efectul schimbrii valorilor unor variabile fr s recompileze proiectul;
Mediul de dezvoltare Visual Basic 35 Locals Window: permite afarea unei ferestre care cuprinde valorile variabilelor utilizate n cadrul aplicaiei curente;
Watch Window: permite afiarea unei ferestre n cadrul creia vor fi evaluate valorile unor variabile, funcii sau expresii, pe parcursul execuiei programului. Utilitatea acestei opiuni (faciliti) const n faptul c pe parcursul execuiei programului pot fi vizualizate modificrile valorilor variabilelor sau expresiilor utilizate, astfel c n funcie de aceast evaluare programatorul poate revenii i rescrie valorile sau expresiile iniiale;
Call Stack: poate fi utilizat doar n mod de ntrerupere i are ca efect afiarea unei ferestre ce conine o list cu toate procedurile aflate n execuie i neterminate;
Project Explorer (<Ctrl>+<R>): afieaz fereastra Project (proiect);
Form Layout Window: permite afiarea i activarea ferestrei de modificare a poziiei pe desktop a ferestrei curente n timpul execuiei;
Property Pages (<Shift>+<F4>): poate fi utilizat doar n legtur cu obiectele proiectate de utilizator (ActiveX) i permite afiarea i modificarea unor proprieti ale acestor obiecte. nainte de apelul acestei opiuni obiectul utilizator trebuie selectat;
Toolbox: afieaz fereastra cu controale;
Color Palette: afieaz fereastra de modificare a paletei de culori a elementelor aplicaiei;
Toolbars: permite afiarea unor bare cu instrumente n cadrul ferestrei principale. Aceste bare cu instrumente conin o serie de icon-uri ce Visual Basic 36 pot fi apelate direct printr-un click mouse i care au aceleai efecte ca i opiunile din meniul pe care l reprezint bara cu instrumente. Barele cu instrumente active la un moment dat sunt marcate cu marcajul .
Meniul PROJECT
Fig. 2.17. Meniul Project.
Meniului Project (figura 2.17.) permite prin intermediul opiunilor sale adugarea, sau eliminarea unor elemente ale proiectului concretizate n fiiere externe. Tot din cadrul acestui meniu se poate configura modul i ordinea de execuie a ferestrelor proiectului (aplicaiei). Cuprinde urmtoarele opiuni:
Add Form: permite afiarea unei ferestre din cadrul creia se poate alege o nou fereastr (form ablon) pentru a fi ataat aplicaiei sau deschiderea i ataarea uneia deja existente pe disc;
Add MDI Form: permite crearea i ataarea la proiectul curent a unei forme MDI (Multiple Document Interface) numit i forma mama care conine mai multe ferestre (forme) simple numite i ferestre fiu. Un proiect Mediul de dezvoltare Visual Basic 37 nu poate avea dect o singur form (fereastra) MDI. Aceast opiune mai permite i ataarea la proiect a unei forme MDI deja existente pe disc;
Add Module: permite crearea i ataarea unui nou modul ce conine declaraii de variabile, tipuri i proceduri definite de programator i care vor fi globale pentru proiectul curent (publice) sau ataarea unui modul existent pe disc. Acest modul se prezint sub forma unui fiier cu extensia .BAS;
Add Class module: permite crearea i ataarea unui nou modul n care se va definii o clas, adic vor fi definite proprietile i metodele acelei clase, sau ataarea unui modul clas existent pe disc. Modulele clas (ce cuprind definiia unei clase cu proprietile, metodele i evenimentele ei) se prezint sub forma unui fiier cu extensia .CLS;
Add User Control: permite crearea i ataarea la proiectul curent a unui nou obiect (control) creat de utilizator prin tehnologia ActiveX. Aceast opiune permite i ataarea unui obiect (ActiveX) deja creat i existent pe disc sub forma unor fiiere cu extensia .CTL;
Add Property Page: permite crearea unei liste cu proprieti pentru un obiect ActiveX ce poate fi ataat proiectului curent. Listele cu proprieti pot fi ncrcate de pe disc unde sunt stocate sub forma unor fiiere cu extensia .PAG;
Add User Document: permite crearea i ataarea la proiect a unui document utilizator. Acest document utilizator reprezint un obiect care conine informaiile despre instana acelui obiect. Documentul utilizator poate fi o baz de date, o tabel a bazei de date, un obiect ActiveX, etc. Aceast opiune este activ i poate fi utilizat doar n cazul n care proiectul este un ablon ActiveX EXE sau ActiveX DLL;
Add ActiveX Designer: are o singur subopiune Microsoft UserConnection i permite crearea i legarea unui obiect ActiveX de o baz de date de tip Oracle, Access, SysBase, dBase, FoxPro, Excel etc.;
Visual Basic 38 Add File (<Ctrl>+<D>): permite introducerea coninutului unui fiier (text (.TXT), cu declaraii globale (.BAS), o clas (.CLS), un control (obiect) definit de utilizator (.CTL), o list (pagin) cu proprieti (.PAG), o form (.FRM)) existent pe disc n cadrul modulului (proiectului) curent. Fiierul ncrcat astfel poate fi utilizat n acelai timp i de ctre o alt aplicaie, respectiv un alt proiect;
Remove Form1: permite eliminarea unei ferestre, unui modul sau unui alt fiier din cadrul proiectului curent;
References : afieaz o fereastra de dialog (References dialog box) prin intermediul creia bibliotecile de obiecte ale altor aplicaii Windows pot fi folosite n cadrul unei aplicaii Visual Basic. Bibliotecile de obiecte sunt definite n cadrul fiierelor cu extensia .OLB, .TLB, .OCX i uneori chiar cu extensia .DLL sau .EXE. Coninutul unei astfel de biblioteci, adic a obiectelor care o compun mpreun cu proprietile i metodele acestora se poate vizualiza n cadrul ferestrei Object Browser. Pentru ncarcarea unei noi biblioteci de obiecte de pe disc se activeaz butonul Browse din cadrul ferestrei References;
Components: permite afiarea ferestrei Components Window n cadrul creia pot fi selectate sau deselectate controale externe (definite n cadrul fiierelor cu extensia .OCX) precum i diferite obiecte aparinnd unor aplicaii Windows (o tabel Excel, un document Word, etc.) ce pot fi incluse n aplicaie datorit tehnologiei ActiveX (sunt coninute n fiiere cu extensia .EXE sau .DLL). Controalele sau obiectele selectate vor apare sub forma de butoane n cadrul ferestrei cu controale (Toolbox);
Project1 Properties: permite afiarea ferestrei Project Properties, prin intermediul creia pot fi setate unele proprieti i caracteristici de compilare a proiectului curent. Fereastra Project Properties conine n acest sens patru tabele, astfel: General, Make, Compile, Component;
Mediul de dezvoltare Visual Basic 39 Meniul FORMAT
Fig. 2.18. Meniul Format.
Meniul Format (figura 2.18.) permite efectuarea unor operaii de aranjare a obiectelor (controalelor) din cadrul unei ferestre. Pentru ca opiunile acestui meniu s aib efect, obiectele trebuie s fie selectate. Conine urmtoarele opiuni:
Align: permite aliniere obiectelor selectate la stnga, centrul, dreapta, partea superioar, mijlocul, partea inferioar a formei sau raportat la matricea de puncte (grid) de pe form;
Exemplu: Dac se ncarc, se poziioneaz i se selecteaz dou butoane de comand pe o fereastra ca n figura 2.19, iar apoi se alege opiunea Lefts a submeniului Align rezultatul va fi alinierea la stnga ferestrei a celor dou butoane ca n figura 2.20.
Visual Basic 40
Fig. 2.19. Obiecte ncrcate i nealiniate.
Fig. 2.20. Alinierea obiectelor selectate.
Make Same Size: permite redimensionarea (la aceeai dimensiune) a tuturor obiectelor selectate;
Size to Grid: permite modificarea dimensiunilor obiectelor selectate n funcie de matricea de puncte (grid) din cadrul ferestrei;
Horizontal Spacing: are ca efect modificarea spaiului, pe orizontal, dintre obiectele selectate. Conine urmtoarele subopiuni: Mediul de dezvoltare Visual Basic 41 Make Equal: poate fi utilizat numai atunci cnd sunt selectate cel puin trei obiecte, i are ca efect aplicarea unui spaiu egal ntre ele; Increase: permite mrirea spaiului dintre cel puin dou obiecte selectate; Decrease: permite reducerea spaiului dintre cel puin dou obiecte selectate; Remove: permite tergerea (eliminarea) spaiului dintre cel puin dou obiecte selectate;
Vertical Spacing: are aceleai efecte ca i submeniul Horizontal Spacing, cu diferena c modificrile de spaiu dintre obiectele selectate au loc pe vertical;
Center in Form: permite centrarea obiectelor selectate n cadrul formei (ferestrei) att n funcie de limea (Horizontally) ct i n funcie de nlimea (Vertically) acesteia;
Order: permite modificarea vizualizrii obiectelor suprapuse. Utilitatea acestui submeniu const n faptul c dac se dorete vizualizarea unui obiect, care se gsete sub un alt obiect, se selecteaz obiectul de deasupra, iar apoi se alege opiunea Send to Back. Pentru a readuce obiectul la starea iniial (deasupra) se selecteaz opiunea Bring to Front.
Exemplu: Dac se ncarc i se poziioneaz pe fereastr dou butoane de comand ca n figura 2.21, pentru vizualizarea n ntregime a butonului Command1 se selecteaz butonul Command2, iar din submeniul Order se alege opiunea Send to Back, efectul fiind prezentat n figura 2.22. Pentru revenire se alege opiunea Bring to Front a aceluiai submeniu;
Lock Controls: activarea acestei opiuni are ca efect fixarea obiectelor selectate din fereastra, dup ce acestea au fost aduse n poziiile dorite. n urma alegerii aceste opiuni obiectele nu vor mai putea fi deplasate din poziiile curente. Dezactivarea opiunii se va face prin realegerea ei.
Mediul de dezvoltare Visual Basic 43
Meniul DEBUG
Fig. 2.23. Meniul Debug.
Meniul Debug (figura 2.23.) permite depanarea aplicaiei att n faza de editare i scriere a programului ct i n timpul execuiei. Opiunile acestui meniu permit programatorului s urmreasc evoluia anumitor proceduri i variabile pe parcursul execuiei programului. Are urmtoarele opiuni:
Step Into (<F8>): execut aplicaia pas cu pas, scond n eviden efectele (comportamentul) fiecrei instruciuni din cadrul modulelor proiectului;
Step Over (<Shift + F8>): are aceleai efecte ca i opiunea Step Into, cu deosebirea c atunci cnd se ntlnete o instruciune ce apeleaz o procedur (Call) se execut acea procedur asemntor unei singure instruciuni, fr a se parcurge pas cu pas instruciunile ce o compun, trecndu-se, apoi, la instruciunea ce urmeaz instruciunii care a apelat procedura;
Visual Basic 44 Step Out (<Ctrl>+<Shift>+<F8>): poate fi utilizat numai n faza de ntrerupere a execuiei programului i are ca efect executarea tuturor instruciunilor care urmeaz n procedura curent dup instruciunea la care s-a fcut ntreruperea, dup care se revine n faza de ntrerupere;
Run to cursor (<Ctrl>+<F8>): permite execuia unui bloc de instruciuni care se afl ntre o instruciune selectat i poziia curent a cursorului de scriere;
Add Watch : are ca efect afiarea pe ecran a unei ferestre de dialog (Add Watch Window) n cadrul creia se vor introduce variabile sau expresii a cror valoare va fi permanent afiat i urmrit, n cadrul ferestrei Debug, pe parcursul execuiei aplicaiei. n cadrul acestei ferestre de dialog exist i un grup de butoane radio prin intermediul crora se poate seta tipul urmririi care poate fi o urmrire normal a evoluiei valorilor variabilelor i expresiilor respective, o ntrerupere a execuiei aplicaiei atunci cnd valorile sunt adevrate sau o ntrerupere a execuiei atunci cnd valorile variabilelor sau expresiilor se modific;
Edit Watch (<Ctrl>+<W>): permite modificarea caracteristicilor de urmrire a variabilelor sau expresiilor ce au fost introduse n urma apelrii opiunii Add Watch;
Quick Watch(<Shift>+<F9>): permite afiarea unei ferestre care conine valoarea variabilei sau expresiei urmrite, la un moment dat. Ea poate fi apelat numai n momentul n care aplicaia a fost ntrerupt (break mode);
Toggle Breakpoint (<F9>): permite introducerea sau tergerea unor puncte de ntrerupere n execuia aplicaiei. Punctele de ntrerupere sunt marcaje ataate instruciunilor din cadrul modulelor unui proiect astfel nct n momentul execuiei aplicaiei, cnd sunt gsite aceste marcaje, mediul Visual Basic ntrerupe execuia aplicaiei la acea instruciune. Pentru introducerea unor puncte de ntrerupere se deschide fereastra de editare a codului program al aplicaiei (fereastra Code) apoi se plaseaz cursorul de Mediul de dezvoltare Visual Basic 45 editare n linia la care se dorete ntreruperea i se activeaz opiunea Toggle Breakpoint, linia respectiv fiind marcat cu o anumit culoare;
Clear All Breakpoints (<Ctrl>+<Shift>+<F9>): permite tergerea tuturor punctelor de ntrerupere din cadrul modulelor unui proiect. Pentru a terge un singur punct de ntrerupere se poziioneaz cursorul de editare n cadrul liniei marcate i se reactiveaz opiunea Toggle Breakpoint;
Set Next Statement (<Ctrl>+<F9>): permite schimbarea secvenei de execuie a aplicaiei n aa fel nct urmtoarea instruciune ce va fi executat s fie cea pe care este plasat cursorul. De exemplu, se lanseaz n execuie aplicaia n modul pas cu pas (Step Into sau Step Over) i se dorete executarea instruciunii de pe linia patru a codului program. Pentru a realiza acest lucru (nu pas cu pas) se poziioneaz cursorul de editare pe linia patru i se activeaz opiunea Set Next Statement;
Show Next Statement: permite plasarea cursorului de editare la linia care va fi executat n cadrul modulului curent.
Meniul RUN
Fig. 2.24. Meniul Run.
Meniul Run (figura 2.24) conine o serie de opiuni ce sunt folosite pentru lansarea n execuie i controlul execuiei aplicaiei. Opiunile acestui meniu sunt:
Start (<F5>): permite lansarea n execuie a aplicaiei definit n cadrul proiectului curent. n momentul n care este apelat aceast opiune Visual Basic 46 mediul Visual Basic compileaz proiectul, iar n cazul n care exist erori programatorul este avertizat asupra naturii erorii afind o fereastr n care este descris eroarea, dup care poziioneaz cursorul la linia n care a fost depistat eroarea respectiv. Verificarea programului surs al aplicaiei, din punct de vedere a-l sintaxei instruciunilor, este efectuat de compilatorul Visual Basic n momentul n care instruciunea este introdus i se apas tasta <ENTER> pentru a se trece la o noua linie program;
Start With Full Compile (<Ctrl>+<F5>): are aceleai efecte ca i opiunea Start, cu deosebirea c nainte de execuie, proiectul este compilat n ntregime;
Break (<Ctrl>+<Break>): permite suspendarea (ntreruperea) temporar a execuiei unei aplicaii lansate n execuie. Deselectarea acestei opiuni determin reluarea execuiei aplicaiei din punctul n care s-a fcut suspendarea;
End: ncheie forat execuia unei aplicaii;
Restart (<Shift>+<F5>): permite reluarea execuiei aplicaiei de la nceput, avnd ca efect tergerea tuturor datelor introduse n timpul rulrii anterioare a aplicaiei.
Meniul TOOLS
Fig. 2.25. Meniul Tools.
Meniul Tools (figura 2.25.) permite utilizarea unor utilitare de urmrire a proprietilor obiectelor, de creare a meniurilor aplicaiei i de Mediul de dezvoltare Visual Basic 47 configurare a mediului de programare Visual Basic. Conine urmtoarele opiuni:
Add Procedure: permite crearea unei proceduri, funcii, proprieti sau a unei proceduri eveniment (n cazul claselor). Aceast opiune poate fi apelat doar n momentul n care fereastra de editare a programului surs este activ. n urma apelrii acestei opiuni se va afia o fereastr de dialog n care se introduce numele procedurii, funciei sau proprietii precum i natura acesteia, adic dac ea va fi public (disponibil tuturor modulelor proiectului) sau privat (disponibil doar modulului curent);
Procedure Attributes: permite afiarea unei ferestre prin intermediul crei pot fi setate proprietile i metodele unui anumit obiect selectat. Este util la definirea unor clase noi;
Menu Editor (<Ctrl>+<E>): are ca efect afiarea ferestrei de concepere a sistemului de meniuri i submeniuri (Menu Editor) aferente unei aplicaii;
Options: are ca efect afiarea unei ferestre n cadrul creia se gsesc ase casete Editor, Editor Format, General, Docking, Environment, Advanced prin intermediul crora pot fi stabilite caracteristicile i parametrii mediului de programare Visual Basic.
Meniul ADD-INS
Fig. 2.26. Meniul Add-Ins.
Visual Basic 48 Meniul Add-Ins (figura 2.26.). Prin intermediul opiunilor pe care le conine acest meniu se permite lucrul cu anumite aplicaii, accesorii ale mediului de programare Visual Basic. Aceste opiuni sunt:
Visual Data Manager : are ca efect lansarea in execuie a gestionarului bazelor de date Visual Data Manager dac acesta este disponibil;
Report Designer : permite lansarea n execuie a aplicaiei Crystal Reports disponibil doar n cazul versiunii profesionale a mediului de dezvoltare Visual Basic, utilizat pentru crearea unor rapoarte n legtur cu aplicaia;
Add-In Manager : afieaz fereastra Add-In prin intermediul creia pot fi incluse sau terse anumite aplicaii n cadrul meniului Add-Ins. Aplicaiile disponibile sunt listate n cadrul zonei de listare Available Add- Ins din cadrul ferestrei Add-In. Pentru ncrcarea unor aplicaii n cadrul meniului Add-Ins se selecteaz csua aflat n dreptul numelui aplicaiei respective din list.
Meniul WINDOW
Fig. 2.27. Meniul Window.
Mediul de dezvoltare Visual Basic 49 Meniul Window (figura 2.27.) conine un set de opiuni care pot fi utilizate pentru aranjarea sau modificarea ferestrelor n cadrul mediului de programare Visual Basic. Are urmtoarele opiuni:
Split: poate fi utilizat doar n legtur cu fereastra de editare a programului surs al aplicaiei i are ca efect, n urma activrii (marcarea opiunii cu ), scindarea ferestrei pe orizontal n dou pri ce au acelai coninut. Revenirea la starea iniial se face demarcnd aceast opiune printr-un click mouse pe denumirea ei. Rezultatul unei astfel de operaii este prezentat n figura 2.28;
Fig. 2.28. Efectul opiunii Split.
Tile Horizontally: are ca efect reordonarea tuturor ferestrelor deschise din cadrul mediului de programare sub form alturat pe orizontal;
Tile Vertically: are ca efect reordonarea tuturor ferestrelor deschise din cadrul mediului de programare sub form alturat pe vertical;
Visual Basic 50 Cascade: permite reordonarea ferestrelor deschise sub form suprapus asemntor unei cascade.
Meniul HELP
Fig. 2.29. Meniul Help.
Meniul Help (figura 2.29.). Opiunile acestui meniu asigur asisten programatorului prin furnizarea tuturor informaiilor necesare despre mediul de dezvoltare Visual Basic, astfel:
Microsoft Visual Basic Help Topics: afieaz coninutul sistemului de asisten (ajutor) al Visual Basic-ului sub forma unei liste ce conine mai multe domenii de referin (asemntor cu o bibliotec) asupra utilizrii mediului de dezvoltare;
Books Online : permite accesarea manualului de asisten existent n cadrul kit-ului de instalare (CD-ROM);
Obtaining Technical Support : permite obinerea unor informaii tehnice despre utilizarea Visual Basic-ului i a pachetelor software Microsoft;
Microsoft on the Web : poate fi utilizat doar n cazul n care calculatorul este conectat la INTERNET. Aceast opiune conine o serie de legturi (adrese) spre site-uri care ofer informaii de ultim or despre utilizarea mediului de dezvoltare Visual Basic. Avantajul acestei opiuni const n actualitatea informaiilor pe care le ofer; Mediul de dezvoltare Visual Basic 51
About Microsoft Visual Basic: afieaz o fereastr care conine informaii despre versiunea curent a mediului Visual Basic, licena de utilizare i starea sistemului.
2.3.1.2. Bara cu instrumente (Toolbar)
n tabelul de mai jos sunt descrise butoanele din cadrul Toolbar-ului Standard i corespondena acestora cu unele opiuni din cadrul liniei de meniu principal.
Buton din cadrul toolbar-ului Aciune Opiuni echivalente din cadrul meniului Creeaz un nou proiect (sau un grup de proiecte) Add Project din cadrul meniului File Creeaz o noua form (fereastra) Add Form din cadrul meniului Project Deschide (ncarc) un proiect existent pe disc Open Project din cadrul meniului File
Salveaz proiectul curent Save Project din cadrul meniului File
Afieaz fereastra de creare a meniurilor Menu Editor din cadrul meniului Tools
Copierea n zona de memorie a textului sau obiectului selectat cu tergerea lui la surs (mutare) Cut din cadrul meniului Edit
Copierea n zona de memorie a textului sau obiectului selectat Copy din cadrul meniului Edit
Preluarea i repunerea la destinaie a Paste din cadrul meniului Edit Visual Basic 52 coninutului zonei de memorie (clipboard)
Cutarea unui ir de caractere (text) n cadrul programului surs a proiectului Find din cadrul meniului Edit
Anuleaz ultima (ultimele) operaie executat de utilizator Undo din cadrul meniului Edit
Reface ultima (ultimele) operaie de anulare (Undo) Redo din cadrul meniului Edit
Lanseaz n execuie aplicaia (proiectul) curent Start din cadrul meniului Run
ntrerupe temporar execuia aplicaiei Break din cadrul meniului Run
ncheie execuia aplicaiei End din cadrul meniului Run
Afieaz fereastra Proiect Project Explorer din cadrul meniului View
Afieaz fereastra Properties Properties Window din cadrul meniului View
Afieaz fereastra Form Layout Form Layout Window din cadrul meniului View
Afieaz fereastra Object Browser Object Browser din cadrul meniului View
Afieaz fereastra Toolbox Toolbox din cadrul meniului View
2.3.2. Fereastra cu controale (Toolbox) Mediul de dezvoltare Visual Basic 53
Fig. 2.30. Toolbox ul (Fereastra cu controale).
2.3.2.1. Elementele ferestrei cu controale (Toolbox)
Fereastra cu controale conine un set de butoane ce reprezint obiectele (elemente de control) care pot fi utilizate de programator pentru construirea unei aplicaii. Cele mai folosite controale sunt: Pointer: reprezint singurul buton din cadrul toolbox-ului care nu constituie un obiect de control efectiv. El este folosit pentru deplasarea sau dimensionarea unui element de control din cadrul unei forme i pentru anularea selectrii unui buton din cadrul toolbox-ului. Atunci cnd butonul ce reprezint pointer-ul este apsat controalele din cadrul formei pot fi deplasate plasnd cursorul (pointer-ul) mouse-ului pe acel element de Picture Box Text Box Command Button Option Button List Box Vertical Scroll Drive List Box File List Box Line Data Common Dialog DBCombo Pointer Label Frame Check Combo Horizontal Timer Directory Shape Image OLE DBList Visual Basic 54 control i tinnd apsat butonul stng al mouse-ului se deplaseaz controlul pe suprafaa formei, operaiune cunoscut sub denumirea de Drag & Drop. Pentru dimensionarea unui element de control se selecteaz, printr-un click al mouse-ului, elementul respectiv i prin plasarea cursorului pe unul din pointerii situai n jurul elementului se deplaseaz mouse-ul innd butonul stng apsat. Pointer-ul din cadrul toolbox-ului este activat implicit dup ce un element de control a fost ncrcat pe form;
Label (eticheta):
Fig. 2.31. Eticheta.
Label (figura 2.31) reprezint o etichet explicativ ce conine un anumit text ce va fi afiat pe suprafaa formei. El poate fi plasat pe forma pentru a evidenia anumite aspecte ale aplicaiei. Coninutul etichetei, textul care va fi afiat, o reprezint valoarea proprietii Caption care este dat de un ir de caractere. Iniial proprietatea Caption este egal cu "Label1" la prima etichet, "Label2" pentru cea de a doua i aa mai departe. Pentru modificarea valorii acestei proprieti se selecteaz Caption din cadrul ferestrei Properties (click mouse) i se tasteaz textul dorit. Culorile fondului i textului etichetei pot fi schimbate modificnd valorile proprietilor BackColor, respectiv ForeColor sau prin intermediul ferestrei Color Palette;
Frame (cadru,chenar)
Mediul de dezvoltare Visual Basic 55
Fig. 2.32. Chenar.
Frame (figura 2.32.) reprezint un cadru n care poate fi plasat un grup de controale. De obicei n cadrul unui chenar se introduc toate controalele care sunt necesare realizrii unei anumite operaii. Titlul chenarului este dat de valoarea proprietii Caption a acestuia. Pentru a introduce un control (inclusiv un alt cadru) n chenar, se va proceda astfel: selectarea controlului Frame (chenar) din cadrul cutiei cu controale (toolbox) i ncrcarea lui pe foaia de lucru printr-un dublu click mouse pe icon-ul ce reprezint chenarul; aducerea chenarului la dimensiunea dorit, care se realizeaz prin poziionarea mouse-ului pe unul dintre cei opt pointeri situai n jurul controlului de pe fereastr i innd butonul stng apsat se va deplasa mouse-ul pn cnd chenarul are dimensiunea dorit, apoi se las butonul liber; selectarea din cadrul cutiei cu controale a controlului ce se dorete a fi ncrcat n interiorul chenarului; poziionarea cursorului mouse-ului n interiorul chenarului i innd butonul stng apsat se deplaseaz mouse-ul setnd astfel dimensiunea controlului respectiv. Mutarea chenarului pe foaie face ca i controalele din interiorul acestuia s fie mutate n acelai timp, ele pstrndu-i poziia n cadrul chenarului;
ChekBox (caseta de opiune)
Visual Basic 56
Fig. 2.33. Caseta de opiune.
ChekBox (figura 2.33) este o caset nsoit de un anumit text ce reprezint o opiune. Selectarea casetei are ca efect activarea opiunii (comenzii) respective iar deselectarea casetei are ca efect dezactivarea opiunii. Principalele proprieti ale acesteia sunt Caption i Value. Caption reprezint numele opiunii ce nsoete caseta de opiune (implicit valoarea acestei proprieti este Chek1, Chek2 etc.) i Value care poate avea urmtoarele valori: 0 - Uncheked: csua nemarcat - ceea ce semnific opiune inactiv; 1 Cheked: csua marcat prin dou diagonale n interiorul acesteia, ceea ce semnific opiunea activ; 2 Grayed: csua umplut cu culoarea gri.
Modificarea strii unei csue de opiune se face printr-un click mouse pe aceasta, sau cu ajutorul tastaturii prin acionarea tastei <SPACEBAR> (bara de spaiu), rezultatul fiind unul dintre cele trei cazuri de mai sus. Dac, ntr-o fereastr sunt mai multe csue de marcaj deplasarea de pe una pe alta se va face (n lipsa mouse-ului) cu ajutorul tastei <TAB>;
ComboBox (caseta combo)
Fig. 2.34. Caseta combo (caset derulant).
ComboBox (figura 2.34) este o combinaie (combinated box) ntre o caset de editare (textbox) i o caset de listare (listbox). Utilizarea casetei combo presupune editarea unui text (care poate fi o opiune) n caseta de editare i prin acionarea tastei <ENTER>, introducerea acestuia n caseta Mediul de dezvoltare Visual Basic 57 de listare. Invers, selectarea cu ajutorul mouse-ului a unui element din cutia de listare printr-un click mouse, aducerea lui n caseta de editare. Vizualizarea elementelor din caseta de listare se face printr-un click mouse pe sgeata din dreapta casetei de editare. n funcie de posibilitile de combinare a celor dou controale ce alctuiesc cutia combo exist trei tipuri de casete combo. Stabilirea unuia dintre aceste tipuri se face prin intermediul proprietii Style care poate lua una din urmtoarele valori: 0 - Dropdown Combo: care reprezint caseta combo propriu- zis; 1 - Simple Combo: este afiat i activ doar caseta de editare; 2 - Dropdown List: este activ doar caseta de listare. Pentru adugarea unui element n cadrul cutiei de listare se va folosi metoda AddItem cu structura: <nume_caseta>.AddItem "<element>" unde: <nume_caseta> - reprezint numele casetei combo respective i este dat de valoarea proprietii Name a acesteia; "<element>" - reprezint elementul ce va fi indrodus n cadrul casetei de listare i care trebuie s fie un ir de caractere (tip String);
Exemplu: Combo1.AddItem Element 1 Combo1.AddItem Element 2 .
Pentru a suprima un element din cadrul casetei de listare se va utiliza metoda RemoveItem cu urmtorul format: <nume_cutie>.RemoveItem <index>
unde: <index> - reprezint poziia elementului din list care va fi ters (pentru primul element din list acesta este 0).
Visual Basic 58 Exemplu: Pentru a terge din lista casetei combo primul elemente se va introduce urmtoarea linie program: Combo1.RemoveItem (0)
Datorit faptului c o caset combo este rezultatul combinrii a dou tipuri de controale, aceasta le motenete proprietile. Cele mai importante proprieti sunt: List: reprezint un tablou ale crui elemente sunt elementele din cadrul casetei de listare; ListIndex: reprezint numrul corespunztor poziiei elementului selectat din cadrul listei; ListCount: reprezint numrul de elemente din list la un moment dat; Sorted (valoare True): permite sortarea elementelor din list n ordine alfabetic. Modificrile unui element efectuate n cadrul casetei de editare genereaz evenimentul Change;
HScrollBar i VScrollBar (bara de deplasare pe orizontal i bara de deplasare pe vertical)
Fig. 2.35. Bara de deplasare pe orizontal i bara de deplasare pe vertical.
Barele de deplasare (figura 2.35.) sunt, n general, acele controale care faciliteaz vizualizarea textului dintr-o caset de editare (textbox) cu proprietatea Multiline setat True i a casetelor de listare (listbox). Ele sunt compuse din dou sgei, plasate la extremitile acestora, i un cursor care se deplaseaz de la un capt la altul al barei. Deplasarea, ntr-un sens sau Mediul de dezvoltare Visual Basic 59 altul, este generat de activarea sgeilor care poate fi fcut printr-un click mouse pe ele, sau cu ajutorul tastelor direcionale. Aceste controale pot fi folosite i separat de alte controale (textbox, listbox) fiind necesar doar setarea corespunztoare a anumitor proprieti ale acestora. Dintre proprietile barelor de deplasare cele mai importante sunt: Min: corespunde valorii minime pn la care poate fi deplasat cursorul pe bar (cursorul n sus pentru barele verticale i la stnga pentru cele orizontale); Max: corespunde valorii celei mai mari pn la care poate fi deplasat cursorul pe bar (cursorul n jos pentru barele verticale i la dreapta pentru cele orizontale); Value: reprezint valoarea corespunztoare poziiei cursorului. Pentru stabilirea pasului care va fi fcut la o deplasare a cursorului pe bar se folosesc proprietile SmallChange si LargeChange. Astfel cursorul va face pasul stabilit de valoarea proprietii SmallChange atunci cnd sunt acionate sgeile cu ajutorul mouse-ului, iar pasul stabilit de LargeChange cnd se acioneaz cu mouse-ul poriunea barei de deplasare situat ntre cele dou sgei. Implicit valoarea proprietilor SmallChange i LargeChange este 1, iar cele ale proprietii Min i Max corespund intervalului [0, 32767]. Evenimentul cel mai important al barelor de deplasare este Change. Acesta este generat n timp ce cursorul se deplaseaz pe bar, deci cnd se modific valoarea proprietii Value;
Timer (minutar): reprezint un element de control folosit atunci cnd se dorete ca n acelai timp cu aplicaia s se execute i alte procese (proceduri, instruciuni etc.). Acest tip de control este vizibil doar n momentul proiectrii aplicaiei i nu n momentul execuiei acesteia. La expirarea intervalului de timp se va declana evenimentul Timer acesta lansnd n execuie procedura pentru care a fost creat. Intervalul de timp este determinat prin atribuirea unei valori (reprezentat prin milisecunde) proprietii Interval a controlului Timer. Pentru a opri minutarul i a ntrerupe apelurile repetate ale procedurii eveniment <nume_timer>_Timer(), trebuie atribuit valoarea Visual Basic 60 False proprietii Enabled. Pentru reluare apelurile repetate trebuie atribuit valoarea True proprietii Enable;
DirListBox (caseta de listare a directoarelor)
Fig. 2.36. Caseta de listare a directoarelor.
DirListBox (figura 2.36) este o caset n care sunt listate i pot fi accesate directoarele unitii curente. Aceste casete prezint, sub form arborescent (ierarhic), structura de directoare de pe o anumit unitate de stocare (driver). Cea mai important proprietate a acestui control este proprietatea Path, care conine calea spre directorul selectat. Selectarea unui director (deschiderea lui) se face printr-un dublu click mouse pe numele acestuia, ncrcndu-se astfel proprietatea Path. Procedura asociat evenimentului Change a casetelor de selecie a directoarelor este apelat n momentul n care valoarea proprietii Path se modific, deci atunci cnd se execut un dublu click mouse pe numele unui director din list;
Shape (elemente grafice)
Mediul de dezvoltare Visual Basic 61
Fig. 2.37. Elemente grafice.
Acest tip de control (figura 2.37) permite plasarea pe form a urmtoarelor figuri geometrice: patrulater, ptrat, elips, cerc, patrulater cu coluri arcuite, ptrat cu coluri arcuite. Dintre proprietile acestui control pot fi enumerate: Shape - are ca valoare figura geometric ce va fi folosit. Ea poate avea urmtoarele valori: 0 Rectangle : patrulater; 1 - Square : ptrat; 2 - Oval : elips; 3 - Circle : cerc; 4 - Rounded rectangle : patrulater cu colurile arcuite; 5 - Rounded square : ptrat cu coluri arcuite. Fillstyle - valoarea acestei proprieti reprezint modelul de umplere a figurii respective. Poate avea urmtoarele valori: 0 Solid : plin; 1 Transparent : transparent; 2 - Horizontal line : linii orizontale; 3 - Vertical line : linii verticale; 4 - Upward diagonal : linii oblice de sus n jos i de la stnga la dreapta; 5 - Downward diagonal : linii oblice de jos n sus i de la stnga la dreapta; 6 Cross : combinaie ntre 2 i 3; 7 - Diagonal cross : combinaie ntre 4 i 5. Odat introduse n cadrul foii de lucru aceste elemente grafice nu au dect un rol decorativ;
Image (imagine)
Visual Basic 62
Fig. 2.38. Imagine.
Acest tip de control (figura 2.38) odat ncrcat pe foaia de lucru, permite afiarea imaginilor care se gsesc n fiierele cu extensiile .bmp, .wmf, .ico, .dib. ntre caseta de imagini i acest control exist unele deosebiri cum ar fi, de exemplu, lipsa unor proprieti (Autoredraw, Autosize, Clipcontrols, etc.), ct i a unor proceduri eveniment (Change, Paint, Resize, etc.). n schimb, obiectul Image are proprietatea Stretch care poate lua valoarea True, caz n care imaginea ncrcat, cu ajutorul proprietii Picture, poate fi redimensionat trgnd cu mouse-ul de pointerii de pe marginea imaginii. Iniial proprietatea Stretch are valoarea False;
OLE: reprezint un element de control ce permite ncrcarea unui anumit obiect aparinnd unei alte aplicaii Windows. De exemplu o tabel din Excel, un document Word s.a..
DBList
Fig. 2.39. DBList.
DBList (figura 2.39) este un element de control ce permite listarea nregistrrilor din cadrul unei baze de date;
PictureBox (caseta de imagini)
Mediul de dezvoltare Visual Basic 63
Fig. 2.40. Caseta de imagini.
Pentru a include n aplicaie i imagini, se vor folosi casetele de imagini (fig. 2.40) care permit stocarea imaginilor (numai fiiere cu extensia .ico, .bmp, .wmf). Imaginile pot fi asociate aplicaiei n dou moduri: n momentul conceperii interfeei utiliznd proprietatea Picture aparinnd obiectului caseta de imagini; pe parcursul execuiei programului utiliznd instruciunea urmtoare:
<nume_fisier> - reprezint calea spre fiierul (.bmp, .ico, .wmf) care conine imaginea ce va fi ncrcat n aceast zon. Pentru a elimina imaginea ncrcat n zona de imagini se va folosi instruciunea:
<nume_zona_imagini>.Picture = LoadPicture("")
Datorit faptului c mrimea casetei de imagini nu este totdeauna egal cu cea a imaginii ncrcate, fcnd vizibil doar o parte a acesteia, se va seta proprietatea AutoSize (autodimensionare) pe valoarea True, activnd astfel capacitatea de autodimensionare a casetei de imagini, care se va dimensiona, n mod automat, n funcie de dimensiunile imaginii ncrcate;
TextBox (caseta de editare)
Visual Basic 64 Fig. 2.41. Caseta de editare.
Acest tip de control (figura 2.41) permite introducerea de la tastatur a diferitelor tipuri de informaii, operaiune realizat de ctre utilizatorul aplicaiei. n cadrul acestei casete utilizatorul va putea s introduc informaiile care-i sunt necesare execuiei aplicaiei i care pot fi alfanumerice (sub forma unui ir de caractere), sau pot fi numerice. Proprietatea care va fi ncrcat cu coninutul casetei de editare este proprietatea Text. n cazul n care, n cadrul casetei de editare sunt introduse date numerice, compilatorul Visual Basic le trateaz ca iruri de caractere. Pentru a le considera date numerice se va folosi funcia Val, care transform un ir de caractere n numrul reprezentat de cifrele din cadrul irului.
Exemplu: Se va introduce n cadrul casetei de editare numrul 686. Pentru ca el s fie considerat de aplicaie numr i nu ir de caractere se va scrie urmtoarea linie program: numar = Val(<nume_c_e>.Text) unde: numar - va fi egal cu numrul 686 i va putea fi folosit n operaii matematice; <nume_c_e> - reprezint numele casetei de editare dat de proprietatea Name a acesteia i care iniial este egal cu Text1 pentru prima caseta de editare, Text2 pentru cea de a doua i aa mai departe pentru celelalte casete de editare introduse n cadrul foii de lucru. Caseta de editare posed numeroase alte proprieti care permit modificarea formei de afiare a coninutului casetei (FontBold, FontItalic, etc). Dac textul ce va fi introdus n cadrul casetei de editare este format din mai multe linii, se va seta proprietatea Multiline pe valoarea True, iar dac textul va fi mai mare dect caseta de editare, pentru a-l putea vizualiza n ntregime, se va seta proprietatea ScrollBars pe una din urmtoarele valori: 0 - None : fr bare de defilare; 1 - Horizontal : bara de defilare pe orizontal; 2 - Vertical : bara de defilare pe vertical; Mediul de dezvoltare Visual Basic 65 3 - Both : att bara de defilare pe orizontal ct i bara de defilare pe vertical. Pentru trecerea de la o caset de editare la alta i n general, de la un obiect la altul, n cadrul aceleai foi de lucru se folosete tasta <TAB>. n program, pentru aceeai operaie, se folosete metoda SetFocus valabil tuturor controalelor (obiectelor) cu excepia obiectelor Cadru, Caseta imagini, Linie, Meniu, Figuri grafice i Minutar. Sintaxa metodei SetFocus este:
<nume_obiect>.SetFocus
n urma folosirii acestei metode obiectul respectiv devine activ cu condiia ca proprietatea Enable a acestuia s fie setat pe valoarea True;
CommandButton (buton de comand)
Fig. 2.42. Buton de comand.
Butoanele de comand (figura 2.42) reprezint acele controale care acionate cu ajutorul mouse-ului sau tastei <ENTER> realizeaz operaiunea precizat de textul de pe buton. Aceste controale sunt numite butoane deoarece la acionarea lor produc un efect vizual ce d senzaia apsrii unui buton real. Principalele proprieti ale butoanelor de comand sunt: Caption: a crei valoare reprezint textul ce va fi nscris pe butonul de comand (se poate utiliza simbolul & naintea unui caracter pentru a face posibil apelarea butonului prin combinaia de taste <Alt> + caracterul ce se afl dup simbolul &); Cancel (valoare True): genereaz evenimentul Click n timp ce utilizatorul acioneaz tasta <ESC>; Visual Basic 66 Name: numele atribuit butonului (implicit Command1 pentru primul buton, Command2 pentru cel de-al doilea etc.); Default (valore True): indic faptul c butonul este activ (cel care va declana o aciune la apsarea tastei <ENTER>). Acest lucru se observ prin faptul c n jurul textului de pe buton apare un chenar cu laturile formate din linii ntrerupte i un chenar cu laturile din linii continue. ntr-o fereastr nu poate exista dect un singur buton activ. Dac, de exemplu, pe o foaie de lucru se ncarc dou butoane, iar la primul proprietatea Default are valoarea True, setnd valoarea True i la proprietatea Default a celui de-al doilea buton, proprietatea Default a primului buton este ncrcat automat cu valoarea False, astfel nct numai un buton de pe fereastr poate avea proprietatea Default setat pe True; Enabled (valoare False): permite dezactivarea butonului. Odat dezactivat orice aciune asupra acestui obiect nu mai are nici un efect;
OptionButton (buton de opiune)
Fig. 2.43. Buton de opiune.
Butoanele de opiune (figura 2.43) cunoscute i sub denumirea de butoane radio datorit faptului c dintre mai multe butoane de opiune pot fi active numai unul la un moment dat. Un buton de opiune devine activ n momentul n care cercul care-l reprezint este plin. Deplasarea pe aceste butoane i activarea lor se face asemntor casetelor de opiune. Activarea (dezactivarea) unui buton de opiune este determinat de proprietatea Value care poate avea urmtoarele valori: False: cercul este gol, opiunea reprezentat de butonul radio este dezactivat; Mediul de dezvoltare Visual Basic 67 True: cercul este plin, deci opiunea respectiv este activat. Butoanele de opiune, din cadrul diferitelor aplicaii Windows, sunt de obicei grupate ntr-un chenar. n acest caz, pot fi create mai multe grupuri de butoane radio total independente. Alegerea unei opiuni dintr-un chenar (cadru) nu influeneaz n nici un fel celelalte grupe de opiuni care se gsesc n chenare diferite. Textul din dreptul cercului este dat de valoarea proprietii Caption a butoanelor de opiune i care poate fi situat n dreapta sau stnga acestui n funcie de valoarea proprietii Alignment. Proprietatea Alignment poate avea dou valori: 0 - Left Justify: textul este situat n stnga cercului (dreapta utilizatorului); 1 - Right Justify: textul este situat n dreapta cerculeului (stnga utilizatorului);
ListBox (caseta de listare)
Fig. 2.44. Caseta de listare.
Acest tip de control (figura 2.44.) permite stocarea i afiarea unor elemente (iruri de caractere) sub forma unei liste. Dac numrul de elemente depete dimensiunea casetei de listare (pe vertical), n partea stng a acesteia va apare o bar de deplasare pe vertical, care prin acionarea cu ajutorul mouse-ului, face posibil vizualizarea tuturor elementelor din cadrul casetei. Pentru gestionarea elementelor din cadrul listei se folosesc pe lng metodele AddItem, RemoveItem (tratate la casetele combo) i urmtoarele metode: Clear i Refresh. Asfel: <nume_lista>.Clear: terge toate elementele din list; <nume_lista>.Refresh: face actualizarea listei. Selectarea unui element din cadrul casetei de listare se face fie printr-un click mouse pe el, fie cu ajutorul tastei <ENTER> dup ce s-a Visual Basic 68 realizat poziionarea pe element cu ajutorul tastelor direcionale. Un element selectat din cadrul listei este prezentat n video invers. Proprietile List, ListCount, ListIndex i Sorted tratate la casetele combo sunt valabile i pot fi utilizate n mod asemntor i la cutiile de listare;
DriveListBox (caseta de listare i selecie a unitilor de disc)
Fig. 2.45. Caseta de listare i selecie a unitilor de disc.
Acest tip de control (figura 2.45) sunt combobox-uri ale cror elemente reprezint diferitele uniti de disc existente pe calculator, permind astfel selectarea i activarea uneia dintre acestea n funcie de opiunea utilizatorului. Un click mouse pe sgeata din stnga casetei de editare provoac deschiderea cutiei de listare i afiarea unitilor existente. Cea mai important proprietate a acestui control este proprietatea Drive care este ncrcat cu numele unitii selecionat din list i prezent n zona de editare a cutiei. Printre evenimentele cele mai importante se numr evenimentul apsrii unei taste (KeyPress) i cel survenit n urma alegerii unei noi uniti, adic evenimentul Change (schimbare). Ca uniti pot fi unitatea de hard disc (C:, D:, E:, F:, etc.), unitatea dischet (A:, B:), unitatea cd-rom (L:, G:, etc.), unitatea streamer, disc optic etc..;
FileListBox (caseta de listare i selecie a fiierelor)
Mediul de dezvoltare Visual Basic 69
Fig. 2.46. Caseta de listare i selecie a fiierelor.
Acest control (figura 2.46) reprezint o caset de listare coninnd toate fiierele directorului curent. Ea se include n aplicaie atunci cnd se dorete deschiderea unui anumit fiier. La ncrcarea acestei casete, din cadrul toolbox-ului, ea va conine implicit fiierele din directorul (curent) n care este instalat Visual Basic-ul. Executnd un dublu click mouse pe denumirea unui fiier din list, proprietatea FileName a acestui control va fi ncrcat cu numele fiierului i calea spre acel fiier. Pentru a afia n cadrul zonei de listare a casetei fiierele care se gsesc ntr-un director, va trebui ncrcat proprietatea Path precizndu-se calea spre acel director, astfel:
<caseta _de_selectie_ fiier>.Path = "<cale >"
Proprietatea Pattern permite definirea unui filtru de afiaj a fiierelor, adic se vor afia doar acele fiiere care au extensia setat n cadrul proprietii Pattern. n cadrul acesteia pot fi utilizate simbolurile * i ?. Primul simbol se va utiliza atunci cnd se dorete afiarea tuturor fiierelor care au o anumit extensie indiferent de numele acestora (*.extensie) sau a fiierelor cu un anumit nume indiferent de extensie (nume_fisier.*), iar cel de-al doilea simbol se va folosi pentru substituirea unuia sau mai multor caractere din cadrul numelui sau extensiei fiierului. De exemplu, dac se dorete afiarea fiierelor care au primul caracter din numele extensiei litera "d" indiferent de celelalte i de numele acestora, proprietatea Pattern va fi definit astfel Pattern = "*.d??" . Visual Basic 70 Casetele de selectare a fiierelor recunosc, pe lng celelalte evenimente comune tuturor controalelor (cu unele excepii: Timer), dou evenimente particulare: PathChange: care este declanat fie de schimbarea valorii proprietii Path, fie de atribuirea unei valori proprietii FileName, care conine calea spre un alt director dect cel setat prin Path; PatternChange: este declanat la schimbarea valorii proprietii Pattern, sau atunci cnd proprietatea FileName este ncrcat cu o valoare n care se specific un alt filtru de cutare, diferit de cel setat n cadrul proprietii Pattern. n legtur cu acest tip de control mai pot fi folosite i proprietile referitoare la atributele unui fiier. Acestea pot fi: Archive, Normal, Hidden, ReadOnly i System, care pot avea valoarea True sau False. Setarea primei valori are ca efect afiarea fiierelor care au cel puin unul din atributele setate pe aceast valoare, iar cea de-a doua valoare are efectul invers primei. Proprietile Archive, Normal i ReadOnly au valoarea True setat implicit, iar Hidden si System au valoare implicit valoarea False. De obicei caseta de selecie a fiierelor se folosete n combinaie cu caseta de selecie a directoarelor i caseta de selecie a unitilor de disc;
Line (linia grafic)
Fig. 2.47. Linia grafic.
Acest obiect (figura 2.47.) permite trasarea, n cadrul foii de lucru, a liniilor grafice n diferite poziii, modele i culori. Modificarea poziiei liniei se face plasnd cursorul mouse-ului pe linie i innd apsat butonul stng se deplaseaz linia n direcia dorit. Modificarea lungimii liniei se face plasnd cursorul mouse-ului pe unul dintre cei doi pointeri aflai la capetele liniei i innd apsat butonul stng se deplaseaz mouse-ul n direcia Mediul de dezvoltare Visual Basic 71 dorit. Modelul liniei este dat de valoarea proprietii BorderStyle care poate fi: 0 - Transparent : transparent; 1 - Solid : plin; 2 - Dash : intrerupt; 3 - Dot : punctat; 4 - Dash-Dot : combinaie ntre 2 i 3; 5 - Dash-Dot-Dot : combinaie ntre 2 i 3; 6 - Inside solid : plin. Pentru a modifica culoarea liniei se seteaz valoarea proprietii DrawMode pe valoarea 9 - Mask Pen i din fereastra Color Palette se selecteaz culoarea dorit pentru scris. Acest control are doar un caracter decorativ nefiindui asociat nici o procedur eveniment;
Data
Fig. 2.48. Data.
Reprezint un element de control ce permite lucrul cu diferite baze de date (tabele): Acces, FoxPro, dBASE, Excel, Lotus, Paradox;
CommonDialog: reprezint un element de control care permite crearea n mod interactiv a unei ferestre de dialog referitoare la diferite operaii cum ar fi: deschiderea unor fiiere, salvarea fiierelor, setarea imprimantei, stabilirea font-urilor, culorilor i a unor ferestre de asisten (help). La fel ca i Timer-ul, nici acest control nu este vizibil pe parcursul execuiei aplicaiei. Proprietile cele mai importante ale acestui control pot fi vizualizate i modificate cu ajutorul lui Custom care permite afiarea unei ferestre de dialog (figura2.49).
Visual Basic 72
Fig. 2.49. Fereastra de setare a proprietilor obiectului Common Dialogs Control Properties.
n cadrul tabelelor acestei ferestre se gsesc toate proprietile controlului CommonDialog. Astfel: Tabela Open/Save As cuprinde proprietile ce aparin unei ferestre de deschidere/salvare a fiierelor. Cele mai importante elemente ale ferestrei sunt: DialogTitle: corespunde proprietii cu acelai nume din fereastra cu proprieti a crei valoare reprezint numele ferestrei de deschidere/salvare a fiierelor. Este creat cu ajutorul controlului CommonDialog; FileName: are ca valoare calea i numele fiierului selectat din cadrul ferestrei create i afiate pe parcursul execuiei aplicaiei; InitDir: reprezint directorul curent n momentul afirii ferestrei; Filter: reprezint filtrul de cutare a fiierelor. Tabela Color cuprinde proprietile aferente ferestrei de selectare a culorilor dintre care cea mai important este: Color: reprezint culoarea selectat din cadrul ferestrei. Tabela Font cuprinde proprietile aferente ferestrei de selecie a font- urilor. Mediul de dezvoltare Visual Basic 73 Tabela Print cuprinde proprietile aferente ferestrei de setare a parametrilor imprimantei. Tabela Help cuprinde proprietile aferente ferestrei de asisten (help).
De exemplu, dac se dorete afiarea unei ferestre de deschidere a fiierelor n cadrul aplicaiei, se procedeaz astfel: a). se deschide prin intermediul propriettii Custom a obiectului (controlului) CommonDialog, fereastra de proiectare i n cadrul acesteia se seteaz proprietatea DialogTitle cu textul Deschidere fisiere; b). se ncarc pe form un buton de comand iar n cadrul procedurii eveniment Command1_Click() se tasteaz codul program n formatul urmtor: CommonDialog1.ShowOpen astfel:
Private Sub Command1_Click() CommonDialog1.ShowOpen End Sub
De reinut este faptul c acest obiect (control) nu are nici o procedur eveniment.
DBComboBox
Fig. 2.50. DBComboBox.
DBComboBox (figura 2.50) reprezint un element de control asemntor cu controlul ComboBox, dar care se refer la nregistrrile unei baze de date.
2.3.2.2. ncrcarea i modificarea elementelor ferestrei. Visual Basic 74
Pentru a ncrca un element de control din toolbox pe form se poate proceda n dou moduri: A. se plaseaz cursorul mouse-ului pe butonul ce reprezint acel element i se execut un dublu click; B. se selecteaz cu ajutorul mouse-ului butonul ce reprezint elementul respectiv; se deplaseaz apoi cursorul mouse-ului pe suprafaa formei; innd apsat butonul stng se deplaseaz mouse-ul determinnd dimensiunea elementului ce va fi ncrcat n momentul prsirii butonului stng al mouse-ului. Prin apsarea butonului drept al mouse-ului, cnd cursorul acestuia se afl pe suprafaa toolbox-ului, va apare un meniu popup cu un set de opiuni ce permit diferite operaii asupra toolbox-ului, opiuni ce se gsesc i n cadrul meniurilor din fereastra principal. Structura ferestrei de controale (toolbox) din figura 2.30 nu constituie un standard, coninutul acestei ferestre putnd fi modificat n sensul c pot fi introduse noi tipuri de controale create de diferite firme, controale care, de obicei, au asociate ferestre de asisten (help).Aceast fereastr de asisten poate fi afiate prin apsarea tastei <F1> n momentul n care controlul respectiv este selectat n cadrul toolbox-ului sau pot fi eliminate unele dintre cele existente prin intermediul ferestrei Components ce poate fi activat din cadrul meniului Project opiunea Components i care este prezentat n figura 2.51.:
Mediul de dezvoltare Visual Basic 75
Fig. 2.51. Fereastra Components.
Elementele acestei ferestre sunt: Tabela Controls care conine: Lista cu controale: cuprinde toate controalele disponibile la un moment dat; Butoanele de comand Ok, Cancel, Browse, Help. Butonul Browse, permite ncrcarea de pe disc i a altor fiiere (cu extensia .OCX) ce conin controale sau obiecte ale altor aplicaii. Tabela Designers care conine acele controale de tip ActiveX care vor fi ataate n cadrul opiunii Add ActiveX Designer din meniul Project; Tabela Insertable Objects care conine obiectele disponibile, ale altor aplicaii Windows, care pot fi ncrcate i utilizate n aplicaie (fiiere cu extensia .OCX, .DLL, .EXE).
Pentru a selecta controalele sau obiectele din cadrul listei se marcheaz caseta de opiune ce nsoete denumirea acestora. Odat selectate ele vor aprea n cadrul toolbox-ului.
Visual Basic 76 2.3.3. Forma (Form)
Fig. 2.52. Forma.
Forma (figura 2.52) sau macheta de lucru (fereastra aplicaiei) este obiectul fundamental al interfeei aplicaiei ce va fi creat, pentru c este ablonul pe care vor fi plasate elementele de control (maxim 255) cum ar fi butoanele de comand, casetele de opiune, etichete, chenare, casete de editare, etc. n general fereastra este primul obiect afiat la lansarea n execuie a unei aplicaii. n momentul conceperii interfeei, Visual Basic-ul afieaz ntotdeauna o fereastr de lucru numit fereastra principal. Dac ns proiectul aplicaiei conine mai multe ferestre, selectnd opiunea Project1 Properties din cadrul meniului Project, iar din fereastra afiat se poate selecta n caseta Start Up Object fereastra ce se dorete a fi lansat prima n execuie. Pentru a crea o nou foaie de lucru (fereastra) se va selecta opiunea Add Form din cadrul meniului Project. Visual Basic-ul atribuie numele (identificator) Form1 primei ferestre create, numele Form2 pentru a doua .a.m.d. Ferestrele pot fi de dou feluri: ferestre simple: sunt cele prezentate mai sus, adic acelea pe care pot fi implementate diferite obiecte; grup de ferestre (MDI form): cuprinde n cadrul lui o fereastr mam i una sau mai multe ferestre simple aparinnd acesteia, Mediul de dezvoltare Visual Basic 77 numite ferestre fiu. Crearea unei ferestre mam se face selectnd opiunea Add MDI form din cadrul meniului Project. Visual Basic ataeaz automat numele acesteia celorlalte fiiere din cadrul ferestrei Project. Pentru ca o fereastr simpl s aparin ferestrei mam valoarea boolean a proprietii MDIChild, corespunztoare ferestrei simple, trebuie s fie setat pe True (adevrat). ntr-o fereastr mam, n afar de ferestrele fiu, nu pot fi implementate dect casete de imagini precum i acele obiecte care au proprietatea Align (poziionare). Apsnd butonul drept al mouse-ului, atunci cnd acesta este pe form, va apare un meniu popup ale crui opiuni sunt i n cadrul meniurilor din cadrul ferestrei principale.
2.3.4. Fereastra Project Visual Basic 78 Modulele (fiierele) componente ale proiectului Numele proiectului Buton pentru vizualizarea codului program Buton pentru vizualizarea obiectelor Buton pentru activare/deactivare a modului de afiare sub form de foldere a claselor
Fig. 2.53. Fereastra Project.
Fereastra Project (figura 2.53) afieaz modulele (fiierele) ce compun proiectul unei aplicaii. Elementele componente ale acestei ferestre sunt: Caseta n care sunt listate modulele proiectului. Modulele proiectului sunt fiiere ce conin forme (.FRM), declaraii globale (.BAS), definiiile unor clase (.CLS), a unor controale (.CTL) i fiiere ce conin anumite resurse - imagini, text (.RES) etc;
Butonul View Object care permite vizualizarea formei Mediul de dezvoltare Visual Basic 79 corespunztoare modulului selectat n cadrul listei. Acest buton este valabil numai pentru fiierele ce conin forme; Butonul View Code permite afiarea ferestrei Code (ferestrei de editare a codului program) corespunztoare modulului selectat n cadrul listei. Acest buton nu poate fi folosit atunci cnd se selecteaz un fiier resurs; Butonul Toggle Folders permite afiarea/ascunderea claselor i a modulelor .BAS sub forma unor foldere, iar a instanelor la acele clase sub forma unor fiiere ale folderelor. Dac atunci cnd cursorul mouse-ului se gsete n cadrul acestei ferestre se apas butonul drept, va fi afiat un meniu popup care permite o serie de operaiuni asupra modulelor din lista.
2.3.5. Fereastra Properties
Fig. 2.54. Fereastra Properties.
Fereastra Properties (figura 2.54) conine denumirea proprietilor (prima coloana) i valorile acestora (a doua coloana), corespunztoare Caseta derulant cu obiecte Lista cu proprieti Caseta cu explicaii Visual Basic 80 obiectului curent (forma sau control). Prin intermediul acestei ferestre pot fi modificate valorile proprietilor unui obiect, valori ce determin comportamentul obiectului respectiv n cadru aplicaiei. Elementele acestei ferestre sunt: Caseta derulant cu obiecte (Object Box): conine numele i tipul obiectului curent din cadrul formei curente. Prin activarea butonului situat n partea dreapt a casetei se va derula o list ce cuprinde toate obiectele din cadrul formei curente; Lista cu proprieti (Properties List): este alctuit din dou tabele. Prima tabela Alphabetic, conine coloanele cu numele proprietilor i valorile acestora, sortate n ordine alfabetica dup numele proprietilor. Cea de-a doua tabel Categorized, conine lista proprietilor ordonat pe grupe de proprieti. Caseta cu explicaii: conine o prezentare succint a principalelor caracteristici ale proprietii selectate. Pentru modificarea valorilor unei proprieti se execut un click mouse pe numele proprietii respective din prima coloana i se introduc valorile corespunztoare n coloana a doua. Unele proprieti, atunci cnd sunt selectate, duc la apariia butonului n coloana de valori, prin activarea cruia se permite ncrcarea valorii proprietii. Aceste proprieti sunt cele care au ca valoare numele unor fiiere de pe disc (cum ar fi proprietatea Icon, Picture), sau cele care au o valoare ce trebuie stabilit n cadrul unei ferestre de dialog, cum ar fi proprietatea Custom a elementului de control CommonDialog. Alte proprieti au o lista de valori predefinit. Pentru vizualizarea acestei liste se selecteaz proprietatea i se apas butonul marcat cu o sgeat n jos, din cadrul coloanei cu valori, putnd fi n acest fel selectat din list valoarea dorit. Proprietile obiectelor pot fi variabile sau constante de tip numeric, alfanumeric, logic, grafic, etc.
2.3.6. Fereastra Color Palette
Mediul de dezvoltare Visual Basic 81
Fig. 2.55. Fereastra Color Palette.
Fereastra Color Palette (figura 2.55) permite modificarea culorilor unei forme sau a unui elemente de control (obiect). Elementele ferestrei sunt: (1) reprezint culoarea fondului (background) i a coninutului (foreground) unei forme sau control; (2) reprezint culoarea fondului i a coninutului unui text din cadrul unei forme sau control; (3) reprezint paleta de culori. Activarea butonului Default are ca rezultat setarea culorile obiectului cu cele ale mediului Windows. Butonul Custom Colors >> permite afiarea unei ferestre n cadrul creia programatorul poate s creeze propriile culori. Pentru modificarea culorilor unei forme sau control se selecteaz cu ajutorul unui clic mouse n cadrul zonei (1), fondul sau coninutul (implicit este activ fondul) dup care se execut un clic mouse pe culoarea dorit din zona (3).
2.3.7. Fereastra Form Layout Visual Basic 82
Fig. 2.56. Fereastra Form Layout.
Fereastra Form Layout poate fi utilizat atunci cnd se dorete mutarea ferestrei aplicaiei i poziionarea ei ntr-o anumit zon pe desktop. Deplasarea i poziionarea ferestrei se realizeaz prin glisarea (tragerea) acesteia cu ajutorul mouse-ului pe suprafaa desktop-ului din fereatra Form Layout.
Proprietile, metodele i evenimentele obiectelor 83
3.1. Proprietile obiectelor
n cadrul limbajelor de programare ce au la baz tehnica programrii aplicaiilor n mod vizual, fiecrui obiect (form, buton de comand, caset de editare, etc.) i sunt asociate o serie de proprieti care determin comportamentul lor n aplicaie. Aceste proprieti reprezint cmpuri de variabile predefinite si asociate diferitelor obiecte vizuale. Valorile proprietilor pot fi de diferite tipuri astfel: Integer (Height, Width, Top, Left), String (Caption, Name), Boolean (AutoSize, Visible, Enabled), Variant (BackColor, ForeColor, Icon, Picture), etc. Proprietile obiectelor au valori implicite. Aceste valori pot fi modificate n faza de proiectare a aplicaiei sau pe parcursul execuiei (prin program). n vederea modificrii valorii proprietilor unui obiect se va proceda astfel:
n momentul proiectrii interfeei: se selecteaz cu ajutorul mouse-ului obiectul ale crui proprieti se doresc a fi modificate; n fereastra Properties, se selecteaz proprietatea ce se dorete a fi modificat (prima coloan a listei cu proprieti); se introduce, n zona de editare a acestei ferestre (a doua coloan a listei cu proprieti), noua valoare urmat de apsarea tastei <ENTER>.
Visual Basic
84 Observaii: obiectul ale crui proprieti se doresc a fi modificate se poate selecta din lista cutiei combo (caseta cu obiecte), situat n partea de sus a ferestrei Properties; ataarea noii valori unei proprieti se poate face dup ce s-a selectat proprietatea respectiv prin preluarea din lista cutiei combo asociate proprietii, noua valoare.
Exemplu: Dac se dorete modificarea textului coninut ntr-o etichet explicativ (Label) implementat pe fereastra machet (fig. 3.1), se procedeaz astfel:
Fig. 3.1 Fereastra machet ce conine eticheta.
se activeaz (selecteaz) eticheta printr-un click mouse; se activeaz printr-un click mouse proprietatea Caption din fereastra Properties (figura 3.2);
Proprietile, metodele i evenimentele obiectelor 85
Fig. 3.2. Fereastra Properties pentru schimbarea etichetei.
se execut un click mouse n coloana cu valori, iar cnd apare cursorul de editare se introduce textul dorit dup care se valideaz cu <ENTER>. De exemplu s se introduc textul Denumire material:. Rezultatul este urmtorul:
Fig. 3.3. Efectul setrii proprietii Caption.
dac se dorete autodimensionarea etichetei n funcie de textul coninut, se selecteaz proprietatea AutoSize corespunztoare etichetei. Aceast proprietate fiind o constant logic (boolean) va afia n cmpul cu Visual Basic
86 valori (coloana a doua) o list (figura 3.4) cu valorile True (adevrat), care permite autodimensionarea obiectului n funcie de textul coninut, sau valoarea False (fals), care are ca efect inhibarea autodimensionrii.
Fig. 3.4. Setarea proprietii AutoSize.
n cadrul programului surs: n cadrul unei proceduri generale, sau n cadrul unei proceduri (subrutine) asociat unui eveniment, se introduce urmtoarea linie program:
<nume_obiect>.<proprietate> = <valoare>
Exemplu: Form1.Visible = True Form1.Caption = &Ok
n continuare vor fi prezentate cele mai utilizate proprieti, specificndu-se la fiecare i obictele crora le aparin sunt urmtoarele.
ActiveControl
Aceast proprietate aparine obiectelor: fereastr (Form), fereastra "mam" (MDI form) i ecran (Screen). Ea returneaz obiectul din cadrul aplicaiei care este activ n acel moment, adic acel obiect care deine focus ul. Formatul general:
{form | mdiform | Screen}.ActiveControl
Proprietile, metodele i evenimentele obiectelor 87 Cu ajutorul proprietii ActiveControl se pot accesa n acelai timp i alte proprieti ale obiectului la care aceasta se aplic.
Exemplu: Pentru a modifica proprietile obiectului ecran se va proceda astfel: Screen. ActiveControl.AutoSize = True
ActiveForm
Aparine obiectelor: fereastra "mam" (MDI Form) i ecran (Screen). Returneaz fereastra (ecranul) activ la un anumit moment. Dac un obiect de pe o fereastr (forma) este activ (posed focus-ul) atunci i fereastra respectiv este o fereastr activ. Formatul general:
{mdiform | Screen}.ActiveForm
Aceast proprietate este util n cadrul unei aplicaii care folosete o fereastr "mam", datorit faptului ca prin ea se poate face referire la una dintre ferestrele "fiu" (descendente).
Exemplu: Pentru a verifica dac un buton de opiune ntr-o anumit fereastr din cadrul unui grup de ferestre (MDIForm) este setat la un moment dat se procedeaz astfel: If ActiveForm.Option1.Value = True Then msg = MsgBox("Ok!", vbOKOnly, "Mesaj") End If
Alignment
Aceast proprietate aparine urmtoarelor controalelor: casete de opiune (CheckBox), etichete (Label), butoane de opiune (OptionButton) si Visual Basic
88 casetelor de editare (TextBox). Ea determin modul de aliniere a casetelor de opiune, butoanelor de opiune si a textului din etichete i din caseta de editare. Formatul general:
[form.]control.Alignment[ = expresie_numeric ]
Pentru casetele de opiune i butoanele de opiune, expresie_numeric poate lua una din urmtoarele valori:
0 - Left Justify : (valoare implicit) caz n care csua sau butonul sunt aliniate la stnga i textul (dat de proprietatea Caption) la dreapta; 1 - Right Justify: inversul primei valori.
Pentru etichete i casete de editare expresie_numeric poate lua una din urmtoarele valori:
0 - Left Justify :(valoare implicit) caz n care textul este aliniat la stnga; 1 - Right Justify :text aliniat la dreapta; 2 Center :text centrat.
Archive, Hidden, Normal, Read Only, System
Aparine controlului: Caseta de selecie a fiierelor (FileListBox). Aceast proprietate determin ce tip (cu ce atribute) de fiiere vor fi afiate n list. Fiierele pot avea urmtoarele atribute: Archive: pentru fiierele arhiv; Hidden: pentru fiierele ascunse; Normal: pentru fiierele normale; Read Only: pentru fiierele protejate la scriere; System: pentru fiierele sistem. Proprietile, metodele i evenimentele obiectelor 89 Formatul general:
Aceste proprieti ale casetei de selecie a fiierelor, pot lua una din urmtoarele valori de tip boolean: True : (implicit pentru Archive, i Normal) afieaz n zona de listare fiierele cu atributele respective; False : (implicit pentru Hidden i System) nu afieaz fiierele care au atributele respective.
AutoRedraw
Aparine controalelor: forma (Form) i casetei de imagini (Picturebox). Formatul general:
[form.][picturebox.]AutoRedraw[ = {True|False}]
Aceast proprietate permite actualizarea desenelor afiate ntr-o fereastr, sau ntr-o zon imagine (PictureBox), cnd acestea sunt mutate sau redimensionate. Ea se refer la urmtoarele metode grafice: Circle, Cls, Line, Point, Print i PSet. Fiind o variabil boolean aceast proprietate poate lua urmtoarele valori: True : permite actualizarea figurilor geometrice dup fiecare operaie executat asupra lor; False : anuleaz actualizarea figurilor geometrice.
Visual Basic
90 Autosize
Aparine controalelor: etichet (Label) i casetei de imagini (Picturebox). Determin autodimensionare etichetelor n funcie de mrimea textului introdus n cadrul lor i a zonei de imagini n funcie de dimensiunile imaginii ncrcate n cadrul acesteia. Format general:
obiect.AutoSize[ = {True|False}]
Poate lua urmtoarele valori: True : permite autodimensionarea obiectului n funcie de coninut; False : anuleaz autodimensionarea obiectului. Exemplu: Dac se ncarc proprietatea Caption a etichetei Label1 cu valoarea Aplicaii Visual Basic, iar proprietatea AutoSize a etichetei are valoarea False, eticheta va arta astfel:
Dup setarea proprietii AutoSize cu valoarea False, eticheta va arta astfel:
Proprietile, metodele i evenimentele obiectelor 91 BackColor, ForeColor
Aparin tuturor obiectelor n afar de minutar (Timer), barele de deplasare (HScrollBar VScrollBar) i obiectelor speciale (Clipboard, Screen, Printer). Proprietatea BackColor este o variabil hexazecimal care definete sau returneaz culoarea de fond a obiectului, iar proprietatea ForeColor este o valoare hexazecimal care definete sau returneaz culoarea elementelor din cadrul obiectului. Selectarea uneia dintre aceste proprieti din cadrul ferestrei Properties i acionarea butonului de valori din coloana cu valorile proprietii se afieaz o fereastra (figura 3.5, figura 3.6) din care se poate selecta culoarea dorit att pentru fond ct i pentru coninut.
Fig. 3.5. Tabela System de selectare a culorilor.
Visual Basic
92
Fig. 3.6. Tabela Palette de selectare a culorilor.
Pentru definirea culorilor Windows-ul utilizeaz un sistem numit RGB (Red-Green-Blue), prin care se specific proporia de culori: albastru, rou i verde. Pentru definirea culorii unui obiect pot fi utilizate dou funcii: RGB (rou%, verde%, albastru%) care returneaz culoarea n funcie de proporia culorilor rou, verde i albastru. Argumentele pot fi cuprinse ntre 0 i 225; QBCColor (nr%) care returneaz culoarea corespunznd numrului de culoare specificat (nr% - valoare cuprins ntre 0 i 15).
Cele dou proprieti au ca valori numere hexazecimale ce reprezint culoarea respectiv. De exemplu, dac se alege din fereastra Color Box culoarea roie pentru fond, proprietatea BackColor va avea valoarea &H000000FF&.
Proprietile, metodele i evenimentele obiectelor 93 BorderStyle
Aparine obiectelor: fereastr (Form), etichet (Label), caset de imagini (PictureBox), caset de editare (TextBox). Aceast proprietate este o valoare numeric ce determin tipul de chenar (cadru) n care este ncadrat obiectul respectiv n timpul execuiei programului. Valorile pe care le poate lua aceast proprietate sunt: 0 - None : nencadrat; 1 - Fixed single : cadru simplu; 2 - Sizeable : cadru dimensionabil (doar pentru ferestre); 3 - Fixed Double : cadru dublu (doar pentru ferestre).
Cancel
Aparine doar butonului de comand (CommandButton). Setat True aceast proprietate asociaz butonului de comand tasta <ESC>. Deci, apsnd tasta <Esc> butonul cu proprietatea Cancel setat True va fi activat.
Caption
Aparine obiectelor: fereastr (Form), fereastr "mam" (MDI form), casetelor de opiune (Checkbox), butonului de comand (CommandButton), chenarului (Frame), etichetei (Label), meniului (Menu), butonului de opiune (OptionButton). Aceast proprietate este de tip String i definete titlul acestor obiecte (textul explicativ din cadrul lor). Formatul general:
[form.][control.]Caption[ = ir_de_caractere ]
Visual Basic
94 De exemplu, pentru a schimba titlul ferestrei de lucru cu textul "Aplicaie 1" se ncarc proprietatea Caption n cadrul programului surs astfel: Form1.Caption = "Aplicaie 1"
Implicit, aceast proprietate este ncrcat cu numele obiectului cruia i aparine (Form1 pentru prima fereastr). Valoarea acestei proprieti poate fi, deasemenea, ncrcat i n cadrul ferestrei cu proprieti.
Checked
Aparine meniului. Formatul general:
opiune_meniu.Checked[ = boolean ]
Aceast proprietate plaseaz un indiciu " " n faa opiunii de meniu. Acest simbol, n general, este utilizat pentru a scoate n eviden faptul c o opiune este activ. Valorile posibile sunt: True: indiciul este afiat; False: indiciul nu este afiat. Modificarea valorii acestei proprieti poate fi fcut i selectnd caseta de opiune Checked, din cadrul ferestrei Menu Editor, corespunztoare opiunii curente (figura 3.7).
Proprietile, metodele i evenimentele obiectelor 95
Fig. 3.7. Marcajul casetei de opiune Checked din fereastra Menu Editor.
Rezultatul selectrii casetei Checked este prezentat n figura 3.8.
Fig. 3.8. Efectul proprietii Checked.
Visual Basic
96 ControlBox
Aparine formei (ferestrei aplicaiei). Aceast proprietate determin afiarea, sau nu a icon-ului meniului de control situat n colul din dreapta sus a ferestrei (stnga utilizatorului). Valoarea sa implicit este True i nu poate fi modificat n timpul execuiei programului. Valorile posibile sunt: True : determin afiarea icon-ului meniului de control; False : determin suprimarea icon-ului meniului de control. Proprietatea ControlBox (True sau False) este incompatibil cu BorderStyle egal 0, acesta din urma trebuind sa fie egal cu una din valorile 1, 2, sau 3.
Exemplu: Dac se seteaz proprietatea ControlBox cu valoarea True fereastra va avea bara de titlu ca i cea din figura 3.9, iar dac se seteaz cu valoarea False va fi ca n figura 3.10.
Fig. 3.9. Efectul valorii True a proprietii ControlBox.
Proprietile, metodele i evenimentele obiectelor 97
Fig. 3.10. Efectul valorii False a proprietii ControlBox.
CurrentX, CurrentY
Aparin obiectelor: fereastr (Form), caset de imagini (PictureBox), imprimant (printer). Ele determin coordonatele, pe orizontala CurrentX i pe verticala CurrentY, folosite n legtur cu metodele grafice (Cls, Circle, Line, Print, PSet, etc). Aceste coordonate sunt date i de valorile proprietilor ScaleHeight, ScaleWidth, ScaleLeft i ScaleTop. De exemplu, cnd cursorul se afl n colul din stnga sus al ferestrei (n timpul executrii unei metode Cls, ), CurrentX i CurrentY sunt 0.
Default
Aparine butonului de comand (CommandButton). Aceast proprietate de tip boolean specific butonul de comand care poate fi activat, n acel moment, la acionarea tastei <ENTER>. Textul de pe butonul respectiv va fi ncadrat ntr-un patrulater cu laturile formate din linii ntrerupte. Valorile posibile sunt: True : butonul de comand este cel activ (Default) ; False : butonul de comand nu este activ. Un singur buton de comand poate avea aceast proprietate setat pe valoarea True ntr-o interfa.
Visual Basic
98 Dragicon
Aparine tuturor obiectelor exceptnd fereastra (Form), minutarul (Timer) i obiectele speciale. Aceast proprietate determin afiarea unui icon atunci cnd utilizatorul realizeaz o operaie Drag & Drop (glisare). Valoarea acestei proprieti este dat de calea spre un fiier ce conine un icon (.ico). Setarea ei n cadrul ferestrei Properties se poate face fie introducnd calea spre fiierul (.ico) dorit, fie prin apsarea butonului din partea stng a casetei de editare ducnd la afiarea unei ferestre de dialog n cadrul creia poate fi ales fiierul (.ico) dorit.
DragMode
Aparine tuturor obiectelor exceptnd fereastra (Form), minutarul (Timer) i obiectele speciale. Cnd valoarea proprietii DragMode este setat 1 se activeaz posibilitatea de deplasare a obiectului n timpul execuiei unei aplicaii. Cnd valoarea DragMode este setata 0, pentru a putea efectua operaia Drag & Drop se apeleaz metoda Drag. Ea poate lua urmtoarele valori: 0 - Manual : (implicita) pentru a deplasa obiectul va trebui definit i metoda Drag; 1 Automatic : obiectul poate fi deplasat n mod implicit printr-o simpl tragere cu mouse-ul.
DrawMode
Aparine urmtoarelor obiecte: fereastr, caset de imagine, imprimant (Printer), linie (Line), figuri geometrice (Shape). Aceast proprietate specific culoarea de afiaj a metodelor grafice, culoare obinut prin efectuarea unor operaii logice (Not, And, Or, Xor) ntre valorile proprietilor ForeColor i BackColor. DrawMode poate lua valori ntre 1 i 16. Proprietile, metodele i evenimentele obiectelor 99
DrawStyle
Aparine obiectelor: fereastr (Form), caset de imagini (PictureBox), imprimant (Printer). Aceast proprietate definete modelul de trasare (desenare) a metodelor grafice (Line, Pset i Circle). Formatul general:
{[form.] [picturebox] | Printer}.DrawStyle[ = stil ]
unde stil poate fi una din urmtoarele valori: 0 Solid : (implicit) plin; 1 Dash : ntrerupt; 2 Dot : punctat; 3 Dash-Dot : combinaie ntre 2 i 3; 4 Dash-Dot-Dot : combinaie ntre 2, 3, 3; 5 Transparent : invizibil; 6 Inside Solid : plin.
DrawWidth
Aparine obiectelor: fereastr (Form), caset de imagini (PictureBox), imprimant (Printer). Aceast proprietate determin grosimea liniei de desenare a metodelor grafice ce aparin obiectelor respective. DrawWidth poate lua valori cuprinse ntre 1 i 32767 pixeli.
Drive Visual Basic
100
Aparine casetei de selecie a unitilor de disc (DriveListBox). Aceast proprietate definete sau returneaz unitatea de disc selectat i eticheta acestei uniti. Poate avea ca valori specificaiile pentru unitile de stocare a informaiei existente i conectate la calculator. De exemplu, pentru driver-ul de dischet valoarea acestei proprietti poate fi "A:" sau "B:", pentru hard disk "C: [ eticheta_volum]", pentru cd-rom "G:", "L:", etc. Modificarea valorii proprietii Drive genereaz implicit evenimentul Change a controlului caseta de selecie a unitii de disc.
Enabled
Aparine tuturor obiectelor, cu excepia celor speciale. Aceast proprietate, de tip boolean, activeaz sau dezactiveaz un obiect. Cnd un obiect este dezactivat, el nu mai rspunde la nici un eveniment. Valori posibile: True: obiect activ; False: obiect inactiv. n cazul meniului i butoanelor de comand valoarea False a acestei proprieti are ca efect afiarea textului (definit de proprietatea Caption) n culoarea gri semnificnd faptul c acea opiune sau acel buton este inactiv (figura 3.11).
Fig. 3.11. Efectele proprietii Enabled asupra butoanelor de comand.
FileName Enabled=True Enabled=False Proprietile, metodele i evenimentele obiectelor 101
Aparine casetei de selecie a fiierelor (FileListBox). Aceast proprietate de tip ir de caractere (String), definete sau returneaz numele fiierului selectat n caset de selecie a fiierelor. File Name va returna un ir vid dac nici un fiier din list nu a fost selectat.
FillColor
Aparine obiectelor: fereastr (Form), caset de imagini (PictureBox), imprimant (printer) i elementelor grafice (shape). FillColor definete culoarea de umplere a figurilor geometrice realizate cu ajutorul metodelor grafice. Dac proprietatea FillStyle este setat pe valoarea 1 (Transparent), valorile proprietii FillColor nu au nici un efect. La fel ca i la proprietile BackColor i ForeColor, valoarea proprietii FillColor va fi reprezentat de un numr hexazecimal.
FillStyle
Aparine obiectelor: fereastr (Form), caset de imagini (PictureBox), imprimant (Printer) i elementelor grafice. Aceast proprietate definete modelul de umplere a figurii grafice definit cu ajutorul metodelor grafice. Valorile pe care le poate lua au fost tratate la controlul elemente grafice (Shape) din cadrul capitolului doi.
Aceste proprieti aparin tuturor obiectelor exceptnd barele de defilare, minutarul i obiectele speciale (Clipboard, Debug i Screen). Ele determin stilul de caractere utilizate pentru afiarea textului ntr-o fereastr astfel: FontBold : text ngroat (exemplu); Visual Basic
102 FontItalic : text nclinat (exemplu); FontStrikethru : text barat (exemplu); FontTransparent : text transparent; FontUnderline : text subliniat (exemplu). Aceste proprieti pot lua doar valori de tip boolean (True sau False). Valoarea True permite activarea proprietii, respectiv stilului pentru caractere, iar valoarea False dezactiveaz stilul de scriere. Modificarea i ncrcarea acestei proprieti poate fi efectuat i prin intermediul ferestrei Properties, selectnd din caseta cu valori a obiectului butonul de punctat din dreapta casetei. Rezultatul este afiarea ferestrei din figura 3.12. i prin care pot fi setate n mod interactiv aceste proprieti.
Fig. 3.12. Fereastra Font.
FontCount
Aparine obiectelor: imprimant (Printer) i ecran (Screen). Aceast proprietate returneaz numrul de font-uri (stiluri de text) disponibile n acel moment. Formatul general:
{Printer|Screen}.FontCount
Proprietile, metodele i evenimentele obiectelor 103 Valorile returnate de proprietatea FontCount nu pot fi modificate n timpul execuiei aplicaiei.
FontName
Aparine tuturor obiectelor n afar de meniu (Menu), barele de deplasare (HScrollBar, VScrollBar), minutarul (Timer) i obiectele speciale (Clipboard, Debug, Screen, Printer). Valoarea acestei proprieti reprezint numele stilului de text (font- urilor) ce va fi afiat.
Exemplu: Dac se dorete ca textul introdus pe forma sa fie afiat cu font-uri Times New Roman atunci valoarea acestei proprietti va fi: Form1. FontName = "Tms Rmn" ncrcarea acestei proprieti n momentul conceperii interfeei aplicaiei se face alegnd, din cutia combo (din cadrul ferestrei Properties) n care se gsesc valorile fiecrei proprieti selectate, stilul de text dorit.
Fontsize
Aparine tuturor obiectelor n afar de meniu (Menu), barele de deplasare (HScrollBar, VScrollBar), minutarul (Timer) i obiectele speciale (Clipboard, Debug, Screen, Printer). Aceast proprietate determin talia font-urilor ce vor fi folosite (setate prin FontName). Valoare maxim este de 2048 pixeli. Taliile, cel mai frecvent utilizate, corespund unei valori cuprinse ntre 8 i 14.
hDc
Visual Basic
104 Aparine ferestrei (Form), casetei de imagini (PictureBox) i obiectului imprimant (Printer). Aceast proprietate furnizeaz un handle de context (hDc - Handle Device Contexts) pentru contextul marginal. Un handle este un numr unic atribuit de sistemul Windows obiectului imprimant, unei ferestre sau unei zone de imagini. Formatul general:
{[form.] [picturebox. ] | Printer.}hDC
Acest hDc va fi folosit atunci cnd se va face apel la o procedur sau funcie Windows (API Windows).
Height, Width
Aparine tuturor obiectelor exceptnd meniul (Menu), minutarul (Timer) i obiectele speciale. Aceste proprieti determin dimensiunile obiectului: Height reprezint nlimea, iar Width reprezint limea obiectului. Unitatea de msur utilizat este indicat de valoarea proprietii ScaleMode aparinnd aceluiai obiect. Pentru imprimant ea va reprezenta marimea foii (n Twips sau alt unitate setat cu ScaleMode), iar pentru ecran va defini mrimea acestuia.
hWnd
Aparine tuturor obiectelor cu excepia meniului (Menu) i obiectelor speciale. Aceast proprietate furnizeaz un handle (pointer) (hWnd - handle Windows) asociat obiectului. Mediul Windows identific fiecare obiect dup aceast valoare (handle) care poate fi folosit ca argument n cadrul unei funcii sau proceduri API Windows.
Proprietile, metodele i evenimentele obiectelor 105 Icon
Aparine ferestrei aplicaiei (Form) simple sau "mam". Aceast proprietate permite asocierea unui icon ferestrelor aplicaiei. Prin intermediul acestui icon utilizatorul va lansa n execuie aplicaia creia i este asociat. Fiecrei ferestre a aplicaiei i se poate ataa un icon astfel nct atunci cnd fereastra este minimizat icon-ul asociat ei va apare n partea inferioar a desktop-ului pe bara de stare (Taskbar). Valoarea acestei proprieti este calea i numele unui fiier cu extensia .ico n care este definit icon-ul. Acest fiier poate fi ncrcat, de pe una din unitile de disc disponibile, prin alegerea lui din cadrul ferestrei ce apare n urma unui dublu click mouse pe proprietatea Icon din fereastra Properties, sau un click mouse pe butonul din dreapta casetei cu valoarea proprietii Icon.
Image
Aparine obiectelor: fereastr (Form), caset de imagini (PictureBox). Aceast proprietate furnizeaz un handle (valoare ntreag) unei imagini bitmap. Valoarea respectiv este recunoscut de Windows i poate fi luat ca argument n cadrul unei funcii sau al unei proceduri API Windows.
Index
Aparine tuturor obiectelor n afar de fereastr (Form) i obiectele speciale. Valoarea acestei proprieti reprezint indexul unui control n cadrul unui tablou de controale. Ea este generat atunci cnd sunt ncrcate, pe form, mai multe controale care au aceeai valoare a proprietii Name, crendu-se astfel un tablou de controale, primul avnd proprietatea Index egal cu zero. De exemplu, dac se ncarc pe form dou butoane de comand, iar la al doilea se seteaz proprietatea Name cu valoarea Visual Basic
106 Command1, va apare o fereastr de dialog n cadrul creia se poate opta pentru iniializarea sau nu a unui tablou de controale. Dac se opteaz afirmativ atunci proprietatea Index a primului buton de comand va fi egal cu 0, iar a celui de-al doilea cu 1. Aceast valoare nu poate fi modificat pe parcursul execuiei aplicaiei.
Interval
Aparine obiectului minutar (Timer). Aceast proprietate determin intervalul de timp (n milisecunde) ntre 2 apeluri ale evenimentului Timer asociat minutarului. Formatul general:
[form.]timer.Interval[ = millisecunde ]
unde milisecunde poate lua valori n intervalul [1,65535]. Valoarea de 65535 corespunde unui minut. Exist 2 metode de a dezactiva un minutar: atribuirea valorii 0 proprietii Interval; atribuirea valorii False proprietii Enabled.
Left, Top
Aparine tuturor obiectelor fr minutar, meniu i obiecte speciale. Proprietatea Left returneaz distana ntre marginea stnga al obiectului curent i cea a obiectului care-l conine. Proprietatea Top furnizeaz distana ntre marginea superioar a obiectului curent i cea a obiectului care-l conine. Pentru fereastr aceste proprieti determin distana dintre marginile ferestrei (stng i superioar) i marginile ecranului, valori exprimate n twips (implicit) sau alt unitate de msur setat prin intermediul proprietii ScaleMode.
Proprietile, metodele i evenimentele obiectelor 107
LinkItem
Aparine obiectelor etichet (Label), caset de imagini (PictureBox) i caset de editare (TextBox). Aceast proprietate returneaz o valoare de tip alfanumeric i permite definirea elementului unei aplicaii Windows (setat n cadrul proprietii LinkTopic) care va fi utilizat n procesul de schimbare dinamic a datelor (DDE - Dynamic Data Exchange). Acest element (nou definit) poate fi, de exemplu numele celulei unei foi de calcul din Microsoft Excel etc. Formatul general:
unde: nume_element: este denumirea sau referina elementului altei aplicaii Windows, legat n procesul DDE (o celul, un domeniu, o tabel Excel, un domeniu dintr-un document Word, etc.).
Exemplu: Referina la un domeniu de celule dintr-o pagin Excel, legat de aplicaia Visual Basic, prin intermediul unei casete de editare se realizeaz astfel: Text1.Text = A1B2
LinkMode
Aparine obiectelor fereastr (Form), etichet (Label), caset de imagini (PictureBox) i caset de editare (TextBox). Aceast proprietate determin tipul de legtur DDE ce va fi stabilit ntre un obiect sau o fereastr Visual Basic i o alt aplicaie Windows. Visual Basic
108 Pentru controale proprietatea LinkMode poate lua una dintre urmtoarele valori: 0 - None : (implicit) nici o legtur; 1 - Automatic : legtura se stabilete, n mod automat, de fiecare dat cnd are loc un transfer de date; 2 - Manual : legtura se stabilete numai atunci cnd metoda LinkRequest este apelat; 3 - Notify : n acest caz evenimentul LinkNotify este generat cnd are loc transferul de date, dar legtur se stabileste numai atunci cnd metoda LinkRequest este apelat.
Pentru ferestre valorile proprietii LinkMode sunt: 0 - None - (implicit) nici o legtur; 1 Source - permite specificarea unui obiect surs (label, textbox, etc.) ntr-un proces DDE. Cnd se dorete ncheierea schimbului dinamic de date se atribuie valoarea 0 proprietii LinkMode.
LinkTimeOut
Aparine obiectelor: etichet (Label), caset de imagini (PictureBox), caset de editare (TextBox). Valoarea acestei proprieti definete timpul necesar pentru stabilirea unei legturi cu o alt aplicaie.
Exemplu: Label1.LinkTimeOut = 100 Semnific faptul c timpul n care trebuie s se fac legtura (un rspuns DDE) cu o aplicaie este de 10 secunde. Dac se depete acest interval de timp va fi generat o eroare. Valoarea implicit a acestei proprieti este 50 (5 secunde). Proprietile, metodele i evenimentele obiectelor 109
LinkTopic
Aparine obiectelor: fereastr (Form), etichet (Label), caset de imagini (PictureBox) i caset de editare (TextBox). Aceast proprietate definete numele aplicaiei i subiectul de schimb al datelor ntr-un proces (legtur) DDE. Aceste dou informaii trebuie separate de o linie vertical (|). Numele aplicaiei poate fi, de exemplu WORD sau EXCEL i subiectul corespunztor poate fi un document sau o foaie de calcul. De exemplu, pentru stabilirea unui schimb de date ntre eticheta ferestrei aplicaiei realizat cu Visual Basic i o celul Excel (de exemplu A1B2) aceast proprietate va avea valoarea:
form1.label1.LinkTopic = "Excel|A1B2"
List
Aparine obiectelor: caset combo (ComboBox), caset de selectare a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de disc (DriveListBox) i caset de listare (ListBox). Aceast proprietate este de tip String i returneaz elementele din lista acestor obiecte. Aceste elemente sunt stocate ntr-un tablou unidimensional de tip ir de caractere (String). Fiecare element al tabloului reprezint un element al listei. Formatul general:
[form.]control.List(index)[ = ir_de_caractere ]
Unde index reprezint indicele elementului n cadrul listei. Indicele primului element al listei este 0, indicele celui de-al doilea 1, pn la ListCount - 1 (proprietatea ListCount indicnd numrul elementelor din list). Parametrul ir_de_caractere returneaz sau seteaz coninutul elementului din list.
Visual Basic
110 Exemplu: Pentru lista din figura 3.13. proprietatea ListCount este egal cu 7. Pentru elementul Marketing, selectat din list, indicele index este 3, iar ir_de_caractere este egal cu textul Marketing.
Fig. 3.13. Coninutul proprietii List.
ListCount
Aparine obiectelor: caset combo (ComboBox), caset de selectare a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de disc (DriveListBox) i caset de listare (ListBox). Aceast proprietate returneaz: Numr de elemente pentru: caseta combo, caseta de listare; Numr de uniti de disc pentru: caseta de selectare a unitilor de disc; Numr de subdirectoare pentru: caseta de selectare a directoarelor; Numr de fiiere al directorului curent pentru: caseta de selectare a fiierelor. Aceast valoare nu poate fi modificat n timpul executrii programului.
ListIndex
Proprietile, metodele i evenimentele obiectelor 111 Aparine obiectelor: caset combo (ComboBox), caset de selectare a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de disc (DriveListBox) i caset de listare (ListBox). Aceast proprietate este de tip numeric i returneaz indicele elementului selecionat n cadrul listei acestor obiecte. Format general:
obiect.ListIndex [= index]
unde index reprezint indexul elementului curent din list.
Exemplu: Dac se consider lista din figura 3.13. valoarea proprietii ListIndex este 3. Pentru a ncarc o etichet cu valoarea proprietii ListIndex se va introduce urmtoarea linie program: Label1.Caption=Str(List1.ListIndex)
MaxButton, MinButton
Aparine ferestrelor (Form). Valoarea True a proprietii MaxButton permite vizualizarea butonului din colul stnga sus a ferestrei , putnd fi astfel folosit la expandarea ferestrei pe tot ecranul. Valoarea False determin eliminarea acestui buton de pe fereastr. Proprietatea MinButton permite afiarea sau ascunderea butonului de reducere (minimizare) a unei ferestre . Valori posibile: True : butonul este afiat n colul din stnga sus al ferestrei; False: butonul nu este disponibil n fereastr.
MousePointer
Aparine tuturor obiectelor cu excepia meniului, minutarului i obiectelor speciale. Visual Basic
112 Aceast proprietate permite modificarea aspectului cursorului (pointer-ului) mouse-ului, atunci cnd acesta se deplaseaz deasupra unui control sau se realizeaz o anumit operaiune. Valori posibile: 0 Defaul 1 Arrow 2 - Cross 3 - I-Beam 4 - Icon : afieaz matricea de construcie a pointer-ului (invizibil); 5 Size 6 - Size NE SW 7 - Size N S 8 - Size NW SE 9 - Size W E 10 - Up Arrow 11 - Hourglass 12 - No Drop 99 Custom : permite definirea de ctre utilizator a unui icon pentru pointer, icon dat de proprietatea MouseIcon.
Name
Aparine tuturor ferestrelor i controalelor. Aceast proprietate atribuie un nume de identificare unei ferestre sau unui control. Prin intermediul acestei proprieti se face referin la proprietile, metodele i evenimentele obiectului pe care-l reprezint.
Exemplu: Implicit obiectul etichet are proprietatea Name egal cu Label1 pentru prima etichet ncrcat pe fereastr. Referina la proprietatea Proprietile, metodele i evenimentele obiectelor 113 Caption ale acestei etichete se face astfel: Label1.Caption=Text. Dac se modific coninutul proprietii Name a etichetei, din Label1, n Etc1 referina la proprietatea Caption se va face astfel: Etc1.Caption=Text.
Parent
Aparine tuturor obiectelor fr fereastre i obiecte speciale. Aceast proprietate returneaz valoarea proprietii Name a obiectului printe, cel care conine n cadrul su obiectul curent. Astfel pot fi setate proprietile unei ferestre pornind de la un control care este situat n cadrul acesteia:
<nume_control>.Parent.<proprietate> = <valoare>
ScaleHeight, ScaleWidth
Aparine obiectelor: ferestre (Form), casete de imagini (PictureBox), imprimant (Printer). Aceast proprietate determin nlimea (ScaleHeight), respectiv limea (ScaleWidth) obiectului la care se refer. Unitile de msur n care se exprim valorile acestor dou proprieti sunt setate de ctre proprietatea ScaleMode. Formatele generale sunt:
114 Aceast proprietate permite specificarea abscisei (ScaleLeft) i ordonatei (ScaleTop) colului stng superior al ferestrei. De exemplu, instruciunile urmtoare seteaz coordonatele colului stnga sus al ferestrei la valorile (0,100). Form1. ScaleLeft = 0 Form1. ScaleTop = 100
ScaleMode
Aparine obiectelor: ferestre (Form), casete de imagini (PictureBox), imprimant (Printer). Aceast proprietate permite alegerea unitii de msur utilizat pentru exprimarea dimensiunilor i coordonatelor obiectelor la care se refer. Poate lua urmtoarele valori: 0 - User : unitate definit de utilizator; 1 - Twip : 1/20 dintr-un punct; 2 - Punct : 0,375 mm; 3 - Pixel : mrimea lui depinde de rezoluia setat; 4 - Character : caracter (120 Twip orizontal pe 240 vertical); 5 - Inch : 2,54 cm; 6 - Milimeter : mm; 7 - Centimeter : cm.
SelLength, SelStart, SelText
Aparine obiectelor: cutia combo (ComboBox) i caset de editare. (TextBox) Proprietatea SelLength determin numrul caracterelor (nr_caractere) selectate (afiate n video invers) de utilizator n cadrul celor dou controale. Formatul general:
Proprietile, metodele i evenimentele obiectelor 115 Proprietatea SelStart returneaz poziia de unde se poate ncepe (indicator) selectarea unui text. Formatul general:
Aparine obiectelor: caseta combo (ComboBox) i caseta de listare (TextBox). Aceast proprietate permite sortarea (n ordine alfabetic sau cresctoare) a elementelor unei casete combo sau unei casete de listare. Valoarea acestei proprieti nu poate fi modificat n timpul executrii programului. Valorile posibile sunt: True : elementele sunt sortate; False : elementele apar n ordinea introducerii lor n list.
TabIndex
Aparine tuturor obiectelor cu excepia ferestrelor, meniului, minutarului i obiectelor speciale. Aceast proprietate returneaz un numr (index) atribuit obiectelor de pe foaia de lucru (Form) n ordinea introducerii lor, astfel: TabIndex = 0 pentru primul obiect creat pe fereastr; TabIndex = 1 pentru al doilea obiect creat pe fereastr. Ea determin ordinea de activare a controalelor atunci cnd este acionat tasta <TAB>. Trecerea se va face n ordinea cresctoare a proprietii TabIndex. Visual Basic
116 Modificarea valorii proprietii TabIndex, a unui obiect, duce la modificarea automat a valorii acestei proprieti i pentru celelalte obiecte. Pe o fereastr nu exist niciodat 2 obiecte avnd aceeai valoare a proprietii TabIndex.
TabStop
Aparine tuturor obiectelor n afar de ferestre, meniu, minutar, etichet, cadru (chenar) i obiecte speciale. Aceast proprietate activeaz, sau nu, transmiterea focus-ului unui obiect cu ajutorul tastei <TAB>. Valori posibile: True : obiectul poate primi focus-ul prin acionarea tastei <TAB>; False : obiectul nu poate primi focus-ul prin acionarea tastei <TAB>.
Text
Aparine obiectelor: caset combo (ComboBox), caset de listare (ListBox) i casetei de editare (TextBox). Aceast proprietate returneaz sau definete irul de caractere din cadrul unei casete de editare, a unei casete combo sau a unei casete de listare.
Exemplu: Pentru a utiliza datele introduse de ctre utilizator ntr-o caset de editare i a le stoca ntr-o variabil se utilizeaz urmtoarea linie program: txt=Text1.Text unde txt este variabila de tip String utilizat.
Value
Proprietile, metodele i evenimentele obiectelor 117 Aparine obiectelor: casete de opiune (CheckBox), butoane de comand (CommandButton), butoane de opiune (OptionButton) i barelor de deplasare (HscrollBar, VScrollBar). Aceast proprietate returneaz, n mod difereniat, una din valorile urmtoare:
Buton de comand: True : butonul este selectat (evenimentul Command1_Click() este generat); False : butonul nu este selectat.
Bare de defilare: un numr cuprins ntre -32768 i 32767 reprezentnd poziia cursorului pe bara de deplasare.
Visible
Aparine tuturor obiectelor n afar de minutar i obiectele speciale. Aceast proprietate permite vizualizarea (afiarea), sau nu a unui obiect pe ecran, sau interfaa aplicaiei, n timpul execuiei. Valori posibile: True : obiectul este vizibil pe interfa; False : obiectul este ascuns. Metodele Show i Hide ale unei ferestre efectueaz aceleai operaii.
WindowState
Visual Basic
118 Aparine ferestrei (formei). Aceast valoare determin modul de afiare a ferestrei pe desktop-ul Windows-ului. Valori posibile: 0 - Normal : (implicit) fereastr afiat aa cum a fost creat; 1 - Minimized : fereastr afiat sub form de icon pe bara de stare (taskbar) a Windows-ului; 2 - Maximized : fereastr mrit pe tot ecranul.
Proprietile, metodele i evenimentele obiectelor 119
3.2. Metodele obiectelor
Pe lng un ansamblu complex de instruciuni Visual Basic-ul pune la dispoziia programatorului i o serie de metode. Metodele sunt aciuni (instruciuni) ce se efectueaz asupra obiectelor determinnd comportamentul lor n cadrul aplicaiei. Formatul general al unei metode este:
<obiect>.metod [parametrii]
Cele mai importante i mai utilizate metode n Visual Basic sunt urmtoarele:
AddItem
Aparine obiectelor: caset de listare i caset combo. Aceast metod adaug (introduce) un nou element n lista acestor obiecte. Formatul general:
<obiect>.AddItem <element> [,index]
unde: <obiect>: reprezint numele casetei combo sau casetei de listare la care se refer; <element>: reprezint un ir de caractere (String) care va fi introdus n list; index: reprezint un numr ntreg ce specific poziia pe care va fi ncrcat elementul n lista. Pentru primul element acest parametru are valoarea 0.
Visual Basic
120 Exemplu: Pentru a ncrca un element ntr-un ListBox se va introduce urmtoarea linie program (n cadrul procedurii eveniment Form_Activate()):
List1.AddItem Aplicatie Visual Basic
Rezultatul este prezentat n figura 3.14.
Fig. 3.14. Utilizarea metodei AddItem.
Arrange
Aparine ferestrei "mam" (MDI Form). Aceast metod ordoneaz ferestrele "fiu" sau icon-urile din cadrul unei ferestre "mam". Formatul general:
<mdiform>.Arrange <mod_ordonare>
unde: <mdiform> - reprezint numele ferestrei "mam"; <mod_ordonare> - reprezint o constant ce va determina modul de ordonare. Ea poate lua urmtoarele valori: Proprietile, metodele i evenimentele obiectelor 121 0 Cascade : ordonarea ferestrelor non-minimizate, sub form de cascad; 1 - Tile_Horizontal : ordonarea ferestrelor non-minimizate, alturate pe orizontal; 2 - Tile_Vertical : ordonarea ferestrelor non-minimizate, alaturate pe vertical; 3 - Arrange_Icons : ordonarea icoanelor ferestrelor "fiu" minimizate.
Circle
Aparine ferestrelor simple, casetei de imagini i obiectului imprimant (printer). Aceast metod permite desenarea unui cerc, arc de cerc sau a unei elipse n funcie de valorile parametrilor si. Formatul general:
unde: <obiect> : reprezint numele obiectului la care se folosete metoda; Step : determin relativitatea coordonatelor centrului cercului fa de coordonatele setate prin CurrentX i CurrentY; (x,y) : reprezint coordonatele centrului cercului: x - linia, y coloana. Unitatea de desen este dat de valoarea proprietii ScaleMode a obiectului respectiv; raza : reprezint raza cercului; culoare : reprezint codul culorii de desenare a cercului. Acestui parametru i se pot da ca valori funciile RGB i QBColor; start, stop : reprezint (n radiani) unghiul de nceput i de sfrit a unui arc de cerc; aspect : reprezint aspectul cercului. Implicit are valoare 1, iar peste valori mai mari de 1 se va desena o elips. Visual Basic
Aparine casetei de listare, casetei combo i obiectului special clipboard (zona tampon). Aceast metod terge coninutul casetei de listare, casetei combo i clipboard-ului. Formatul general:
<obiect>.Clear
Cls
Aparine ferestrelor simple i casetei de imagini. Aceast proprietate terge graficele i textele generate direct pe aceste controale. Formatul general:
[<obiect>.]Cls
Drag
Aparine tuturor obiectelor cu excepia liniei grafice, elementelor grafice (shape), meniului i minutarului. Aceast metod asociat unui obiect, iniiaz, termin sau abandoneaz "tragerea" (deplasarea) obiectului respectiv pe suprafaa ferestrelor din cadrul aplicaiei.
Proprietile, metodele i evenimentele obiectelor 123 Formatul general:
[<obiect>.]Drag [actiune]
unde: aciune - poate lua una din urmtoarele valori: 0 : Abandoneaz operaiunea de deplasare a obiectului; 2 : Iniiaz operaiunea de deplasare; 3 :Termin operaiunea de deplasare, moment in care obiectul este depus. Dac se omit parametrii <obiect> i aciune metoda se va referi la obiectul curent (cel n a crui procedur eveniment se folosete), iar parametrul aciune va avea implicit valoarea 1.
Hide
Aparine ferestrelor. Aceast metod determin ascunderea ferestrei respective dar nu i dezactivarea ei. Prin folosirea acestei metode se ncarc proprietatea Visible, a ferestrei, cu valoarea False. Formatul general:
[form|MDIform.]Hide
Aceast metod nu poate fi folosit n legtur cu ferestrele "fiu", ci numai in legtur cu fereastr "mam". Cnd metoda Hide este folosit n legtur cu o fereastr, care nu este ncrcat pe ecran, aceasta va fi activat automat dar va fi ascuns.
Exemplu: Form1.Hide
Aceast linie program are ca efect ascunderea ferestrei Form1.
Visual Basic
124
Line
Aparine ferestrelor, casetei de imagini i imprimantei (printer). Aceast metod permite trasarea unei linii sau a unui patrulater, n funcie de valorile parametrilor si. Formatul general:
unde: x1,y1 : reprezint coordonatele punctului din care ncepe trasarea liniei sau patrulaterului (colul din stnga sus); x2,y2 : reprezint coordonatele punctului unde se termin trasarea liniei sau patrulaterului (colul din dreapta jos); B : indic trasarea unui patrulater definit de coordonatele de x1,y1 (colul din stnga sus al patrulaterului) i x2,y2 (colul din dreapta jos); F : permite umplerea patrulaterului cu culoarea de desenare. Acest parametru nu poate fi folosit fr parametrul B. Dac parametrul F lipsete atunci patrulaterul este umplut cu culoarea stabilit prin proprietatea FillColor a obiectului respectiv (fereastr, zon de imagini, imprimant), iar stilul de umplere este dat de valoarea proprietii FillStyle. Grosimea liniei depinde de valorile proprietii DrawWidth a obiectului respectiv.
Exemplu: Pentru trasarea ntr-o fereastr a unei diagonale se introduce urmtoarea linie program:
Form1.Line (100, 100)-(1050, 1050)
Rezultatul acestei linii program este prezentat n figura 3.15.
Proprietile, metodele i evenimentele obiectelor 125
Fig. 3.15. Rezultatul utilizrii metodei Line.
LinkExecute
Aparine acelor obiecte (controale) care pot avea o legtur DDE cu alte aplicaii Windows: etichete, casete de imagini, casete de editare etc. Aceast proprietate permite transmiterea unei comenzi aplicaiei care se afl ntr-o legtur DDE cu obiectul respectiv. Aceast comand trebuie s fie recunoscut de aplicaia respectiv. Formatul general:
<obiect>.LinkExecute <comanda>
unde: <comanda> : este un ir de caractere reprezentnd comanda ce va fi transmis aplicaiei dintr-o legtur DDE. De exemplu, n cazul legturilor cu aplicaii ca Microsoft Word sau Microsoft Excel se accept, ca i comenzi, macroinstruciunile acestor aplicaii incluse ntre paranteze drepte.
LinkPoke
Aparine etichetelor, casetelor de imagini i casetelor de editare. Aceast metod transfer coninutul obiectului n legtur cu care se folosete, elementului unei alte aplicaii n cadrul unei legturi DDE. Formatul general: Visual Basic
126
<obiect>.LinkPoke
Pentru etichete sursa de transfer va fi valoarea proprietii Caption, pentru caseta de editare va fi valoarea proprietii Text, iar pentru caseta de imagini va fi valoarea proprietii Picture. Elementul destinaie va fi cel stabilit prin proprietile LinkTopic i LinkItem.
LinkRequest
Aparine etichetelor, casetelor de imagini i casetelor de editare. Folosirea acestei metode are ca efect ncrcarea valorii proprietilor Caption pentru etichete, Picture pentru caseta de imagini i Text pentru caseta de editare, cu coninutul elementului unei alte aplicaii Windows aflat n legtur de tip DDE cu obiectul respectiv. Formatul general:
<obiect>.LinkRequest
Dac valoarea proprietii LinkMode a obiectului respectiv este 1 - Automatic, atunci actualizarea obiectului cu coninutul elementului surs al aplicaiei din cadrul legturii DDE, se face n mod automat fr a fi necesar apelarea metodei LinkRequest. Dac proprietatea LinkMode are valoarea 2 - Manual atunci actualizarea obiectului se va face doar la apelarea metodei LinkRequest. Dac valoarea proprietii LinkMode este 3 - Notify atunci actualizarea obiectului se va face doar dac apare evenimentul LinkNotify, folosindu-se i n acest caz metoda LinkRequest.
LinkSend Proprietile, metodele i evenimentele obiectelor 127
Aparine casetei de imagini. Aceast metod determin transferul coninutului zonei de imagini, elementului unei alte aplicaii Windows aflat n legtur DDE cu zona de imagini. Formatul general:
<nume_zona_imagini>.LinkSend
Move
Aparine tuturor controalelor n afar de meniu i de minutar. Aceast metod determin mutarea obiectului (controlului) respectiv n cadrul aplicaiei. Formatul general:
unde: stnga : este un numr ce reprezint coordonata pe orizontal (abscisa) a marginii stngi a obiectului; sus : este un numr ce indic coordonata pe vertical (ordonata) a marginii de sus a obiectului; lungime : este un numr prin care se stabilete lungimea (limea) obiectului; nlime : este un numr prin care se stabilete nlimea obiectului. Aceste coordonate sunt valorile proprietilor ScaleLeft, ScaleRight, ScaleWidth i ScaleHeight.
Point
Aparine ferestrelor simple i casetei de imagini. Formatul general:
<obiect>.Point (x,y) Visual Basic
128
Aceast proprietate returneaz valoarea funciei RGB a punctului de coordonate x, y. Unitatea de msur este cea setat prin proprietatea ScaleMode.
Popupmenu
Aparine ferestrelor. Aceast proprietate afieaz un meniu popup la coordonatele date de poziia curent a mouse-ului sau la coordonatele specificate de programator. Formatul general:
[<fereastr>.]PopupMenu nume_meniu [, flags [, x [, y] ] ]
unde: nume_meniu : reprezint valoarea proprietii Name a unei opiuni principale definite n cadrul ferestrei de realizare a meniurilor (Menu Design Window) i care trebuie sa aib cel puin o subopiune; x,y : reprezint abscisa respectiv ordonata punctului unde va fi afiat meniul popup; flags : reprezint o constant prin care se determin poziia meniului popup fa de coordonata x i modul de activare al acestuia. Ea poate avea urmtoarele valori: 0 POPUPMENU_LEFTALIGN : (Implicit) meniul popup este aliniat la stnga fa de x; 4 POPUPMENU_CENTERALIGN : meniul popup este centrat fa de x; 8 POPUPMENU_RIGHTALIGN : meniul popup este aliniat la dreapta fa de x.
Pentru modul de activare:
0 POPUPMENU_LEFTBUTTON : (implicit) meniul popup recunoate (activeaz) atunci Proprietile, metodele i evenimentele obiectelor 129 cnd utilizatorul apas butonul stng al mouse-ului; 2 POPUPMENU_RIGHTBUTTON : meniul popup se activeaz atunci cnd utilizatorul apas butonul drept al mouse-ului.
Pentru a utiliza n cadrul parametrului flags ambele tipuri de constante se folosete operatorul logic OR. Unitatea de masur n care sunt exprimate coordonatele x i y este dat de valoarea proprietii ScaleMode (implicit 1-Twips)
Exemplu: Aplicaia 8 din capitolul 6.
Pset
Aparine ferestrelor simple, casetelor de imagini i imprimantei. Aceast metod permite desenarea unui punct n cadrul obiectului respectiv. Formatul general:
[<obiect>.]PSet [Step](x, y)[,culoare]
unde: x,y : reprezint abscisa i ordonata punctului ce va fi desenat. Mrimea punctului depinde de valoarea proprietii DrawWidth.
Refresh
Aparine tuturor obiectelor exceptnd ferestrele "mam" (MDIform), meniurile, minutarul i obiectele speciale. Visual Basic
130 Atunci cnd este folosit aceast metod reactualizeaz obiectul respectiv (proprietile acestuia).
Formatul general:
[<obiect>].Refresh
RemoveItem
Aparine casetei de listare i casetei combo. Aceast proprietate terge un element din cadrul listei acestor obiecte. Formatul general:
<obiect>.RemoveItem index
unde index este un numr ntreg ce reprezint poziia elementului respectiv n list.
Exemplu: Dac din cadrul unei liste (figura 3.16) se dorete s se tearg elementul al treilea se va utiliza urmtoarea linie program:
List1.RemoveItem 2
Proprietile, metodele i evenimentele obiectelor 131
Fig. 3.16. Coninutul listei List1.
Rezultatul este prezentat n figura 3.17.
Fig. 3.17. Efectul metodei RemoveItem.
Scale
Aparine ferestrelor simple, casetei de imagini i imprimantei. Aceast metod permite stabilirea coordonatelor sistem ale obiectului la care se refer. Visual Basic
unde: x1,y1 : reprezint coordonatele colului din stnga sus a obiectului; x2,y2 : reprezint coordonatele colului din dreapta jos a obiectului.
SetFocus
Aparine tuturor obiectelor n afar de chenar, meniu, linie grafic, elemente grafice (shape), minutar, imagine (image). Aceast metod transmite focus-ul obiectului n legtur cu care este folosit, adic acel obiect va deveni obiectul activ n cadrul aplicaiei. Formatul general:
<obiect>.SetFocus
Aceast metod nu poate fi folosit n legtur cu obiectele care au valoarea proprietii Enabled setat False.
Show
Aparine ferestrelor. Aceast proprietate activeaz (ncarc n memorie i pe ecran) fereastra la care se refer. Formatul general:
[<nume_fereastr>.]Show [stil] unde: stil : reprezint modul de ncrcare a ferestrei, dac ea va fi o fereastr modal sau nu i poate lua una din urmtoarele valori: 0 : fereastr nemodal; 1 : fereastr modal. Proprietile, metodele i evenimentele obiectelor 133 Fereastr modal este acea fereastr care nu se nchide dect atunci cnd utilizatorul a realizat o aciune cerut de aceast fereastr (apsarea unui buton, editarea unui text n zona de editare, etc.). Fereastr "mam" (MDIform) nu poate fi setat ca fereastr modal.
TextHeight
Aparine ferestrelor simple, casetei de imagini i imprimantei. Aceast metod returneaz nlimea (n unitatea de msur curent exprimat prin proprietatea ScaleMode) unui text din cadrul obiectului la care se refer. Formatul general:
[<obiect>.]TextHeight (text)
unde text este o variabil de tip ir de caractere, care reprezint textul a crui nlime va fi returnat de metod TextHeight.
TextWidth
Aparine ferestrelor simple, casetei de imagini i imprimantei. Aceast metod returneaz lungimea (n unitatea de msur curent exprimat prin proprietatea ScaleMode) unui text din cadrul obiectului la care se refer. Formatul general:
[<obiect>.]TextWidth (text)
unde text este o variabil de tip ir de caractere, care reprezint textul a crui lungime va fi returnat de metod TextWidth.
3.3. Evenimentele
Visual Basic
134 Fiecare obiect din cadrul interfeei aplicaiei (fereastra de lucru i controalele) "reacioneaz" la anumite evenimente cum ar fi : apsarea unei taste, un click sau dublu click mouse, schimbarea proprietilor unui obiect, redimensionarea obiectului, etc. Aceste evenimente pot fi clasificate n evenimente externe i evenimente interne. Evenimentele externe sunt acele evenimente generate de aciunea utilizatorului (acionarea unei taste, un click sau dublu click mouse, etc); Evenimentele interne aplicaiei sunt generate de modificarea valorilor unor proprieti independent de aciunile utilizatorului (evenimentul Timer al minutarului, etc.). n Visual Basic fiecrui eveniment i este asociat o procedur (subrutin) eveniment n cadrul creia programatorul poate introduce instruciunile ce vor fi executate n momentul producerii evenimentului. Sintaxa unei proceduri eveniment e urmtoarea :
[Private| Public| Friend] [Static] Sub <obiect>_<eveniment>(parametrii) [instruciuni] [Exit Sub] [instruciuni] End Sub
unde: Private| Public| Friend: aceste instruciuni sunt opionale. Dac sunt utilizate ele se exclud reciproc, astfel nct, doar una dintre ele poate fi activ la un moment dat. Ele specific modul de accesare a procedurii eveniment n cadrul programului, astfel: Private: specific faptul c procedura la care se refer este recunoscut i poate fi accesat; Public: specific faptul c procedura la care se refer este recunoscut i poate fi accesat de ctre toate procedurile i modulele programului; Friend: poate fi utilizat doar pentru declararea procedurilor din cadrul modulelor de definire a claselor pentru obiecte. Ea specific faptul c procedura la care se refer poate fi accesat de Proprietile, metodele i evenimentele obiectelor 135 alte proceduri din modulul clas, dar nu poate fi accesat prin intermediul instanei la acea clas. Static: specific faptul c variabilele declarate, n cadrul procedurii la care se refer, sunt recunoscute doar n cadrul acestei proceduri; <obiect>: reprezint numele obiectului cruia i aparine evenimentul respectiv; <evenimentul>: reprezint denumirea (identificatorul) evenimentului; parametrii: reprezint variabile ce pot fi utilizate n legtur cu procedura eveniment.
Exemplu:
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Form1.Caption = Str(X) + " " + Str(Y) End Sub
Aceast procedur reprezint evenimentul MouseMove (deplasarea cursorului mouse-ului) aferent ferestrei. Ea are ca i parametri variabila Button care returneaz o valoare ce reprezint butonul de mouse acionat i variabilele x i y care returneaz poziia mouse-ului. Linia program din interiorul procedurii are ca rezultat, n momentul deplasrii mouse-ului pe fereastr, afiarea n titlul ferestrei a poziiei mouse-ului pe fereastr n funcie de cele dou variabile x i y. Evenimentul click mouse corespunztor obiectului Command1 de pe fereastra machet este urmtorul:
Private Sub Command1_Click() [instruciuni] End Sub
Procedura eveniment asociat unui obiect are ca efect executarea instruciunilor, din cadrul procedurii, n momentul n care apare evenimentul la care se refer.
Visual Basic
136 Obiectele puse la dispoziia programatorului nu reacioneaz la aceleai evenimente. De exemplu minutarul nu are dect procedura eveniment Timer. Programul surs corespunztor fiecrei proceduri eveniment se va introduce n cadrul ferestrei (Code) de editare a programului (figura 3.18.). Activarea ferestrei Code se realizeaz att printr-un dublu click mouse pe obiectul din machet, ct i prin selectarea opiunii Code din cadrul meniului View.
Fig. 3.18. Fereastra Code.
Fereastra Code are urmtoarele elemente: Caseta combo Object (figura 3.19.): permite afiarea unei liste din cadrul creia poate fi ales obiectul, din machet, pentru care se va introduce programul corespunztor procedurilor sale eveniment; Caseta combo Object Caseta combo Procedure Caseta de editare a programului Butonul de vizualizare doar a procedurilor Butonul de vizualizare a ntregului program Proprietile, metodele i evenimentele obiectelor 137
Fig. 3.19. Coninutul casetei Object.
Caseta combo Procedure (figura 3.20.): permite afiarea unei liste care conine toate procedurile eveniment ce pot fi utilizate n legtur cu obiectul selectat n caseta Object;
Fig. 3.20. Coninutul casetei Procedure. Caseta de editare (scriere) a programului surs: permite introducerea instruciunilor corespunztoare att declaraiilor i procedurilor generale (General), ct i a instruciunilor corespunztoare procedurilor eveniment; Butonul de vizualizarea doar a procedurilor: acionarea acestui buton are ca rezultat vizualizarea, n cadrul casetei de scriere Visual Basic
138 (editare) a programului, doar a procedurilor (subrutinelor) ascunznd zona declaraiilor (General); Butonul de vizualizare a ntregului program: permite afiarea n cadrul casetei de scriere a programului, att a procedurilor eveniment ct i a declaraiilor corespunztoare modulului curent.
Cele mai importante i mai utilizate proceduri eveniment n Visual Basic sunt urmtoarele:
Activate / Deactivate
Aparin ferestrelor. Evenimentele Activate si Deactivate apar atunci cnd fereastra este activat (Activate), respectiv cnd ea devine o fereastr pasiv (Deactivate). Ferestrele active sunt acelea asupra crora este transmis focus-ul, fie de ctre utilizator, fie de ctre programator prin utilizarea instruciunilor SetFocus sau Show. Dezactivarea ferestrelor se realizeaz prin utilizarea metodei Hide, a instruciunii UnLoad sau prin setarea proprietii Visible pe valoarea False. Formatul general este urmtorul :
Sub Form_Activate ( ) End Sub
Sub MDIForm_Activate ( ) End Sub
Sub Form_Deactivate ( ) End Sub
Sub MDIForm_Deactivate ( ) End Sub
Proprietile, metodele i evenimentele obiectelor 139 Change
Evenimentul poate s apar la urmtoarele controalele : caseta combo, caseta de selecie a unitilor de disc, a directoarelor, etichete, zona de imagini, bare de defilare i caseta de editare. Acest eveniment apare la schimbarea coninutului acestor obiecte (valorilor unor proprieti ale obiectului respectiv). Format general:
Sub <obiect>_Change( [index As Integer] ) End Sub
unde index este folosit pentru identificarea obiectului n cazul cnd exist un tablou de obiecte de acelai tip.
Astfel : n cadrul casetei combo acest eveniment apare cnd valoare din cadrul casetei de editare a cutiei este modificat (schimbat) prin intervenia utilizatorului. Deci valoarea proprietii Text a fost modificat.
n cadrul casetei de selecie a unitilor de disc evenimentul Change este generat n urmtoarele cazuri : utilizatorul selecteaz o unitate nou de disc din list; proprietatea Drive a fost modificat pe parcursul executrii programului.
n cadrul casetei de selecie a directoarelor acest eveniment este generat n urmtoarele cazuri: utilizatorul selecteaz un nou director; proprietatea Path a fost modificat n cursul executrii programului.
n cazul etichetelor, acest eveniment este generat n urmtoarele cazuri: se realizeaz un schimb dinamic de date ntre eticheta i elementul unei alte aplicaii Windows, o legtur DDE; Visual Basic
140 proprietatea Caption a fost modificat n cursul executrii programului.
n cazul zonei de imagini, acest eveniment este generat n urmtoarele cazuri: zona de imagini are o legtur DDE; proprietatea Picture a fost modificat n cursul executrii programului.
n cazul barelor de defilare, acest eveniment este generat n urmtoarele cazuri : utilizatorul deplaseaz pointerul pe bara de defilare; proprietatea Value a fost modificat n cursul executrii programului.
n cadrul casetei de editare, acest eveniment este generat n urmtoarele cazuri : utilizatorul modific coninutul casetei de editare; proprietatea Text a fost modificat n cursul executrii programului.
Click
Acest eveniment aparine tuturor obiectelor, fr caseta de selecie a unitilor de disc, chenar (cadru), barele de defilare, caseta de editare, minutarul i toate obiectele speciale. Evenimentul Click este generat atunci cnd utilizatorul realizeaz un click pe butonul stng al mouse-ului n momentul n care cursorul acestuia este poziionat pe obiectul respectiv. Acest eveniment poate fi generat n aceeai msur acionnd tasta <ESC> (la butoanele de comand proprietatea Cancel trebuie sa aib valoarea True), sau <Space>. Format general:
Sub Form_Click() - pentru ferestre. Proprietile, metodele i evenimentele obiectelor 141 End Sub
Sub <obiect>_Click( [index as Integer] ) - pentru celelalte obiecte. End Sub
Exemplu: Pentru a schimba textul coninut n cadrul unei etichete, la executarea unui click mouse pe butonul de comand Command1, se va utiliza urmtoarea procedur eveniment:
Private Sub Command1_Click() Label1.Caption = "Test Click mouse" End Sub
Rezultatul este prezentat n figura 3.21:
Figura 3.21. Efectul procedurii Click asociate butonului de comand Command1.
DoubleClick (DblClick)
Evenimentul aparine urmtoarelor obiecte : caseta combo, caseta de selecie a fiierelor, fereastra, eticheta, butonul de opiune, chenar, caseta de editare, zona de imagini i caseta de listare. Visual Basic
142 Evenimentul DblClick este generat atunci cnd utilizatorul realizeaz un dublu click mouse pe obiect. Formatul general:
Sub Form_DblClick() End Sub
Sub <obiect>_Dblclick( [index As Integer] ) End Sub
DragDrop
Aparine tuturor obiectelor fr meniu, minutar i obiectele speciale. Evenimentul DragDrop este generat de operaiunea de glisare (Drag & Drop) realizat asupra obiectului respectiv. Aceast operaiune se realizeaz astfel: se poziioneaz pointerul mouse-ului pe obiect; meninnd butonul stng al acestuia apsat se deplaseaz obiectul respectiv pe suprafaa ferestrei pn n poziia n care se dorete a fi depus; se elibereaz butonul mouse-ului. Evenimentul DragDrop apare numai atunci cnd metoda Drag este utilizat. Formatul general:
Sub Form_DragDrop(Source As Control, X As Single, Y As Single) End Sub
Sub MDIForm_DragDrop(Source As Control, X As Single, Y As Single) End Sub
Sub <obiect>_DragDrop([Index As Integer,]Source As Control, X As Single, Y As Single) End Sub
unde : Proprietile, metodele i evenimentele obiectelor 143 Source As Control: corespunde obiectului care este deplasat. Se poate utiliza instruciunea If Type of Source Is... pentru determinarea exact a tipului de obiect; X i Y: reprezentnd coordonatele pointerului mouse-ului cnd obiectul este depus.
DragOver
Aparine tuturor obiectelor, fr meniu, minutar i obiecte speciale. Evenimentul DragOver apare atunci cnd utilizatorul deplaseaz un obiect peste alte obiecte din cadrul interfeei. Acest eveniment se produce de fiecare dat cnd pointerul mouse-ului e deplasat atunci cnd se efectueaz operaia de "tragere" a obiectului. Formatul general:
Sub Form_DragOver(Source As Control, X As Single, Y As Single, State As Integer) End Sub
Sub MDIForm_DragOver(Source As Control, X As Single, Y As Single, State As Integer) End Sub
Sub <obiect>_DragOver([Index As Integer,]Source As Control, X As Single, Y As Single, State As Integer) End Sub
unde : Sursa As Control : corespunde obiectului care este deplasat. Ca i n cazul evenimentului DragDrop se poate utiliza instruciunea If Type of Source Is ... pentru a determina exact tipul de obiect; X i Y : reprezint coordonatele pointerului mouse-ului cnd obiectul este deplasat (glisat); Visual Basic
144 State: (stare) permite cunoaterea n care moment obiectul deplasat trece pe sub alte obiecte ale ferestrei. Parametrul State poate avea una din urmtoarele valori : 0 : pointerul mouse-ului se gsete sub un alt obiect de unde va ncepe deplasarea; 1 : pointerul mouse-ului termin deplasarea sa sub un alt obiect; 2 : pointerul mouse-ului se deplaseaz sub un alt obiect.
DropDown
Aparine casetei combo. Evenimentul DropDown este generat atunci cnd utilizatorul apas pe butonul de derulare (sgeata) a unei casete combo. Format general:
Sub <obiect>_DropDown( [Index As Integer] ) End Sub
GotFocus
Aparine tuturor obiectelor, fr cadru, etichete, meniu, minutar i obiecte speciale. Evenimentul GotFocus este generat atunci cnd un obiect primete focus-ul (prin acionarea tastei <TAB>, sau a butonului stnga mouse, operaii realizate de ctre utilizator). Acest eveniment poate apare i atunci cnd programatorul folosete n cadrul sursei program a aplicaiei metoda SetFocus. Formatul general:
Sub Form_GotFocus( ) End Sub
Sub <obiect>_GotFocus([Index As Integer] ) End Sub Proprietile, metodele i evenimentele obiectelor 145
KeyDown, KeyUp
Aparine tuturor obiectelor fr cadru, etichete, minutar i obiecte speciale. Evenimentele KeyDown si KeyUp sunt generate atunci cnd utilizatorul a acionat o tast (KeyDown) sau a eliberat tasta (KeyUp). Formatul general:
Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) End Sub
Sub <obiect>_KeyDown([Index As Integer,]KeyCode As Integer, Shift As Integer) End Sub
Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) End Sub
Sub <obiect>_KeyUp([Index As Integer,]KeyCode As Integer, Shift As Integer) End Sub
unde : KeyCode: reprezint codul ASCII corespunztor unei taste apsate sau eliberate. n fiierul constant.txt sunt declarate constantele aferente tastelor. De exemplu Key_F1 care corespunde tastei F1 sau Key_Down care corespunde tastei sgeat n jos; Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2) i <Alt> (valoarea 4) sunt apsate n momentul evenimentului.
Observaie: Evenimentele KeyDown i KeyUp nu sunt generate dac: n cazul butoanelor de comand proprietile Default sau Cancel sunt True; Visual Basic
146 tasta <Tab> este acionat.
KeyPress
Aparine tuturor obiectelor, fr cadru, etichete, meniu, minutar i obiecte speciale. Evenimentul KeyPress este generat de acionarea unei taste. Format general:
Sub Form_KeyPress(KeyAscii As Integer) End Sub
Sub <obiect>_KeyPress([Index As Integer,]KeyAscii As Integer) End Sub
unde : KeyAscii: corespunde codului ASCII al tastei acionate.
Observaie: Acest eveniment nu este generat dac una dintre tastele <Shift>, <Ctrl> sau <Alt> este apsat.
LinkClose
Aparine urmtoarelor obiecte : fereastra, etichete, zona de imagine i zona de editare. Evenimentul este generat atunci cnd se ntrerupe (termin) schimbul dinamic de date cu o alta aplicaie Windows (se ntrerupe o legtur DDE). Procedura eveniment asociat este n general utilizat pentru a indica (de exemplu prin instruciunea MsgBox) terminarea schimbului dinamic de date. Proprietile, metodele i evenimentele obiectelor 147 Formatul general:
Sub {Form|MDIForm}_LinkClose( ) End Sub
Sub <obiect>_LinkClose( [Index As Integer] ) End Sub
LinkError
Aparine obiectelor : fereastra, eticheta, zona de imagini i caseta de editare. Evenimentul este generat cnd apare o eroare n timpul legturii DDE cu o aplicaie Windows. Formatul general:
Sub {Form|MDIForm}_LinkError(LinkErr As Integer) End Sub
Sub <obiect>_LinkError([Index As Integer,]LinkErr As Integer) End Sub
unde parametrul LinkErr poate lua o valoare ntre 1 i 12 i reprezint eroarea ce poate apare. Valorile 1,6,7,8 sunt declarate ca i constante globale n fiierul constant.txt care poate fi inclus n aplicaie.
LinkExecute
Aparine ferestrelor. Evenimentul apare atunci cnd o comand a fost trimis unei ferestre dintr-o alt aplicaie (care este client ntr-o legtur DDE). Aceast comand este trimis ca ir de caractere (parametru a procedurii eveniment asociat). Format general: Visual Basic
148
Sub {Form|MDIForm}_LinkExecute(CmdStr As String, Cancel As Integer) End Sub
unde : Cmdstr: reprezint comanda transmis de fereastra aplicaiei client; Cancel: poate lua valoarea 0, ceea ce semnific faptul c comanda a fost acceptat de aplicaia client, sau o valoare diferit de 0, ceea ce semnific faptul c comanda nu a fost acceptat de client.
LinkOpen
Aparine obiectelor : fereastra, eticheta, zona de imagini i caseta de editare. Evenimentul LinkOpen apare atunci cnd este iniiat o legtur DDE. Format general:
Sub {Form|MDIForm}_LinkOpen(Cancel As Integer) End Sub
Sub <obiect>_LinkOpen([Index As Integer,]Cancel As Integer) End Sub
unde parametrul Cancel poate lua valoarea 0, caz n care legtura cu aplicaia client continu, sau o valoare diferit de 0, caz n care legtura este abandonat.
Load
Aparine ferestrelor. Evenimentul Load este generat atunci cnd o fereastra este ncrcat pe ecran. Proprietile, metodele i evenimentele obiectelor 149 Format general:
Sub Form_Load( ) End Sub
Sub MDIForm_Load( ) End Sub
Procedura eveniment asociat evenimentului Load corespunztor ferestrei principale a aplicaiei este executat prima n momentul lansrii n execuie a aplicaiei.
Exemplu: Pentru iniierea unei variabile la ncrcarea unei ferestre se va asocia valoarea variabilei n cadrul procedurii eveniment Load, astfel:
Private Sub Form_Load() i = 1 End Sub
LostFocus
Aparine tuturor obiectelor fr cadru, eticheta, meniu, minutar i obiectele speciale. Evenimentul este generat atunci cnd un obiect este dezactivat (pierde focus-ul). Acest eveniment se petrece cnd utilizatorul acioneaz tasta <Tab>, realizeaz un click mouse pe un alt obiect sau metoda SetFocus este executat trecnd focus-ul obiectului respectiv. Formatul general:
Sub Form_LostFocus( ) End Sub
Visual Basic
150 Sub <obiect>_LostFocus([Index As Integer]) End Sub
MouseDown, MouseUp
Aparine tuturor obiectelor, fr minutar si obiectele speciale. Evenimentele sunt generate atunci cnd utilizatorul acioneaz fr s elibereze butonul mouse-ului (MouseDown) sau elibereaz butonul acestuia (MouseUp). Format general:
Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
Sub <obiect>_MouseDown([Index As Integer,]Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
Sub <obiect>_MouseUp([Index As Integer,]Button As Integer, Shift As Integer, X As Single, Y As Single)
unde : Button: indic butonul care a fost apsat sau eliberat ( 1 - buton stnga, 2 - buton dreapta, 4 - buton central); Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2) i <Alt> (valoarea 4) sunt acionate n momentul evenimentului. Dac mai multe taste sunt acionate, Visual Basic returneaz suma valorilor corespunztoare fiecrei taste acionate; Proprietile, metodele i evenimentele obiectelor 151 X i Y: corespund coordonatelor poziiei pointerului mouse-ului n momentul evenimentului.
MouseMove
Aparine tuturor obiectelor, fr minutar i obiectele speciale. Evenimentul MouseMove este generat atunci cnd utilizatorul deplaseaz cursorul mouse-ului peste obiectul respectiv. Format general:
Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) End Sub
Sub <obiect>_MouseMove([Index As Integer,] Button As Integer, Shift As Integer, X As Single, Y As Single)
unde : Button: indic dac unul sau mai multe butoane ale mouse-ului sunt acionate (returneaz: 1 - buton stnga, 2 - buton dreapta, 4 - buton central ) n timpul evenimentului. Dac mai multe butoane sunt apsate, Visual Basic returneaz suma valorilor corespunztoare butoanelor acionate; Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2) i <Alt> (valoarea 4) sunt apsate n momentul evenimentului. Dac mai multe butoane sunt apsate, Visual Basic returneaz suma valorilor corespunztoare fiecrui buton apsat; X i Y: corespund coordonatelor poziiei pointer-ului mouse-ului n momentul evenimentului.
Paint
Aparine obiectelor : fereastra i zona de imagini. Visual Basic
152 Evenimentul Paint apare atunci cnd o parte, toat fereastra, sau zona de imagini este iniiat pentru a fi ncrcat cu o imagine. Formatul general:
Sub Form_Paint( ) End Sub
Sub <obiect>_Paint([Index As Integer]) End Sub
Acest eveniment nu se produce atunci cnd proprietatea AutoRedraw a obiectului are valoarea True.
PathChange
Aparine casetei de selecie a fiierelor. Evenimentul apare atunci cnd valorile proprietilor Path sau FileName au fost modificate n cadrul programului a aplicaiei.
Formatul general:
Sub <obiect>_PathChange([Index As Integer]) End Sub
Procedura eveniment asociat este executat cnd utilizatorul selecteaz un nou fiier din caseta de selecie a fiierelor.
PatternChange
Aparine casetei de selecie a fiierelor. Evenimentul apare atunci cnd utilizatorul introduce un nou filtru de selecie a fiierelor n caseta de editare a obiectului. Aceast procedur este executat cnd valoarea proprietii FileName sau Pattern sunt modificate. Proprietile, metodele i evenimentele obiectelor 153 Formatul general:
Sub <obiect>_PatternChange([Index As Integer]) End Sub
Resize
Aparine ferestrelor i zonelor de imagini. Evenimentul Resize este generat atunci cnd se modific dimensiunile ferestrei sau a zonei de imagini. Formatul general:
Sub {Form|MDIForm|picturebox}_Resize( ) End Sub
Timer
Aparine minutarului. Evenimentul apare de fiecare dat cnd intervalul de timp definit prin proprietatea Interval sa consumat. Aceast procedur este executat la intervale regulate. Perioada la care apare acest eveniment este indicat n proprietatea Interval n milisecunde. Formatul general:
Sub <obiect>_Timer([Index As Integer]) End Sub
UnLoad
Visual Basic
154 Aparine ferestrelor. Evenimentul este generat atunci cnd o fereastr este suprimat de pe ecran i din memorie. Acest eveniment se produce cnd utilizatorul a realizat un dublu click mouse pe butonul de nchidere a ferestrei, cnd n program a fost folosit instruciunea UnLoad sau atunci cnd aplicaia este nchis forat prin acionarea combinaiei de taste <Ctrl>+<Alt>+<Delete>. Formatul general:
Sub {Form|MDIForm}_Unload(Cancel As Integer) End Sub
unde Cancel anuleaz operaia de suprimare a ferestrei cnd valoarea sa este diferit de 0.
Observaie: Procedura eveniment asociat evenimentului UnLoad nu este executat dac aplicaia este nchis utiliznd instruciunea End. Limbajul de programare 155
4.1. Linia de program
Un program surs Visual Basic este constituit din una sau mai multe linii de program; n principiu o linie de program are dou poziii: o instruciune i un argument.
Exemplu: PRINT TIME$ Lungimea unei linii nu poate s depeasc 1024 caractere. O instruciune poate ocupa i dou linii, reunite printr-o linie de subliniere _ plasat la sfritul primei linii.
Exemplu: D=B^2-4*A_ *C este echivalent cu: D=B^2-4*A*C O linie de program poate conine mai multe instruciuni separate prin caracterul :, lucru nerecomandabil datorit dificultilor de citire i nelegere a programului.
Exemplu: A=25: B=10: PRINT A*B Liniile de program pot fi scrise cu majuscule i/sau cu minuscule.
Visual Basic 156 4.2. Cuvintele
Prin juxtapunerea caracterelor alfabetice, numerice, italice i chiar unele caractere speciale se formeaz cuvintele. Acestea se pot grupa n 2 categorii: cuvinte rezervate (cheie); cuvinte utilizator. Cuvintele rezervate (cheie) au fost create de autorii limbajului, au o semnificaie predefinit, motiv pentru care pot fi folosite numai n modul n care sunt specificate n formatele generale (de exemplu: PRINT, FORNEXT, DOLOOP, etc). Cuvintele utilizator sunt create de programator att pentru a defini datele ce se prelucreaz, programele, fiierele, procedurile, ct i pentru a nscrie comentarii n programe etc. (de exemplu: CANTITATE, PU, VALOARE etc.).
4.3. Constantele
Constanta reprezint o zon de memorie n care sunt stocate valori (cifre sau iruri de caractere), care rmn aceleai pe toat durata execuiei programului. Utilizarea unei constante prezint dou avantaje: un nume este adesea mai explicit dect o valoare; dac constanta este utilizat de mai multe ori n program, modificarea valorii asociate acesteia implic o singur schimbare la nivelul declaraiei constantei. Pentru declararea unei constante este necesar utilizarea instruciunii Const. Sintaxa instruciunii este urmtoarea:
unde: Limbajul de programare 157 Global este un cuvnt rezervat, care precede instruciunea Const, ce se utilizeaz pentru definirea constantelor globale recunoscute de toate procedurile, toate formele i modulele; nume_constant sau identificator reprezint numele atribuit constantei; expresie: este valoarea asociat constantei i poate fi un numr, un ir de caractere sau o expresie aritmetic sau logic cu excepia operaiilor exponeniale. n cadrul expresiei nu pot fi folosite variabile, iruri concatenate, funcii utilizator sau funcii intrinseci n Visual Basic . De asemenea, se pot defini constante ale cror expresii conin alte constante deja definite.
Exemplu: Const pi=3,14, Obs=bursieri
Tipul constantei poate fi definit printr-un sufix ce se concateneaz la numele constantei putnd fi unul din: %, &, !, #, $. Acest caracter nu face parte din nume.
Exemplu: Const MAXDIM%=250 Dim Nume$(MAXDIM)
Dac nu se folosete un caracter de definire a tipului constantei, tipul constantei este dat de tipul datei de baz din expresia coninut de Const. Dac expresia este un ir, atunci tipul constantei este ir. Cnd expresia este de tip numeric, ea este mai nti evaluat, iar tipul constantei este dat de cel mai simplu tip care poate reprezenta constanta. Deoarece o constant trebuie s fie de un singur tip predefinit, nu poate fi de tipul Variant. Prin definiie, tipul Variant poate aprea ca diferite tipuri de date ce decurg din context. Constantele nu sunt influenate de instruciunea Deftype (exemplu: Defint). Constantele trebuiesc definite nainte de a fi referite n program. Constantele declarate n procedurile Sub sau Function sunt locale n aceste proceduri. Constantele declarate n afara procedurii (ntr-o seciune Visual Basic 158 de declaraie sau un modul) sunt definite prin intermediul modulelor n care sunt declarate. Constantele declarate n afara unei proceduri folosind Global pot fi folosite n toate procedurile, fiierele i modulele. Nu se poate folosi Global pentru declararea constantelor ntr-o form, deoarece constantele formei se pot folosi numai n procedura din forma n care au fost declarate. Visual Basic conine i un ansamblu de constante predefinite care se gsesc n fiierul Constant.txt din cadrul meniului File, care afieaz o fereastr n cadrul creia se poate indica fiierul *.txt ce va fi ncrcat. Utilizarea butonului de comand Merge determin Visual Basic-ul s adauge definirile de constante textului eventual prezent, iar butonul Replace nlocuiete textul cu un nou coninut.
4.4. Variabile
Ca toate limbajele de programare Visual Basic permite utilizarea memoriei calculatorului pentru stocarea temporar a datelor utilizate de programele ce se execut. Aceste zone de stocare rezidente n memorie reprezint variabile de memorie. Variabilele sunt denumiri pe care programul le asociaz cu locaii specifice de memorie n care sunt stocate valori ce se pot modifica pe parcursul ntregii durate de via a programului.
4.4.1. Declararea variabilelor
Un program poate utiliza mai multe variabile, fiecare avnd un nume unic care o identific la nivelul domeniului. Numele de variabile pot avea maxim 256 de caractere, trebuie s nceap cu un caracter alfanumeric, nu conin puncte sau spaii i nu pot fi cuvinte rezervate n limbajul Visual Basic. Fiecare variabil este de un anumit tip care informeaz calculatorul ct memorie necesit i operaiile care pot fi realizate cu respectivul tip de date. Limbajul de programare 159 Pentru declararea unei variabile se utilizeaz patru instruciuni: DIM, GLOBAL, STATIC i REDIM. Tipul variabilei poate fi definit cu ajutorul unui caracter de tip adugat numelui variabilei (#, $, etc). Instruciunea DIM declar variabilele i aloc spaiul de stocare pentru acestea. Sintaxa instruciunii Dim este urmtoarea:
unde: WithEvents: specific faptul c nume_variabil este un obiect pentru a rspunde la evenimente create de un obiect ActiveX. Cu aceast opiune nu se poate utiliza New. Cu WithEvents se pot declara oricte variabile dar nu se pot definii vectori; nume_variabil: este numele variabilei; subscripts: se folosete pentru definirea vectorilor; New: permite crearea implicit a unui obiect; As: permite stabilirea tipului de date pentru variabile (Byte, Boolean, Integer, Long, Currency, Single, Double, Date, String). Dac clauza As este omis, tipul variabilei va fi cel implicit (Variant cu excepia cazurilor cnd este schimbat cu ajutorul instruciunii Deftip).
Declararea implicit
Variabilele pot s nu fie declarate nainte de prima lor utilizare n program, pentru ele Visual Basic-ul alocnd n mod automat zone de memorie. Aceast manier poart numele de declarare implicit. Ea nu este recomandat deoarece poate produce erori care impun declararea explicit a variabilelor folosite n cadrul aplicaiei.
Pentru a evita problemele legate de utilizarea greit a numelor variabilelor, se poate plasa urmtoarea instruciune la nceputul unei seciuni de declaraie n toate fiierele i modulele.
Option explicit
Aceast instruciune va genera un mesaj de eroare cnd se ntlnete o variabil care nu a fost declarat n prealabil. Instruciunea Option explicit poate fi inserat automat n toate fiierele i modulele prin selectarea opiunii Reguied Variables Declaration din caseta de dialog Environment Options a meniului Options (tastndu-se Yes n caseta Settings), sau prin selectarea lui Yes n caseta list Setting.
4.4.2. Domeniul unei variabile
Toate variabilele Visual Basic au un domeniu n interiorul cruia sunt recunoscute. Visual Basic permite trei domenii diferite i anume: Local; Modul; Global sau form.
Variabile locale
Variabilele locale sunt declarate ntr-o procedur (cu instruciunile DIM, STATIC, sau REDIM) fiind recunoscute numai n procedura n care apar. Variabilele declarate cu DIM sunt active numai pe perioada executrii Limbajul de programare 161 procedurii, n timp ce variabilele declarate cu STATIC i pstreaz valorile pe tot timpul execuiei programului.
Exemplu: Sub .calcul_p().. Dim N For N=1 To 10 Print N^2 Next End Sub
Variabilele limitate la un modul sau form
Aici este vorba de un domeniu puin mai larg, deoarece variabilele sunt recunoscute de toate procedurile i funciile unui modul sau unei forme. Ele se declar cu instruciunea Dim n seciunea de declaraie a unei forme sau a unui modul i i pstreaz valorile pe toat durata aplicaiei.
Variabile globale
Variabilele globale au raza de aciune cea mai larg. Ele sunt recunoscute n toate procedurile i n toate funciile din cadrul aplicaiei, pe toat durata de rulare. Declararea unei astfel de variabile se face cu ajutorul instruciunii GLOBAL n seciunea de declaraii a unui modul. Instruciunea GLOBAL nu este admis n proceduri sau n modulul formei.
Exemplu: Global .n As Double..
ntr-un program pot fi declarate dou variabile cu acelai nume, dar la dou nivele diferite, ceea ce determin alocarea a dou zone de memorie diferite. n procedur programul lucreaz cu variabila declarat n procedur. n rest programul lucreaz cu variabila declarat n modul global. Visual Basic 162
4.4.3. Durata de via a variabilelor
O alt caracteristic de care se ine seama la declararea variabilelor este durata de via. Viaa unei variabile ncepe n momentul n care a fost declarat i se regsete n memorie i se sfrete cnd nu mai este regsit n memorie. Viaa unei variabile nu trebuie confundat cu domeniul. Exist dou durate de via posibile pentru o variabil: viaa limitat la procedur i viaa limitat la aplicaie.
Viaa limitat la procedur
Variabilele locale au o durat de via egal cu a procedurii n care au fost declarate. Ele vor fi terse din memorie la finele perioadei de execuie a procedurii n care au fost declarate.
Viaa limitat la aplicaie
Variabilele globale ca i cele de modul sau form au o durat de via egal cu timpul rulrii aplicaiei. Pentru ca o variabil local s-i pstreze valoarea pe tot timpul execuiei aplicaiei, ea se declar static. Declararea uneia sau a mai multor variabile statice se face folosind cuvntul rezervat Static, astfel:
Static nume_variabil
Exemplu: Function Total _valoare (VAL As Single, N As Integer) Static TV TV=0 For i=1 To N TV=TV+VAL Next Total_valoare = TV End Function Limbajul de programare 163
Pentru declararea tuturor variabilelor unei proceduri ca statice se pune la nceputul procedurii cuvntul Static.
Exemplu:
Static Function Static Sub
4.4.4. Tipuri de variabile
n Visual Basic pot fi utilizate 12 tipuri de variabile:
Tipul Descriere Sufix Lungim e Domeniul INTEGER ntregi % 2 octei -32.76832.767 LONG ntregi lungi & 4 octei -2.147.483.648 2.147.483.647 CURRENCY Numere zecima-le cu virgul fix @ 8 octei -922.337.203.685. 477,5808 922.337.203.685. 477,5807
SINGLE Numere zeci-male cu virgul flotant simpl precizie (pentru aplicaii tiini-fice) ! 4 octei -3,402.823E38 -1,401.298E-45 si 1,401.298E-45 3,402.823E38 DOUBLE Numere zecima-le # 8 octei - 1,797.693.134.86 Visual Basic 164 cu virgul flotant dubl precizie (pentru calcule tiinifi-ce) 232E308 - 4,940.656.458.41 247E-324 si 4,940.656.458.41 247E-324 1,797.693.134.86 232E308
STRING (ir) ir caractere $ lung. varia- bil 0 la aproximativ 65.500 caractere STRING ir caractere de lungime fix $ lung. fix Lungime predefinit BYTE Suita de 8 biti fr 1 octet 0 la 255 BOOLEAN Date de tipul adevrat sau fals fr 2 octei True sau False DATE Poate conine data i/sau ora 8 octei
VARIANT Depinde de con-inutul variabi-lei: toate nume- rele, toate iru-rile, toate datele i orele. fr lung. varia- bil
Limbajul de programare 165 OBJECT Fr 8 octei Stocheaz date relative la o instan a unei clase sau obiect.
La datele de tip Boolean valoarea True este echivalent cu numrul 0, iar valoarea False este echivalent cu numrul -1. Aceast remarc nu este conform cu logica matematic unde True (Adevarat) este asociat cu 1, iar False (Fals) este asociat lui 0.
Exemplu:
Dim A As Integer Dim B As Integer, C As Double Static Data_calendar As Date Global Pu AsVariant Global Nume As Sring Dim Stoc As Long, Cant As Currency, Pu, Valoare As Long
Dintre tipurile de variabile numerice, cel mai des se utilizeaz tipul Double deoarece intervalul de valori posibile este maximal. O variabil de acest tip poate gzdui valoarea oricrui numr imaginabil. O variabil de tip Integer are cu certitudine un grad mai mare de restricie n utilizare pentru c restrnge mult domeniul de valori. Cu toate acestea, trebuie semnalate dou avantaje ale acestui tip. Primul ar fi c ocup numai doi octei de memorie fa de patru ct ocup tipul Double, iar datele de tip Integer sunt manipulate mai rapid dect celelalte tipuri. Tipul Currency se utilizeaz n operaii cu date monetare i calcule de gestiune unde exactitatea impune patru zecimale. Prezint un raport bun ntre domeniul de valori i timpul de calcul, dar i un grad mare de ocupare a memoriei. Tipul Variant prezint o particularitate foarte interesant n Visual Basic. Variant poate stoca date numerice cu sau fr virgula, iruri de caractere, valori calendaristice sau orare. O variabil de tipul Variant este o variabil a carui tip poate fi modificat liber. La modul intern i nevizibil, Visual Basic 166 Visual Basic asociaz datei nsi o alt informaie care specific tipul datei. Tipul datei unei variabile Variant este accesibil graie funciei VarType. Aceast funcie se utilizeaz pentru a afia tipul unei date ntr-o etichet cu instruciunea urmtoare: Eticheta =VarType (Stoc)
Funcia returneaz urmtoarele:
TIPUL DESCRIERE 0 Empty(=vide) 1 Null 2 Integer 3 Long 4 Single 5 Double 6 Currency 7 Date 8 String 11 Boolean 17 Byte 8192 Tablou
Empty i Null nu reprezint noi tipuri de date, ci coninuturi particulare de variabile: Empty: variabila nu a fost iniializat cu o dat; Null: semnific faptul c informaia nu este cunoscut. Exemplu: numele de fat pentru un brbat. Programatorul nu trebuie s se ocupe cu tipul de date a unei variabile Variant. Visual Basic iniializeaz singur tipul datei cnd se va da o valoare variabilei. El va alege n mod automat i inteligent, tipul corespunznd cel mai bine datei introduse. Apoi, chiar atunci cnd coninutul datei se schimba, Visual Basic este capabil s-i aleag un alt tip de dat mai adecvat.
Limbajul de programare 167 Exemplu:
Dim Nume As Variant Dim Cant_int As Variant, Cant_ies As Variant, Stoc As Variant Dim Cod_mat As Variant Dim Pu As Variant Dim Data_nasterii As Variant, Varsta As Variant Nume = Popescu Cant_int =100000 Cant_ies =50000 Stoc =5 Pu =1500.50 Data_nasterii =#10/10/80#
n urma secvenei: Varsta va fi de tip 0 (Empty) deoarece nu a fost iniializat; Nume va fi de tip 8 (String); Cant_int va fi de tipul 3 (Long) fiind mai mare decat 32767; Cant_ies va fi de tipul 3 (Long); Pu va fi de tipul 8 (String), care dac este un numr este pus ntre semnele ghilimele; Stocul va fi de tipul 2 (Integer); Data_nasterii va fi de tipul 7 (Date);
Tipul DATE conine data i ora. Dac data nu este indicat ea este 30/12/1899 (data de natere a bunicului lui Bill Gates), iar dac nu este indicat ora, este considerat miezul nopii. Iniializarea datelor se face ntr-una din manierele urmtoare: Data_1 = #10/10/1997 10:30 pm # data i ora (pm) semnific 22:30 Data_2 = #10/10/1997 10:30 # Data i ora (ora 10:30) Ora = # 10:30 am # ora 10:30 Data_3 = #31/12/97 # 31.12.1997 Caracterele # sunt obligatorii, dar caracterele am i pm sunt automat gsite dac sunt omise, de asemenea i secolul.
Visual Basic 168 4.5. Tipuri de date definite de utilizator
Pe lng cele 10 tipuri de date mai exist posibiliti ca programatorul s-i defineasc propriile tipuri de date (structuri de date). Acestea sunt ansambluri de date elementare ce se definesc cu ajutorul instruciunilor Type i End Type n procedura Declaration , ntr-un modul.BAS. De exemplu, sistemul Articol conine toate datele aferente unui articol, ele fiind manipulabile cu o singur variabil:
Type Articol Cod As Integer Nume As String Pu As Currency Stoc As Integer End Type
Apoi, se poate declara o variabila de tipul Articol , ca i pentru unul din tipurile standard, cu ajutorul instruciunii Dim: Dim Articol_consumat As Articol Dim Articol_aprovizionat As Articol Fiecare din aceste doua variabile (Articol_consumat, Articol_aprovizionat) vor fi compuse din patru cmpuri conform descrierii din Type. Exemplu de operatii: Articolul_consumat. Stoc = 10 Articol_aprovizionat =Articolul_consumat n primul caz, variabila stoc din articol_consumat ia valoarea 10. n cel de-al doilea caz toate cmpurile din articol_consumat trec n articol_aprovizionat.
Limbajul de programare 169 4.6. Operatorii
Un operator este un simbol, un caracter sau un cuvnt care semnific o relaie ntre dou sau mai multe elemente.
4.6.1. Operatorii aritmetici
n Visual Basic se pot utiliza urmtorii operatori aritmetici:
OPERATORI DESCRIERE + Adunare - Scdere * nmulire / mprire \ mprire ntreag (rezultatul este ntreg) MOD Restul la mprire ^ Ridicare la putere
Observaie: Visual Basic ofer funcia DIV n locul operatorului \ pentru realizarea operaiunile de mprire ntreag.
4.6.2. Operatori de concatenare
Concatenarea a dou iruri de caractere se poate face cu unul din operatorii + sau & (care sunt echivaleni). x=ABC + DE y=ABC & DE n ambele cazuri rezultatul este un nou ir ABCDE.
4.6.3. Operatorii relaionali Visual Basic 170
Operatorii relaionali admii sunt:
OPERATORI DESCRIERE > Mai mare < Mai mic = Egal > = sau = > Mai mare sau egal < = sau = < Mai mic sau egal < > sau > < Diferit de Like Echivalen, congruen
4.6.4. Operatorii logici
Operatorii logici admii sunt:
OPERATORI DESCRIERE AND (I) Rezultatul este adevrat cnd cei doi operanzi sunt adevrai (X And Y) NOT (NU) Rezultatul este adevrat dac operandul este fals i invers (Not X) OR (SAU) Rezultatul este adevrat dac unul din operanzi este adevrat (X OR Y) EQV (ECHIVALENT) Rezultatul este adevrat dac cei doi operanzi sunt fie adevrai fie fali (X EQV Y) IMP (IMPLICARE) Rezultatul este fals dac primul operand este adevrat i urmtorul fals (X IMP Y) XOR (EXCLUSIV) Rezultatul este adevrat dac unul din operanzi este adevrat. Dac ambii operanzi sunt sau adevrai sau fali rezultatul este fals.
IS Rezultatul este adevrat dac cei doi operanzi (variabile de tip obiect) descind din acelai obiect. Dac operanzi descind din obiecte Limbajul de programare 171 diferite rezultatul este fals.
Execuia operatorilor n cadrul unei expresii se face ntr-o ordine predeterminat numit precedena operatorilor. Aceast ordine poate fi modificat prin utilizarea parantezelor n cadrul expresiei ce urmeaz a fi evaluat. n cazul n care, o expresie conine operatori de mai multe tipuri, operatorii aritmetici sunt executai primii, apoi operatorii relaionali i n final operatorii logici. Ordinea de preceden (prioritatea n calcule a operaiilor) este prezentat n urmtorul tabel:
OPERATORI ARITMETICI OPERATORI RELAIONALI OPERATORI LOGICI Exponentul (^) Egalitate (=) NOT Negaie (-) Inegalitate (< >) AND nmulire i mprire (*,/) Mai mic (<) OR mprire ntreag (/) Mai mare (>) XOR Modular (Mod) Mai mic sau egal (< =) EQV Adunare i scdere (+,-) Mai mare sau egal (> =) IMP Concatenarea irurilor & LIKE IS
4.7. Funciile integrate n Visual Basic
Exist numeroase funcii predefinite n Visual Basic.
4.7.1. Funcii matematice
Visual Basic 172 FUNCIA DESCRIEREA Abs Returneaz valoarea absolut a unui numr (Abs (x)). Atn Returneaz aria tangent de x (Atn(x)). Cos Returneaz cosinusul lui x. Exp Returneaz e x la puterea parametrului (Exp(x)). INT Returneaz poriunea ntreag a unui numr (INT (x)). FIX Returneaz partea ntreag a lui x prin trunchierea lui x (FIX (x)). LOG Returneaz logaritmul natural dintr-un numr (LOG (x)). SIGN Returneaz o valoare n funcie de semnul parametrului (SIGN (x)) astfel: 1 pentru x>0 -1 pentru x<0 0 pentru x=0. SIN Returneaz sinusul de x (n radiani). TAN Returneaz tangenta de x (n radiani).
4.7.2. Funcii pentru gestionarea tipurilor de date
FUNCIA DESCRIEREA Cbool Convertete n tip Boolean datele furnizate de parametrii; Cbyte Convertete n tip Byte datele furnizate de parametrii; CCur Convertete n tip Currency datele furnizate de parametrii; CDate Convertete n tip Date datele furnizate de parametrii; CDbl Convertete n tip Double datele furnizate de parametrii; CInt Convertete n tip Integer datele furnizate de parametrii; CLng Convertete n tip Long datele furnizate de parametrii; CSng Convertete n tip Single datele furnizate de parametrii; CStr Convertete n tip String datele furnizate de parametrii; Limbajul de programare 173 CVar Convertete n tip Variant datele furnizate de parametrii; IsArray Returneaz o valoare boolean adevrat dac parametrul furnizat este nume de tablou; IsDate Returneaz o valoare boolean adevrat dac parametrul furnizat este o dat de tip Date; IsEmpty Returneaz o valoare boolean adevrat dac parametrul furnizat este numele unei variabile care nu a fost iniializat; IsNull Returneaz o valoare boolean adevrat dac parametrul furnizat este numele unei variabile care are coninutul Null; IsNumeric Returneaz o valoare boolean adevrat dac parametrul furnizat este numele unei date de tip numeric; Str Convertete un numr n ir de caractere; Type Name Returneaz sub forma de nume tipul de dat furnizat de parametru; Val Convertete un ir n dat numeric; VarType Returneaz sub forma de numr tipul de variabil furnizat de parametru.
4.7.3. Funcii pentru iruri de caractere
FUNCII DESCRIEREA Asc Returneaz valoarea numeric a codului Ascii al primului caracter al irului furnizat ca parametru; CHR, CHR$ Returneaz caracterul al crui cod Ascii este furnizat (reciproca funciei Asc); Format Stabilete formatul de afiare a datelor de tip numeric, sau date de tip ir; Instr Caut un ir de caractere ntr-un alt ir de caractere ncepnd cu un anumit caracter i returneaz 0 dac nu gasete irul sau o valoare egal cu caracterul din al doilea ir de la care cele dou iruri coincid (n%, A$, Visual Basic 174 B$); LCase Convertete n minuscule caracterul furnizat; Left Returneaz caracterul cel mai de la stnga al irului furnizat; Len Returneaz lungimea, n octei, a irului furnizat; LTrim Suprim spaiile de la stnga irului furnizat; Mid Extrage un subir de caractere din cmpul de caractere furnizat ca parametru; Right Returneaz caracterul cel mai din dreapta al irului furnizat ca parametru; RTrim Suprim spaiile din dreapta irului furnizat; Space Returneaz un ir de spaii cu lungimea egal cu parametrul furnizat; StrCnv Permite convertirea n majuscule a primei litere a fiecrui cuvnt din irul furnizat; String Returneaz un ir constituit din N caractere identice; UCase Convertete n caracter majuscul parametrul furnizat.
4.7.4. Funcii pentru gestionarea datei i orei
FUNCIA DESCRIERE Date Returneaz data calendaristic; DateAdd Adaug o durat (la alegere: n ani, trimestre, luni, sptmni, zile, ore, minute, secunde) la data furnizat; DateDiff Returneaz diferena ntre dou date furnizate (la alegere: n ani, trimestre, luni, sptmni, zile, ore, minute, secunde); DatePart Returneaz o parte a datei furnizate (la alegere: anul, trimestrul, luna, sptmna, ora, minutul, secunda); DateSerial Returneaz o dat de tip Date (anul, luna, ziua); DateValue Returneaz o dat de tip Date sub forma: 15 mai 1997 sau 15/08.1997 sau 15-NOV-1997; Day Returneaz ziua din lun (1 la 31) a datei furnizate; Hour Returneaz un numr cuprins ntre 0 i 23 egal cu ora Limbajul de programare 175 parametrului furnizat; Minute Returneaz un numr cuprins ntre 0 i 59 egal cu numrul de minute al parametrului furnizat; Month Returneaz un numr cuprins ntre 1 i 12 egal cu numrul de luni a parametrului furnizat; Now Returneaz data i ora din sistem; Second Returneaz un numr cuprins ntre 0 i 59 egal cu numrul de secunde a parametrului furnizat; Time Returneaz ora sistemului;
Timer Returneaz numrul de secunde care sunt trecute dintr- un minut; WeekDay Returneaz ziua din sptmna sub forma de numr (1 la 7); Year Returneaz un numr egal cu anii din parametrul furnizat.
4.7.5. Funcii matematice derivate
n tabelul urmtor sunt prezentate funciile matematice nonintrinseci derivate din funcii matematice intrinseci livrate cu Visual Basic i modul de obinere.
HArccosec(x)=Log((Sgn(x)*Sqr(x*x+1)+1)/x) Cotangenta hiperbolica inversa HArccotan(x)=Log((x+1)/(x-1))/2 Limbajul de programare 177
4.7.6. Funcii de conversie a datelor
Realizeaz conversia expresiilor dintr-un tip de dat n altul. Expresia poate s fie de tip ir sau numeric.
FUNCIA DIN IN Ccur Orice expresie valid Currency CDbl Orice expresie valid Double Cint Orice expresie valid Integer CLng Orice expresie valid Long CSng Orice expresie valid Single CStr Orice expresie valid String Cvar Orice expresie valid Variant
4.8. Instruciuni
4.8.1. Instruciunea REM
Cu ajutorul acestei instruciuni se introduc comentarii n program. Formatul general:
{REM} [comentariu]
Comentariul reprezint un ir de caractere alfanumerice care face posibil nelegerea i utilizarea mai uoar a programului de catre utilizatori. Folosind comentarii n program, acesta poate fi mai uor depanat, modificat i adaptat cerinelor utilizatorului. Toate liniile de comentariu sunt ignorate de ctre compilator n momentul execuiei programului. O linie de comentariu se caracterizeaza prin cuvntul rezervat REM sau printr-un semn apostrof.
Visual Basic 178 Exemplu: REM Calculul stocurilor de materiale A=R^2*3.14 Calculul ariei cercului
4.8.2. Instruciunea LET
Instruciunea Let atribuie unei variabile valoarea unei expresii. Formatul general:
[LET] variabil=expresie
Cuvntul cheie Let este opional. Simbolul = nu are sensul de egalitate matematic, ci de atribuire. Este obligatoriu ca tipul expresiei s coincid cu tipul variabilei. Instruciunea de atribuire este foarte important deoarece ea permite, pe de o parte, pstrarea rezultatului operaiunilor, iar pe de alt parte, de a defini o variabil (dac aceasta nu este deja fcut cu o instruciune declarativ) atribuindu-i o valoare i un tip. Execuia instruciunii Let const n evaluarea expresiei din dreapta semnului egal i atribuirea valorii determinate variabilei din stnga semnului egal. De fiecare dat cnd se atribuie o valoare unei variabile, aceasta este stocat n zona de memorie corespunztoare pn n momentul n care variabila este suprimat (lucru care se produce atunci cnd procedura n care variabila este definit se termin), sau pn n momentul n care o alt valoare i este atribuit (caz n care prima valoare este nlocuit prin cea nou).
Exemplu: LET A=10 Variabilei A i se atribuie valoarea 10 B=C Varibilei B i se atribuie valoarea variabilei C A=R^2*3,14 Variabilei A i se atribuie valoarea ariei cercului A$ =POPESCU B$ =ION C$ =A$+B$ Limbajul de programare 179
4.8.3. Instruciunea PRINT
Instruciunea Print realizeaz afiarea pe ecranul monitorului a datelor, rezultatelor intermediare sau finale a prelucrrii datelor. Formatul general:
Obiect este caseta de imagine, obiectul Debug sau Printer pe care expresia se afieaz. Cuvntul cheie Print poate fi nlocuit cu caracterul ? List_expresii conine elemente admise de limbaj (variabile, iruri de caractere, expresii) separate ntre ele prin , ; sau spaiu. Dac list_expresii lipsete se va edita o linie vid. n cazul utilizrii separatorului ; ntre elementele list_expresii, atunci acestea se vor tiprii una dup alta (cursorul de text este poziionat dup ultimul caracter afiat). n cazul n care elementele din list_expresii sunt separate prin , elementele acestei liste vor fi tiprite n cmpurile standard ale liniei (cursorul este poziionat la nceputul urmtoarei zone de afiare; zona ncepe la fiecare 14 coloane). Dac la sfritul list_expresii apare unul din separatorii , sau ;, atunci nu se realizeaz returul i saltul la o nou linie, cursorul rmnnd poziionat pe aceeai linie. n acest fel urmtoarea instruciune Print va tipri date pe aceeai linie. Funcia SPC(n) realizeaz spaierea orizontal. n cadrul acestei opiuni "n" reprezint numrul de spaii de pe linia curent peste care se face un salt (SKIP) n vederea afirii urmtorului element din list_expresii (numrul de spaii inserate ntre dou elemente afiate). Funcia TAB(n) servete la execuia tabulrii orizontale. Ea precede mesajul sau variabila ce urmeaz a fi afiat n coloana precizat de n. Dac valoarea transmis de funcia Tab este mai mare dect lungimea unei linii, atunci se extrage linia curent i poziionarea se face pe linia urmtoare. Visual Basic 180
Exemplu: A=20 DEBUG.PRINT A B=20: C=30 DEBUG.PRINT A, B, C DEBUG.PRINT A; B, DEBUG.PRINT C DEBUG.PRINT"REZULTATE=;(A+ B)*C D=POPESCU DEBUG.PRINT D PRINT A=10 PRINT A B=20: C=30 PRINT A, B, C PRINT A; B, PRINT C PRINT 'REZULTAT='; (A=B)*C A$="POPESCU" PRINT A$
4.8.4. Instruciuni pentru controlul programului
4.8.4.1. Instruciunile condiionale
Instruciunile condiionale determin modificarea ordinii de execuie din cadrul programelor. n mod normal ntr-un program instruciunile sunt executate unele dup altele n ordinea scrierii. Graie instruciunilor condiionale aceast ordine se poate realiza impunnd execuia anumitor instruciuni n mod unic, n funcie de valoarea unei condiii specificate mai nainte. Execuia instruciunilor n acest caz nu mai este neaprat secvenial. n Visual Basic sunt dou instruciuni condiionale: IFTHEN i SELECT CASE.
4.8.4.1.1. Instruciunea IF THEN
Instruciunea realizeaz un transfer al coninutului, sau execuia uneia sau mai multor instruciuni, n funcie de valoarea logic a unei expresii. Limbajul de programare 181 Sintaxa instruciunii cuprinde dou formate:
a) IF condiie THEN instruciune_1
[ELSE instruciune_2 ]
Acest format poate fi folosit n doua moduri: Fr opiunea ELSE n acest caz, execuia instruciunii IF ncepe prin evaluarea condiiei. Dac condiia este adevrat se execut instruciune_1, dup care se trece la urmtoarea instruciune din program. Dac condiia nu este adevrat se ignor instruciune_1 i execuia programului continu cu prima instruciune dup IF (pe condiie fals nu se execut nici o instruciune). Aceast sintax poate fi reprezentat grafic astfel:
Cu opiunea ELSE Cnd se ntlnete o astfel de opiune, executarea ncepe prin evaluarea expresiei i dac aceasta este True se execut instruciune_1 iar dac este False se va executa instruciune_2. Grafic acest lucru se reprezint astfel:
Instructiune_1 T C C Instructiune_2 Instructiune_1 T F Visual Basic 182
Exemplu: Pentru dou numere care se introduc de la tastatur s se calculeze i s se afieze diferena dintre cel mai mare (eventual egal) i cel mai mic.
DIM A, B, C AS SINGLE A=VAL(TEXT1.TEXT) B=VAL(TEXT2.TEXT) IF A>=B THEN C=A-B ELSE C=B-A END IF LABEL1.CAPTION=A LABEL2.CAPTION=B LABEL3.CAPTION=C
b). IF/ELSEIF/ELSE/END IF IF condiie_1 THEN instruciune_1 [ELSEIF condiie_2 THEN instruciune_2] C-1 Instruciune_1 C-2 Instruciune_2 .T. .F. .T. .F. Limbajul de programare 183
[ELSEIF condiie_n THEN instruciune_n] [ELSE instruciune] END IF
Fiecare din condiiile construciilor If/ElseIf sunt testate n ordinea n care apar. Dac una din condiii este adevrat sunt executate instruciunile corespunztoare acesteia i execuia programului continu cu instruciunea ce se afl dup EndIf. Dac nici o condiie nu este adevrat se execut instruciunea ce urmeaz clauzei Else. Dac nu este specificat clauza Else execuia programului este continuat cu instruciunea de dup EndIf. ntr-un program pot exista mai multe IF-uri imbricate.
Exemplu: Calculul rdcinilor unei ecuaii de grad II n urmtorul exemplu este prezentat un program cu ajutorul cruia se rezolv ecuaia de gradul doi: se proiecteaz fereastra aplicaiei asemntor cu cea din figura de mai jos:
Visual Basic 184
se introduce urmtorul program: n zona de declaraii globale ale ferestrei (GENERAL):
Public a As Single, b As Single, c As Single Public delta As Single Public x1 As Single, x2 As Single
n cadrul procedurii (subrutinei) eveniment Click a butonului de comand:
Private Sub Command1_Click() a = Val(Text1.Text) If a = 0 Then MsgBox"NU ESTE ECUATIE DE GRADUL DOI !", 0," Mesaj" GoTo 5 End If b = Val(Text2.Text) c = Val(Text3.Text) delta = b ^ 2 - 4 * a * c Label5.Caption = delta If delta = 0 Then Limbajul de programare 185 MsgBox"Ecuatia are doua radacini egale !", 0," Mesaj" Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c) +") = 0" Label7.Caption = (-(b) / (2 * a)) Label9.Caption = (-(b) / (2 * a)) ElseIf delta < 0 Then MsgBox"Ecuatia are doua radacini numere complexe !", 0," Mesaj" Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c) +") = 0" Label7.Caption ="(-(" + Str(b) +") + i" + Str(Sqr(-(delta))) +") / (" + Str(2 * a) +")" Label9.Caption ="(-(" + Str(b) +") - i" + Str(Sqr(-(delta))) +") / (" + Str(2 * a) +")" Else x1 = (-(b) - (Sqr(delta))) / (2 * a) x2 = (-(b) + (Sqr(delta))) / (2 * a) Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c) +") = 0" Label7.Caption = x1 Label9.Caption = x2 End If 5 End Sub
n cadrul programului de mai sus variabila a reprezint coeficientul lui x ptrat, b coeficientul lui x, c termenul liber, delta reprezint discriminantul ecuaiei, iar x1 i x2 sunt rdcinile acesteia.
4.8.4.1.2. Instruciunea SELECT CASE
Instruciunea Select Case compar valorile unei expresii cu una sau mai multe valori dirijnd execuia programului n funcie de rezultatele comparaiei. Formatul general:
SELECT CASE expresie Visual Basic 186 CASE lista_test_1 instruciuni_1 [CASE lista_test_2 instruciuni_2]
Unde: expresie: reprezint o expresie de orice tip; lista_test: este o list de expresii separate prin virgule cu care se compar valoarea expresiei. Elementele unei lista_test sunt implicit legate ntre ele printr-un operator Or. Din aceasta cauz instruciunile ce urmeaz dup clauza Case lista_text sunt executate dac cel puin unul din membrii listei_test este adevrat. Dup executarea acestei instruciuni controlul este trimis primei instruciuni ce urmeaz dup End Select. Structura Select trebuie s conin cel puin o clauz Case lista_test. Case Else: determin execuia instruciunii care o urmeaz n situaia n care toate testele realizate de Case sunt false. Exit Select: reprezint o alternativ de ieire forat din structura Case; End Select: marcheaz sfritul structurii select.
Exemplu: Urmtorul exemplu prezint avantajele utilizrii instruciunii SELECT CASE n cadrul unui program de calcul a impozitului pe salar: se construiete o fereastr asemntoare cu cea din figura de mai jos:
Limbajul de programare 187
se introduce urmtorul program n cadrul procedurii eveniment Click asociat butonului Calcul:
Private Sub Command1_Click() Dim SalarBrut As Single Dim Impozit As Single SalarBrut = Val(Text2.Text) * Val(Text3.Text) Label5.Caption = SalarBrut Select Case SalarBrut Case Is <= 917000 Impozit = SalarBrut*(18/100) Case 917001 To 2250000 Impozit =165060+ SalarBrut * (23 / 100) Case 2250001 To 3583000 Impozit = 471650 + SalarBrut * (28 / 100) Case 3583001 To 5000000 Impozit = 844890 + SalarBrut * (34 / 100) Case Is >5000000 Impozit = 1326670+ SalarBrut * (40 / 100) End Select Label7.Caption = Impozit End Sub
4.8.4.2. Instruciuni repetitive
Visual Basic 188 ntr-un program, cnd mai multe instruciuni se apeleaz, acestea pot fi scrise o singur dat i executate de mai multe ori. Ansamblul instruciunilor care se execut de un numr de ori poart numele de ciclu.
4.8.4.2.1. Instruciunile DO LOOP
Instruciunea realizeaz execuia repetat a unui grup de instruciuni n funcie de valoarea unei condiii i de modul de testare. Formatul general:
DO [WHILE/ UNTIL condiie]
[instruciuni]
[EXIT DO]
LOOP [WHILE/UNTIL condiie]
Unde: While: determin repetarea ciclului atta timp ct expresia este adevarat. Cnd condiia este fals execuia programului continu cu prima instruciune dup Loop; Until: determin repetarea ciclului atta timp ct expresia este fals; Exit Do: determin ieirea forat din ciclu; Loop: delimitator care marcheaz sfritul instruciunii Do. Verificarea expresiei se poate face la intrarea n ciclu sau la ieire din ciclu. Ca i n cazul instruciunii IfThen, ciclurile pot fi suprapuse (imbricate).
Exemplu: I=0 DO I=I+1 Limbajul de programare 189 LABEL1.CAPTION=I UNTIL I=20000
O structura ciclic echivalent lui Do WhileLoop este urmtoarea:
WHILE condiie instruciuni WEND
Visual Basic interpreteaz aceast instruciune ca Do WhileLoop, repetnd instruciunile atta timp ct condiia este adevrat.
4.8.4.2.2. Instruciunea FOR NEXT
Instruciunea ForNext realizeaz executarea repetat a unui set de instruciuni de un numr prestabilit de ori. Formatul general:
FOR variabila=val_init TO val_fin [STEP increment]
instruciuni
[EXIT FOR]
NEXT [variabila]
variabila: este de tip numeric i este folosit ca un contor (variabila de control); val_init: reprezint valoarea iniial a variabilei la prima iteraie; val_fin: este valoarea de sfrit a variabilei. Cnd contorul este mai mare ca val_fin, Visual Basic ntrerupe iteraia plasndu-se dup Next. Incrementul: este o expresie numeric ce reprezint valoarea cu care este incrementat sau decrementat variabila la fiecare iteraie. Implicit incrementul este +1; Instruciuni: reprezint corpul ciclului; Visual Basic 190 Exit For: permite ieirea forat din ciclu, nainte ca variabila de control s depeasc condiia final. n acest caz Visual Basic nu va mai executa seciunea de incrementare i de verificare a variabilei de control, iar executarea programului continu de la instruciunea urmtoare cuvntului rezervat Next; Next: indic programului s revin la instruciunea For, s incrementeze variabila, s testeze val_fin i s execute n mod repetat ciclul atunci cnd val_fin nu este ndeplinit. La intrarea n ciclu variabila se iniializeaz cu val_init i se testeaz condiia variabila>val_fin. Dac nu este ndeplinit condiia se execut instruciunile aflate ntre For i Next. La a doua iteraie Visual Basic incrementeaz sau decrementeaz variabila cu incrementul, testeaz din nou condiia i ncepe procesul descris mai sus. Cnd condiia este adevrat, execuia programului continu cu instruciunea dup Next. Deci instruciunea For ... Next presupune parcurgerea a cinci etape i anume: iniializarea variabilei de control a ciclului; testarea variabilei de control sau a condiiei cliclului; executarea instruciunilor din ciclu; modificarea valorii variabilei de control; repetarea ciclului.
Exemplu:
Private Sub Command1_Click() Dim A As Integer Debug.Print Afisarea numerelor de la 1 la 10 For A=1 To 10 Debug.Print A; Next Debug.Print Debug.Print Afisarea numerelor de la 100 la 0 din 5 in 5 For A=100 To 0 Step -5 Debug.Print A; Next End Sub Limbajul de programare 191
i n cadrul instruciunii For pot exista cicluri imbricate. De exemplu:
FOR I=1 TO 20
FOR K=1 TO 5
FOR Y=1 TO 10
NEXT Y
NEXT K
NEXT I
Exemplu:
Private Sub Command1_Click() Dim i,k,j As Integer For i=1 To 3 For k=1 To 5 For j=1 To 3 Debug.Print i+k+j Next j Next k Next i End Sub
Exist i noiunea de ciclu Null. Acesta permite programatorului s fac o pauz pentru efectuarea unor anumite operaii cum ar fi: afiarea/primirea unui mesaj, pornirea imprimatei, verificarea/introducerea unei dischete, etc. Exemplu:
Visual Basic 192 For A=1 To 10000 Nu face nimic Next
Acest exemplu va genera o pauz pe timpul executrii celor 10000 de operaii. Dac un program trebuie s utilizeze astfel de ntrzieri se poate folosi i funcia API Sleep, sau funcia MessageBox.
4.8.4.3. Instruciuni pentru tratarea fiierelor
4.8.4.3.1. Instruciunea OPEN
Pentru ca un program s poat efectua operaii de intrare/ieire cu un fiier, respectivul fiier trebuie mai nti s fie deschis. Instruciunea Open aloca o memorie tampon (buffer) pentru operaiile de intrare/ieire i determin modul de acces la fiier. Formatul general:
OPEN nume_cale [For mode] [Access access] [lock] As [#] numr_fiier [Len = lungime_articol]
unde: nume_cale: este o expresie necesar de tip String care specific numele fiierului. Expresia poate include directorul i unitatea de disc n care se afl fiierul; mode: acest argument specific modul de deschidere a fiierului: adugare (Append), binar (Binary), citire (Input), scriere (Output), sau aleator (Random). Dac modul nu este specificat, implicit, Open deschide fiierul pentru acces n mod Random. Deschiderea unui fiier n mod Append plaseaz cursorul fiierului imediat nainte de Limbajul de programare 193 eticheta de sfrit de fiier (EOF). Deschiderea unui fiier in mod Binary permite scrierea/citirea n valori numerice. Deschiderea unui fiier n mod Input permite citirea secvenial din acesta, fiierul fiind parcurs de la nceput spre final. Deschiderea unui fiier n mod Output permite scrierea secvenial n acesta. Dac fiierul exist deja, apelarea Open n mod Output va determina scrierea peste fiierul existent. n acest caz se recomand utilizarea modului Append. Deschiderea unui fiier n mod Random permite accesul aleator att pentru citirea, ct i pentru scrierea fiierului; access: este un cuvnt rezervat necesar care specific operaiile permise asupra fiierului deschis: citire (Read), scriere (Write), sau citire/scriere (Read-Write); lock: este o opiune care specific operaiile permise asupra fiierului deschis, din partea altor procese: partajat (Shared), citire interzis (Lock-Read), scriere interzis (Lock-Write), sau citire/scriere interzise (Lock-Read-Write); numr_fiier :este o expresie ntreag (ntre 1 i 511 inclusiv) care specific numrul ce va fi utilizat pentru a putea referi fiierul. Pentru a putea obine urmtorul numr de fiier disponibil se utilizeaz funcia predefinit Free File; lungime_articol: este o expresie ntreag din intervalul [1,32767]. Seteaz lungimea articolului pentru fiierele cu acces direct (Random) i capacitatea memoriei tampon pentru fiierele secveniale; Dac fiierul specificat de nume_cale nu exist, Visual Basic l va crea dac argumentul mode primete valoarea Append, Binary, Output sau Random. Dac se deschide un fiier n mod Binary, Input sau Random, acelai fiier poate fi deschis utilizndu-se un alt numr de fiier, fr a fi necesar nchiderea acestuia n prealabil. Dac fiierul a fost deschis n mod Append sau Output, el trebuie nchis nainte de a fi deschis un alt fiier. Dac fiierul a fost deja deschis de ctre un alt proces i dac sistemul de operare interzice tipul de acces specificat, instruciunea Open determin generarea unei erori de rulare.
4.8.4.3.2. Instruciunea CLOSE Visual Basic 194
Dup terminarea accesului la fiiere, un program trebuie s nchid toate fiierele deschise cu Open. n acest scop, n Visual Basic este utilizat instruciunea Close. Formatul general:
CLOSE [#numr_fiier],[#numr_fiier],.....
Instruciunea Close far argumentele opionale asigur nchiderea tuturor fiierelor deschise cu Open care sunt active n mod curent. Dac se nchid fiierele ce au fost deschise n mod Append sau Output, Visual Basic va scrie coninutul memoriei tampon pentru datele de ieire ale respectivului fiier n memoria tampon a sistemului de operare, iar Windows elibereaz tot spaiul memoriei tampon asociat cu fiierul nchis.
4.8.4.3.3. Instruciunea INPUT#
Instruciunea Input# citete datele din fiierul specificat prin numr_fiier i le atribuie variabilelor din lista de variabile. Format general:
Instruciunea Input# utilizeaz doar fiierele deschise n mod Input sau Binary. Nici una din variabile nu poate fi un vector sau variabil obiect. Variabilele trebuie sa fie de acelai tip ca datele din fiier.
4.8.4.3.4. Instruciunea INPUT
Instruciunea Input returneaz un numr specificat de caractere (n) dintr-un fiier deschis n mod Input sau Binary ntr-o variabil de tip String. Formatul general:
INPUT (numr_caractere, [#]numr_fisier)
unde: Limbajul de programare 195
numr_caractere: expresie numeric ce specific numrul de caractere ce trebuie returnate. Dac numr_caractere depete numrul de caractere rmase n fiier, instruciunea Input returneaz doar caracterele rmase n fiier; numr_fiier: este numrul specificat pentru a referii fiierul.
4.8.4.3.5. Instruciunea LINE INPUT#
Pentru citirea datelor dintr-un fiier accesat n mod secvenial se utilizeaz cel mai des instruciunea Line Input #. Formatul general:
LINE INPUT# numr_fiier , variabil_ir
numr_fiier: este numrul specificat pentru a referii fiierul deschis n mod Input; variabil_ir: este numele unei variabile de tip Variant sau String care va memora linia citit din fiier. Citirea din fiierul specificat prin numr_fiier se realizeaz, caracter cu caracter, pn cnd se ntlnete marcatorul de sfrit de rnd sau marcatorul de linie nou.
4.8.4.3.6. Funcia EOF
Funcia Eof testeaz condiia de sfrit de fiier, astfel nct programul sa poat aciona corespunztor. Formatul general:
EOF (numr_fiier)
numr_fiier: este numrul specificat pentru a referii fiierul deschis n oricare din modurile Input, Binary, sau Random.
Visual Basic 196 Funcia Eof returneaz ca rezultat False pn cnd se atinge sfritul fiierului. n cazul fiierelor deschise n mod Random sau Binary , funcia Eof returneaz ca rezultat False pn cnd ultima comand Get executat nu mai poate citi nici o nregistrare ntreag. Visual Basic genereaz o eroare de rulare atunci cnd se ncearc citirea/scrierea dincolo de sfritul unui fiier. Tot o eroare de rulare va fi generat i in cazul n care se ncearc citirea dintr-un fiier deschis n mod Binary folosind instruciunea Input mpreun cu funcia Eof. Pentru citirea fiierelor binare cu instruciunea Input trebuie folosite funciile Lof si Loc, sau se poate folosii Get cu funcia Eof.
4.8.4.3.7. Funciile LOF i LOC
Aceste funcii trebuie utilizate mpreun la citirea/scrierea n fiierele deschise n mod Binary, pentru determinarea sfritului de fiier. Formatul general:
LOF (numr_fiier) LOC (numr_fiier)
Funcia Lof returneaz lungimea fiierului deschis (un numr de tip Long). Funcia Loc returneaz poziia curent a cursorului fiierului n interiorul acestuia. Atunci cnd funciile se utilizeaz mpreun, ciclul trebuie s se termine cnd Lof=Loc.
4.8.4.3.8. Instruciunea PRINT#
Instruciunea Print# permite transferul de date ntre memoria intern alocat programului i un suport orientat pe articol (fiier sau periferic). Deci, se folosete pentru scrierea datelor ntr-un fiier secvenial. Formatul general:
PRINT# numr_fiier , [list_de_expresii][;] Limbajul de programare 197
numr_fiier: este numrul fiierului deschis fie n mod Append, fie n mod Output; list_de_expresii : este o expresie sau o list de expresii ce trebuie scrise pe linia respectiv al crei format este identic cu cel prezentat la instruciunea Print (argumentele opionale SPC(n) si TAB(n)). Expresiile din list_de_expresii pot fi separate ntre ele fie printr-un spaiu, fie printr-un punct i virgul (;) ambele caractere avnd acelai efect. Dac list_de_expresii lipsete i se pune virgul dup numr_fiier programul va introduce n fiier o linie vid. Instruciunea Print# scrie ntr-un fiier datele n formatul de pe ecran. Deoarece Print# scrie n fiier o copie a datelor, acestea trebuie bine delimitate pentru a putea fi scrise corect. Dac se dorete citirea datelor dintr-un fiier cu ajutorul instruciunii Input# (nu cu Input sau LineInput#), se recomand scrierea n fiier cu ajutorul instruciunii Write# n locul instruciunii Print#. Utilizarea instruciunii Write# asigur integritatea fiecrui cmp de date separat, prin delimitarea corect a acestuia, astfel nct programul s poat citi datele cu instruciunea Input#.
4.8.4.3.9. Instruciunea WRITE#
Instruciunea Write# este utilizat pentru scrierea datelor delimitate ntr-un fiier text. Formatul general:
WRITE# numr_fiier,[list_expresii][,][;]
numr_fiier: numrul fiierului deschis n mod Output; list_expresii: conine una sau mai multe expresii numerice sau de tip ir ce vor fi scrise intr-un fiier. Expresiile din list pot fi separate ntre ele printr-un spaiu, punct (.), sau printr-un punct i virgula (;).
Visual Basic 198 Spre deosebire de instruciunea Print#, instruciunea Write# insereaz n mod automat virgule ntre elementele listei de expresii i ncadreaz irurile ntre ghilimele ( ) pe msur ce acestea sunt scrise in fiier. Programatorul nu trebuie s introduc n list delimitatori explicii. Write# introduce dup ultimul caracter din lista de variabile un marcator de sfrit de linie i un marcator de salt la o linie nou. Datele numerice sunt scrise ntotdeauna folosind ca separator punctul (.) fr a fi precedate de spaiu. n cazul datelor de tip Boolean programul va scrie #TRUE# sau #FALSE#. Dac data referit de o variabil din list_expresii este Empty, instruciunea Write# nu scrie nimic n fiier; iar dac este de tip Null, Write# va scrie #NULL#.
4.8.4.3.10. Instruciunea PUT
Instruciunea Put este utilizat pentru a scrie date ntr-un fiier accesat n mod aleator. Formatul general:
PUT [ # ] numr_fiier, [ numr_nregistrare ], nume_variabil
unde:
numr_fisier: orice numr valid de fiier deschis n mod Binary sau Random; numr_nregistrare: este un parametru opional de tip Variant sau Long care corespunde numrului nregistrrii (n modul Random), sau numrului octetului (n modul Binary) de la care ncepe scrierea. Prima nregistrare sau primul octet din fiier se afl pe poziia 1, a doua nregistrare sau al doilea octet se afl n poziia 2 etc. , ceea ce nseamn c numr_nregistrare are valoarea iniial 1. Dac acest parametru lipsete, programul va scrie urmtoarea nregistrare sau urmtorul octet dup ultima instruciune Get sau Put, sau din poziia indicat de ultima funcie Seek. n acest caz, n instruciunea Put trebuie incluse virgule de separare; Limbajul de programare 199 nume-variabil: numele variabilei care conine datele ce trebuie scrise.
Lungimea datelor ce trebuie scrise trebuie s corespund cu lungimea specificat n clauza Len din instruciunea Open. Dac lungimea datelor ce trebuie scrise este mai mare dect lungimea specificat n clauza Len, programul va genera o eroare. Dac lungimea datelor ce trebuie scrise este mai mic dect lungimea specificat n clauza Len, programul va umple spaiul diferen dintre lungimea nregistrrii i lungimea structurii cu informaii existente n memoria tampon a fiierului. Dac variabila care se scrie este un ir de lungime variabil, lungimea nregistrrii specificat de clauza Len trebuie s fie cu cel puin 2 octei mai mare dect lungimea irului, deoarece instruciunea Put introduce mai nti 2 octei pentru descrierea lungimii irului i apoi variabila. Lungimea nregistrrii specificat de clauza Len din instruciunea Open trebuie s fie cu cel puin 2 octei mai mare dect numrul de octei necesari pentru stocarea variabilei i n cazul n care aceast variabil este un Variant de tip Numeric. Dac variabila este un Variant de tip String, lungimea nregistrrii specificat de clauza Len trebuie s fie cu cel puin 4 octei mai mare dect lungimea irului, deoarece instruciunea Put introduce nti 2 octei pentru identificarea tipului de Variant, 2 octei care indic lungimea irului i apoi scrie irul. Dac variabila ce trebuie scris este un vector de lungime fix, instruciunea scrie doar vectorul fr nici un identificator. Dac variabila care trebuie scris este un vector dinamic, instruciunea Put scrie nti descrierea pe o lungime de 2 octei + 8 * numrul de dimensiuni, iar lungimea nregistrrii specificat de clauza Len trebuie s fie mai mare sau cel puin egal cu suma tuturor octeilor pentru scrierea vectorului i a identificatorului acestuia. Pentru tipurile definite de utilizator, instruciunea Put scrie elementele individual, fr a introduce ns elemente de completare ntre ele.
4.8.4.3.11. Instruciunea GET
Instruciunea Get se utilizeaz pentru citirea nregistrrilor dintr-un fiier accesat n mod aleator. Formatul general: Visual Basic 200
GET [ # ] numr_fiier, [ numr_nregistrare ], nume_variabil
unde:
numr_fiier: numrul fiierului deschis de program n modul Random sau Binary; numr_nregistrare: parametru opional care reflect numrul nregistrrii (modul Random) sau numrul octetului (modul Binary) de la care ncepe citirea; nume_variabil: numele variabilei n care programul va plasa datele citite din fiier.
Observaie: Toate regulile care se aplic instruciunii Put sunt valabile i pentru instruciunea Get.
4.8.4.3.12. Instruciunea SEEK
Instruciunea Seek seteaz pointer-ul de fiier care indic unde trebuie s se produc urmtoarea operaie de citire/scriere. Formatul general:
SEEK [ # ] numr_fiier, poziie
unde: numr_fiier: numrul fiierului deschis n mod Random sau Binary; poziie: un numr cuprins ntre 1 i 2.147.483.647, care specific numrul nregistrrii (modul Random) sau un numr de octet (modul Binary) i indic unde va avea loc urmtoarea operaiune de citire/scriere.
Limbajul de programare 201
Visual Basic 202
Gestionarea bazelor de date 203
5.1. Gestionarea bazelor de date n Visual Basic
Mediul de dezvoltare Visual Basic dispune (ncepnd cu versiunea 3.0) de un sistem foarte puternic de gestiune a bazelor de date. Acest sistem poart denumirea de Microsoft JET Database Engine (motorul bazelor de date) i reprezint o colecie de obiecte prin intermediul crora se gestioneaz bazele de date. Aceast colecie de obiecte este cunoscut sub denumirea de Data Access Objects (DAO). Obiectul de baz i de la care deriv celelalte obiecte, este DBEngine. Tipul standard de baze de date ce pot fi gestionate cu ajutorul acestui sistem sunt bazele de date ale sistemului de gestiune a bazelor de date Access (.MDB). Pe lng standardul DAO exist i standardul ODBC (Open DataBase Connectivity) ce permite, prin intermediul coleciei sale de obiecte, gestionarea bazelor de date sub orice platform de operare. Standardul ODBC este un standard general care permite gestionarea oricrui tip de baz de date (Access, dBase, FoxPro, Paradox, Oracle etc.). Ansamblul de instruciuni, care permite gestiunea bazelor de date din ambele standarde, este format pe baza limbajul de gestiune a bazelor de date SQL (Structured Query Language). n cadrul mediului de dezvoltare Visual Basic bazele de date pot fi create i gestionate cu ajutorul aplicaiei Visual Data Manager. n cadrul limbajului de programare Visual Basic, gestionarea bazelor de date n aplicaii poate fi realizat utiliznd obiectele DBEngine, Database, Recordset i controalele Data, DBCombo, DBList i DBGrid.
Visual Basic 204
5.2. Aplicaia Visual Data Manager
Visual Data Manager reprezint o aplicaie din cadrul mediului de dezvoltare Visual Basic, prin intermediul creia se pot construii i gestiona rapid bazele de date. Formatul de baze de date recunoscut de Visual Data Manager i operaiile care pot fi efectuate cu acestea sunt prezentate n tabelul de mai jos:
FORMAT BAZA DE DATE ACIUNE Microsoft Access Paradox 3.X i 4.X dBASE III i IV FoxPro 2.0 i 2.5 Btrieve ODBC Creare, Adugare, Vizualizare Adugare, Vizualizare Adugare, Vizualizare Adugare, Vizualizare Adugare, Vizualizare Adugare, Vizualizare
Aplicaia Visual Data Manager, poate fi lansat in execuie selectnd opiunea cu acelai nume din cadrul meniului Add-Ins. Fereastra aplicaiei este prezentat n figura 5.1.
Fig. 5.1. Fereastra Visual Data Manager.
Gestionarea bazelor de date 205 Operaiile care pot fi realizate asupra unei baze de date cu ajutorul acestei aplicaii, pot fi urmtoarele :
Crearea unei noi baze de date
Pentru crearea unei baze de date noi, din meniul File se selecteaz opiunea New,iar din submeniul afiat se selecteaz tipul bazei de date. Alegerea opiunii Microsoft Access, subopiunea Version 7.0 MDB, duce la apariia pe ecran a unei ferestre de dialog n cadrul crei se va introduce numele fiierului baz de date Access (.MDB) ce va putea fi folosit de ctre Access si Visual Basic. Dup denumirea bazei de date i validarea ei prin acionarea butonului Save, va apare fereastra DataBase Window (figura 5.2).
Fig. 5.2. Fereastra DataBase Window.
Aceast fereastr conine i gestioneaz toate tabelele de cmpuri ce compun baza de date. Pe lng tabelele de cmpuri fereastra mai conine i proprietile aferente bazei de date, proprieti recunoscute n momentul n care baza de date este folosit n aplicaie mpreun cu controlul Data. Visual Basic 206 Pentru crearea unei tabele de cmpuri se poziioneaz cursorul mouse-ului n interiorul ferestrei DataBase Window, se execut un click buton dreapta mouse, iar din meniul contextual afiat se selecteaz opiunea New Table. Rezultatul este apariia pe ecran a ferestrei Table Structure (figura 5.3).
Fig. 5.3. Fereastra Table Structure.
Numele tabelei de cmpuri se definete n cadrul casetei de editare Table Name. Pentru crearea i adugarea unui cmp nou se acioneaz butonul Add Field. Rezultatul este apariia ferestrei Add Field (figura 5.4).
Gestionarea bazelor de date 207
Fig. 5.4. Fereastra Add Field.
Fereastra Add Field conine urmtoarele elemente importante: Caseta de editare Name: permite introducerea numelui cmpului; Caseta combo Type: permite selectarea tipului de dat pentru cmpul introdus n caseta Name; Caseta de editare Size: permite introducerea mrimii cmpului definit. Dup ce se introduc valorile corespunztoare n elementele ferestrei Add Table, pentru validare se acioneaz butonul Ok din fereastr. Pentru definirea cheilor de indexare se acioneaz butonul Add Index. Rezultatul este afiarea ferestrei Add Index to (figura 5.5), care conine urmtoarele elemente:
Visual Basic 208
Fig. 5.5. Fereastra de definire a cheilor de indexare.
Caseta Name: permite introducerea identificatorului cheii de indexare (denumirea cheii); Caseta Indexed Fields: permite introducerea cmpului sau a cmpurilor dup care se va face indexarea; Caseta Available Fields: conine lista cmpurilor tabelei, care pot fi incluse n definirea cheii de indexare; Caseta de opiune Primary: activarea acesteia face ca cheia de indexare definit s fie o cheie primar n relaiile cu alte tabele; Caseta de opiune Unique: activarea acesteia face ca cheia de indexare s reprezinte n mod unic nregistrrile din tabel. Dac de exemplu, ntr-o tabel, exist dou nregistrri care au date identice n acelai cmp (cod_produs=1000), n urma indexrii cu condiia Unique activ, va fi afiat doar una din acele nregistrri; Caseta IgnoreNulls: dac este activat permite afiarea cmpurilor vide din cadrul cheii de indexare. Dup completarea acestor casete se valideaz cheia de indexare definit, prin acionarea butonului Ok din fereastr.
Problem: Gestionarea bazelor de date 209 S se creeze baza de date prestserv.mdb, necesar calculului i stocrii informaiilor privind prestatorii de servicii, parcurgnd etapele prezentate anterior, care s aib ca i component tabela de cmpuri cu urmtoarea structur:
Pserv tabela de calcul a salariilor la prestatorii de servicii.
SIMBOL CMP DENUMIRE CMP TIP LUNGIME Index Index salariat INTEGER 2 Nume_A Nume (i prenume) angajat TEXT 100 Salar_O Salar orar SINGLE 4 Ore_L Ore lucrate SINGLE 4 Salar_B Salar brut DOUBLE 8
S se indexe aceast tabel dup cmpurile Index, Nume_A. Cheile de indexare s aib numele cmpurilor pe care le reprezint.
Deschiderea unei baze de date existente pe disc
Din meniul File al aplicaiei se selecteaz opiunea Open Database, iar din cadrul ferestrei de dialog ce apare pe monitor se selecteaz baza de date (.MDB) ce se dorete a fi deschis.
Compactarea (compresarea) unei baze de date
Din meniul File se selecteaz opiunea Compact MDB , operaiune ce duce la afiarea unei ferestre de dialog in cadrul creia se va alege baza de date ce se dorete a fi compactat, iar apoi se va tasta numele bazei de date compactate n caseta File Name.
Visual Basic 210 5.3. Obiectul DBEngine
Acest obiect (DAO) este foarte important n lucrul cu bazele de date. Din el deriv toate celelalte obiecte. El permite crearea i gestionarea, prin intermediul celorlalte obiecte, a bazelor de date.
Observaie: Pentru a putea utiliza obiectele DBEngine i DataBase, trebuie inclus n proiect o referin spre Microsoft DAO 3.x Object Library astfel: din meniul Project, se selecteaz opiunea References; din fereastra afiat se marcheaz, n cadrul listei Available References, caseta corespunztoare elementului Microsoft DAO 3.x Object Library unde 3.x poate fi 3.5, 3.52, 3.6, etc (figura 5.6).
Fig. 5.6. Fereastra de ncrcare a referinei necesare utilizrii obiectului DataBase.
Gestionarea bazelor de date 211 Cele mai importante proprieti ale obiectului DBEngine sunt urmtoarele:
DefaultType: returneaz sau seteaz tipul de baz de date ce va fi prelucrat (Microsoft JET sau ODBC). Este o constant care poate lua dou valori, astfel: dbUseJet: legtura i prelucrarea se va face la o baz de date de tip Microsoft JET; dbUseODBC: legtura i prelucrarea se va face la o baz de date de tip ODBC;
Exemplu: DBEngine.DefaultType=dbUseODBC
DefaultUser, DefaultPassword: seteaz numele utilizatorului care are dreptul de utilizare a bazei de date curente (DefaultUser), respectiv parola de acces a utilizatorului la baza de date (DefaultPassword). DefaultUser este de tip String i poate avea lungimea de maxim 20 de caractere, cnd se utilizeaz baze de date de tip Microsoft JET, sau poate avea orice lungime dac se utilizeaz baze de date de tip ODBC;
Exemplu: Dac se dorete accesarea unei baze de date ca utilizator Guest, cu parola guest, se va utiliza urmtorul program:
Workspaces: returneaz sau seteaz zona de lucru pentru sesiunea curent a bazei de date. naintea utilizrii oricrui tip de baz de date, acesteia i trebuie creat n prealabil o zon de lucru;
Exemplu: Visual Basic 212 Pentru a face zona de lucru curent, disponibil pentru o baz de date ce va fi creat sau deschis, se va utiliza urmtoarele linii program: Dim sesiune As Workspace Set sesiune=DBEngine.Workspaces(0)
Cele mai importante metode ale obiectului DBEngine sunt urmtoarele:
CreateDatabase: permite crearea unei noi baze de date. Are urmtorul format general:
Set baz_de_date = sesiune.CreateDatabase (nume, regiune, opiuni)
unde: baz_de_date: reprezint numele variabilei obiect (declarat n prealabil cu ajutorul instruciunii Dim) de tip Database, care va reprezenta baza de date n cadrul aplicaiei; sesiune: reprezint sesiunea de lucru reprezentat de obiectul WorkSpace; nume: reprezint numele sau calea spre fiierul baz de date. Acest parametru este de tip String i poate avea lungimea de maxim 255 de caractere; regiune: reprezint o constant care determin limbajul unei ri n care sa fcut, sau se va face gestiunea bazei de date. Acest parametru poate fi utilizat i pentru stabilirea unei parole de acces la baza de date, cu ajutorul expresiei ;pwd=parola; opiuni: reprezint o constant sau o combinaie de constante care permit determinarea versiunii bazei de date (dbVersion10, dbVersion11, dbVersion20, dbVersion30), sau criptarea bazei de date (dbEncrypt). Acest parametru este opional;
Exemplu: Gestionarea bazelor de date 213 Pentru a crea n cadrul directorului My Documents din discul rdcin fiierul baz de date bd2.mdb, se va utiliza urmtorul program asociat procedurii Click() ce aparine butonului de comand Command1(), astfel:
Private Sub Command1_Click() Dim baza_de_date As Database Dim sesiune As Workspace Set sesiune=DBEngine.Workspaces(0) Set baza_de_date=sesiune.CreateDatabase("c:\My Documents\bd2.mdb", _ dbLangGeneral) End Sub
CreateWorkspace: permite crearea unui nou spaiu de lucru (obiect Workspace). Aceast metod are urmtorul format general:
Set spaiu = CreateWorkspace(nume, utilizator, parol, tip)
unde: spaiu: reprezint variabila de tip obiect, care va fi instana la obiectul de tip Workspace creat. Ea va reprezenta spaiul de lucru nou creat n cadrul aplicaiei; nume: reprezint numele spaiului de lucru. Poate avea maxim 255 de caractere; utilizator: permite definirea unui nume de utilizator al spaiului de lucru creat; parola: permite definirea unei parole de acces a utilizatorului la spaiul de lucru nou creat; tip: permite definirea tipului spaiului de lucru nou creat. Acest parametru este o constant care poate lua valorile dbUseJet, sau dbUseODBC;
Exemplu: Visual Basic 214 Pentru a crea un nou spaiu de lucru cu denumirea SP1, utilizator Guest, parola guest i tipul ODBC, se va utiliza urmtorul program:
Private Sub Command2_Click() Dim sesiune As Workspace Set sesiune = CreateWorkspace("SP1", _ "Guest", "guest", dbUseODBC) End Sub
OpenDatabase: permite deschiderea unui fiier baz de date n spaiul de lucru curent. Aceast funcie returneaz un obiect de tip Database ntr-o variabil de acest tip care va putea fi utilizat pe parcursul execuiei programului. Formatul general al acestei metode este urmtorul:
Set baz_de_date = spaiu.OpenDatabase (nume, opiuni, read-only, conexiune)
unde: baz_de_date: reprezint variabila obiect de tip Database, care va conine baza de date deschis; spaiu: reprezint spaiul de lucru; nume: este un ir de caractere ce reprezint numele sau calea fiierului baz de date care va fi deschis; opiuni: reprezint un parametru care determin tipul de acces la baza de date. Poate avea valoarea True, caz n care accesul va fi exclusive (exclusiv), sau valoarea False, caz n care accesul va fi shared (partajat); read-only: poate avea valoarea True caz n care baza de date este deschis doar pentru citire fr a putea fi stocate informaii, sau valoarea False, caz n care este permis att citirea ct i scrierea n baza de date; conexiune: permite introducerea diferitelor informaii despre conexiune, inclusiv parola de acces sub forma expresiei ;pwd=parola. Partea cu diferitele informaii despre tipul bazei de date este delimitat de partea cu Gestionarea bazelor de date 215 parol prin punct i virgula. De exemplu: "FoxPro 2.6; pwd=parola";
Exemplu: Pentru a deschide baza de date bd2.mdb creat anterior, se va utiliza urmtoarea secven de program:
Private Sub Command3_Click() Dim baza_de_date As Database Dim sesiune As Workspace Set sesiune = DBEngine.Workspaces(0) Set baza_de_date = sesiune.OpenDatabase("c:\My Documents\bd2.mdb", _ False) End Sub
5.4. Obiectul Database
Acest obiect descinde din colecia de obiecte Databases integrate n cadrul tehnologiei DAO. Poate fi utilizat pentru deschiderea unei baze de date i gestionarea acesteia. Principalele proprieti ale obiectului Database sunt urmtoarele:
Connect: seteaz sau returneaz, sub forma unui ir de caractere, informaii despre baza de date (surs) deschis. Format general:
Connect = [tip_baz_date][;parametri;]
Unde: tip_baz_date: reprezint tipul bazei de date. Acest parametru poate fi ODBC, dBASE IV, FoxPro 2.6 etc.; parametri: reprezint un set de parametrii, desprii prin punct i virgul, referitori la caracteristicile fiecrui tip de baz de date definit prin tip_baz_date; Visual Basic 216
Exemplu: Pentru a obine informaii, sub forma unei ferestre pentru mesaje, despre tipul unei baze de date deschise (n acest caz bd1.mdb) se va introduce urmtorul program n cadrul procedurii eveniment Click() asociat unui buton de comand, astfel:
Private Sub Command1_Click() Dim bd As Database Set bd = OpenDatabase("c:\my documents\bd1.mdb") msg = MsgBox(bd.Connect, vbOKOnly, Utilizare Connect) End Sub
La acionarea butonului rezultatul execuiei este prezentat n figura 5.7.
Fig. 5.7. Rezultatul proprietii Connect.
Transactions: aceast proprietate returneaz sub form boolean posibilitatea unui obiect DAO de a realiza tranzacii cu alte obiecte.
Exemplu: Pentru a observa dac tabela de cmpuri tab1 din cadrul fiierului baz de date bd1.mdb, suport tranzacii de date, n cadrul evenimentului Click() asociat unui buton de comand, se va scrie urmtorul program:
Dim bd As Database Dim t1 As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Gestionarea bazelor de date 217 Set t1 = bd.OpenRecordset("tab1") msg = MsgBox(t1.Transactions, vbOKOnly, "Utilizare Transactions")
Rezultatul execuiei este prezentat n figura 5.8.
Fig. 5.8. Rezultatul proprietii Transactions.
Dintre metodele obiectului Database, cele mai importante sunt urmtoarele:
Close: permite dezactivarea i nchiderea unui obiect DAO; Execute: permite executarea unei comenzi SQL n legtur cu baza de date deschis. Formatul general este urmtorul:
Execute surs[, opiune]
Unde: Surs: reprezint un ir de caractere ce va conine o comand SQL; Opiune: reprezint una sau mai multe constante care determin efectul executrii comenzii SQL. Constantele care pot fi utilizate n cadrul acestui parametru sunt: DbDenyWrite, dbInconsistent, dbConsistent, dbSQLPassThrough, dbFailOnError Rolls, dbSeeChanges dbRunAsync, dbExecDirect;
Visual Basic 218 NewPassword: permite definirea sau modificarea parolei de acces a utilizatorului curent la baza de date deschis. Format general:
NewPassword parola_veche, parola_nou
Unde: Parola_veche: reprezint un ir de caractere care conine parola veche; Parola_nou: reprezint un ir de caractere care conine parola nou;
OpenRecordset: permite crearea unui obiect de tip Recordset ce va conine o tabel de cmpuri din baza de date deschis sau o comand SQL. Format general:
Set recordset = obiect.OpenRecordset (surs, tiptb, opiuni, blocaj)
Unde: surs: reprezint numele tabelei de cmpuri din baza de date ce va fi deschis; tiptb: returneaz sau seteaz tipul tabelei de cmpuri. Poate lua urmtoarele valori: dbOpenTable, dbOpenDynamic, dbOpenDynaset, dbOpenSnapshot, dbOpenForwardOnly; opiuni: reprezint o constant sau un set de constante care determin caracteristicile obiectului recordset nou creat. Constantele ce pot fi utilizate la acest parametru sunt urmtoarele: dbAppendOnly, dbSQLPassThrough, dbSeeChanges, dbDenyWrite, dbDenyRead, dbForwardOnly, dbReadOnly, dbRunAsync, dbExecDirect, dbInconsistent, dbConsistent; blocaj: permite specificarea modului de blocaj a operaiilor cu baza de date.
Gestionarea bazelor de date 219
5.5. Utilizarea comenzilor SQL n Visual Basic
Limbajul de interogare i gestiune a bazelor de date SQL (Structured Query Language) a fost realizat pentru prima dat de firma IBM (International Bussines Machine) n anul 1970. Acest limbaj a fost proiectat iniial pentru asigurarea suportului de gestiune i asisten a sistemului de baze de date relaionale (RDBMS Relationals DataBase Management System) deinut de companie. n prezent exist dou standarde SQL utilizate pe plan mondial i anume: standardul ANSI (American National Standards Institute), respectiv standardul ISO (International Standrds Organization). Aceste standarde impun utilizarea SQL n cadrul oricrui sistem de baze de date relaionale (RDBMS). Limbajul SQL conine un a ansamblu de instruciuni prin intermediul crora sunt create bazele de date, sunt stabilite relaii ntre acestea, sunt filtrate, pot fi sortate etc.
Instruciunile SQL au urmtorul format:
[Declaraii de parametri] Instruciuni [Opiuni]
Declaraii de parametri: permit introducerea unor parametri n care vor fi ncrcate anumite valori, ce vor putea fi utilizai n program; Instruciuni: cuvinte cheie SQL care determin anumite aciuni asupra bazei de date. De exemplu: SELECT, DELETE etc.; Opiuni: reprezint anumite cuvinte (clauze) SQL de filtrare sau de condiionare a nregistrrilor. De exemplu ca opiuni pot fi amintite urmtoarele cuvinte: WHERE, GROUP BY, ORDER BY etc.
Execuia n Visual Basic a liniilor program SQL se realizeaz cu ajutorul metodei Execute, care aparine obiectului DataBase, sau cu ajutorul proprietii RecordSource, care aparine obiectului Data. Visual Basic 220 Cele mai utilizate instruciuni SQL sunt urmtoarele:
CREATE TABLE
Permite crearea unei tabele noi de date n cadrul unei baze de date deschise. Formatul general:
Unde: nume_tabel: reprezint numele tabelei de cmpuri care va fi creat; cmp1, cmp2: reprezint numele cmpului; tip: reprezint tipul cmpului (Integer, Long, Single, Double, Text, Boolean etc.); mrime: reprezint mrimea cmpului; NOT NULL: specific faptul c nregistrarea din cadrul cmpului la care se refer nu poate fi vid; CONSTRAINT: permite definirea cheilor de indexare simple sau compuse (din mai multe cmpuri); index1, index2: reprezint denumirea cheilor de indexare simple; index_multi_cmp: reprezint denumirea cheii de indexare compus.
Exemplu: Dac exist creat pe disc baza de date (Access) bd1.mdb (n directorul My Documents de pe discul rdcin), pentru crearea unei noi tabele de cmpuri n cadrul acesteia se va utiliza urmtorul program (poate fi asociat procedurii eveniment Click() corespunztoare unui buton de comand):
Gestionarea bazelor de date 221 Private Sub Command1_Click() Dim bd As Database Set bd = OpenDataBase("c:\my documents\bd1.mdb") bd.Execute "CREATE TABLE tab1 (numep Text, datan DateTime, " _ & " CONSTRAINT dtn UNIQUE (datan))" bd.Close End Sub
n urma execuiei acestui program va fi creat tabela tab1 care va conine cmpurile numep de tip Text (ir de caractere) i datan de tip DateTime, precum i cheia de indexare, unic, dtn pe baza cmpului datan.
ALTER TABLE
Aceast instruciune permite modificarea structurii cmpurilor unei tabele existente n cadrul unei baze de date. Aceast modificare presupune fie adugarea unui cmp nou, fie tergerea unuia deja existent. Formatul general:
Unde: nume_tabel: reprezint numele tabelei ce va fi modificat; ADD COLUMN: specific faptul c se va aduga un cmp n structura tabelei; cmp: reprezint numele cmpului ce va fi adugat, respectiv modificat; tip, mrime: reprezint tipul, respectiv mrimea cmpului ce va fi adugat; DROP COLUMN: specific faptul c se va terge cmpul indicat prin cmp, sau cheia de indexare indicat prin index.
Visual Basic 222 Exemplu: Pentru adugarea unui cmp nou (sal_o de tip Single) n cadrul tabelei create n exemplul de la CREATE TABLE, se va utiliza urmtorul program asociat procedurii Click() corespunztoare unui buton de comand:
Private Sub Command2_Click() Dim bd As Database Set bd = OpenDataBase("c:\my documents\bd1.mdb") bd.Execute "ALTER TABLE tab1 ADD COLUMN sal_o Single" bd.Close End Sub
Pentru tergerea cmpului creat n exemplul de mai sus i a cheii de indexare creat la exemplul instruciunii CREATE TABLE, se va utiliza urmtorul program:
Private Sub Command3_Click() Dim bd As Database Set bd = OpenDataBase("c:\my documents\bd1.mdb") bd.Execute "ALTER TABLE tab1 DROP COLUMN sal_o " bd.Execute "ALTER TABLE tab1 DROP CONSTRAINT dtn" bd.Close End Sub
SELECT
Returneaz coninutul bazei de date sub forma unui set de nregistrri, sau returneaz coninutul cmpurilor dintr-o baz de date n cadrul unui obiect Recordset. Formatul general:
Unde: Predicate: pot fi una din urmtoarele comenzi: ALL, DISTINCT, DISTINCTROW, i TOP. Aceste comenzi sunt utilizate sub forma unor condiii de citire a cmpurilor bazei de date; alias: reprezint o denumire ce poate fi asociat cmpului unei tabele, denumire care va reprezenta acel cmp n cadrul altor instruciuni; expresie_tabel: reprezint numele tabelei sau tabelelor de unde vor fi extrase datele reprezentate prin cmp1, cmp2,; baz_de_date_extern: reprezint numele unei baze de date extern din care fac parte tabelele din expresie_tabel. Acest parametru este utilizat doar dac tabelele din expresie_tabel nu sunt din baza de date deschis n momentul utilizrii instruciunii SELECT; WHERE: aceast clauz permite specificarea unui criteriu de citire i afiare a nregistrrilor din cmpurile bazei de date n funcie de o anumit expresie. De exemplu dac se dorete citirea tuturor angajailor care au salariul orar mai mare de 50.000 se va utiliza: WHERE sal_o > 50000; GROUP BY: permite gruparea sub forma unei sigure nregistrri mai multor nregistrri compatibile ca tip (de acelai fel). De exemplu, pentru a grupa toi angajaii cu acelai nume ntr-o list se va utiliza GROUP BY numep; HAVING: permite introducerea unui criteriu de ncrcare a listei pentru clauza GROUP BY. De exemplu pentru ncrcarea n cadrul listei create cu GROUP BY a tuturor salariailor la care numele ncepe cu litera B se va scrie: GROUP BY numep HAVING numep LIKE B*; Visual Basic 224 ORDER BY: permite stabilirea unor criterii de sortare a nregistrrilor citite, n ordine cresctoare sau descresctoare. De exemplu pentru citirea n ordine cresctoare a numelui angajailor se va utiliza: ORDER BY numep ASC; iar pentru citirea n ordine descresctoare: ORDER BY numep DESC.
Exemplu: Pentru a citi din cadrul tabelei tab1, a bazei de date bd1.mdb, toate nregistrrile al crui numep ncepe cu grupul de litere POP se va utiliza urmtorul program:
Private Sub Command4_Click() Data1.RecordSource = "SELECT numep FROM tab1 WHERE numep _ & LIKE 'POP*'" Data1.Refresh End Sub
n acest exemplu s-a utilizat un control de tip DATA i un obiect de tip DBGRID. Tabela nainte de selectarea condiionat este prezentat n figura 5.9, iar dup selectarea cu condiie este prezentat n figura 5.10:
Gestionarea bazelor de date 225
Fig. 5.9. Coninutul tabelei tab1 nainte de selectarea cu condiie
Fig. 5.10. Afiarea nregistrrilor tabelei tab1 dup utilizarea condiiei WHERE din cadrul butonului Command4 (Conditie).
SELECT INTO
Aceast instruciune permite crearea unei noi tabele de cmpuri prin copierea cmpurilor dintr-o tabel deja existent. Formatul general:
Visual Basic 226 SELECT cmp1[,cmp2[, ...]] INTO tabela_nou [IN baz_de_date_extern] FROM tabela_surs
Unde: cmp1, cmp2: cmpurile tabelei tabela_surs care vor fi copiate n tabela_nou; tabela_nou: numele tabelei care va fi creat; baz_de_date_extern: numele sau calea spre o baz de date, alta dect cea deschis, n care se va crea noua tabel; tabela_surs: numele tabelei din care se vor copia cmpurile.
Exemplu: Pentru generarea n cadrul bazei de date bd1.mdb a unei noi tabele tab2 prin copierea structurii tabelei tab2 se utilizeaz urmtorul program:
Private Sub Command5_Click() Dim bd As Database Set bd = OpenDatabase("c:\my documents\bd1.mdb") bd.Execute "SELECT numep, datan INTO tab2 FROM tab1" bd.Close End Sub
INSERT INTO
Permite adugarea unei sau a mai multor nregistrri la o tabel a bazei de date. Formatul general:
n cazul adugrii unei singure nregistrri:
INSERT INTO destinaie [(cmp1[,cmp2 [, ...]])] VALUES (valoare1[, valoare2[, ...]) Gestionarea bazelor de date 227
Unde: destinaie: numele tabelei destinaie; cmp1, cmp2, : numele cmpurilor n care se va face adugarea; VALUES: specific faptul c n cadrul tabelei vor fi ncrcate valorile unor variabile; valoare1, valoare2, : valorile care vor fi ncrcate n baza de date;
n cazul ncrcrii mai multor nregistrri:
INSERT INTO destinaie [IN baz_de_date_extern] [(cmp1[,cmp2[, ...]])] SELECT [surs.] cmp1[,cmp2[, ...] FROM expresie_tabel
Unde: baz_de_date_extern: numele unei baze de date extern, pe disc, n care se va face adugarea; SELECT: permite selectarea unor cmpuri dintr-o tabel surs din care se va face adugarea; FROM: permite specificarea prin parametrul expresie_tabel a tabelei sau tabelelor din care se vor aduga nregistrrile.
DELETE
Aceast instruciune permite tergerea unei tabele sau a nregistrrilor dintr-o tabel de cmpuri.
Formatul general:
Visual Basic 228 DELETE [nume_tabel.*] FROM nume_tabel WHERE criteriu
Unde: nume_tabel: reprezint numele tabelei care va fi tears sau din care vor fi terse unele nregistrri; criteriu: reprezint criteriul dup care se va face tergerea nregistrrilor.
Exemplu: Pentru a terge toate nregistrrile din cadrul tabelei tab1, ale cror cmp numep ncepe cu grupul de litere POP* se va utiliza urmtorul program:
Private Sub Command7_Click() Dim bd As Database Set bd = OpenDatabase("c:\my documents\bd1.mdb") bd.Execute "DELETE * FROM tab1 WHERE numep LIKE 'POP*'" bd.Close End Sub
UPDATE
Aceast instruciune permite actualizarea cu valori a nregistrrilor din cadrul unei tabele de cmpuri a bazei de date.
Formatul general:
UPDATE nume_tabel SET valoare_nou WHERE criteriu;
Exemplu: Gestionarea bazelor de date 229 Pentru majorarea nregistrrilor din cmpul sal_o, din tabela tab1, cu 40% se va utiliza urmtorul program:
Private Sub Command8_Click() Dim bd As Database Set bd = OpenDatabase("c:\my documents\bd1.mdb") bd.Execute "UPDATE tab1 SET sal_o=sal_o*1.4;" bd.Close End Sub
CREATE INDEX
Permite crearea unei chei de indexare la o tabel de cmpuri. Format general:
Unde: UNIQUE: specific faptul c cheia de indexare este unic, adic nu va filtra nregistrrile dublate; cheie_indexare: reprezint numele cheii de indexare; nume_tabel: reprezint numele tabelei de cmpuri care va fi indexat; cmp: reprezint numele cmpurilor tabelei dup care se va face indexarea; ASC|DESC: specific faptul c indexarea va fi fcut n ordine cresctoare (ASC) sau n ordine descresctoare (DESC); PRIMARY: permite crearea unei chei primare de indexare; DISALLOW NULL: respinge nregistrrile vide; IGNORE NULL: ignor nregistrrile vide. Visual Basic 230
Exemplu: Pentru crearea unei chei de indexare cu numele ndtn, dup cmpurile numep i datan, pentru tabela tab1, se va utiliza urmtorul program:
Private Sub Command8_Click() Dim bd As Database Set bd = OpenDatabase("c:\my documents\bd1.mdb") bd.Execute "CREATE INDEX ndtn ON tab1 (numep ASC, " _ & "datan ASC) WITH IGNORE NULL;" bd.Close End Sub
5.6. Obiectul Recordset
Acest obiect conine nregistrrile dintr-o baz de date. Prin intermediul su se pot accesa i modifica nregistrrile din baza de date. Principalele proprieti ale acestui obiect sunt :
BOF, EOF: sunt utilizate la testarea poziiei pointer-ului de fiier (poziia nregistrrii curente) n cadrul unei tabele de cmpuri. Simbolul BOF provine de la Begin Of File (nceput de fiier), iar simbolul EOF provine de le End Of File (sfrit de fiier). Sunt de tip Boolean i returneaz valoarea True dac poziia pointer-ului se gsete naintea primei nregistrri (BOF), respectiv dac este poziionat dup ultima nregistrare (EOF) din baza de date, iar valoarea False arat faptul ca poziia pointer- ului se gsete dup prima nregistrare din tabela (BOF), respectiv naintea ultimei nregistrri (EOF).
Exemplu: Dac se dorete afiarea unui mesaj n momentul n care pointer-ul de fiier a ajuns la nceputul sau la sfritul tabelei de cmpuri (reprezentat Gestionarea bazelor de date 231 prin obiectul Recordset) tab1 din cadrul fiierului baz de date bd1.mdb, se va introduce n cadrul unei proceduri eveniment, sau definit de ctre utilizator, urmtoarele linii program:
Dim bd As Database, rs As Recordset Set bd = OpenDatabase("C:\My Documents\bd1.mdb", False) Set rs = bd.OpenRecordset("tab1") If rs.BOF = True Then msg = MsgBox("Pozitie la inceput de fisier", vbOKOnly, _ "Utilizare BOF") End If If rs.EOF = True Then msg = MsgBox("Pozitie la sfarsit de fisier", vbOKOnly, _ "Utilizare BOF") End If bd.Close
Dac baza de date a fost deschis printr-o alt operaie din cadrul programului de mai sus se vor utiliza doar liniile: If rs.BOF = True Then msg = MsgBox("Pozitie la inceput de fisier", vbOKOnly, _ "Utilizare BOF") End If If rs.EOF = True Then msg = MsgBox("Pozitie la sfarsit de fisier", vbOKOnly, _ "Utilizare BOF") End If
RecordCount: returneaz numrul nregistrrilor dintr-o tabela de cmpuri a unei baze de date i are urmtorul format general :
obiect.RecordCount
unde obiect este o variabil de tip Recordset.
Exemplu : Visual Basic 232 Pentru a ncrca ntr-o variabil de memorie n, de tip numeric Long i afia ntr-o fereastr mesaj numrul nregistrrilor din tabela tab1 a fiierului baz de date bd1.mdb, deja deschise, se va utiliza urmtoarele linii program:
Dim n As Long n = rs.RecordCount msg = MsgBox("Numar nregistrari: " & n, vbOKOnly, _ "Utilizare RecordCount")
Sort: ordoneaz nregistrrile unei baza de date, cresctor sau descresctor (implicit cresctor), dup valorile unui anumit cmp din aceasta. Formatul general este :
obiect.Sort [= criteriu]
unde: obiect: este o variabil de tip Recordset; criteriu: este opional i reprezint un ir de caractere ce poate conine clauza parametrului Order By dint-o instruciune SQL.
Exemplu: Avnd n vedere faptul c tabela de cmpuri tab1, creat ntr-un exemplu din seciunea 5.5 (SQL), conine cmpurile numep, datan, pentru a face ordonarea cresctor i descresctor a nregistrrilor dup cmpul numep se va utiliza urmtoarele linii program:
- ordonare cresctoare
Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenSnapshot) rs.Sort = "numep ASC" bd.Close
- ordonare descrescatoare Gestionarea bazelor de date 233
Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenSnapshot) rs.Sort = "numep DESC" bd.Close
Index: returneaz sau seteaz o cheie de indexare pentru tabela de cmpuri dintr-un obiect Recordset. Format general:
obiect.Index [ = nume_cheie_de_indexare ]
unde: nume_cheie_de_indexare este un parametru opional care reprezint un ir de caractere ce conine numele cheii de indexare dup care este fcut sau se va face indexarea tabelei de cmpuri.
Exemplu: Avnd vedere c la comanda Create Index din paragraful 5.5 a fost creat, pentru tabela tab1, cheia de indexare ndtn, pentru ca aceasta s fie activat se va utiliza urmtorul program:
Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenTable) rs.Index = "ndtn"
NoMatch: returneaz valoarea True dac nregistrarea cutat cu ajutorul metodei Seek a fost gsit, respectiv valoarea False n caz contrar.
Dintre metodele obiectului Recordset cele mai utilizate sunt :
AddNew: adaug o noua nregistrare la sfritul tabelei de cmpuri. Format general : Visual Basic 234
obiect.AddNew
Update - se foloseste impreuna cu metodele AddNew si Edit pentru a salva in baza de date noua inregistrare sau modificarile facute inregistrarii curente. Format general :
obiect.Update
Close: nchide tabela de cmpuri curenta. Format general:
obiect.Update
Exemplu: Pentru adugarea n tabela tab1 a unei noi nregistrri, dup care tabela va fi nchis, se va utiliza urmtoarea procedur eveniment asociat unui buton de comand, astfel: Private Sub Command1_Click() Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenDynaset) rs.AddNew rs.Fields("numep").Value = "Marin Sorin" rs.Fields("datan").Value = "04/02/1980" rs.Update rs.Close End Sub
Delete: permite tergerea nregistrrii curente din cadrul unei tabele deschise. Format general :
obiect.Delete
Edit: permite editarea (modificarea) nregistrrii curente dintr-o tabel de cmpuri deschisa. Format general :
Gestionarea bazelor de date 235 obiect.Edit
FindFirst, FindLast, FindNext, FindPrevious: caut prima, ultima, urmtoarea sau precedenta nregistrare care satisface un anumit criteriu de cutare, fcnd-o nregistrare curenta. Format general :
Exemplu: Pentru localizarea i modificarea datei de natere a nregistrrii cu numele i prenumele Dumbrava Liviu din 18.04.1980 n 20.04.1980, precum i localizarea i tergerea nregistrrii cu numele i prenumele Marin Sorin, se va utiliza urmtoarea procedur eveniment: Private Sub Command1_Click() Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenDynaset) rs.FindFirst "numep='Dumbrava Liviu'" rs.Edit rs!Datan = "20/04/1980" rs.Update rs.FindFirst "numep='Marin Sorin'" rs.Delete rs.Close End Sub
MoveFirst, MoveLast, MoveNext, MovePrevious: mut poziia curent din fiier la prima, ultima, urmtoarea sau precedenta nregistrare din tabel. Format general :
Seek: permite localizarea rapid a unei nregistrri ntr-o tabel de cmpuri prin intermediul cheii de indexare. Aceast metod poate fi utilizat doar la tabelele de cmpuri care au fost indexate Visual Basic 236 dup cmpul n funcie de care se va face localizarea. Format general:
obiect.Seek comparaie, cheie1, cheie2...cheie13
unde: comparaie: reprezint un ir de caractere ce conine unul sau doi operatori de comparaie dintre cheia de indexare i valoarea cutat. Operatorii pot fi <, <=, =, >=, sau >; cheie1, cheie2, , cheie13: reprezint poziia corespunztoare cmpului indexat n care se va scrie valoarea cutat.
Exemplu: Avnd n vedere c tabela tab1 mai are i cheia de indexare numep dup cmpul numep (cu ajutorul comenzii Create Index din SQL), s se localizeze nregistrarea cu valoarea cmpului numep egal cu Nica Maria i s se modifice data naterii din 10.11.1981 n 20.11.1981. Pentru a realiza aceast operaie se va utiliza urmtorul program:
Private Sub Command3_Click() Dim bd As Database, rs As Recordset Set bd = OpenDatabase("c:\my documents\bd1.mdb") Set rs = bd.OpenRecordset("tab1", dbOpenTable) rs.Index = "numep" rs.Seek "<=", "Nica Maria" If rs.NoMatch <> True Then msg = MsgBox("Inregistrare gasita", vbOKOnly, _ "Utilizare Seek") rs.Edit rs("datan") = "20/11/1981" rs.Update Else msg = MsgBox("Inregistrarea nu a fost gasita", vbOKOnly, _ "Utilizare Seek") End If Gestionarea bazelor de date 237 End Sub
6.7. Controlul Data ( )
Acest control poate fi folosit pentru crearea rapid a unei aplicaii de gestionare a bazelor de date. Controlul Data, pentru gestiunea bazei de date, acceseaz obiectele Database i Recordset. ncrcarea acestui control pe fereastra aplicaiei se va face la fel ca i n cazul celorlalte controale din Toolbox. n cadrul unei forme pot fi ncrcate mai multe controale Data, primul avnd numele de Data1, al doilea Data2 etc, fiind afiate ca n figura 5.11.
Fig. 5.11. Controlul Data n cadrul unei ferestre.
Proprietile cele mai importante ale acestui control sunt :
Connect: prin intermediul acestei proprieti se stabilete tipul bazei de date ce va fi folosit. Formatul general este :
obiect.Connect = [TipBazaDate;[Parametrii;]]
unde : TipBazaDate: reprezint tipul bazei de date ce va fi folosit i care poate fi o baza de date in: Access, dBase III, dBase IV, dBase 5.0, Paradox 3.x, Paradox 4.x, Paradox 5.x, FoxPro 2.0, FoxPro 2.5, FoxPro 2.6, Visual Basic 238 FoxPro 3.0, Excel 3.0, Excel 4.0, Excel 5.0, Excel 7.0, Lotus WK1, Lotus WK2, Text. Parametrii: poate fi : DATABASE=calea spre baza de date; UID = utilizator; PWD = parola; DSN = numele sursei bazei de date; LOGINTIMEOUT= secunde " Valoarea acestei proprieti se poate seta fie din cadrul ferestrei de proprieti prin apsarea butonului din cadrul casetei corespunztoare acesteia i alegerea tipului de baza de date dorit, fie in cadrul programului aplicaiei.
Exemplu: Pentru a conecta controlul Data1 la o tabela FoxPro, cu numele bdfox.dbf, se va introduce urmtoarea linie de program:
DatabaseName: are ca valoare calea spre baza de date ce se dorete a fi folosit, avnd urmtorul format general :
obiect.DatabaseName [ = cale ]
unde: cale: reprezint calea spre baza de date care poate fi un fiier cu extensia .MDB (Access), .DBF (FoxPro si dBase), .PDX (Paradox), .XLS (Excel), .WK1, .WK2, .WK3 (Lotus), n funcie de tipul ales ca valoare a proprietii Connect.
Exemplu : Avnd n vedere faptul c baza de date deschis este de tip FoxPro, aceast proprietate va avea urmtoarea valoare:
Data1.DatabaseName=C:\xxx.dbf Gestionarea bazelor de date 239
BOFAction, EOFAction: valorile acestor proprieti reprezint aciunile care au loc atunci cnd apare BOF (Begin Of File) i EOF (End Of File). Astfel : BOFAction poate avea valoarea : 0 - Move First 1 - BOF unde: - Move First: poziioneaz pointer-ul de fiier pe prima nregistrare din cadrul bazei de date; - BOF: poziioneaz pointer-ul de fiier la nceputul acestuia.
EOFAction poate avea valoarea : 0 - Move Last 1 - EOF 2 - Add New unde: - Move Last: poziioneaz pointer-ul de fiier pe ultima nregistrare din cadrul bazei de date; - EOF poziioneaz pointer-ul de fiier la sfritul acestuia; - Add New pregtete baza de date pentru adugarea unei noi nregistrri la sfritul acesteia.
Recordset: returneaz o valoare ce face referire la un obiect Recordset cu ajutorul cruia sunt accesate i prelucrate nregistrrile dintr-o baza de date.
RecordsetType: reprezint caracteristica nregistrrilor din cadrul bazei de date i poate lua una din urmatoarele valori : 0 - Table 1 - Dynaset 2 - SnapShot unde: - Table: este un set de nregistrri ce reprezint o singura baza de date (bdfox.dbf); - Dynaset este un set dinamic de nregistrri ce reprezint o tabel de cmpuri sau o baza de date query formata din cmpurile mai multor tabele; Visual Basic 240 - SnapShot este o copie statica (neactualizabil) a unui set de nregistrri ce poate fi folosit in generarea unor rapoarte.
RecordSource: reprezint o tabel de cmpuri, o baz de date query sau SQL query, stabilit n cadrul proprietii DatabaseName.
Modul de funcionare a controlului Data este ilustrat n cadrul aplicaiei 15
Dezvoltarea aplicaiilor n Visual Basic 241
6.1. Gestionarea unei aplicaii Visual Basic
Proiectul unei aplicaii Visual Basic, sau proiectul unei aplicaii vizuale n general, este alctuit din totalitatea modulelor sau fiierelor care vor interaciona ntre ele n vederea realizrii obiectivelor pentru care a fost realizat aplicaia. Modulele ce pot intra n componena unui proiect pot fi: Ferestre (Forms): sunt reprezentate i stocate n fiiere cu extensia .FRM, sau .FRX; Module de program externe (Modules): sunt fiiere care conin declaraii de variabile, proceduri (subrutine), sau funcii care vor putea fi utilizate de ctre celelalte module ale proiectului. Ele sunt reprezentate prin fiiere cu extensia .BAS; Module de definire a claselor pentru obiecte (Class Modules): sunt fiiere n care se definesc clasele pentru obiectele nou create. Ele conin variabile, proceduri sau funcii ce vor constituii proprietile i metodele viitoarelor obiecte. Acestea sunt reprezentate prin fiiere cu extensia .CLS; Module de definire a unor controale noi (User Controls): sunt fiiere care conin controale definite de ctre utilizator prin folosind tehnologia AciveX. Sunt reprezentate prin fiiere cu extensia .CTL; Module de definire a proprietilor unor obiecte sau controale (Property Pages): sunt fiiere care conin definiiile proprietilor unor obiecte sau controale generate conform tehnologiei ActiveX. Aceste module sunt reprezentate de fiiere cu extensia .PAG; Visual Basic 242 Module de definire a relaiilor dintre un obiect AciveX i o baz de date (Designers); Alte module cum ar fi: fiiere text (.TXT), fiiere resurs (RES), fiiere grafice (.BMP, .ICO, .JPG, .WMF) .a.
Modelul de dezvoltare a aplicaiilor sub forma unor proiecte, are originea n principiile clasice de proiectare a sistemelor informatice. Astfel orice aplicaie informatic trebuie, conform unor standarde internaionale, s aib la baz un proiect elaborat de echipa de analiz i proiectare. Dispunnd de un astfel de element n cadrul unui mediu de programare, este mai uor pentru programatori s implementeze n acel limbaj proiectul care st la baza oricrei aplicaii informatice. Toate modulele componente ale unui proiect n Visual Basic sunt stocate n fereastra Project (figura 2.53). Pentru gestiunea acestor module se utilizeaz meniul Project (figura 2.17). Funciunea opiunilor acestui meniu a fost tratat n cadrul capitolului doi, paragraful 2.3.1.1, Bara de meniu. Modul de execuie a proiectului i componentelor sale poate fi gestionat prin intermediul opiunii Project Properties ... din meniul Project. Selectarea acestei opiuni are ca rezultat afiarea ferestrei Project Properties (figura 6.1).
Fig. 6.1. Fereastra Project Properties Dezvoltarea aplicaiilor n Visual Basic 243 Aceast fereastr conine patru tabele astfel: General: permite setarea unor caracteristici generale legate de proiect. Cele mai importante elemente ale acestei tabele sunt: Project Type: permite selectarea din caseta combo, tipul proiectului, care poate fi Standard EXE, ActiveX EXE, ActiveX DLL, ActiveX Control; Startup Object: permite alegerea din caseta combo a obiectului care se dorete a fi lansat primul n execuie n momentul rulrii proiectului (aplicaiei). De exemplu dac se dorete ca fereastra Form2 s fie afiat prima n momentul execuiei aplicaiei, se va selecta din caseta combo elementul Form2; Project Name: permite definirea (introducerea) unei denumiri pentru proiect respectiv aplicaie; Help File Name: permite introducerea numelui sau calea spre un fiier de asisten (help) care va fi asociat proiectului; Make: permite setarea unor parametri n legtur cu identificarea aplicaei astfel: Version Number: permite definirea unui numr care s reprezinte versiunea aplicaiei care are la baz proiectul; Application: permite atribuirea unei denumiri (Title) i a unui icon (Icon) pentru aplicaie; Version Information: permite determinarea unor caracteristici de identificare a aplicaiei i autorului acesteia prin intermediul celor dou casete: Type pentru tipul informaiei i Value pentru valoarea fiecrui tip de informaie selectat; Compile: permite setarea unor parametri de optimizare la compilare a proiectului referitor la optimizarea codului executabil, optimizare n funcie de procesor etc; Component: permite setarea unor caracteristici atunci cnd se utilizeaz n cadrul proiectului unul sau mai multe obiecte ActiveX.
Visual Basic 244 Compilarea proiectului i transformarea lui n cod executabil direct de sub sistemul de operare se realizeaz selectnd opiune Make Project.exe... din cadrul meniului File.
6.2. Etapele elaborrii unei aplicaii Visual Basic
Realizarea unei aplicaii (proiect) n mediile de programare RAD (Rapid Application Development) n general, respectiv Visual Basic, presupune parcurgerea urmtoarelor etape: Definirea enunului general al aplicaiei (formularea problemei). n aceast etap sunt definite datele de intrare, rezultatele care trebuie s se obin, precum i transformrile i prelucrrile care se aplic asupra datelor de intrare pentru a le transforma n rezultate. Formularea clar, complet i corect a problemei reprezint o cerin important n finalizarea cu rezultate bune a activitii de proiectare i realizare a problemelor. n cazul aplicaiilor de mari dimensiuni, a cror rezolvare se abordeaz de ctre o echip de analiz proiectare, programare, formularea problemei poate fi primit de programator de la analist, sub forma unor specificaii de programare. Elaborarea (proiectarea) algoritmilor. Este o etap complex n care are loc formularea matematic a probleme i i se stabilete ordinea de efectuare a prelucrrilor. Aceast etap se finalizeaz cu reprezentarea algoritmului ntr-o anumit form (schema de sistem, organigrama, schema logic de program, pseudocod etc.) simplificnd foarte mult eforturile depuse n etapele de scriere, testare i definitivare a programelor. Proiectarea interfeei utilizator a aplicaiei. n cadrul acestei etape programatorul concepe i implementeaz n mod vizual i interactiv elementele interfeei dintre aplicaie i utilizatorul acesteia. Elementul care st la baza realizrii interfeei l constituie forma (macheta de lucru sau fereastra aplicaiei) n cadrul creia vor fi implementate toate controalele, bara de meniu, meniurile popup, corespunztoare aplicaiei proiectate. Forma poate fi conceput att ca i fereastr principal a Dezvoltarea aplicaiilor n Visual Basic 245 aplicaiei ct si ca fereastr de dialog afiabil n anumite momente (stabilite de programator) pe parcursul execuiei aplicaiei. La intrarea n mediul de programare Visual Basic este afiat, n mod implicit, o form avnd denumirea de Form1. Pe aceasta vor fi implementate celelalte elemente ale interfeei aplicaiei astfel: controalele din cadrul toolbox-ului (figura 2.30); bara de meniu pentru aplicaie. Poate fi creat prin intermediul ferestrei de proiectare a meniului Menu Editor ce este afiat la apelarea opiunii Menu Editor din cadrul meniului Tools, sau prin apsarea butonului din cadrul toolbar-ului; alte obiecte necesare realizrii i utilizrii aplicaiei dar care nu sunt de natura controalelor (Common, Internet etc).
Setarea proprietilor. innd cont de faptul ca proprietile unui obiect determin comportamentul acestuia n cadrul aplicaiei, aceast etap presupune modificarea valorilor proprietilor obiectelor implementate n cadrul etapei descrise mai sus. Pentru aceasta se parcurg urmtorii pai: se selecteaz cu ajutorul mouse-ului obiectul (forma, control) ale crui proprieti se doresc a fi modificate; n cadrul ferestrei cu proprieti, Properties (figura 2.54) se seteaz valorile proprietilor (nume, aliniere .a) obiectului respectiv. Scrierea (editarea) programului corespunztor aplicaiei. Programul corespunztor aplicaiei reprezint ansamblul de constante, variabile, proceduri (subrutine), funcii i instruciuni definite n vederea prelucrrii datelor aplicaiei. Programul se editeaz n cadrul ferestrei de editare a programului cunoscut sub numele de fereastra Code (figura 3.18). Aceast fereastr este afiat fie prin apelarea opiunii Code (<F7>) din cadrul meniului View, fie printr-un dublu click mouse pe obiectul din cadrul interfeei aplicaiei. Declaraiile de variabile generale se vor introduce n cadrul seciunii (General), iar programul asociat Visual Basic 246 fiecrei proceduri eveniment se va introduce n corpul procedurii. Pe lng procedurile eveniment n cadrul acestei ferestre pot fi editate i proceduri sau funcii definite de ctre utilizator. O parte a programului asociat aplicaiei poate fi scris i n cadrul modulelor program externe (fiiere cu extensia .BAS). Modulele de program externe pot conine doar proceduri sau funcii definite de ctre utilizator. Apelarea procedurilor definite de ctre utilizator se realizeaz fie prin simpla scriere a numelui procedurii i/sau parametrilor acesteia, fie cu ajutorul instruciunii Call, astfel:
Call nume_procedur
Exemplu: s se proiecteze o fereastr care s conin o etichet i un buton de comand (figura 6.2);
Fig. 6.2. Macheta aplicaiei.
se asociaz aplicaiei un modul extern (.BAS) selectnd opiunea Add Module din cadrul meniului Project, iar din fereastra de dialog afiat se selecteaz icon-ul Module; n fereastra de scriere a programului, afiat se vor edita urmtoarele linii program, reprezentnd o declaraie global de variabil (c) i o procedur de calcul a variabilei c pe baza a doi parametri a i b, astfel:
Dezvoltarea aplicaiilor n Visual Basic 247 Public c As Double
Sub calcul(a As Single, b As Single) c = a * b End Sub
Variabila c este declarat global (public) pentru a fi recunoscut n cadrul tuturor modulelor aplicaiei. Se va scrie n cadrul procedurii eveniment Click() asociat butonului de comand Command1 urmtorul program:
Call calcul(100, 5) Label1.Caption = c
Acest program apeleaz procedura utilizator, definit n cadrul modulului extern, ce va calcula variabila c n funcie de cei doi parametri (100 i 5). Rezultatul din variabila c, adic 500, este afiat n cadrul etichetei din fereastr. Execuia aplicaia este prezentat n figura 6.3.
Fig. 6.3. Execuia aplicaiei.
Testarea i definirea programelor. n aceast etap programele sunt testate sintactic (n timpul compilrii), iar n procesul consolidrii (editrii de legturi) se verific modul n care au fost concepute opiunile de intrare / ieire, cum sunt gestiunile de intrare ieire, modul n care au fost apelate, implicit sau explicit, procedurile utilizatorului Visual Basic 248 sau ale sistemului etc.. n aceast faz programul se consider corect dac rezultatele obinute sunt cele scontate n conformitate cu cerinele utilizatorului. Elaborarea documentaiei aplicaiei care trebuie s cuprind descrierea aplicaiei, organigrama, schema logic a programului, programul surs, instruciuni de utilizare i eventual o list a execuiei cu date reale. Exploatarea curent i actualizarea ulterioar a aplicaiei. n timpul exploatrii se pot aduce o serie de mbuntiri pentru creterea performanelor acesteia sau pentru adaptarea programului la eventualele modificri n cerinele utilizatorului.
6.3. Aplicaii Visual Basic
Aplicaia 1
n cadrul acestei aplicaii este ilustrat modul de lucru cu etichete, zone (casete de editare) de editare i butoane de comand. Pentru realizarea aplicaiei trebuie parcuri urmtorii pai: modificarea unor proprieti ale foii de lucru astfel: BorderStyle = 1 - Fixed single Caption = Calcul valoare produs ControlBox = False Height = 4425 Left = 720 MaxButton = False Name = Fereastra1 Scaleheight = 4020 Scalewidth = 8670 Top = 1185 Width = 8790 ncrcarea pe foaia de lucru a controalelor: etichete, butoane de comanda, zone de editare si poziionarea lor ca n figura urmtoare:
Dezvoltarea aplicaiilor n Visual Basic 249
setarea proprietii Caption a etichetelor i butoanelor de comand, astfel: - pentru Label1 Caption = Denumire produs:
Label2 Caption = Cantitate:
Label3 Caption = Pret:
Label4 Caption = Valoare:
Command1 Caption = &Calcul
Command2 Caption = &Iesire
setarea proprietii Autosize a etichetelor de la 1 la 4 cu valoarea True;
setarea proprietii BorderStyle a etichetei 5 (Label5) cu valoarea 1 - Fixed Single; Visual Basic 250
n urma setrii proprietilor obiectelor, fereastra aplicaiei va fi asemntoare celei din figura urmtoare:
editarea programului corespunztor procedurii Command1_Click() i Command2_Click() astfel:
Private Sub Command1_Click () cant = Val(text2.Text) pret = Val(text3.Text) valoare = cant * pret label5.Caption = valoare text1.SetFocus End Sub
Private Sub Command2_Click() End End Sub
n cadrul programului au fost utilizate urmtoarele variabile numerice: cant: reprezint variabila ce conine valoarea introdus de utilizator n cadrul casetei de editare Text2, corespunztor cantitii achiziionat din produs; pret: Execuia aplicaiei se prezint astfel: Dezvoltarea aplicaiilor n Visual Basic 251
Aplicaia 2
n aceast aplicaie se va utiliza o caseta de tip list, n cadrul creia se va introduce numele unei persoane, suma depus de aceasta la o banc, rata dobnzii i se calculeaz i afieaz dobnda. Pentru introducerea n caseta de tip list a unor elemente (item-uri) se va folosi proprietatea AddItem. Interfaa aplicaiei este prezentat n figura urmtoare:
Visual Basic 252
Programul asociat formei aplicaiei (coninut fiier form1.frm) este urmtorul:
VERSION 5.00 Begin VB.Form Form1 Caption = "Calcularea fondului de dobinzi" ClientHeight = 5910 ClientLeft = 1080 ClientTop = 1485 ClientWidth = 7935 BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 238 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H80000008& LinkTopic = "Form1" PaletteMode = 1 'UseZOrder Dezvoltarea aplicaiilor n Visual Basic 253 ScaleHeight = 5910 ScaleWidth = 7935 Begin VB.ListBox List1 Height = 1620 Left = 360 TabIndex = 10 Top = 3000 Width = 7215 End Begin VB.CommandButton Command2 Appearance = 0 'Flat BackColor = &H80000005& Caption = "&Exit" Height = 495 Left = 5280 TabIndex = 9 Top = 5160 Width = 1215 End Begin VB.CommandButton Command1 Appearance = 0 'Flat BackColor = &H80000005& Caption = "&Calcul" Height = 495 Left = 960 TabIndex = 8 Top = 5160 Width = 1215 End Begin VB.TextBox Text3 Alignment = 1 'Right Justify Height = 375 Left = 2040 TabIndex = 7 Top = 1320 Width = 4095 Visual Basic 254 End Begin VB.TextBox Text2 Alignment = 1 'Right Justify Height = 375 Left = 2040 TabIndex = 4 Top = 840 Width = 4095 End Begin VB.TextBox Text1 Alignment = 1 'Right Justify Height = 375 Left = 2040 TabIndex = 3 Top = 360 Width = 4095 End Begin VB.Label Label6 Appearance = 0 'Flat AutoSize = -1 'True Caption = "NUME SUMA DEPUSA RATA DOBINZII DOBINDA" ForeColor = &H00000080& Height = 195 Left = 360 TabIndex = 11 Top = 2640 Width = 7050 End Begin VB.Label Label5 Alignment = 1 'Right Justify BorderStyle = 1 'Fixed Single Height = 375 Left = 2040 TabIndex = 5 Top = 2040 Dezvoltarea aplicaiilor n Visual Basic 255 Width = 4095 End Begin VB.Label Label4 Appearance = 0 'Flat AutoSize = -1 'True Caption = "Dobinda :" ForeColor = &H00FF0000& Height = 195 Left = 600 TabIndex = 6 Top = 2160 Width = 1320 End Begin VB.Label Label3 Appearance = 0 'Flat AutoSize = -1 'True Caption = "Rata dobinzii : " ForeColor = &H00FF0000& Height = 195 Left = 600 TabIndex = 2 Top = 1320 Width = 1365 End Begin VB.Label Label2 Appearance = 0 'Flat AutoSize = -1 'True Caption = "Suma depusa : " ForeColor = &H00FF0000& Height = 195 Left = 600 TabIndex = 1 Top = 840 Width = 1335 End Begin VB.Label Label1 Visual Basic 256 Appearance = 0 'Flat AutoSize = -1 'True Caption = "Nume : " ForeColor = &H00FF0000& Height = 195 Left = 600 TabIndex = 0 Top = 360 Width = 1335 End End Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False
Private Sub Command1_Click() 'Calculul dobinzii prin apasarea butonului Calcul If text1.Text = "" Then GoTo 5 nume = text1.Text sumadepusa = Val(text2.Text) ratadobinzii = (Val(text3.Text)) / 100 dobinda = sumadepusa * ratadobinzii label5.Caption = dobinda List1.AddItem nume + " " + text2.Text + " " + text3.Text + " " + label5.Caption text1.SetFocus 5 End Sub
Private Sub Command2_Click() Inchidere program prin actionarea butonului Exit End End Sub
Dezvoltarea aplicaiilor n Visual Basic 257 n cadrul acestei aplicaii procedura eveniment Command1_Click() aparine butonului de comand Calcul, iar procedura eveniment Command2_Click() aparine butonului Exit.
Execuia aplicaiei este prezentat n figura urmtoare:
Aplicaia 3
S se calculeze i s se afieze maximul, minimul, suma i media unui ir de n elemente care se introduc de la tastatur. Termenii irului vor fi afiai ntr-o list.
Visual Basic 258 Rezolvare:
Cele n elemente care se citesc de la tastatur se vor memora ntr-un ir (variabil de tip tablou). Pentru a putea folosi un ir acesta trebuie mai nainte dimensionat printr-o instruciune Dim a() n seciunea de declaraii generale, ale modulului, (GENERAL). Alocarea numrului curent de elemente se face n procedura eveniment Command1_Click(). Elementele irului vor fi parcurse utiliznd o variabil contor i, iar pentru suma irului se va utiliza variabila suma declarat global pentru c va fi utilizat n dou proceduri eveniment diferite (Command5_Click() i Command6_Click()) . Forma conine ase controale de tip etichet (Label), 2 casete de text (Text Box), o list (Listbox) i ase butoane de comand (Command button). Fereastra machet a aplicaiei este urmtoarea:
Proprietatea Enabled a butoanelor Command2 Command6 este setat False la ncrcarea aplicaiei pentru a nu se utiliza pn cnd se introduce dimensiunea irului.
Programul corespunztor aplicaiei este urmtorul: Dezvoltarea aplicaiilor n Visual Basic 259 n seciunea (GENERAL) se introduc urmtoarele declaraii de variabile:
'Declaratii generale de variabile Public n As Integer Public i As Integer Public suma As Double Dim a()
n cadrul procedurii eveniment Form_Load(), executat la ncrcarea ferestrei aplicaiei pe ecran, se introduce programul corespunztor dezactivrii butoanelor Command2 Command6, astfel:
Visual Basic 260 n cadrul procedurii eveniment Command2_Click() asociat butonului Validare termen se introduce urmtorul program:
'Validare termen sir i = i + 1 a(i) = Val(Text2.Text) List1.AddItem (Text2.Text) Text2.Text = "" If i >= n Then Command2.Enabled = False End If
n cadrul procedurii eveniment Command3_Click() asociat butonului Maxim se introduce urmtorul program:
'Calcul si afisare maxim sir maxim = a(1) For i = 2 To n If a(i) > maxim Then maxim = a(i) Next Label3.Caption = "= " & maxim
n cadrul procedurii eveniment Command4_Click() asociat butonului Minim se introduce urmtorul program:
'Calcul si afisare minim sir minim = a(1) For i = 2 To n If a(i) < minim Then minim = a(i) Next Label4.Caption = "= " & minim
n cadrul procedurii eveniment Command5_Click() asociat butonului Suma se introduce urmtorul program:
'Calcul si afisare suma sir Dezvoltarea aplicaiilor n Visual Basic 261 suma = 0 For i = 1 To n suma = suma + a(i) Next Label5.Caption = "= " & suma
n cadrul procedurii eveniment Command6_Click() asociat butonului Media se introduce urmtorul program:
'Calcul si afisare medie sir If n <> 0 Then media = suma / n End If Label6.Caption = "= " & media Execuia aplicaiei este urmtoarea:
Aplicaia 4
Pentru studenii, dintr-o grup, s se introduc nume i prenume, numr matricol i notele de la trei examene. S se afieze ntr-o list numele i prenumele, numrul matricol, notele i media fiecrui student. Se va calcula i afia general a grupei.
Visual Basic 262 Rezolvare:
Fereastra machet proiectat este urmtoarea:
n cadrul programului se vor utiliza urmtoarele variabile: n: reprezint numrul studenilor din grup; i: reprezint variabila contor cu ajutorul creia se va parcurge coninutul variabilelor de tip tablou (masive); numep$(): reprezint o variabil ir de caractere de tip tablou care va conine numele i prenumele fiecrui student din grup; matric(): reprezint o variabil de tip tablou care va conine numrul matricol al fiecrui student din grup; nota1(), nota2(), nota3(), media(): reprezint variabilele care vor conine notele la cele trei examene i media fiecrui student din grup; s: reprezint variabila ce va conine suma mediilor studenilor din grup fiind utilizat la calculul mediei generale a grupei; Dezvoltarea aplicaiilor n Visual Basic 263 MedieGrupa: reprezint variabila ce va conine media general a grupei.
Programul aferent aplicaiei este urmtorul:
'Declaratii de variabile generale (globale) Dim n As Integer Dim i As Integer Dim numep$(), matric(), nota1() Dim nota2(), nota3(), media()
Private Sub Form_Load() 'Dezactivarea butoanelor Command2 si Command3 'la lansarea in executie a aplicatiei Command1.Enabled = True Command2.Enabled = False Command3.Enabled = False End Sub
Private Sub Command1_Click() 'Validare numar studenti, respectiv, redimensionare 'variabile tablou in functie de n n = Val(Text1.Text) ReDim numep$(n), matric(n), nota1(n) ReDim nota2(n), nota3(n), media(n) Command1.Enabled = False Command2.Enabled = True Command3.Enabled = True End Sub
Private Sub Command2_Click() 'Calcul si afisare medie student i = i + 1 If i <= n Then numep$(i) = (Text2.Text) matric(i) = Val(Text3.Text) Visual Basic 264 nota1(i) = Val(Text4.Text) nota2(i) = Val(Text5.Text) nota3(i) = Val(Text6.Text) media(i) = (nota1(i) + nota2(i) + nota3(i)) / 3 Label8.Caption = media(i) List1.AddItem (numep$(i) + "/" + Str(matric(i)) + "/" + _ Str(nota1(i)) + "/" + Str(nota2(i)) + "/" + Str(nota3(i)) + _ "/" + Str(media(i))) Else Command2.Enabled = False End If End Sub
Private Sub Command3_Click() 'Calcul si afisare medie generala grupa s = 0 If n <> 0 Then For i = 1 To n s = s + media(i) Next MedieGrupa = s / n End If Label10.Caption = MedieGrupa End Sub
n cadrul programului aplicaiei s-a utilizat funcia Str() care transform o variabil numeric n ir de caractere. Aceast funcie are ca argument doar valori numerice. De exemplu Str(100) va returna irul 100.
Execuia aplicaiei este prezentat n figura urmtoare:
Dezvoltarea aplicaiilor n Visual Basic 265
Aplicaia 5
S se calculeze i s se afieze suma tuturor elementelor unei matrici ptratice de dimensiune 5, suma elementelor de pe diagonala principal, respectiv secundar i maximul elementelor de pe fiecare linie.
Rezolvare:
n funcie de cerinele problemei se proiecteaz urmtoarea fereastr machet a aplicaiei:
Visual Basic 266
Pentru etichetele Label1, Label2 i Label3 se seteaz proprietile Backcolor cu valoarea &H00FFFFFF& i Borderstyle cu valoarea 1-Fixed Single, dup care se redimensioneaz ca n figura de mai sus. Variabilele utilizate n program sunt urmtoarele: i, j: reprezint variabilele contor ce parcurg dimensiunile matricei, astfel: i pentru linii i j pentru coloane; a(n,n): reprezint variabila de tip tablou bidimensional care va conine termenii matricei; Max: variabila local utilizat pentru determinarea celui mai mare termen (maximul) de pe fiecare linie; s: variabila local utilizat pentru calculul sumei elementelor matricei. Ea va conine suma termenilor; sprinc: reprezint variabila ce va conine suma termenilor de pe diagonala principal; ssec: reprezint variabila ce va conine suma termenilor de pe diagonala secundar. Pentru dimensiunea matricii se utilizeaz constanta n. Introducerea termenilor n variabila de memorie a(n,n) se realizeaz prin intermediul funciei InputBox. Funcia InputBox permite afiarea unei ferestre de dialog ce conine o caset de editare (TextBox) n cadrul creia utilizatorul poate introduce att valori numerice ct i valori alfanumerice. Pentru validarea valorii introduse se acioneaz butonul Ok din cadrul Dezvoltarea aplicaiilor n Visual Basic 267 ferestrei, iar pentru anularea valorii se acioneaz butonul Cancel. Rezultatul returnat de InputBox este valoarea introdus n caseta de editare. Formatul general al acestei funcii este urmtorul:
Unde: afiaj: reprezint irul de caractere care va fi afiat ca explicaie deasupra casetei de editare din fereastr; titlu: reprezint irul de caractere ce va conine titlul ferestrei; val_implicit: reprezint valoarea ce va fi afiat n caseta de editare, ca valoare implicit la ncrcarea pe ecran a ferestrei; xpos, ypos: reprezint valorile coordonatelor pe orizontal (xpos) i pe vertical (ypos) a colului din stnga sus a ferestrei; helpfile: reprezint un ir de caractere care conine numele fiierului de asisten (help) care poate fi apelat din fereastr; context: reprezint o variabil numeric ce conine referina din fiierul de asisten n funcie de contextul n care acesta este apelat.
Programul aferent aplicaiei este urmtorul:
Dim i, j As Integer Const n = 3 Dim a(n, n) As Integer
Private Sub Form_Load() Command2.Enabled = False Command3.Enabled = False Command4.Enabled = False Command5.Enabled = False End Sub
Private Sub Command1_Click() Visual Basic 268 For i = 1 To n For j = 1 To n a(i, j) = InputBox("a(" + Str(i) + "," + Str(j) + ")", "Introduceti termenii") Print " a(" + Str(i) + "," + Str(j) + ") = "; a(i, j); Next Print Next Command2.Enabled = True Command3.Enabled = True Command4.Enabled = True Command5.Enabled = True End Sub
Private Sub Command2_Click() For i = 1 To n Max = a(i, 1) For j = 1 To n If Max < a(i, j) Then Max = a(i, j) Next j List1.AddItem ("Maximul pe linia " & " " & i & " " & "este: " & " " & Max) Next i End Sub
Private Sub Command3_Click() s = 0 For i = 1 To n For j = 1 To n s = s + a(i, j) Next j Next i Label1.Caption = s End Sub
Private Sub Command4_Click() Dezvoltarea aplicaiilor n Visual Basic 269 sprinc = 0 For i = 1 To n sprinc = sprinc + a(i, i) Next i Label2.Caption = sprinc End Sub
Private Sub Command5_Click() ssec = 0 For i = 1 To n ssec = ssec + a(i, n + 1 - i) Next i Label3.Caption = ssec End Sub
Execuia aplicaiei:
n faza de introducere a elementelor matricei:
n faza de afiare:
Visual Basic 270
Aplicaia 6
S se realizeze un program care s permit introducerea vnzrilor zilnice de produse de la trei magazine i s afieze urmtoarele informaii: totalul i media vnzrilor pe zi la toate magazinele; totalul i media vnzrilor sptmnale la fiecare magazin; totalul vnzrilor sptmnale la toate magazinele; vnzarea maxim i magazinul respectiv ziua n care a avut loc.
Rezolvare:
Interfaa aplicaiei n faza de proiectare este urmtoarea:
Dezvoltarea aplicaiilor n Visual Basic 271
Aceast aplicaie presupune utilizarea unei variabile numerice de tip tablou bidimensional care va conine cantitatea din produsul respectiv vndut ntr-o zi la un magazin. Aceast variabil este vzm(5,3), iar tabloul de date va avea urmtoarea structur:
Pentru parcurgerea tabloului de se vor utiliza urmtoarele variabile contor: i: pentru parcurgerea zilelor (pe coloan); j: pentru parcurgerea magazinelor (pe linie). n program se vor utiliza variabilele zi(i) care va conine numrul fiecrei zile a sptmnii, mvz(i) care va conine media vnzrilor din Visual Basic 272 fiecare zi, mvsm(j) care va conine media vnzrilor sptmnale de la fiecare magazin, total care va conine totalul vnzrilor sptmnale de la toate magazinele i max care va conine vnzarea maxim. Programul aplicaiei este urmtorul:
Option Base 1 Const m = 3 Const n = 5 Dim i, j As Integer Dim vzm(n, m), mvz(n), mvsm(m), zi$(n)
Private Sub Form_Load() i = 1 j = 1 End Sub
Private Sub Command1_Click() If i <= n Then zi(i) = Text1.Text Label1.Caption = "Ziua (" & Val(i) & ") =" Else Command1.Enabled = False End If End Sub
Private Sub Command2_Click() If i <= n Then If j <= m Then vzm(i, j) = Val(Text2.Text) Text2.Text = " " j = j + 1 End If If j > m Then i = i + 1 Text1.Text = " " j = 1 Dezvoltarea aplicaiilor n Visual Basic 273 End If Label2.Caption = "Magazinul (" & Val(i) & "," & Val(j) & ") =" End If If i > n Then Text2.Enabled = False End Sub
Private Sub Command3_Click() Print "ziua" & Space(14) & "mag1" & Space(14) & "mag2" _ & Space(14) & "mag3" For i = 1 To n Print zi(i), For j = 1 To m Print vzm(i, j), Next j Print Next i End Sub
Private Sub Command4_Click() List1.AddItem " " For i = 1 To 5 s1 = 0 For j = 1 To 3 s1 = s1 + vzm(i, j) Next j mvz(i) = s1 / 3 List1.AddItem "Totalul vanzarilor din ziua " + zi(i) + _ " este: " + Str(s1) List1.AddItem "Media vanzarilor din ziua " + zi(i) + _ " este: " + Str(mvz(i)) Next i End Sub
Private Sub Command5_Click() List1.AddItem " " For j = 1 To 3 Visual Basic 274 s2 = 0 For i = 1 To 5 s2 = s2 + vzm(i, j) Next i mvsm(j) = s2 / 5 List1.AddItem "Totalul vanzarilor saptamanale " + "este: " + Str(s2) List1.AddItem "Media vanzarilor saptamanale " + "este: " + Str(mvsm(j)) Next j End Sub
Private Sub Command6_Click() total = 0 For i = 1 To 5 s3 = 0 For j = 1 To 3 s3 = s3 + vzm(i, j) Next j total = total + s3 Next i Label3.Caption = total End Sub
Private Sub Command7_Click() Max = vzm(1, 1) ziua = 1 mag = 1 For i = 1 To 5 For j = 1 To 3 If Max < vzm(i, j) Then Max = vzm(i, j) ziua = i mag = j End If Next j Next i Label4.Caption = Max Dezvoltarea aplicaiilor n Visual Basic 275 Print "Livrarea maxima este: "; Max Print "La magazinul "; mag; " in ziua de "; zi(ziua) End Sub
n cadrul programului linia Option Base 1 are rolul de a stabilii ncrcarea variabilei tablou ncepnd cu indexul 1, adic de la vzm(1,1). Funcia Str() are rolul de transforma n iruri de caractere variabilele numerice care sunt introduse ca argument a acestei funcii. Execuia aplicaiei este urmtoarea:
Aplicaia 7
Visual Basic 276 n cadrul acestei aplicaii este prezentat modul de realizare a meniului de tip bar de meniu i ataarea acestuia unei ferestre. Linia de meniu ce se va ataa ferestrei va conine urmtoarele opiuni i subopiuni:
Introducere date - Nume si prenume Adresa Telefon SEPARATOR Parasire program Vizualizare date
Modificare date - Nume si prenume Adresa Telefon SEPARATOR Stergere date - Nume si prenume Adresa Telefon
Rezolvare:
Pentru realizarea liniei de meniu se procedeaz astfel:
se selecteaz subopiunea Menu Design din cadrul opiunii Tools a liniei de meniu principal, sau se execut un clic mouse pe pictograma situat pe bara de lucru (toolbar). Ambele aciuni au ca efect deschiderea pe ecran a unei ferestre de dialog cu urmtorul coninut:
Dezvoltarea aplicaiilor n Visual Basic 277
se tasteaz numele primei opiuni n interiorul casetei Caption astfel: &Introducere date, (& - are acelai rol ca i n cazul butoanelor de comand), iar n interiorul casetei Name se tasteaz numele de identificare (identificatorul) a opiunii respective n cadrul meniului, aici intr_d, urmat de apsarea tastei <ENTER>; opiunea Introducere date va apare in mod automat n zona de listare situat n partea de jos a ferestrei Menu Design Window i care are rolul de a prezenta ierarhia opiunilor din cadrul meniului; se creeaz submeniul opiunii Introducere date printr-un clic mouse pe sgeata orientat spre dreapta (programatorului) i introducerea n caseta Caption a numelui subopiunii &Nume i prenume, iar n caseta Name se introduce identificatorul n_p urmat de apsarea tastei <Enter>, numele subopiunii aprnd n zona de listare precedat de ---- , ceea ce semnific faptul c ea aparine ierarhic opiunii Introducere date. La fel se va proceda i cu celelalte subopiuni care vor avea urmtorii identificatori: adrs pentru &Adresa Visual Basic 278 tlf pentru &Telefon prs_p pentru &Parasire program SEPARATOR reprezint linia din cadrul unui submeniu care desparte anumite subopiuni sau grup de subopiuni. El poate fi realizat prin introducerea n caseta Caption a semnului - (minus), iar ca identificator in acest exemplu se folosete s1. Numele unui identificator trebuie dat astfel nct el sa fie ct mai sugestiv. pentru realizarea opiunii Vizualizare date se selecteaz printr-un click mouse sgeata orientat spre stnga (dupa terminarea introducerii subopiunilor opiunii Introducere date) avnd ca efect revenirea (ierarhic) la nivelul opiunilor principale din meniu, apoi se tasteaz numele opiunii la &Vizualizare date i identificatorul acesteia viz_d; crearea opiunii &Modificare date (identificator mod_d) i a submeniului aferent acesteia astfel: ----&Nume si prenume ( m_n_p) ----&Adresa (m_adrs) ----&Telefon (m_tlf) ----_ (s2) ----&Stergere date (s_date) --------&Nume si prenume (s_n_p) --------&Adresa (s_adrs) --------&Telefon (s_tlf)
Dup terminarea introducerii tuturor opiunilor i subopiunilor aferente acestora, Menu Design Window trebuie s arate ca n figura urmatoare:
Dezvoltarea aplicaiilor n Visual Basic 279
n cadrul ferestrei de concepere a meniului mai exist urmatoarele opiuni ce reprezint proprietaile opiunilor i subopiunilor din meniu: Index - care se prezint sub forma unei zone de editare ce va fi folosit daca n cadrul submeniului unei optiuni au fost definite suboptiuni care au acelai nume cu al identificatorului. De aceea, n aceasta zona se va introduce un numr corespunzator identificatorului subopiunii, pentru a le diferenia; Shortcut - are ca efect atribuirea unei combinaii de taste subopiunii respective astfel ca apelnd combinaia de taste respectiv suboptiunea sa fie selectata in mod automat. Aceasta combinaie este afiata in partea stnga a submeniului in dreptul suboptiunii careia ia fost atribuit; WindowList - aceast opiune se folosete atunci cnd aplicaia are o fereastra "mama" (MDI form). In acest caz meniul ferestre "fiu" va apare ca meniu al ferestrei "mama". Prin setarea acestei opiuni se specifica faptul c opiunile sau subopiunile respective aparin ferestrei "fiu" pentru care au fost definite; Visual Basic 280 HelpContextId - n cadrul acestei casete se va introduce identificatorul de asisten, n cazul n care aplicaiei i se ataeaz un sistem de asisten (help); Checked - dac este selectat permite afiarea naintea unei subopiuni a meniului vertical semnificnd faptul ca suboptiunea respectiva este activ; Enabled - dac este deselectat permite afiarea unei subopiuni n gri. Acest lucru face ca suboptiunea sa nu poata fi selectata; Visible - dac este deselectat face ca opiunea (subopiunea) respectiv s nu fie afiat n meniu; butonul Next - permite afiarea pe rnd a tuturor proprietilor opiunilor si suboptiunilor meniului spre a putea fi modificate; butonul Insert - permite introducerea unei noi opiuni sau suboptiuni in cadrul meniului. n vederea inserrii unui nou element: - se poziioneaz selectorul din cadrul cutiei de listare pe optiunea sau suboptiunea deasupra careia se doreste introducerea uneia noi si se apasa butonul Insert, aparind o linie goala in care poate fi introdusa noua optiune sau subopiune cu proprietatile aferente acesteia; butonul Delete - permite tergerea unei opiuni sau subopiuni din cadrul meniului prin poziionarea pe aceasta n cadrul listei si apsarea butonului Delete; Cnd toate proprietile opiunilor si subopiunilor meniului au fost introduse, se va apsa butonul OK. Visual Basic-ul va ncarca in mod automat meniul in cadrul foii de lucru curente. Fiecrei opiuni sau suboptiuni a meniului ii corespunde o singur procedur eveniment i anume: Sub nume_i_Click()
End Sub unde nume_i: reprezint numele identificatorului opiunii sau subopiunii respective. Ea poate fi apelat selectnd printr-un clic mouse numele opiunii sau suboptiunii din meniul situat pe foaia de lucru aparind astfel corpul Dezvoltarea aplicaiilor n Visual Basic 281 procedurii in zona de editare a codului program a aplicatiei. In cadrul acesteia pot fi introduse instructiunile ce se doresc a fi executate in momentul apelrii la optiunea sau suboptiunea respectiva. De exemplu, n cadrul procedurii eveniment aferente suboptiunii Parasire program se va tasta instructiunea End astfel: Sub prs_p_Click() End End Sub Proprietatile aferente optiunilor si suboptiunilor meniului aplicatiei pot fi modificate si in cadrul codului program al acestuia la fel ca si proprietatile controalelor.
Execuia aplicaiei este urmtoarea:
Aplicaia 8 Visual Basic 282
Aceast aplicaie ilustreaz modul de creare a meniurilor contextuale de tip popup. Meniurile contextuale sunt acele meniuri care se afieaz la acionarea butonului din dreapta al mouse-ului. De exemplu, se cere s se creeze un meniu contextual de tip popup cu denumirea de Operatii, care s conin urmtoarele opiuni: Intrare mijloc fix; Iesire mijloc fix; Calcul amortizare; Iesire.
Rezolvare:
Meniul se proiecteaz i realizeaz la fel ca n exemplul aplicaiei 7, utiliznd generatorul de meniuri Menu Editor, astfel:
Opiunile Intrare mijloc fix, Iesire mijloc fix, Calcul amortizare i Iesire, se introduc ca subopiuni ale opiunii Operatii. Proprietatea Name a opiunilor din meniu are valoarea prezentat n tabelul de mai jos:
Dezvoltarea aplicaiilor n Visual Basic 283 DENUMIRE OPIUNE VALOAREA PROPRIETII NAME Operatii meniu Intrare mijloc fix intrmf Iesire mijloc fix iesmf Calcul amortizare calcamo Iesire ies
Pentru a fi utilizat ca meniu contextual de tip popup, dup introducerea opiunilor, naintea validrii meniului prin acionarea butonului Ok din fereastr, se selecteaz opiunea Operatii i se deselecteaz printr-un click caseta de opiune corespunztoare proprietii Visible. Opiunea Operatii trebuie s aib proprietatea Visible ncrcat cu valoarea False. Dup validarea meniului se deschide i se ncarc procedura eveniment MouseDown corespunztoare ferestrei, astfel:
Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = 2 Then PopupMenu meniu End If End Sub
n cadrul acestei proceduri parametrul Button returneaz codul butonului de la mouse care a fost acionat. n acest caz button = 2, reprezint testul pentru butonul din dreapta al mouse-ului. Procedura MouseDown este tratat n cadrul seciunii 3.3 din capitolul 3. Pentru afiarea meniului se utilizeaz metoda PopupMenu (tratat n paragraful 3.2 din capitolul 3) avnd ca parametru valoarea proprietii Name a opiunii principale Operatii i anume meniu. ncrcarea procedurilor eveniment ce aparin opiunilor meniului se va face la fel ca n aplicaia 7. Astfel procedura eveniment Click, a opiunii Iesire va fi ncrcat cu instruciunea End permind nchiderea aplicaiei, astfel:
Private Sub ies_Click() Visual Basic 284 End End Sub
n cadrul execuiei aplicaiei la acionarea butonului din dreapta mouse printr-un click atunci cnd cursorul acestuia se gsete pe suprafaa ferestrei, meniul contextual de tip popup va fi afiat conform figurii urmtoare:
Aplicaia 9
S se prelucreze toate comenzile unei firme, pentru toate materialele de pe o comand introducndu-se denumire produs, unitate de msur, cantitate i pre unitar. S se calculeze valoarea brut a fiecrei (pre unitar nmulit cu cantitatea la care se adaug TVA-ul aferent) comenzi i s se extrag TVA-ul aferent valorii brute.
Rezolvare:
Dezvoltarea aplicaiilor n Visual Basic 285 Pentru proiectarea interfeei utilizator a aplicaiei se folosesc 9 etichete (Label), 4 casete de text (TextBox), 2 butoane de opiune (OptionButton), 2 butoane de comand (CommandButton), 1 chenar (Frame), 1 caseta de tip list (ListBox) i linii pentru trasarea tabelului (Line). Interfaa proiectat este urmtoarea:
Proprietile Borserstyle i Backcolor aferente etichetelor Label7 i Label8 sunt setate ca n aplicaia 5. Variabilele utilizate sunt urmtoarele: Valoare: este de tip numeric i va conine valoarea brut a comenzii calculat ca produs ntre pre i cantitate, la valoarea astfel calculat se adaug TVA-ul; TVA: este de tip numeric i va conine coeficientul de TVA (0 sau 19) n funcie de opiunea utilizatorului; ValoareTVA: este de tip numeric i va conine valoarea TVA extras din valoarea brut.
n cadrul programului testarea opiunii utilizatorului pentru TVA se realizeaz cu ajutorul instruciunii If ... End If. Aceast instruciune testeaz valoarea opiunii Value a butoanelor de opiune. Dac utilizatorul execut un click mouse pe unul din butoanele de opiune acestea se activeaz (cercul Visual Basic 286 butonului este plin), proprietatea Value fiind ncrcat cu valoarea True, altfel va avea valoarea False. Programul asociat aplicaiei este urmtorul:
Private Sub Command1_Click() Dim TVA As Single, Valoare As Double Dim ValoareTVA As Single If Option1.Value = True Then TVA = 0 End If If Option2.Value = True Then TVA = 19 End If Valoare = Val(Text3.Text) * Val(Text4.Text) Label7.Caption = Valoare + (Valoare * TVA / 100) ValoareTVA = (Valoare * TVA) / (100 + TVA) Label8.Caption = ValoareTVA List1.AddItem Text1.Text + " / " + Text2.Text + " / " + _ Text3.Text + " / " + Text4.Text + " / " + Label7.Caption + " / " + _ Label8.Caption End Sub
Private Sub Command2_Click() End End Sub
Execuia aplicaiei este prezentat n figura urmtoare:
Dezvoltarea aplicaiilor n Visual Basic 287
Aplicaia 10
S se realizeze un program care s permit introducerea de ctre utilizator a urmtoarelor date: Nume i prenume; Sex; Vrsta; Ocupaia. Programul s ncarce aceste date ntr-o list, dup care s poat face afiarea n ferestre diferite dup sex, vrst i ocupaie.
Rezolvare:
Interfaa aplicaiei este structurat n patru ferestre astfel: Fereastra Form1 este fereastra de baz, cea n care se va face introducerea i validarea datelor. Ea este proiectat ca n figura urmtoare:
Visual Basic 288
Fereastra Form2 este fereastra care va conine situaia persoanelor selectate dup sex. Ea este proiectat astfel:
Fereastra Form3 este fereastra care va conine situaia persoanelor selectate dup vrst. Ea va fi proiectat ca n figura urmtoare: Dezvoltarea aplicaiilor n Visual Basic 289
Fereastra Form4 este fereastra care va conine situaia persoanelor clasificate dup ocupaie. Ea va fi proiectat ca n figura urmtoare:
Pentru a introduce o nou fereastr n proiect se apeleaz opiunea Add form din meniul Project, iar din fereastra afiat se selecteaz icon-ul Form. n cadrul interfeei la toate controalele de tip ComboBox se va seta proprietatea Style cu valoarea 2 Dropdown List. n cadrul programului aplicaiei se vor utiliza urmtoarele variabile: i: reprezint contorul de parcurgere a listei cu persoane introduse; np(n), sex(n), verst(n), ocup(n): reprezint variabilele de tip tablou unidimensional ce vor conine numele i prenumele, sexul, vrsta i ocupaia persoanei. Visual Basic 290 Datorit faptului c aceste variabile vor fi utilizate n mai multe module ale programului (modulele n care sunt definite ferestrele), vor trebuii declarate publice n cadrul unui modul extern (.BAS). Pentru crearea unui modul extern i ataarea lui la proiectul aplicaiei se selecteaz opiunea Add Module din meniul Project, iar din fereastra afiat se selecteaz icon-ul Module. n cazul acestei aplicaii modulul va conine urmtoarele linii program:
Public i As Integer Option Base 0 Public Const n = 100 Public np(n), sex(n), vrst(n), ocup(n)
Programul corespunztor primei ferestre (Form1) este urmtorul:
Private Sub Form_Load() Combo1.AddItem "Barbatesc" Combo1.AddItem "Femeiesc"
Combo3.AddItem "Sex" Combo3.AddItem "Varsta" Combo3.AddItem "Ocupatia" End Sub
Private Sub Command1_Click() If i <= n Then np(i) = Text1.Text sex(i) = Combo1.Text vrst(i) = Text2.Text ocup(i) = Combo2.Text List1.AddItem Text1.Text + " / " + Combo1.Text + _ " / " + Text2.Text + " / " + Combo2.Text Dezvoltarea aplicaiilor n Visual Basic 291 End If i = i + 1 End Sub
Private Sub Command2_Click() List1.RemoveItem List1.ListIndex End Sub
Private Sub Command3_Click() End End Sub
Private Sub Combo3_Click() Select Case Combo3.ListIndex Case Is = 0 Form2.Caption = "Criteriu de afisare - Sex" Form2.Show Case Is = 1 Form3.Caption = "Criteriu de afisare - Varsta" Form3.Show Case Is = 2 Form4.Caption = "Criteriu de afisare - Ocupatia" Form4.Show End Select End Sub
Programul aferent modulului ferestrei de afiare a persoanelor n funcie de sex (Form2) este urmtorul:
Private Sub Form_Activate() List1.Clear List2.Clear For i = 0 To Form1.List1.ListCount - 1 If sex(i) = "Barbatesc" Then List1.AddItem np(i) + " / " + vrst(i) + " / " + ocup(i) Else Visual Basic 292 List2.AddItem np(i) + " / " + vrst(i) + " / " + ocup(i) End If Next End Sub
Programul aferent modulului ferestrei de afiare a persoanelor n funcie de vrst (Form3) este urmtorul:
Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then List1.Clear List2.Clear v = Val(Text1.Text) Label2.Caption = "Mai mic de: " & v & " ani" Label3.Caption = "Mai mare de: " & v & " ani" For i = 0 To Form1.List1.ListCount - 1 If Val(vrst(i)) <= v Then List1.AddItem np(i) + " / " + sex(i) + " / " + ocup(i) End If If Val(vrst(i)) > v Then List2.AddItem np(i) + " / " + sex(i) + " / " + ocup(i) End If Next End If End Sub
n cadrul acestui program evenimentul KeyPress, corespunztor controlului Text1, cu parametrul KeyAscii egal cu 13 apare la acionarea tastei <ENTER>.
Programul aferent modulului ferestrei de afiare a persoanelor n funcie de ocupaie (Form3) este urmtorul:
Private Sub Form_Load() Combo1.AddItem "Economist" Combo1.AddItem "Inginer" Dezvoltarea aplicaiilor n Visual Basic 293 Combo1.AddItem "Mecanic" End Sub
Private Sub Combo1_Click() List1.Clear For i = 0 To Form1.List1.ListCount - 1 If ocup(i) = Combo1.Text Then List1.AddItem np(i) + " / " + sex(i) + "/" + vrst(i) End If Next End Sub
Proprietile, metodele i evenimentele obiectelor utilizate n acest program au fost tratate n capitolul 3.
Execuia aplicaiei este urmtoarea: Fereastra principal a aplicaiei (Form1), dup validarea datelor introduse prin acionarea butonului Validare date persoana, este prezentat n figura urmtoare:
Visual Basic 294
n cazul selectrii din caseta combo Combo3 a criteriului de afiare dup sex fereastra Form2 va fi afiat conform figurii urmtoare:
Dezvoltarea aplicaiilor n Visual Basic 295 n cazul selectrii din caseta combo Combo3, a criteriului de afiare dup vrst, va fi afiat fereastra Form3. Aceast fereastr, dac se introduce n caseta Vrsta numrul 30, dup acionarea tastei <ENTER>, va fi afiat conform figurii urmtoare:
n cazul selectrii din caseta combo Combo3, a criteriului de afiare dup ocupaie, va fi afiat fereastra Form4. Aceast fereastr, dac se selecteaz din lista casetei combo Ocupatia elementul Economist, se prezint conform figurii urmtoare:
Visual Basic 296
Aplicaia 11
S se realizeze un program care s permit calculul stocului unui produs dintr-o magazie, afiarea acestor date att ntr-o list ct i ntr-un fiier cu acces secvenial. Utilizatorul s poat citii prin program datele din fiier i s poat terge oricnd fiierul.
Rezolvare:
Macheta proiectat a aplicaiei este urmtoarea:
Dezvoltarea aplicaiilor n Visual Basic 297
Pentru afiarea unor explicaii atunci cnd utilizatorul se poziioneaz cu poiter-ul mouse-ului pe un buton de comand, se va seta proprietatea ToolTipText a fiecrui buton cu irul de caractere care reprezint explicaia, astfel:
Buton de comand Valoarea proprietii ToolTipText Command1 Introducere date in fisier Command2 Citire date din fisier Command3 Adaugare material in fisier Command4 Parasire program Command5 Calcul stoc final si introducere material in lista Command6 Stergere fisier
Datele introduse i calculate vor fi introduse n cadrul unui fiier cu acces secvenial stoc.txt. Pentru salvarea i localizarea acestui fiier se utilizeaz funcia CurDir care returneaz un ir de caractere ce conine calea spre directorul curent al aplicaiei. Programul aplicaiei este urmtorul: Visual Basic 298
'Declaratii generale variabile de tip sir de caractere 'pentru a putea fi introduse in lista Dim cod(100) As String * 6 Dim denumire(100) As String * 30 Dim stoci(100) As String * 10 Dim intrari(100) As String * 10 Dim iesiri(100) As String * 10 Dim stocf(100) As String * 10
'Declararea contorului de parcurgere a tabloului Public i As Integer
Private Sub Command1_Click() 'Introducere date din lista in fisier si stergerea lor din lista Open CurDir + "\stoc.txt" For Output As #1 For j = 1 To i Print #1, cod(j); ","; denumire(j); ","; stoci(j); ","; Print #1, intrari(j); ","; iesiri(j); ","; stocf(j) Next Close #1 List1.Clear End Sub
Private Sub Command2_Click() 'Citire date din fisier si afisarea lor in lista Open CurDir + "\stoc.txt" For Input As #1 nri% = LOF(1) / 76 For j = 1 To nri% Input #1, cod(j), denumire(j), stoci(j), intrari(j), iesiri(j), stocf(j) List1.AddItem cod(j) + Space(7) + denumire(j) + Space(11) + stoci(j) + Space(11) + intrari(j) + _ Space(11) + iesiri(j) + Space(11) + stocf(j) Next Close #1 End Sub Dezvoltarea aplicaiilor n Visual Basic 299
Private Sub Command3_Click() 'Adaugare date in fisier 'Acest buton se apasa la fiecare material ce se doreste a fi adaugat Open CurDir + "\stoc.txt" For Append As #1 Print #1, cod(i); ","; denumire(i); ","; stoci(i); ","; Print #1, intrari(i); ","; iesiri(i); ","; stocf(i) Close #1 List1.Clear End Sub
Private Sub Command4_Click() 'Terminare program End End Sub
Private Sub Command5_Click() 'Calcul stoc final si afisarea materialului in lista If Len(Text1.Text) <> 0 Then i = i + 1 cod(i) = Text1.Text denumire(i) = Text2.Text stoci(i) = Text3.Text intrari(i) = Text4.Text iesiri(i) = Text5.Text Label11.Caption = Val(stoci(i)) + Val(intrari(i)) - Val(iesiri(i)) stocf(i) = Label11.Caption List1.AddItem cod(i) + Space(7) + denumire(i) + Space(11) + stoci(i) + Space(11) + intrari(i) + _ Space(11) + iesiri(i) + Space(11) + stocf(i) Text1.SetFocus End If End Sub
Private Sub Command6_Click() Visual Basic 300 'Stergere fisier cu date Kill CurDir + "\stoc.txt" End Sub
Instruciunile de tratare a fiierelor au fost explicate n capitolul 4. Execuia aplicaiei este prezentat n figura urmtoare:
Fiierul stoc.txt are urmtorul coninut:
Aplicaia 12
Dezvoltarea aplicaiilor n Visual Basic 301 S se realizeze un program care s permit afiarea ntr-o fereastr a orei i datei curente a sistemului precum i a structurii de directoare i fiiere de pe un anumit disc. S se afieze numele fiierului din lista cu fiiere ntr-o caset text atunci cnd utilizatorul execut un click mouse pe acesta.
Rezolvare:
Pentru realizarea acestei aplicaii se vor ncrca pe form urmtoarele controale: Dir1 instan a obiectului DirListBox; Drive1 instan a obiectului DriveListBox; File1 instan a obiectului FileListBox; Label1, Label2; Text1; Timer1 instan a obiectului Timer. Aceste obiecte au fost tratate n capitolul 2, iar proprietile, metodele i evenimentele lor au fost tratate n capitolul 3. Fereastra machet a aplicaiei este urmtoarea: n cadrul programului pentru afiarea datei se utilizeaz funcia Date, iar pentru afiarea orei curente funcia Time. Visual Basic 302 Pentru a prelua i afia ora curent la fiecare secund se va introduce linia program de afiare a orei n cadrul evenimentului Timer a obiectului Timer i se seteaz proprietatea Interval cu valoarea 1000. Valoarea 1000 corespunde unei secunde. Pentru afiarea n cadrul casetei text Text1 a numelui fiierului, pe care utilizatorul execut un click mouse n lista cu fiiere (File1), se va utiliza evenimentul Click corespunztor listei cu fiiere. Programul aplicaiei este urmtorul:
Private Sub Form_Load() Label1.Caption = "Data este: " & Date End Sub
Private Sub Timer1_Timer() Label2.Caption = "Ora: " & Time End Sub
Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub
Private Sub Dir1_Change() File1.Path = Dir1.Path End Sub
Private Sub File1_Click() Text1.Text = File1.FileName End Sub
Execuia aplicaiei este urmtoarea: Dezvoltarea aplicaiilor n Visual Basic 303
Aplicaia 13
Pentru realizarea unor figuri grafice, n Visual Basic, exist un obiect special destinat acestui scop. Acest obiect este PictureBox-ul (zona de prezentare a obiectelor grafice). n cadrul acestei aplicaii este exemplificat proprietatea Circle a PictureBox-ului. Pe lng obiectele grafice mai apare exemplificat aici i funciunea butoanelor de opiune . Aplicaia const n posibilitatea alegerii de ctre utilizator a unitii de msura pentru scara desenului i a culori de desenare. Interfaa aplicaiei este prezentat n figura urmtoare:
Visual Basic 304
Programul asociat ferestrei aplicaiei este urmtorul:
Dim culoare Const Pi = 3.14159265359
Private Sub Combo1_Click() 'Incarcarea variabilei culoare in functie de elementul 'ales din lista dat de proprietatea Listindex Select Case Combo1.ListIndex Case Is = 0 culoare = RGB(0, 0, 0) 'Negru Case Is = 1 culoare = RGB(0, 0, 100) 'Albastru Case Is = 2 culoare = RGB(0, 100, 0) 'Verde Case Is = 3 culoare = RGB(0, 100, 200) 'Cyan Dezvoltarea aplicaiilor n Visual Basic 305 Case Is = 4 culoare = RGB(100, 0, 0) 'Rosu Case Is = 5 culoare = RGB(100, 20, 80) 'Magenta End Select End Sub
Private Sub Command1_Click() ' Desenare cerc Picture1.Circle (100, 100), 50, culoare End Sub
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Visible = False End Sub
Private Sub Command2_Click() ' Desenare arc de cerc Picture1.Circle (150, 80), 50, culoare, 0, Pi End Sub
Private Sub Command3_Click() 'Desenare elipsa Picture1.Circle (150, 80), 50, culoare, 0, 2 * Pi, 3 End Sub
Private Sub Command4_Click() ' Desenare linie Picture1.Line (120, 100)-(170, 150), culoare End Sub
Private Sub Command5_Click() End End Sub Visual Basic 306 Private Sub Command5_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Visible = False End Sub
Private Sub Form_Load() Label1.Visible = False 'Introducere date in lista cutiei combo Culori Combo1.AddItem "Negru" Combo1.AddItem "Albastru" Combo1.AddItem "Verde" Combo1.AddItem "Cyan" Combo1.AddItem "Rosu" Combo1.AddItem "Magenta (mov)" End Sub
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Visible = False End Sub
Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Visible = False End Sub
Private Sub Option1_Click() Value = True Picture1.ScaleMode = 1 End Sub
Private Sub Option2_Click() Value = True Picture1.ScaleMode = 2 End Sub
Dezvoltarea aplicaiilor n Visual Basic 307 Private Sub Option3_Click() Value = True Picture1.ScaleMode = 3 End Sub
Private Sub Picture1_Click() Picture1.Cls 'Stergere zona desen End Sub
Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) Label1.Visible = True End Sub
Execuia aplicaiei este prezentat n figura urmtoare:
Visual Basic 308 Aplicaia 14
Aceast aplicaie ilustreaz programarea tehnicii Drag & Drop. Tehnica Drag & Drop const n posibilitatea utilizatorului de a muta diferitele obiecte, din cadrul interfeei aplicaiei, prin inerea apsat a butonului stnga mouse, deplasarea obiectului pe ecran pn ajunge n poziia dorit de utilizator dup care se elibereaz butonul mouse-ului. Aceast operaie mai este cunoscut i sub denumirea de glisare: n cadrul aplicaiei textul introdus n caseta de editare Text1, va putea fi glisat n lista List1. Interfaa aplicaiei este cea din figura:
Programul aferent ferestrei aplicaiei este urmtorul:
Private Sub Command1_Click() End End Sub
Private Sub List1_DragDrop(Source As Control, X As Single, Y As Single) 'Includerea textului tras in lista si transferarea focus-ului casetei List1.AddItem Text1.Text Text1.Text = "" Dezvoltarea aplicaiilor n Visual Basic 309 Text1.SetFocus End Sub
Private Sub List1_DragOver(Source As Control, X As Single, Y As Single, _ state As Integer) 'Setarea modelului de pointer pentru mouse 'cand se efectueaza operatiunea drag & drop Select Case state Case Is = 0 Text1.DragIcon = LoadPicture("") Case Is = 1 Text1.DragIcon = LoadPicture("") End Select End Sub
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) 'Deplasarea textului se face atunci cand butonul mouse-ului este tinut apasat Text1.Drag End Sub
n cadrul metodei LoadPicture se poate introduce sub forma unui ir de caractere (ntre ghilimele) calea spre un fiier .ico care reprezint imaginea afiat n locul cursorului mouse-ului pe parcursul operaiunii Drag&Drop. Execuia aplicaiei este urmtoarea:
n momentul glisrii:
Visual Basic 310
dup glisare:
Aplicaia 15
S se realizeze o aplicaie care s permit introducerea i calculul datelor despre salariaii cu prestri servicii i stocarea sau preluarea acestor date dintr-un fiier baz de date. Pentru o mai bun nelegere a lucrului cu bazele de date, se va calcula i stoca numai salariul brut n funcie de tariful orar i orele lucrate. Dezvoltarea aplicaiilor n Visual Basic 311
Rezolvare:
Fiierul de stocare este un fiier baz de date dBASE IV compatibil FoxPro 2.6 cu denumirea de pserv.dbf avnd urmtoarea structur:
Denumire cmp Simbol Tip Lungime Marca salariatului INDEX Integer 2 Numele i prenumele NUME_A Text 100 Tarif orar SALAR_O Single 4 Ore lucrate ORE_L Single 4 Salar brut SALAR_B Double 8
Acest fiier va fi creat n aplicaia Visual Data Manager explicat n cadrul capitolului 5. Fiierul va avea dou chei de indexare, INDX dup cmpul INDEX i NUMEA dup cmpul NUME_A. Fiierul index ataat fiierului pserv.dbf este fiierul pserv.mdx. Proiectul aplicaiei conine cinci ferestre astfel:
Fereastra Form1 este fereastra principal i conine meniul aplicaiei. Proiectarea meniului este explicat n cadrul aplicaiei 7. Meniul aplicaiei este urmtorul:
Variabilele corespunztoare fiecrei opiuni sunt prezentate n tabelul de mai jos:
Opiune Variabil Optiuni opt Visual Basic 312 Introducere date intrd Modificare date modd Vizualizare date vizd - l1 Exit ext
Programul asociat acestei ferestre este urmtorul:
Private Sub intrd_Click() 'Afisare fereastra de introducere date Form2.Show End Sub
Private Sub modd_Click() 'Afisare fereastra de modificare date Form3.Show End Sub
Private Sub vizd_Click() 'Afisare fereastra de vizualizare date Form4.Show End Sub
Private Sub ext_Click() 'Inchidere aplicatie End End Sub
Fereastra Form2 permite introducerea unor date n cmpurile corespunztoare din fiierul baz de date. Macheta acestei ferestre este urmtoarea:
Dezvoltarea aplicaiilor n Visual Basic 313
Pentru controlul Data1 se seteaz urmtoarele proprieti astfel: Connect = FoxPro 2.6; DatabaseName = C:\Api14\pserv.dbf Calea i numele fiierului baz de date utilizat EOFAction=2 Add New ReadOnly=0 False RecordsetType=0 Dynaset RecordSource=PSERV
n timpul execuiei acestei ferestre la acionarea butonului de comand Validare se vor introduce datele din casetele de editare n cmpurile corespunztoare din fiierul pserv.dbf. Programul corespunztor acestei ferestre este urmtorul:
Private Sub Form_Load() 'Ascundere obiect Data1 Data1.Visible = False End Sub
Private Sub Command1_Click() Visual Basic 314 'Introducere date din casetele de editare 'in fisierul baza de date Label6.Caption = Val(Text3.Text) * Val(Text4.Text) Data1.Recordset.AddNew Data1.Recordset("Index") = Val(Text1.Text) Data1.Recordset("Nume_A") = Text2.Text Data1.Recordset("Salar_O") = Val(Text3.Text) Data1.Recordset("Ore_L") = Val(Text4.Text) Data1.Recordset("Salar_B") = Val(Label6.Caption) Data1.Recordset.Update End Sub
Private Sub Command2_Click() 'Inchidere fereastra Unload Form2 End Sub
Fereastra Form3 este fereastra prin intermediul creia se poate face cutarea, modificarea i tergerea articolelor din fiierul baz de date. Macheta ferestrei este urmtoarea:
n cadrul acestei ferestre pentru controlul Data1 se vor seta aceleai proprieti cu aceleai valori ca n fereastra form2. Pentru vizualizarea n timp real a nregistrrilor din fiier spre a putea fi Dezvoltarea aplicaiilor n Visual Basic 315 modificate, se leag fiecare caset de editare i etichet de cmpul corespunztor. Aceast legtur se realizeaz astfel: Se seteaz proprietatea DataSource =Data1 pentru obiectele Text1, Text2, Text3, Text4 i Label6; Se seteaz proprietatea DataField = INDEX pentru obiectul Text1; Se seteaz proprietatea DataField = NUME_A pentru obiectul Text2; Se seteaz proprietatea DataField = SALAR_O pentru obiectul Text3; Se seteaz proprietatea DataField = ORE_L pentru obiectul Text4; Se seteaz proprietatea DataField = SALAR_B pentru obiectul Label6; n fereastr chenarul Frame1 cu denumirea de Cautare conine dou butoane de opiune (Option1 i Option2) care permit selectarea variabilei de cutare (dup cmpul INDEX, respectiv dup cmpul NUME_A). Textul cutat se va introduce de ctre utilizator, la execuie, n caseta de editare Text5. Cutarea i localizarea se face la acionarea butonului de comand Command5 cu denumirea de Ok, utiliznd metoda FindFirst. Butonul de comand Command1, cu denumirea Validare, permite nregistrarea n fiierul pserv.dbf a datelor modificate n casetele de editare. Butoanele de comand Command3, Command6, Command7, Command8, permit, la acionarea lor, deplasarea prin nregistrri utiliznd metodele MoveFirst, MoveLast, MovePrevious, MoveNext. Butonul de comand Command2, cu denumirea de Exit, permite nchiderea ferestrei. Butonul de comand Command4, cu denumirea de Stergere, permite afiarea ferestrei Form5. Programul aferent acestei ferestre este urmtorul:
Private Sub Form_Load() 'Ascundere obiect Data1 Data1.Visible = False Visual Basic 316 End Sub
Private Sub Command1_Click() 'Inregistrare in fisier a modificarilor din 'casetele de editare Label6.Caption = Val(Text3.Text) * Val(Text4.Text) Data1.Recordset.Edit Data1.Recordset("Index") = Val(Text1.Text) Data1.Recordset("Nume_A") = Val(Text2.Text) Data1.Recordset("Salar_O") = Val(Text3.Text) Data1.Recordset("Ore_L") = Val(Text4.Text) Data1.Recordset("Salar_B") = Val(Label6.Caption) Data1.Recordset.Update End Sub
Private Sub Command2_Click() 'Inchidere fereastra Unload Form3 End Sub
Private Sub Command3_Click() 'Deplasare pe ultima inregistrare Data1.Recordset.MoveLast End Sub
Private Sub Command4_Click() 'Afisare fereastra Form5 pentru stergerea 'articolelor Form5.Show End Sub
Private Sub Command5_Click() 'Cautarea unui articol dupa INDEX 'sau dupa NUME_A Dim CautIndex As String Dim CautNume As String Dezvoltarea aplicaiilor n Visual Basic 317 If Option1.Value = True Then CautIndex = "Index=" & Text5.Text & "" Data1.Recordset.FindFirst (CautIndex) End If
If Option2.Value = True Then CautNume = "nume_a='" + Text5.Text + "'" Data1.Recordset.FindFirst (CautNume) End If End Sub
Private Sub Command6_Click() 'Deplasare cu o inregistare spre sfarsitul fisierului If Not Data1.Recordset.EOF Then Data1.Recordset.MoveNext End If End Sub
Private Sub Command7_Click() 'Deplasare cu o inregistare spre inceputul fisierului If Not Data1.Recordset.BOF Then Data1.Recordset.MovePrevious End If End Sub
Private Sub Command8_Click() 'Deplasare pe prima inregistrare din fisier Data1.Recordset.MoveFirst End Sub
Fereastra Form5 permite selectarea modului de tergere a articolelor. Macheta aplicaiei este urmtoarea:
Visual Basic 318
Butonul de comand Command1 permite tergerea nregistrrii curente, iar Command2 tergerea tuturor nregistrrilor din fiierul pserv.dbf. Programul asociat acestei ferestre este urmtorul:
Private Sub Command1_Click() 'Stergere inregistrare curenta Form3.Data1.Recordset.Delete Form3.Data1.Recordset.MoveNext Unload Form5 End Sub
Private Sub Command2_Click() 'Stergere toate inregistrarile If Form3.Data1.Recordset.RecordCount <> 0 Then Form3.Data1.Recordset.MoveFirst For i = 1 To Form3.Data1.Recordset.RecordCount Form3.Data1.Recordset.Delete Form3.Data1.Recordset.MoveNext Next End If Unload Form5 End Sub
Fereastra Form4 permite afiarea nregistrrilor i deplasarea printre acestea. Macheta acestei ferestre este urmtoarea:
Dezvoltarea aplicaiilor n Visual Basic 319
Obiectul n care se face afiarea este un obiect special pentru lucrul cu bazele de date avnd denumirea de DBGrid. ncrcarea acestui obiect pe fereastr se face astfel: din meniul Project se selecteaz opiunea Components ...; n fereastra afiat se selecteaz din tabela Controls pachetul Microsoft Data Bound Grid Control 5.0 (SP3), dup care se acioneaz butonul Ok din fereastr; se ncarc obiectul nou aprut n Toolbox ( ), pe form. Pentru obiectul DBGrid1 ncrcat pe form se seteaz proprietatea DataSource=Data1. Pentru controlul Data1 se ncarc aceleai proprieti cu aceleai valori ca n fereastra Form2 excepie fcnd proprietatea ReadOnly care va fi ncrcat cu valoarea True (protejat la scriere). Butoanele de navigare prin tabela de cmpuri pserv.dbf sunt la fel cu cele din cadrul ferestrei Form3.
Programul asociat acestei ferestre este urmtorul:
Private Sub Form_Load() 'Ascundere obiect Data1 Data1.Visible = False Visual Basic 320 End Sub
Private Sub Command1_Click() 'Deplasare pe prima inregistrare din fisier Data1.Recordset.MoveFirst End Sub
Private Sub Command2_Click() 'Inchidere fereastra Unload Form4 End Sub
Private Sub Command3_Click() 'Deplasare cu o inregistare spre inceputul fisierului If Not Data1.Recordset.BOF Then Data1.Recordset.MovePrevious End If End Sub
Private Sub Command4_Click() 'Deplasare cu o inregistare spre sfarsitul fisierului If Not Data1.Recordset.EOF Then Data1.Recordset.MoveNext End If End Sub
Private Sub Command5_Click() 'Deplasare pe ultima inregistrare din fisier Data1.Recordset.MoveLast End Sub Execuia aplicaiei este urmtoarea:
Meniul aplicaiei:
Dezvoltarea aplicaiilor n Visual Basic 321
Fereastra de introducere a datelor afiat la apelarea opiunii Introducere date:
Fereastra pentru modificarea datelor afiat la apelarea opiunii Modificare date:
Visual Basic 322
Fereastra de tergere a nregistrrilor afiat la acionarea butonului Stergere din fereastra Modificare date:
Fereastra pentru vizualizarea datelor afiat la apelarea opiunii Vizualizare date din meniul principal Optiuni: