51 0 3MB
IOAN BOLDEA MARIA BOLDEA
CLAUDIU BRÂNDAŞ
VISUAL BASIC
Coperta: Claudiu BRÂNDAŞ
Descrierea CIP a Bibliotecii Naţionale BOLDEA, IOAN; BOLDEA, MARIA; BRÂNDAŞ CLAUDIU Visual Basic/Ioan Boldea, Maria Boldea, Claudiu Brândaş Timişoara, 2000, Ed. Brumar
324 p.; il.; 22,5 cm ISBN 973-9295-94-0
Ioan BOLDEA • Maria BOLDEA • Claudiu BRÂNDAŞ
VISUAL BASIC
Conf. Dr. Ioan BOLDEA coordonator Prof. Dr. Maria BOLDEA Prep. Univ. Claudiu BRÂNDAŞ
Tehnoredactare computerizată: Claudiu BRÂNDAŞ BRUMAR 2000 ISBN 973-9295-94-0 Bun de tipar: 01.06.2000 Apărut: iunie, 2000 Tiparul executat la Tipografia BRUMAR, Timişoara Str. Pestalozzi, Nr. 22 Tel. / Fax: +40(56)203934; +40(56)293441 E-mail: [email protected]
CUPRINS CAPITOLUL I. INTRODUCERE 1.1. Evoluţia limbajului BASIC …………………..…………..… 1.2. Limbajul Visual Basic …………….………...……………… 1.3. Specificitatea limbajului Visual Basic sub Windows …………………………………...…………...
9 11 15
CAPITOLUL II. MEDIUL DE DEZVOLTARE VISUAL BASIC 2.1. Conceptul de mediu integrat de dezvoltare ………………… 2.2. Lansarea în execuţie 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. Încărcarea ş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 ……………………...…….…….
5
17 18 22 22 22 51 53 53 74 76 78 79 81 82
CAPITOLUL III. PROPRIETĂŢILE, METODELE ŞI EVENIMENTELE OBIECTELOR 3.1. Proprietăţile obiectelor ……………………………...……… 3.2. Metodele obiectelor ………………………………………… 3.3. Evenimentele ………………………………………………..
83 119 134
CAPITOLUL IV. LIMBAJUL DE PROGRAMARE 4.1. Linia de program ……………………..…………………...... 4.2. Cuvintele …..……………………………………………….. 4.3. Constantele …………………………………………………. 4.4. Variabile ……………………………………………………. 4.4.1. Declararea variabilelor ……………………………..….. 4.4.2. Domeniul unei variabile ………………………………... 4.4.3. Durata de viaţă a variabilelor ………………………….. 4.4.4. Tipuri de variabile ……………………………………… 4.5. Tipuri de date definite de utilizatori ………………………... 4.6. Operatorii ……………………………………………….…... 4.6.1. Operatorii aritmetici ……………………………………. 4.6.2. Operatori de concatenare ……………………………….. 4.6.3. Operatori relaţionali ……………………………………. 4.6.4. Operatori logici …………………………………………. 4.7. Funcţiile integrate în Visual Basic …………………………. 4.7.1. Funcţii matematice ……………………………………... 4.7.2. Funcţii pentru gestionarea tipurilor de date …………….. 4.7.3. Funcţii pentru şiruri de caractere ……………………….. 4.7.4. Funcţii pentru gestionarea datei şi orei …………………. 4.7.5. Funcţii matematice derivate ……………………………. 4.7.6. Funcţii de conversie a datelor …………………………... 4.8. Instrucţiuni ………………………………………………….. 4.8.1. Instrucţiunea REM ……………………………………… 4.8.2. Instrucţiunea LET ………………………………………. 4.8.3. Instrucţiunea PRINT ……………………………………. 6
155 156 156 158 158 160 162 163 168 169 169 169 170 170 171 172 172 173 174 175 177 177 177 178 179
4.8.4. Instrucţiuni pentru controlul programelor …..………….. 4.8.4.1. Instrucţiunile condiţionale ………………...….. 4.8.4.1.1. Instrucţiunea IF...THEN ……………….… 4.8.4.1.2. Instrucţiunea SELECT...CASE ………….. 4.8.4.2. Instrucţiuni repetitive …………………………. 4.8.4.2.1. Instrucţiunea DO...LOOP …………….….. 4.8.4.2.2. Instrucţiunea FOR...NEXT ………………. 4.8.4.3. Instrucţiuni pentru tratarea fişierelor …………. 4.8.4.3. 1. Instrucţiunea OPEN ……………...……… 4.8.4.3. 2. Instrucţiunea CLOSE ……………………. 4.8.4.3. 3. Instrucţiunea INPUT# …………..………. 4.8.4.3. 4. Instrucţiunea INPUT ……………………. 4.8.4.3. 5. Instrucţiunea LINE INPUT# …..….…….. 4.8.4.3. 6. Funcţia EOF …………………...………… 4.8.4.3. 7. Funcţiile LOF şi LOC ……………...……. 4.8.4.3. 8. Instrucţiunea PRINT# …………...………. 4.8.4.3. 9. Instrucţiunea WRITE# ………...………… 4.8.4.3.10. Instrucţiunea PUT ……………………….. 4.8.4.3.11. Instrucţiunea GET ………………………. 4.8.4.3.12. Instrucţiunea SEEK ……………………...
180 180 181 185 188 188 189 192 192 194 194 195 195 196 196 197 198 198 200 201
CAPITOLUL V. GESTIONAREA BAZELOR DE DATE 5.1. Gestionarea bazelor de date în Visual Basic ……………….. 5.2. Aplicaţia Visual Data Manager …………………………….. 5.3. Obiectul DBEngine ………………………………………… 5.4. Obiectul Database …………………………………………... 5.5. Utilizarea comenzilor SQL în Visual Basic ………………... 5.6. Obiectul Recordset …………………………………………. 5.7. Controlul Data ………………………………………………
7
203 204 210 215 219 230 237
CAPITOLUL VI. DEZVOLTAREA APLICAŢIILOR ÎN VISUAL BASIC 6.1. Gestionarea unei aplicaţii Visual Basic …………….………. 6.2. Etapele elaborării unei aplicaţii Visual Basic ………………. 6.3. Aplicaţii Visual Basic ………………………………………. Aplicaţia 1 …………………………………………………. Aplicaţia 2 …………………………………………………. Aplicaţia 3 …………………………………………………. Aplicaţia 4 …………………………………………………. Aplicaţia 5 …………………………………………………. Aplicaţia 6 …………………………………………………. Aplicaţia 7 …………………………………………………. Aplicaţia 8 …………………………………………………. Aplicaţia 9 …………………………………………………. Aplicaţia 10 …………………………………………...……. Aplicaţia 11 …………..……………………………………. Aplicaţia 12 ……………..…………………………………. Aplicaţia 13 …………..……………………………………. Aplicaţia 14 …………..……………………………………. Aplicaţia 15 …………..…………………………………….
241 244 248 248 251 258 262 265 270 276 282 284 287 296 301 303 308 310
BIBLIOGRAFIE ...........................................................................
323
8
Introducere
1.1. Evoluţia limbajului BASIC Limbajul BASIC (acronim pentru Beginner’s All-purpouse Symbolic Instruction Code) a fost creat la începutul anilor ’60, de un colectiv de cercetători de la Universitatea Darmouth, SUA, condus de profesorii Thomas Kurtz şi John Kemeny. Şi-a câştigat rapid popularitatea dorită noutăţilor oferite utilizatorilor, stârnind într-o măsură mai mare decât alte limbaje părerile specialiştilor, dintre care unii l-au admirat, în timp ce alţii l-au dezavuat. Ca şi majoritatea limbajelor de nivel înalt (High-Level Languages - HLL) cu o largă răspândire: Pascal, Fortran, Cobol, Prolog etc., limbajul Basic a prezentat atât avantaje cât şi inconveniente. Succesele limbajului Basic şi inclusiv laudele aduse vizau simplificarea comunicării cu utilizatorul şi uşurinţa în folosirea instrucţiunilor de către persoane care se iniţiau în programare. Printre caracteristicile iniţiale ale limbajului se numără: era de uz general, permitea introducerea ulterioară a unor caracteristici, era un limbaj interactiv, afişa mesaje de eroare, nu necesita cunoaşterea hardware-ului, sistemul de operare devenea transparent pentru utilizatori etc. Critica viza, mai ales, faptul că limbajul Basic nu permitea o programare structurată (utilizarea instrucţiunii GOTO şi etichetarea liniilor sursă), lipsa parametrilor formali în definirea subprogramelor, viteza de calcul scăzută în condiţiile utilizării interpretorului etc. În cursul evoluţiei sale, limbajul Basic a cunoscut o continuă perfecţionare, prin noi versiuni, devenind din ce în ce mai puternic astfel încât să poată fi utilizat în elaborarea unor aplicaţii complexe. 9
Visual Basic William (Bill) Gates şi Paul Allen, în 1975, implementează în premieră limbajul Basic pe micro-calculatoare. În anul 1981 firma IBM comercializează primul său PC cu sistemul de operare Microsoft-DOS, creându-se astfel enorme posibilităţi de difuzare pe plan mondial pentru limbajul Basic în versiunile GW-Basic sau PCBasic. Faptul că posesorul unui PC beneficia împreună cu sistemul de operare MS-DOS şi de o versiune de Basic, oferă utilizatorului acestui limbaj posibilitatea realizării unor programe mici si mijlocii. Lipsa unor funcţii si insuficienţele editorului GW/PC-Basic au creat dificultăţi în dezvoltarea unor aplicaţii complexe, lucru care a condus la apariţia unor versiuni mult mai puternice. Astfel, Microsoft elaborează QuickBasic care dispune de un editor performant şi de alte funcţiuni ce simplifică programarea aplicaţiilor si creează premisele pentru o programare de calitate. Pe de altă parte apariţia 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ă apariţia unei versiuni mai uşoare a lui QuickBasic şi anume: QBasic, care, în ciuda lipsei unor funcţiuni, 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 păcate, îi lipseşte capacitatea de a crea programe autonome (fişiere.EXE) capabile să fie executate fără QBasic. Facilităţile lui QuickBasic sub MS-DOS au permis depărtarea de Basic a imaginii de limbaj pentru începători, imagine răspândită în anumite instituţii de învăţământ. Limbajul Basic a cunoscut şi alte implementări şi anume: versiunile Turbo Basic si Basica care au adăugat noi facilităţi în dezvoltarea aplicaţiilor informatice. De-a lungul anilor s-a simţit o reală nevoie de convivialitate, care va da naştere interfeţei Windows, ajungându-se astfel la o standardizare a dialogului om-maşină. O realizare deosebită o reprezintă implementarea, realizată de către firma Microsoft, a produsului Visual Basic care reuneşte numeroasele facilităţi ale versiunilor anterioare de Basic cu facilităţile interfeţei Windows, reprezentând cea mai uşoară şi rapidă cale de dezvoltare a aplicaţiilor sub mediul Windows (RAD –Rapid Applicantion Development). 10
Introducere
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 său limbaj de dezvoltare de nivel înalt sub Windows. După versiunea 1 şi 2, a apărut versiunea 3 în Ediţie 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 aplicaţiilor sub Windows într-un limbaj simplu şi de nivel înalt. Marele avantaj în raport cu limbajul C sau C+ (utilizate pentru dezvoltarea aplicaţiilor sub Windows) constă în faptul că nu mai trebuie apelate funcţii complexe Windows, deoarece se apelează API (Aplication Program Interface). Aplicaţiile realizate în Visual Basic pot comunica cu alte aplicaţii dezvoltate sub Windows prin intermediul unor interfeţe: 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 creării de aplicaţii grafice şi de jocuri. Firma Microsoft a comis o eroare strategică incluzând cuvântul Basic în numele principalului instrument de dezvoltare a aplicaţiilor sub Windows, oferindu-i o imagine falsă de limbaj elementar pentru amatori. Începând cu versiunea 3 a limbajului Visual Basic, care a integrat maşina pentru baze de date Jet provenită de la Access, firmele care creează aplicaţii de gestiune au început să utilizeze efectiv Visual Basic în cadrul acestor aplicaţii. Astăzi, cu versiunea 6 de Visual Basic se dispune de un excelent instrument de dezvoltare a aplicaţiilor mult mai facil decât 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 alături şi în concurenţă cu alte noi limbaje de nivel 11
Visual Basic î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 conţine 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ă următoarele 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 funcţii care pot fi reutilizate în alte programe sau în alte funcţii superioare. Programele în limbajul C sunt complexe, de aceea sunt puţine întreprinderile care se aventurează în programarea aplicaţiilor de gestiune în acest limbaj; ♦ LIMBAJUL C++: este un subansamblu al limbajului C ce oferă posibilitatea programării orientată obiect. Microsoft furnizează o versiune particulară şi atractivă a limbajului C++ şi anume Visual C++ care funcţionează pe 16 biţi sau 32 biţi. Acesta permite o programare parţial 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;
12
♦
♦
♦
♦
♦
♦
Introducere 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 uşor de abordat şi bine adaptat pentru efectuarea calculelor ştiinţifice. Societatea Borland este primul editor al compilatorului Pascal. Versiunea Borland Object Pascal pentru Windows este foarte puternică facilitând î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 producătoare de medii AMC Designer, poate conduce la crearea unui trio foarte promiţător pentru arhitectura client-server: AMC Designer pentru concepere, Powerbuilder pentru dezvoltarea părţii 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. Astăzi este integrat în mediul de dezvoltare Developer 2000, care mai conţine alte două produse: Forms şi Graphics şi care completează oferta client-server a societăţii 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 răspândeşte 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 piaţa sistemelor de dezvoltare sub Windows (finele anului 1994) şi nu a reuşit să recupereze pe această piaţă avansul principalului său concurent Access. Firma Borland, care la angajat pe creatorul Astiton Tate al familiei dBase, face să urmeze dBase 5 prin 13
Visual Basic Visual dBase versiunea 5.5 ca o reacţie la apariţia lui FoxPro. Acest sistem de dezvoltare prezintă avantajul că recunoaşte 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 făcut să evolueze spre actualul produs Visual FoxPro. El este un limbaj destul de clasic dar foarte performant în execuţie. Visual Basic 4 i-a împrumutat maşina de gestionat baze de date numita Jet, maşină găsită ş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 cărora se pot realiza aplicaţii 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 Aplicaţii cu Excel. Toate programele scrise cu Visual Basic pentru Excel pot fi copiate şi executate în Visual Basic. Compatibilitatea este totală. Există păreri potrivit cărora Visual Basic este un limbaj orientat pe obiecte. Însă el nu dispune de toate funcţiunile 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 uşoară la ceea ce toţi informaticienii numesc: programarea orientata pe obiecte (POO). Visual Basic poate fi calificat ca un limbaj de programare pe evenimente. De fapt, acestea sunt acţiunile utilizatorului asupra unui obiect proiectat pe ecran care declanşează execuţia procedurilor. O caracteristică esenţială 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 fără introducerea instrucţiunilor de la tastatură ci printr-un simplu clic pe icon-uri cu ajutorul mouse-ului.
14
Introducere
1.3. Specificitatea limbajului Visual Basic sub Windows Cu toate că denumirea de Visual Basic a produsului face aluzie la clasicul BASIC (Beginner’s All-purpouse Symbolic Instruction Code), el se deosebeşte foarte mult de acesta, prin introducerea de concepte noi ca urmare a evoluţiei metodelor de programare care urmăresc crearea rapidă a unor aplicaţii puternice (programarea vizuală), elementele comune cu BASIC-ul fiind doar instrucţiunile folosite în generarea codului program a aplicaţiei. Versiunea de BASIC pe baza căreia 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 aplicaţie folosind un şablon pe care se încarcă toate elementele de control (obiecte) a aplicaţiei, fără a scrie nici o linie de program. Acest tip de programare dezvoltă metoda de programare orientată pe obiecte. Elementele definitorii ale programării vizuale sunt: •obiectele: acestea pot fi obiecte speciale (clipboard-ul, printer-ul) şi controale sau elemente de control (butoane de comandă, butoane radio, căsuţe de opţiune, bare de defilare, zone de listare, casete de introducere date, casete “combo”, etc.). Tot ca obiect este tratat şi şablonul sau fereastra aplicaţiei, cunoscută în Visual Basic sub denumirea de form (formă), care reprezintă elementul de bază într-o aplicaţie programată în mod vizual; •proprietatile obiectelor: fiecărui obiect ii aparţine un grup de proprietăţi care determina comportamentul obiectului respectiv in cadrul aplicaţiei; •metodele: reprezintă instrucţiuni (proceduri) sau funcţii speciale asociate obiectelor; •evenimentele: fiecărui obiect îi aparţin un grup de evenimente, care reprezintă acţiunile ce pot apărea pe parcursul execuţiei aplicaţiei, în legătura cu acel obiect (apăsarea butoanelor mouse-ului, apăsarea unei taste, mişcarea cursorului mouse-ului pe suprafaţa obiectului ş.a.). În cadrul familiei limbajelor axate pe programarea vizuală alături de Visual Basic mai pot fi amintite mediile de programare Visual FoxPro, Visual dBase, Delphi, Visual C++ , C++ Builder, Visual JAVA ş.a. De 15
Visual Basic reţinut este faptul că programarea vizuală, cu toate că este întâlnită cel mai frecvent în cadrul mediilor de dezvoltare a aplicaţiilor Windows, poate fi întâlnită şi în cadrul unor medii de dezvoltare a aplicaţiilor şi sub alte sisteme de operare cum ar fi, de exemplu, Visual Basic-ul pentru MS-DOS.
16
Mediul de dezvoltare Visual Basic
2.1. Conceptul de mediu integrat de dezvoltare Limbajele de programare actuale au fost dotate cu facilităţi de asistare a programatorului în conceperea şi execuţia programelor pe un sistem de calcul. Iniţial a apărut noţiunea de mediu de programare, ce reprezintă un sistem de programe pentru asistarea programatorului în proiectarea şi codificarea algoritmilor, apoi în editarea şi depanarea programelor. Creşterea gradului de asistenţă oferit de către acest sistem a contribuit la introducerea noţiunii de mediu integrat de dezvoltare (IDE Integrated Development Environment), caz în care programatorul este asistat în toate fazele de realizare a unei aplicaţii. Visual Basic este un mediu de dezvoltare a aplicaţiilor ce rulează sub Windows. Datorită uşurinţei dialogului pe care utilizatorul îl are prin intermediul unei interfeţe grafice (GUI - Graphic User Interface) foarte prietenoasă şi totodată a performanţelor mediului Windows îl face pe acesta din ce în ce mai răspândit atât ca program obişnuit ce rulează sub sistemul de operare MS-DOS, versiunile Windows 3.x, cât ş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 căreia pot fi realizate aplicaţii deosebit de puternice care rulează direct de sub sistemul de operare MS-DOS. Mediul de dezvoltare Visual Basic cuprinde un sistem de aplicaţii care pot fi lansate în execuţie independent una de cealaltă. Aceste aplicaţii sunt: 17
Visual Basic ♦ mediul de programare Visual Basic, (din cadrul căruia pot fi executate şi celelalte aplicaţii 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ă distincţie între mediul de programare Visual Basic şi limbajul de programare Visual Basic deoarece primul se referă la interfaţa grafică a mediului de programare şi anume la fereastra cu obiecte (Toolbox), bara de meniu, fereastra de setare a proprietăţilor, fereastra proiect, fereastra de editare a codului program a aplicaţiei 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 execuţie a mediului de programare Visual Basic Pentru lansarea în execuţie 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. 18
Mediul de dezvoltare Visual Basic B. • • •
se lansează în execuţie 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 lansării în execuţie a mediului Visual Basic, este afişată pe ecran o fereastră de dialog cu titlul New Project (figura 2.1) din cadrul căreia programatorul poate alege de la început şablonul unei anumite aplicaţii. Fereastra conţine trei tabele, astfel: • New: permite selectarea unui şablon de proiect nou; • Existing: permite deschiderea unui proiect existent deja pe disc; • Recent: permite afişarea şi selectarea dintr-o listă a unui proiect care a fost prelucrat recent. Lista conţine un anumit număr de proiecte (fişiere proiect) care au fost prelucrate în sesiunile de lucru anterioare.
Fig. 2.1. Fereastra de dialog New Project. 19
Visual Basic După selectarea unei alternative din fereastra New Project va fi afişat un ansamblu de ferestre (figura 2.2), care constituie interfaţa dintre acesta şi programator.
Linia de meniu
Fereastra Project Toolbar
Toolbar
Fereastra Properties
Forma
Toolbox
Fereastra de afişaj a formei în execuţie
Fig. 2.2. Mediul de programare Visual Basic Interfaţa Visual Basic este alcătuită din următoarele ferestre: • Fereastra principală compusă din două elemente: ♦ Linia de meniu (Menu Bar): este alcatuită din meniuri folosite la crearea şi executarea unei aplicaţii Visual Basic; ♦ Bara cu instrumente (Toolbar): conţine un grup de butoane ce corespund comenzilor obişnuite ale unui mediu de programare pentru încarcare fişiere, salvare fişiere, lansare program, depanare, etc. şi două casete care indică poziţia şi dimensiunea obiectului curent. 20
• •
•
•
• •
Mediul de dezvoltare Visual Basic Fereastra (caseta) cu controale (Toolbox): conţine un set de butoane ce reprezintă controalele (elemente de control) care pot fi încărcate pe foaia de lucru (fereastra aplicaţiei). Foaia de lucru (fereastra aplicaţiei - Form): reprezintă şablonul aplicaţiei, fereastra pe care vor fi plasate controalele şi care va constituii interfaţa dintre aplicaţie şi utilizator purtând denumirea de formă. Fereastra Project (proiect): conţine numele tuturor fişierelor (modulelor) ce reprezintă formele (ferestrele .FRM), modulele de cod (.BAS), fişiere ce conţin definiţia unor clase (.CLS) şi fişiere cu resurse (.RES), care constituie proiectul aplicaţiei curente (fişier cu extensia .MAK sau .VBP). Fereastra Properties: conţine proprietăţile elementului de control curent sau a formei, proprietăţi ce reprezintă caracteristicile unui obiect (controale sau forme) cum ar fi dimensiunea, culoarea, numele etc. şi ale căror valori determină comportamentul obiectului respectiv în cadrul aplicaţiei. Fereastra Color Palette: permite modificarea interactivă a culorilor elementelor unui obiect creându-se astfel noi scheme de culori asociate aplicaţiei. Fereastra Form Layout: permite modificarea poziţiei ferestrei aplicaţiei în cadrul desktop-ului.
2.3. Elementele mediului de programare 21
Visual Basic
Visual Basic 2.3.1. Fereastra principală Fereastra principală (fig. 2.3) conţine: 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 Conţine următoarele meniuri principale: File, Edit, View, Project, Format, Debug, Run, Tools, Add-Ins, Windows şi Help.
22
Mediul de dezvoltare Visual Basic Meniul FILE
Fig. 2.5. Meniul File. Meniul File este alcătuit dintr-un set de opţiuni ce pot fi folosite la gestionarea şi prelucrarea fişierelor proiect (.MAK, .VBP, .VBG) precum şi a fişierelor componente ale proiectului unei aplicaţii Visual Basic. Opţiunile meniului File sunt: • New Project: permite crearea unui nou proiect. Selectarea acestei opţiuni are ca efect imediat apariţia unei ferestre de dialog în cadrul căreia programatorul este întrebat dacă doreşte să salveze proiectul anterior, înainte de a se iniţializa unul nou. Nu poate fi deschis la un moment dat decât un singur proiect; • Open Project… (+): permite încărcarea (deschiderea) unui proiect deja existent. După selectarea acestei opţiuni vechiul proiect va fi închis (nu înainte de a fi salvat) şi se va afişa o fereastră de dialog în cadrul căreia se selectează numele fişierului proiect (.MAK, .VBP) ce se doreşte a fi încărcat spre prelucrare; • Save Form1 (+): permite salvarea pe disc a fişierelor ce compun proiectul. Aceste fişiere pot fi fişiere ce conţin o formă cu toate controalele din cadrul ei având extensia .FRM, fişiere (module) ce conţin declaraţii globale, de variabile şi proceduri, având extensia .BAS şi fişiere 23
Visual Basic (module) ce conţin definiţia unei clase şi care au extensia .CLS. Dacă fişierul respectiv a mai fost salvat şi el există pe disc atunci apelarea acestei opţiuni are ca efect simpla salvare a fişierului fără nici o interogare din partea mediului de programare, iar dacă fişierul respectiv nu a mai fost salvat se va afişa o fereastră de dialog în cadrul căreia se va introduce numele şi extensia sub care se doreşte a fi salvat fişierul; • Save Form1 As … (+): are aceleaşi efecte ca şi opţiunea Save Form1 cu deosebirea că de fiecare dată când este apelată această opţiune mediul Visual Basic afişează o fereastră de dialog în care se va introduce numele fişierului respectiv dacă el nu a mai fost salvat niciodată sau un alt nume dacă fişierul respectiv a mai fost salvat şi el există pe disc, caz în care fişierul vechi rămâne neschimbat, modificările curente fiind salvate în noul fişier al cărui nume va apare şi în cadrul ferestrei Project, a proiectului curent; • Save Project: permite salvarea pe disc a proiectului curent şi a fişierelor ce compun proiectul. Dacă proiectul curent a mai fost salvat şi el există pe disc efectul alegerii acestei opţiuni este doar salvarea proiectului fără nici o interogare din partea mediului de programare, iar dacă proiectul nu a mai fost salvat se va afişa o fereastră de dialog în cadrul căreia se va introduce, în primul rând, numele fişierelor ce compun proiectul şi apoi numele sub care se doreşte salvarea proiectului pe disc; • Save Project As …: are aceleaşi efecte ca şi opţiunea Save Project dar acesta opţiune 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 fişierelor ce-l compun. De aceea, poate apărea situaţia în care două proiecte să conţină aceleaşi fişiere. Pentru înlăturarea acestei situaţii după salvarea unui proiect cu un alt nume se va salva sub o altă denumire şi fişierele care îl compun folosind opţiunea Save Form1 As … ; • Add Project …: permite adăugarea unui proiect nou, sau a unuia deja existent, la proiectul curent rezultând astfel un grup de proiecte. Salvarea unui grup de proiecte pe disc se va face într-un fişier cu extensia .VBG; 24
Mediul de dezvoltare Visual Basic • Remove Project: permite închiderea proiectului curent (aflat în lucru) cu posibilitatea de a fi salvat. Prin intermediul acestei opţiuni pot fi eliminate (şterse) unele proiecte din cadrul unui grup de proiecte; • Print Setup … şi Print …: permit setarea parametrilor imprimantei şi tipărirea la imprimantă a diverselor elemente ale unui proiect (conţinutul fişierului, forma, imaginile din cadrul unei forme, conţinutul fişierului (modulului) de declaraţii globale) sau a întregului proiect; • Make Project1.exe …: are ca efect crearea unui fişier executabil ce conţine întregul proiect al aplicaţiei şi care va putea fi lansat în execuţie independent de mediul Visual Basic. Numele fişierului executabil se va introduce în cadrul ferestrei de dialog ce se afişează în urma selectării acestei opţiuni. O aplicaţie independentă, atât faţă de mediul Visual Basic cât şi faţă de fişierele din directorul în care este instalat Windows-ul, poate fi obţinută cu ajutorul aplicaţiei Application Setup Wizard ce se găseşte în cadrul grupului în care a fost instalat Visual Basic-ul. În cadrul acestei aplicaţii se introduce numele proiectului ce se doreşte a fi transformat întrun fişier executabil, iar în urma prelucrării va rezulta un kit de instalare (distribuire) cu ajutorul căruia aplicaţia 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 instrucţiuni are ca efect imediat afişarea unei ferestre (figura 2.6) care conţine numele proiectelor, iar pentru compilare şi generare a codului executabil se validează butonul Build;
25
Visual Basic
Fig. 2.6. Fereastra pentru compilarea şi generarea programului executabil pentru un grup de proiecte. • Exit: permite părăsirea mediului de programare Visual Basic. Poate fi apelată şi prin acţionarea combinaţiei de taste +. Meniul EDIT
Fig. 2.7. Meniul Edit. 26
Mediul de dezvoltare Visual Basic Meniul Edit (figura2.7.) permite, prin opţiunile sale, efectuarea unor operaţiuni atât asupra textului din cadrul ferestrei de editare a programului sursă cât şi asupra controalelor din cadrul unei forme. Cele mai folosite opţiuni sunt: • Undo (+): anulează ultima operaţiune efectuată asupra controalelor sau textului; • Cut (+): şterge elementul de control din cadrul unei forme sau textul selectat şi le copiază în Clipboard (zona tampon); • Copy (+): se comportă la fel ca şi Cut, dar obiectele selectate nu sunt şterse; • Paste (+): readuce conţinutul zonei tampon (Clipboard) în locul marcat, fie cu ajutorul mouse-ului, fie cu ajutorul cursorului de editare; • Find … (+) : permite căutarea unui anumit şir de caractere în cadrul modulelor proiectului; • Replace … (+): permite înlocuirea unui anumit şir de caractere, care va fi căutat în cadrul modulelor proiectului, cu un alt şir introdus de programator; • Insert File…: oferă posibilitatea inserării, în poziţia curentă a cursorului, a mai multor linii de text (explicativ sau cod program) existente în fişiere externe, fişiere ce au extensia .TXT, .BAS, .CLS; • List Properties/Methods (+): permite afişarea în fereastra de scriere programului sursă, a unei liste care conţine proprietăţile ş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 afişează în mod automat o listă cu proprietăţile şi metodele unui obiect dacă se introduce după denumirea acestuia caracterul “.” (punct). Din lista derulantă afişată se poate alege o proprietate sau o metodă (cu ajutorul tastelor direcţionale) după care se 27
Visual Basic apasă tasta , aceasta fiind afişată î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 afişarea automată a listei cu proprietăţile şi metodele acestui obiect (figura 2.8), care pot fi selectate şi utilizate.
Fig. 2.8. Afişarea automată a listei cu proprietăţile şi metodele unui obiect • List Constants (++): permite afişarea în timpul scrierii programului sursă, a unei liste derulante care conţine valorile constante ale unei proprietăţi sau funcţii. Pentru afişarea listei derulante cu aceste valori constante se tastează numele proprietăţii sau funcţiei ş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 afişarea automată lângă caracterul “=” a listei cu constantele corespunzătoare proprietăţii Visible (True sau False). Una dintre valorile constante pot fi alese (selectate) din listă cu ajutorul tastelor direcţionale şi validată prin .
28
Mediul de dezvoltare Visual Basic
Fig. 2.9. Lista cu constantele proprietăţii Visible. • Quick Info (+): poate fi folosită doar în cadrul ferestrei de scriere a codului program. Permite afişarea unor informaţii despre obiectele, proprietăţile, metodele, funcţiile, procedurile şi variabilele din program, în mod separat pentru fiecare. Pentru a obţine informaţii despre un element enumerat mai sus se poziţionează cursorul mouse-ului deasupra denumirii elementului şi se alege opţiunea Quick Info din cadrul meniului Edit. Elementul la care se referă mesajul este prezentat cu text de tip bold (îngroşat); Exemplu: Pentru a obţine informaţii despre tipul proprietăţii Visible a obiectului Form1 (fereastra aplicaţiei) se poziţionează cursorul mouse-ului deasupra cuvântului Visible şi se alege opţiunea Quick Info, rezultatul fiind afişarea sub cuvânt a mesajului Visible As Boolean. Rezultatul este prezentat în figura 2.10.
Fig. 2.10. Tipul proprietăţii Visible a obiectului Form1. • Parameter Info (++): permite afişarea argumentului (parametrilor), a tipului de dată pentru fiecare parametru în parte din cadrul unei funcţii, precum şi tipul de dată returnat de funcţie. Această opţiune poate fi utilizată doar în cadrul ferestrei de scriere a programului sursă. Pentru a avea efect se poziţionează cursorul mouse-ului în zona argumentului funcţiei (între cele două paranteze) şi se activează 29
Visual Basic opţiunea. Această facilitate este foarte utilă pentru că la scrierea unei funcţii afişează toţi parametrii şi tipul parametrilor de care funcţia respectivă are nevoie. Parametrul ce trebuie introdus la un moment dat este prezentat cu text bold. Informaţiile furnizate de opţiunea Parameter Info apar în mod automat şi atunci când, la scrierea codului program, se tastează după denumirea funcţiei caracterul “(” (paranteză rotundă deschisă); Exemplu: Pentru afişarea informaţiilor despre parametrii funcţiei MsgBox se poate proceda în două moduri, astfel: ♦ se tastează (în cadrul ferestrei de scriere a programului sursă) numele funcţiei MsgBox după care se tastează “(“, rezultatul fiind afişarea automată a parametrilor funcţiei (figura 2.11).
Fig. 2.11. Lista parametrilor funcţiei MsgBox. ♦ după ce funcţia a fost introdusă şi se doreşte modificarea sau introducerea unui parametru, se poziţionează cursorul mouse-ului în interiorul argumentului şi se selectează din meniul Edit opţiunea Parameter Info (figura 2.12).
Fig. 2.12. Lista parametrilor funcţiei MsgBox pe parcursul editării funcţiei.
30
Mediul de dezvoltare Visual Basic • Complete Word (+): poate fi utilizată doar în cadrul ferestrei de scriere a programului sursă şi permite completarea unui cuvânt (denumire obiect, proprietate, metodă, funcţie, eveniment, procedură, etc.) dacă s-a introdus suficiente litere din acel cuvânt pentru a fi identificat de interpretorul mediului de programare. Dacă se introduce un anumit număr de litere dintr-un cuvânt care pot fi interpretate şi completate (continuate) în cel puţin două sensuri, atunci apelarea acestei opţiuni are ca efect afişarea unei liste derulante din care se poate alege sensul dorit în funcţie de context; Exemplu: ♦ Dacă pentru funcţia MsgBox se tastează doar primele trei litere Msg şi se apelează opţiunea Complete Word, efectul va fi completarea automată a celor trei litere cu următoarele trei Box rezultând astfel cuvântul funcţiei MsgBox; ♦ Dacă pentru utilizarea obiectului Form1 se introduc primele trei litere For şi se apelează pentru completare opţiunea Complete Word, rezultatul este afişarea unei liste derulante din care se poate alege completarea în funcţie de context (figura 2.13).
Fig. 2.13. Afişarea unei liste derulante pentru completare în funcţie de context. • Bookmarks: permite inserarea şi apelul unor repere în cadrul programului sursă. Odată inserate aceste repere se poate face foarte uşor şi rapid saltul cursorului de editare (scriere) de la o anumită linie program 31
Visual Basic (reper) dintr-o procedură la o altă linie program mult mai îndepărtată. Această opţiune are următoarele subopţiuni (figura 2.14):
Fig. 2.14. Elementele opţiunii Bookmarks. ♦ Toggle Bookmark: permite inserarea unui reper; ♦ Next Bookmark: permite deplasarea (saltul) cursorului de editare la următorul 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). Observaţie: Majoritatea opţiunilor meniului Edit pot fi selectate şi utilizând meniul contextual apelat din cadrul ferestrei de editare a programului sursă (figura 2.15). Pentru apelarea meniului contextual se poziţionează cursorul mouse-ului în interiorul ferestrei de editare a programului sursă şi se execută un click pe butonul din dreapta al mouse-ului.
32
Mediul de dezvoltare Visual Basic
Fig.2.15. Meniul contextual din cadrul ferestrei de editare a programului sursă. Meniul VIEW
Fig.2.16. Meniul View. 33
Visual Basic Acest meniu permite, prin intermediul opţiunilor sale, vizualizarea unor obiecte, proceduri, ferestre sau bare de instrumente astfel: • Code: permite afişarea ferestrei de editare (scriere) a programului sursă a aplicaţiei corespunzător obiectului curent; • Object (+): afişează forma, selectată în cadrul ferestrei Project, împreună cu toate obiectele din cadrul acesteia; • Definition (+): afişează conţinutul unei proceduri, funcţii (apelate) care este apelată de o altă procedură (apelantă). Această opţiune poate fi activată doar în momentul în care cursorul se găseşte în cadrul procedurii apelante. Exemplu: Dacă în cadrul procedurii eveniment Form_Load() asociată ferestrei Form1 se apelează funcţia MsgBox, rezultatul selecţiei opţiunii Definition va fi afişarea unei ferestre ce conţine informaţii despre funcţia MsgBox ; • Last Position (++): plasează cursorul la poziţia în care s-a găsit, înaintea poziţiei 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 apelării opţiunii Last Position cursorul va fi mutat automat la linia 1; • Object Browser (): permite afişarea pe ecran a unei ferestre de dialog denumită fereastra Object Browser în cadrul căreia sunt listate toate obiectele, clasele disponibile în cadrul mediului Visual Basic; • Imediate Window (+): permite afişarea unei ferestre în care programatorul poate introduce valori noi unor variabile sau apela anumite proceduri, dar toate acestea numai când programul a fost lansat în execuţie (start) şi apoi întrerupt (break mode). Utilitatea acestei ferestre constă în faptul că programatorul poate vizualiza efectul schimbării valorilor unor variabile fără să recompileze proiectul; 34
Mediul de dezvoltare Visual Basic • Locals Window: permite afşarea unei ferestre care cuprinde valorile variabilelor utilizate în cadrul aplicaţiei curente; • Watch Window: permite afişarea unei ferestre în cadrul căreia vor fi evaluate valorile unor variabile, funcţii sau expresii, pe parcursul execuţiei programului. Utilitatea acestei opţiuni (facilităţi) constă în faptul că pe parcursul execuţiei programului pot fi vizualizate modificările valorilor variabilelor sau expresiilor utilizate, astfel că în funcţie de această evaluare programatorul poate revenii şi rescrie valorile sau expresiile iniţiale; • Call Stack: poate fi utilizată doar în mod de întrerupere şi are ca efect afişarea unei ferestre ce conţine o listă cu toate procedurile aflate în execuţie şi neterminate; • Project (proiect);
Explorer
(+):
afişează
fereastra
Project
• Properties Window (): afişează fereastra cu proprietăţi (properties) aferente obiectului curent; • Form Layout Window: permite afişarea şi activarea ferestrei de modificare a poziţiei pe desktop a ferestrei curente în timpul execuţiei; • Property Pages (+): poate fi utilizată doar în legătură cu obiectele proiectate de utilizator (ActiveX) şi permite afişarea şi modificarea unor proprietăţi ale acestor obiecte. Înainte de apelul acestei opţiuni obiectul utilizator trebuie selectat; • Toolbox: afişează fereastra cu controale; • Color Palette: afişează fereastra de modificare a paletei de culori a elementelor aplicaţiei; • Toolbars: permite afişarea unor bare cu instrumente în cadrul ferestrei principale. Aceste bare cu instrumente conţin o serie de icon-uri ce 35
Visual Basic pot fi apelate direct printr-un click mouse şi care au aceleaşi efecte ca şi opţiunile 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 opţiunilor sale adăugarea, sau eliminarea unor elemente ale proiectului concretizate în fişiere externe. Tot din cadrul acestui meniu se poate configura modul şi ordinea de execuţie a ferestrelor proiectului (aplicaţiei). Cuprinde următoarele opţiuni: • Add Form: permite afişarea unei ferestre din cadrul căreia se poate alege o nouă fereastră (formă şablon) pentru a fi ataşată aplicaţiei sau deschiderea şi ataşarea uneia deja existente pe disc; • Add MDI Form: permite crearea şi ataşarea la proiectul curent a unei forme MDI (Multiple Document Interface) numită şi forma mama care conţine mai multe ferestre (forme) simple numite şi ferestre fiu. Un proiect 36
Mediul de dezvoltare Visual Basic nu poate avea decât o singură formă (fereastra) MDI. Această opţiune mai permite şi ataşarea la proiect a unei forme MDI deja existente pe disc; • Add Module: permite crearea şi ataşarea unui nou modul ce conţine declaraţii de variabile, tipuri şi proceduri definite de programator şi care vor fi globale pentru proiectul curent (publice) sau ataşarea unui modul existent pe disc. Acest modul se prezintă sub forma unui fişier cu extensia .BAS; • Add Class module: permite crearea şi ataşarea unui nou modul în care se va definii o clasă, adică vor fi definite proprietăţile şi metodele acelei clase, sau ataşarea unui modul clasă existent pe disc. Modulele clasă (ce cuprind definiţia unei clase cu proprietăţile, metodele şi evenimentele ei) se prezintă sub forma unui fişier cu extensia .CLS; • Add User Control: permite crearea şi ataşarea la proiectul curent a unui nou obiect (control) creat de utilizator prin tehnologia ActiveX. Această opţiune permite şi ataşarea unui obiect (ActiveX) deja creat şi existent pe disc sub forma unor fişiere cu extensia .CTL; • Add Property Page: permite crearea unei liste cu proprietăţi pentru un obiect ActiveX ce poate fi ataşat proiectului curent. Listele cu proprietăţi pot fi încărcate de pe disc unde sunt stocate sub forma unor fişiere cu extensia .PAG; • Add User Document: permite crearea şi ataşarea la proiect a unui document utilizator. Acest document utilizator reprezintă un obiect care conţine informaţiile despre instanţa acelui obiect. Documentul utilizator poate fi o bază de date, o tabelă a bazei de date, un obiect ActiveX, etc. Această opţiune 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ă subopţiune Microsoft UserConnection şi permite crearea şi legarea unui obiect ActiveX de o bază de date de tip Oracle, Access, SysBase, dBase, FoxPro, Excel etc.;
37
Visual Basic • Add File … (+): permite introducerea conţinutului unui fişier (text (.TXT), cu declaraţii globale (.BAS), o clasă (.CLS), un control (obiect) definit de utilizator (.CTL), o listă (pagină) cu proprietăţi (.PAG), o formă (.FRM)) existent pe disc în cadrul modulului (proiectului) curent. Fişierul încărcat astfel poate fi utilizat în acelaşi timp şi de către o altă aplicaţie, respectiv un alt proiect; • Remove Form1: permite eliminarea unei ferestre, unui modul sau unui alt fişier din cadrul proiectului curent; • References …: afişează o fereastra de dialog (References dialog box) prin intermediul căreia bibliotecile de obiecte ale altor aplicaţii Windows pot fi folosite în cadrul unei aplicaţii Visual Basic. Bibliotecile de obiecte sunt definite în cadrul fişierelor cu extensia .OLB, .TLB, .OCX şi uneori chiar cu extensia .DLL sau .EXE. Conţinutul unei astfel de biblioteci, adică a obiectelor care o compun împreună cu proprietăţile ş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 afişarea ferestrei Components Window în cadrul căreia pot fi selectate sau deselectate controale externe (definite în cadrul fişierelor cu extensia .OCX) precum şi diferite obiecte aparţinând unor aplicaţii Windows (o tabelă Excel, un document Word, etc.) ce pot fi incluse în aplicaţie datorită tehnologiei ActiveX (sunt conţinute în fişiere cu extensia .EXE sau .DLL). Controalele sau obiectele selectate vor apare sub forma de butoane în cadrul ferestrei cu controale (Toolbox); • Project1 Properties…: permite afişarea ferestrei Project Properties, prin intermediul căreia pot fi setate unele proprietăţi şi caracteristici de compilare a proiectului curent. Fereastra Project Properties conţine în acest sens patru tabele, astfel: General, Make, Compile, Component;
38
Mediul de dezvoltare Visual Basic Meniul FORMAT
Fig. 2.18. Meniul Format. Meniul Format (figura 2.18.) permite efectuarea unor operaţii de aranjare a obiectelor (controalelor) din cadrul unei ferestre. Pentru ca opţiunile acestui meniu să aibă efect, obiectele trebuie să fie selectate. Conţine următoarele opţiuni: • Align: permite aliniere obiectelor selectate la stânga, centrul, dreapta, partea superioară, mijlocul, partea inferioară a formei sau raportat la matricea de puncte (grid) de pe formă; Exemplu: Dacă se încarcă, se poziţionează şi se selectează două butoane de comandă pe o fereastra ca în figura 2.19, iar apoi se alege opţiunea Lefts a submeniului Align rezultatul va fi alinierea la stânga ferestrei a celor două butoane ca în figura 2.20.
39
Visual Basic
Fig. 2.19. Obiecte încărcate şi nealiniate.
Fig. 2.20. Alinierea obiectelor selectate. • Make Same Size: permite redimensionarea (la aceeaşi dimensiune) a tuturor obiectelor selectate; • Size to Grid: permite modificarea dimensiunilor obiectelor selectate în funcţie de matricea de puncte (grid) din cadrul ferestrei; • Horizontal Spacing: are ca efect modificarea spaţiului, pe orizontală, dintre obiectele selectate. Conţine următoarele subopţiuni: 40
♦ ♦ ♦ ♦
Mediul de dezvoltare Visual Basic Make Equal: poate fi utilizată numai atunci când sunt selectate cel puţin trei obiecte, şi are ca efect aplicarea unui spaţiu egal între ele; Increase: permite mărirea spaţiului dintre cel puţin două obiecte selectate; Decrease: permite reducerea spaţiului dintre cel puţin două obiecte selectate; Remove: permite ştergerea (eliminarea) spaţiului dintre cel puţin două obiecte selectate;
• Vertical Spacing: are aceleaşi efecte ca şi submeniul Horizontal Spacing, cu diferenţa că modificările de spaţiu dintre obiectele selectate au loc pe verticală; • Center in Form: permite centrarea obiectelor selectate în cadrul formei (ferestrei) atât în funcţie de lăţimea (Horizontally) cât şi în funcţie de înălţimea (Vertically) acesteia; • Order: permite modificarea vizualizării obiectelor suprapuse. Utilitatea acestui submeniu constă în faptul că dacă se doreşte vizualizarea unui obiect, care se găseşte sub un alt obiect, se selectează obiectul de deasupra, iar apoi se alege opţiunea Send to Back. Pentru a readuce obiectul la starea iniţială (deasupra) se selectează opţiunea Bring to Front. Exemplu: Dacă se încarcă şi se poziţionează 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 opţiunea Send to Back, efectul fiind prezentat în figura 2.22. Pentru revenire se alege opţiunea Bring to Front a aceluiaşi submeniu;
41
Visual Basic
Fig. 2.21. Modificarea vizualizării obiectelor suprapuse.
Fig. 2.22. Vizualizarea obiectelor suprapuse. • Lock Controls: activarea acestei opţiuni are ca efect fixarea obiectelor selectate din fereastra, după ce acestea au fost aduse în poziţiile dorite. În urma alegerii aceste opţiuni obiectele nu vor mai putea fi deplasate din poziţiile curente. Dezactivarea opţiunii se va face prin realegerea ei.
42
Mediul de dezvoltare Visual Basic
Meniul DEBUG
Fig. 2.23. Meniul Debug. Meniul Debug (figura 2.23.) permite depanarea aplicaţiei atât în faza de editare şi scriere a programului cât şi în timpul execuţiei. Opţiunile acestui meniu permit programatorului să urmărească evoluţia anumitor proceduri şi variabile pe parcursul execuţiei programului. Are următoarele opţiuni: • Step Into (): execută aplicaţia pas cu pas, scoţând în evidenţă efectele (comportamentul) fiecărei instrucţiuni din cadrul modulelor proiectului; • Step Over (): are aceleaşi efecte ca şi opţiunea Step Into, cu deosebirea că atunci când se întâlneşte o instrucţiune ce apelează o procedură (Call) se execută acea procedură asemănător unei singure instrucţiuni, fără a se parcurge pas cu pas instrucţiunile ce o compun, trecându-se, apoi, la instrucţiunea ce urmează instrucţiunii care a apelat procedura; 43
Visual Basic • Step Out (++): poate fi utilizată numai în faza de întrerupere a execuţiei programului şi are ca efect executarea tuturor instrucţiunilor care urmează în procedura curentă după instrucţiunea la care s-a făcut întreruperea, după care se revine în faza de întrerupere; • Run to cursor (+): permite execuţia unui bloc de instrucţiuni care se află între o instrucţiune selectată şi poziţia curentă a cursorului de scriere; • Add Watch …: are ca efect afişarea pe ecran a unei ferestre de dialog (Add Watch Window) în cadrul căreia se vor introduce variabile sau expresii a căror valoare va fi permanent afişată şi urmărită, în cadrul ferestrei Debug, pe parcursul execuţiei aplicaţiei. În cadrul acestei ferestre de dialog există şi un grup de butoane radio prin intermediul cărora se poate seta tipul “urmăririi” care poate fi o urmărire normală a evoluţiei valorilor variabilelor şi expresiilor respective, o întrerupere a execuţiei aplicaţiei atunci când valorile sunt adevărate sau o întrerupere a execuţiei atunci când valorile variabilelor sau expresiilor se modifică; • Edit Watch … (+): permite modificarea caracteristicilor de urmărire a variabilelor sau expresiilor ce au fost introduse în urma apelării opţiunii Add Watch; • Quick Watch…(+): permite afişarea unei ferestre care conţine valoarea variabilei sau expresiei urmărite, la un moment dat. Ea poate fi apelată numai în momentul în care aplicaţia a fost întreruptă (break mode); • Toggle Breakpoint (): permite introducerea sau ştergerea unor puncte de întrerupere în execuţia aplicaţiei. Punctele de întrerupere sunt marcaje ataşate instrucţiunilor din cadrul modulelor unui proiect astfel încât în momentul execuţiei aplicaţiei, când sunt găsite aceste marcaje, mediul Visual Basic întrerupe execuţia aplicaţiei la acea instrucţiune. Pentru introducerea unor puncte de întrerupere se deschide fereastra de editare a codului program al aplicaţiei (fereastra Code) apoi se plasează cursorul de 44
Mediul de dezvoltare Visual Basic editare în linia la care se doreşte întreruperea şi se activează opţiunea Toggle Breakpoint, linia respectivă fiind marcată cu o anumită culoare; • Clear All Breakpoints (++): permite ştergerea tuturor punctelor de întrerupere din cadrul modulelor unui proiect. Pentru a şterge un singur punct de întrerupere se poziţionează cursorul de editare în cadrul liniei marcate şi se reactivează opţiunea Toggle Breakpoint; • Set Next Statement (+): permite schimbarea secvenţei de execuţie a aplicaţiei în aşa fel încât următoarea instrucţiune ce va fi executată să fie cea pe care este plasat cursorul. De exemplu, se lansează în execuţie aplicaţia în modul pas cu pas (Step Into sau Step Over) şi se doreşte executarea instrucţiunii de pe linia patru a codului program. Pentru a realiza acest lucru (nu pas cu pas) se poziţionează cursorul de editare pe linia patru şi se activează opţiunea 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) conţine o serie de opţiuni ce sunt folosite pentru lansarea în execuţie şi controlul execuţiei aplicaţiei. Opţiunile acestui meniu sunt: • Start (): permite lansarea în execuţie a aplicaţiei definită în cadrul proiectului curent. În momentul în care este apelată această opţiune 45
Visual Basic mediul Visual Basic compilează proiectul, iar în cazul în care există erori programatorul este avertizat asupra naturii erorii afişând o fereastră în care este descrisă eroarea, după care poziţionează cursorul la linia în care a fost depistată eroarea respectivă. Verificarea programului sursă al aplicaţiei, din punct de vedere a-l sintaxei instrucţiunilor, este efectuată de compilatorul Visual Basic în momentul în care instrucţiunea este introdusă şi se apasă tasta pentru a se trece la o noua linie program; • Start With Full Compile (+): are aceleaşi efecte ca şi opţiunea Start, cu deosebirea că înainte de execuţie, proiectul este compilat în întregime; • Break (+): permite suspendarea (întreruperea) temporară a execuţiei unei aplicaţii lansate în execuţie. Deselectarea acestei opţiuni determină reluarea execuţiei aplicaţiei din punctul în care s-a făcut suspendarea; • End: încheie forţat execuţia unei aplicaţii; • Restart (+): permite reluarea execuţiei aplicaţiei de la început, având ca efect ştergerea tuturor datelor introduse în timpul rulării anterioare a aplicaţiei. Meniul TOOLS
Fig. 2.25. Meniul Tools. Meniul Tools (figura 2.25.) permite utilizarea unor utilitare de urmărire a proprietăţilor obiectelor, de creare a meniurilor aplicaţiei şi de 46
Mediul de dezvoltare Visual Basic configurare a mediului de programare Visual Basic. Conţine următoarele opţiuni: • Add Procedure: permite crearea unei proceduri, funcţii, proprietăţi sau a unei proceduri eveniment (în cazul claselor). Această opţiune poate fi apelată doar în momentul în care fereastra de editare a programului sursă este activă. În urma apelării acestei opţiuni se va afişa o fereastră de dialog în care se introduce numele procedurii, funcţiei sau proprietăţii precum şi natura acesteia, adică dacă ea va fi publică (disponibilă tuturor modulelor proiectului) sau privată (disponibilă doar modulului curent); • Procedure Attributes…: permite afişarea unei ferestre prin intermediul cărei pot fi setate proprietăţile şi metodele unui anumit obiect selectat. Este utilă la definirea unor clase noi; • Menu Editor … (+): are ca efect afişarea ferestrei de concepere a sistemului de meniuri şi submeniuri (Menu Editor) aferente unei aplicaţii; • Options: are ca efect afişarea unei ferestre în cadrul căreia se găsesc şase casete – Editor, Editor Format, General, Docking, Environment, Advanced – prin intermediul cărora pot fi stabilite caracteristicile şi parametrii mediului de programare Visual Basic. Meniul ADD-INS
Fig. 2.26. Meniul Add-Ins.
47
Visual Basic Meniul Add-Ins (figura 2.26.). Prin intermediul opţiunilor pe care le conţine acest meniu se permite lucrul cu anumite aplicaţii, accesorii ale mediului de programare Visual Basic. Aceste opţiuni sunt: • Visual Data Manager …: are ca efect lansarea in execuţie a gestionarului bazelor de date – Visual Data Manager dacă acesta este disponibil; • Report Designer …: permite lansarea în execuţie a aplicaţiei Crystal Reports disponibilă doar în cazul versiunii profesionale a mediului de dezvoltare Visual Basic, utilizat pentru crearea unor rapoarte în legătură cu aplicaţia; • Add-In Manager …: afişează fereastra Add-In prin intermediul căreia pot fi incluse sau şterse anumite aplicaţii în cadrul meniului Add-Ins. Aplicaţiile disponibile sunt listate în cadrul zonei de listare Available AddIns din cadrul ferestrei Add-In. Pentru încărcarea unor aplicaţii în cadrul meniului Add-Ins se selectează căsuţa aflată în dreptul numelui aplicaţiei respective din listă. Meniul WINDOW
Fig. 2.27. Meniul Window.
48
Mediul de dezvoltare Visual Basic Meniul Window (figura 2.27.) conţine un set de opţiuni care pot fi utilizate pentru aranjarea sau modificarea ferestrelor în cadrul mediului de programare Visual Basic. Are următoarele opţiuni: • Split: poate fi utilizată doar în legătură cu fereastra de editare a programului sursă al aplicaţiei şi are ca efect, în urma activării (marcarea opţiunii cu ), scindarea ferestrei pe orizontală în două părţi ce au acelaşi conţinut. Revenirea la starea iniţială se face demarcând această opţiune printr-un click mouse pe denumirea ei. Rezultatul unei astfel de operaţii este prezentat în figura 2.28;
Fig. 2.28. Efectul opţiunii Split. • Tile Horizontally: are ca efect reordonarea tuturor ferestrelor deschise din cadrul mediului de programare sub formă alăturată pe orizontală; • Tile Vertically: are ca efect reordonarea tuturor ferestrelor deschise din cadrul mediului de programare sub formă alăturată pe verticală;
49
Visual Basic • Cascade: permite reordonarea ferestrelor deschise sub formă suprapusă asemănător unei “cascade”. Meniul HELP
Fig. 2.29. Meniul Help. Meniul Help (figura 2.29.). Opţiunile acestui meniu asigură asistenţă programatorului prin furnizarea tuturor informaţiilor necesare despre mediul de dezvoltare Visual Basic, astfel: • Microsoft Visual Basic Help Topics: afişează conţinutul sistemului de asistenţă (ajutor) al Visual Basic-ului sub forma unei liste ce conţine mai multe domenii de referinţă (asemănător cu o bibliotecă) asupra utilizării mediului de dezvoltare; • Books Online …: permite accesarea manualului de asistenţă existent în cadrul kit-ului de instalare (CD-ROM); • Obtaining Technical Support …: permite obţinerea unor informaţii 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ă opţiune conţine o serie de legături (adrese) spre site-uri care oferă informaţii de ultimă oră despre utilizarea mediului de dezvoltare Visual Basic. Avantajul acestei opţiuni constă în actualitatea informaţiilor pe care le oferă; 50
Mediul de dezvoltare Visual Basic • About Microsoft Visual Basic: afişează o fereastră care conţine informaţii despre versiunea curentă a mediului Visual Basic, licenţa 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 corespondenţa acestora cu unele opţiuni din cadrul liniei de meniu principal. Buton din cadrul toolbar-ului
Acţiune
Opţiuni echivalente din cadrul meniului Add Project … din cadrul meniului File
Creează un nou proiect (sau un grup de proiecte) Creează o noua formă Add Form din cadrul (fereastra) meniului Project Deschide (încarcă) un Open Project din cadrul proiect existent pe meniului File disc Salvează proiectul Save Project din cadrul curent meniului File Afişează fereastra de Menu Editor din cadrul creare a meniurilor meniului Tools Copierea în zona de Cut din cadrul memorie a textului sau meniului Edit obiectului selectat cu ştergerea lui la sursă (mutare) Copierea în zona de Copy din cadrul meniului memorie a textului sau Edit obiectului selectat Preluarea şi repunerea Paste din cadrul meniului la destinaţie a Edit 51
Visual Basic conţinutului zonei de memorie (clipboard) Căutarea unui şir de caractere (text) în cadrul programului sursă a proiectului Anulează ultima (ultimele) operaţie executată de utilizator Reface ultima (ultimele) operaţie de anulare (Undo) Lansează în execuţie aplicaţia (proiectul) curentă Întrerupe temporar execuţia aplicaţiei Încheie execuţia aplicaţiei Afişează fereastra Proiect Afişează fereastra Properties Afişează fereastra Form Layout Afişează fereastra Object Browser Afişează fereastra Toolbox
Find din cadrul meniului Edit Undo din cadrul meniului Edit Redo din cadrul meniului Edit Start din cadrul meniului Run Break din cadrul meniului Run End din cadrul meniului Run Project Explorer din cadrul meniului View Properties Window din cadrul meniului View Form Layout Window din cadrul meniului View Object Browser din cadrul meniului View Toolbox din cadrul meniului View
2.3.2. Fereastra cu controale (Toolbox) 52
Mediul de dezvoltare Visual Basic
Pointer
Picture Box
Label
Text Box
Frame
Command Button
Check
Option Button
Combo
List Box
Horizontal
Vertical
Scroll
Timer
Drive List Box
Directory
File List Box
Shape
Line
Image
Data
OLE DBList
Common Dialog DBCombo
Fig. 2.30. Toolbox – ul (Fereastra cu controale). 2.3.2.1. Elementele ferestrei cu controale (Toolbox) Fereastra cu controale conţine un set de butoane ce reprezintă obiectele (elemente de control) care pot fi utilizate de programator pentru construirea unei aplicaţii. 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 selectării unui buton din cadrul toolbox-ului. Atunci când butonul ce reprezintă pointer-ul este apăsat controalele din cadrul formei pot fi deplasate plasând cursorul (pointer-ul) mouse-ului pe acel element de 53
Visual Basic control şi tinând apăsat butonul stâng al mouse-ului se deplasează controlul pe suprafaţa formei, operaţiune 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 situaţi în jurul elementului se deplasează mouse-ul ţinând butonul stâng apăsat. Pointer-ul din cadrul toolbox-ului este activat implicit după ce un element de control a fost încărcat pe formă; • Label (eticheta):
Fig. 2.31. Eticheta. Label (figura 2.31) reprezintă o etichetă explicativă ce conţine un anumit text ce va fi afişat pe suprafaţa formei. El poate fi plasat pe forma pentru a evidenţia anumite aspecte ale aplicaţiei. Conţinutul etichetei, textul care va fi afişat, o reprezintă valoarea proprietăţii Caption care este dată de un şir de caractere. Iniţial proprietatea Caption este egală cu "Label1" la prima etichetă, "Label2" pentru cea de a doua şi aşa mai departe. Pentru modificarea valorii acestei proprietăţi se selectează Caption din cadrul ferestrei Properties (click mouse) şi se tastează textul dorit. Culorile fondului şi textului etichetei pot fi schimbate modificând valorile proprietăţilor BackColor, respectiv ForeColor sau prin intermediul ferestrei Color Palette;
• Frame (cadru,chenar) 54
Mediul de dezvoltare Visual Basic
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 realizării unei anumite operaţii. Titlul chenarului este dat de valoarea proprietăţii 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 încărcarea 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 poziţionarea mouse-ului pe unul dintre cei opt pointeri situaţi în jurul controlului de pe fereastră şi ţinând butonul stâng apăsat se va deplasa mouse-ul până când chenarul are dimensiunea dorită, apoi se lasă butonul liber; ♦ selectarea din cadrul cutiei cu controale a controlului ce se doreşte a fi încărcat în interiorul chenarului; ♦ poziţionarea cursorului mouse-ului în interiorul chenarului şi ţinând butonul stâng apăsat se deplasează mouse-ul setând astfel dimensiunea controlului respectiv. Mutarea chenarului pe foaie face ca şi controalele din interiorul acestuia să fie mutate în acelaşi timp, ele păstrându-şi poziţia în cadrul chenarului;
• ChekBox (caseta de opţiune)
55
Visual Basic
Fig. 2.33. Caseta de opţiune. ChekBox (figura 2.33) este o casetă însoţită de un anumit text ce reprezintă o opţiune. Selectarea casetei are ca efect activarea opţiunii (comenzii) respective iar deselectarea casetei are ca efect dezactivarea opţiunii. Principalele proprietăţi ale acesteia sunt Caption şi Value. Caption reprezintă numele opţiunii ce însoţeşte caseta de opţiune (implicit valoarea acestei proprietăţi este Chek1, Chek2 etc.) şi Value care poate avea următoarele valori: ♦ 0 - Uncheked: căsuţa nemarcată - ceea ce semnifică opţiune inactivă; ♦ 1 – Cheked: căsuţa marcată prin două diagonale în interiorul acesteia, ceea ce semnifică opţiunea activă; ♦ 2 – Grayed: căsuţa umplută cu culoarea gri. Modificarea stării unei căsuţe de opţiune se face printr-un click mouse pe aceasta, sau cu ajutorul tastaturii prin acţionarea tastei (bara de spaţiu), rezultatul fiind unul dintre cele trei cazuri de mai sus. Dacă, într-o fereastră sunt mai multe căsuţe de marcaj deplasarea de pe una pe alta se va face (în lipsa mouse-ului) cu ajutorul tastei ; • ComboBox (caseta combo)
Fig. 2.34. Caseta combo (casetă derulantă). ComboBox (figura 2.34) este o combinaţie (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 opţiune) în caseta de editare şi prin acţionarea tastei , introducerea acestuia în caseta 56
Mediul de dezvoltare Visual Basic 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 săgeata din dreapta casetei de editare. În funcţie de posibilităţile de combinare a celor două controale ce alcătuiesc cutia combo există trei tipuri de casete combo. Stabilirea unuia dintre aceste tipuri se face prin intermediul proprietăţii Style care poate lua una din următoarele valori: ♦ 0 - Dropdown Combo: care reprezintă caseta combo propriuzisă; ♦ 1 - Simple Combo: este afişată şi activă doar caseta de editare; ♦ 2 - Dropdown List: este activă doar caseta de listare. Pentru adăugarea unui element în cadrul cutiei de listare se va folosi metoda AddItem cu structura: .AddItem "" unde: ♦ - reprezintă numele casetei combo respective şi este dat de valoarea proprietăţii Name a acesteia; ♦ "" - 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 următorul format: .RemoveItem
unde: ♦ - reprezintă poziţia elementului din listă care va fi şters (pentru primul element din listă acesta este 0). 57
Visual Basic Exemplu: Pentru a şterge din lista casetei combo primul elemente se va introduce următoarea linie program: Combo1.RemoveItem (0) Datorită faptului că o casetă combo este rezultatul combinării a două tipuri de controale, aceasta le moşteneşte proprietăţile. Cele mai importante proprietăţi sunt: ♦ List: reprezintă un tablou ale cărui elemente sunt elementele din cadrul casetei de listare; ♦ ListIndex: reprezintă numărul corespunzător poziţiei elementului selectat din cadrul listei; ♦ ListCount: reprezintă numărul de elemente din listă la un moment dat; ♦ Sorted (valoare True): permite sortarea elementelor din listă în ordine alfabetică. Modificările 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ă săgeţi, plasate la extremităţile acestora, şi un cursor care se deplasează de la un capăt la altul al barei. Deplasarea, într-un sens sau 58
Mediul de dezvoltare Visual Basic altul, este generată de activarea săgeţilor care poate fi făcută printr-un click mouse pe ele, sau cu ajutorul tastelor direcţionale. Aceste controale pot fi folosite şi separat de alte controale (textbox, listbox) fiind necesară doar setarea corespunzătoare a anumitor proprietăţi ale acestora. Dintre proprietăţile barelor de deplasare cele mai importante sunt: ♦ Min: corespunde valorii minime până la care poate fi deplasat cursorul pe bară (cursorul în sus pentru barele verticale şi la stânga pentru cele orizontale); ♦ Max: corespunde valorii celei mai mari până la care poate fi deplasat cursorul pe bară (cursorul în jos pentru barele verticale şi la dreapta pentru cele orizontale); ♦ Value: reprezintă valoarea corespunzătoare poziţiei cursorului. Pentru stabilirea pasului care va fi făcut la o deplasare a cursorului pe bară se folosesc proprietăţile SmallChange si LargeChange. Astfel cursorul va face pasul stabilit de valoarea proprietăţii SmallChange atunci când sunt acţionate săgeţile cu ajutorul mouse-ului, iar pasul stabilit de LargeChange când se acţionează cu mouse-ul porţiunea barei de deplasare situată între cele două săgeţi. Implicit valoarea proprietăţilor SmallChange şi LargeChange este 1, iar cele ale proprietăţii 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 când se modifică valoarea proprietăţii Value; • Timer (minutar): reprezintă un element de control folosit atunci când se doreşte ca în acelaşi timp cu aplicaţia să se execute şi alte procese (proceduri, instrucţiuni etc.). Acest tip de control este vizibil doar în momentul proiectării aplicaţiei şi nu în momentul execuţiei acesteia. La expirarea intervalului de timp se va declanşa evenimentul Timer acesta lansând în execuţie procedura pentru care a fost creat. Intervalul de timp este determinat prin atribuirea unei valori (reprezentată prin milisecunde) proprietăţii Interval a controlului Timer. Pentru a opri minutarul şi a întrerupe apelurile repetate ale procedurii eveniment _Timer(), trebuie atribuită valoarea 59
Visual Basic False proprietăţii Enabled. Pentru reluare apelurile repetate trebuie atribuită valoarea True proprietăţii 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 unităţii 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 conţine calea spre directorul selectat. Selectarea unui director (deschiderea lui) se face printr-un dublu click mouse pe numele acestuia, încărcându-se astfel proprietatea Path. Procedura asociată evenimentului Change a casetelor de selecţie a directoarelor este apelată în momentul în care valoarea proprietăţii Path se modifică, deci atunci când se execută un dublu click mouse pe numele unui director din listă;
• Shape (elemente grafice)
60
Mediul de dezvoltare Visual Basic Fig. 2.37. Elemente grafice. Acest tip de control (figura 2.37) permite plasarea pe formă a următoarelor figuri geometrice: patrulater, pătrat, elipsă, cerc, patrulater cu colţuri arcuite, pătrat cu colţuri arcuite. Dintre proprietăţile acestui control pot fi enumerate: ♦ Shape - are ca valoare figura geometrică ce va fi folosită. Ea poate avea următoarele valori: 0 – Rectangle : patrulater; 1 - Square : pătrat; 2 - Oval : elipsă; 3 - Circle : cerc; 4 - Rounded rectangle : patrulater cu colţurile arcuite; 5 - Rounded square : pătrat cu colţuri arcuite. ♦ Fillstyle - valoarea acestei proprietăţi reprezintă modelul de umplere a figurii respective. Poate avea următoarele 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 stânga la dreapta; 5 - Downward diagonal : linii oblice de jos în sus şi de la stânga la dreapta; 6 – Cross : combinaţie între 2 şi 3; 7 - Diagonal cross : combinaţie între 4 şi 5. Odată introduse în cadrul foii de lucru aceste elemente grafice nu au decât un rol decorativ; • Image (imagine)
61
Visual Basic Fig. 2.38. Imagine. Acest tip de control (figura 2.38) odată încărcat pe foaia de lucru, permite afişarea imaginilor care se găsesc în fişierele cu extensiile .bmp, .wmf, .ico, .dib. Între caseta de imagini şi acest control există unele deosebiri cum ar fi, de exemplu, lipsa unor proprietăţi (Autoredraw, Autosize, Clipcontrols, etc.), cât ş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 încărcată, cu ajutorul proprietăţii Picture, poate fi redimensionată trăgând cu mouse-ul de pointerii de pe marginea imaginii. Iniţial proprietatea Stretch are valoarea False; • OLE: reprezintă un element de control ce permite încărcarea unui anumit obiect aparţinând unei alte aplicaţii 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 înregistrărilor din cadrul unei baze de date; • PictureBox (caseta de imagini)
62
Mediul de dezvoltare Visual Basic Fig. 2.40. Caseta de imagini. Pentru a include în aplicaţie şi imagini, se vor folosi casetele de imagini (fig. 2.40) care permit stocarea imaginilor (numai fişiere cu extensia .ico, .bmp, .wmf). Imaginile pot fi asociate aplicaţiei în două moduri: ♦ în momentul conceperii interfeţei utilizând proprietatea Picture aparţinând obiectului caseta de imagini; ♦ pe parcursul execuţiei programului utilizând instrucţiunea următoare: .Picture =LoadPicture() - reprezintă calea spre fişierul (.bmp, .ico, .wmf) care conţine imaginea ce va fi încărcat în această zonă. Pentru a elimina imaginea încărcată în zona de imagini se va folosi instrucţiunea: .Picture = LoadPicture("") Datorită faptului că mărimea casetei de imagini nu este totdeauna egală cu cea a imaginii încărcate, făcând vizibilă doar o parte a acesteia, se va seta proprietatea AutoSize (autodimensionare) pe valoarea True, activând astfel capacitatea de autodimensionare a casetei de imagini, care se va dimensiona, în mod automat, în funcţie de dimensiunile imaginii încărcate;
• TextBox (caseta de editare)
63
Visual Basic Fig. 2.41. Caseta de editare. Acest tip de control (figura 2.41) permite introducerea de la tastatură a diferitelor tipuri de informaţii, operaţiune realizată de către utilizatorul aplicaţiei. În cadrul acestei casete utilizatorul va putea să introducă informaţiile care-i sunt necesare execuţiei aplicaţiei şi care pot fi alfanumerice (sub forma unui şir de caractere), sau pot fi numerice. Proprietatea care va fi încărcată cu conţinutul 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 funcţia Val, care transformă un şir de caractere în numărul reprezentat de cifrele din cadrul şirului. Exemplu: Se va introduce în cadrul casetei de editare numărul 686. Pentru ca el să fie considerat de aplicaţie număr şi nu şir de caractere se va scrie următoarea linie program: numar = Val(.Text) unde: numar - va fi egal cu numărul 686 şi va putea fi folosit în operaţii matematice; - reprezintă numele casetei de editare dat de proprietatea Name a acesteia şi care iniţial este egală cu Text1 pentru prima caseta de editare, Text2 pentru cea de a doua şi aşa mai departe pentru celelalte casete de editare introduse în cadrul foii de lucru. Caseta de editare posedă numeroase alte proprietăţi care permit modificarea formei de afişare a conţinutului 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 decât caseta de editare, pentru a-l putea vizualiza în întregime, se va seta proprietatea ScrollBars pe una din următoarele valori: 0 - None : fără bare de defilare; 1 - Horizontal : bara de defilare pe orizontală; 2 - Vertical : bara de defilare pe verticală; 64
Mediul de dezvoltare Visual Basic 3 - Both : atât bara de defilare pe orizontală cât ş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 aceleaşi foi de lucru se foloseşte tasta . În program, pentru aceeaşi operaţie, se foloseşte metoda SetFocus valabilă tuturor controalelor (obiectelor) cu excepţia obiectelor Cadru, Caseta imagini, Linie, Meniu, Figuri grafice şi Minutar. Sintaxa metodei SetFocus este: .SetFocus În urma folosirii acestei metode obiectul respectiv devine activ cu condiţia 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 acţionate cu ajutorul mouse-ului sau tastei realizează operaţiunea precizată de textul de pe buton. Aceste controale sunt numite butoane deoarece la acţionarea lor produc un efect vizual ce dă senzaţia apăsării unui buton real. Principalele proprietăţi ale butoanelor de comandă sunt: ♦ Caption: a cărei 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 combinaţia de taste + caracterul ce se află după simbolul &); ♦ Cancel (valoare True): generează evenimentul Click în timp ce utilizatorul acţionează tasta ; 65
Visual Basic ♦ 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 declanşa o acţiune la apăsarea tastei ). 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 decât un singur buton activ. Dacă, de exemplu, pe o foaie de lucru se încarcă două butoane, iar la primul proprietatea Default are valoarea True, setând valoarea True şi la proprietatea Default a celui de-al doilea buton, proprietatea Default a primului buton este încărcată automat cu valoarea False, astfel încât numai un buton de pe fereastră poate avea proprietatea Default setată pe True; ♦ Enabled (valoare False): permite dezactivarea butonului. Odată dezactivat orice acţiune asupra acestui obiect nu mai are nici un efect; • OptionButton (buton de opţiune)
Fig. 2.43. Buton de opţiune. Butoanele de opţiune (figura 2.43) cunoscute şi sub denumirea de butoane radio datorită faptului că dintre mai multe butoane de opţiune pot fi active numai unul la un moment dat. Un buton de opţiune devine activ în momentul în care cercul care-l reprezintă este plin. Deplasarea pe aceste butoane şi activarea lor se face asemănător casetelor de opţiune. Activarea (dezactivarea) unui buton de opţiune este determinată de proprietatea Value care poate avea următoarele valori: ♦ False: cercul este gol, opţiunea reprezentată de butonul radio este dezactivată; 66
Mediul de dezvoltare Visual Basic ♦ True: cercul este plin, deci opţiunea respectivă este activată. Butoanele de opţiune, din cadrul diferitelor aplicaţii Windows, sunt de obicei grupate într-un chenar. În acest caz, pot fi create mai multe grupuri de butoane radio total independente. Alegerea unei opţiuni dintr-un chenar (cadru) nu influenţează în nici un fel celelalte grupe de opţiuni care se găsesc în chenare diferite. Textul din dreptul cercului este dat de valoarea proprietăţii Caption a butoanelor de opţiune şi care poate fi situat în dreapta sau stânga acestui în funcţie de valoarea proprietăţii Alignment. Proprietatea Alignment poate avea două valori: ♦ 0 - Left Justify: textul este situat în stânga cercului (dreapta utilizatorului); ♦ 1 - Right Justify: textul este situat în dreapta cerculeţului (stânga utilizatorului); • ListBox (caseta de listare)
Fig. 2.44. Caseta de listare. Acest tip de control (figura 2.44.) permite stocarea şi afişarea unor elemente (şiruri de caractere) sub forma unei liste. Dacă numărul de elemente depăşeşte dimensiunea casetei de listare (pe verticală), în partea stângă a acesteia va apare o bară de deplasare pe verticală, care prin acţionarea cu ajutorul mouse-ului, face posibilă vizualizarea tuturor elementelor din cadrul casetei. Pentru gestionarea elementelor din cadrul listei se folosesc pe lângă metodele AddItem, RemoveItem (tratate la casetele combo) şi următoarele metode: Clear şi Refresh. Asfel: ♦ .Clear: şterge toate elementele din listă; ♦ .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 după ce s-a 67
Visual Basic realizat poziţionarea pe element cu ajutorul tastelor direcţionale. Un element selectat din cadrul listei este prezentat în video invers. Proprietăţile List, ListCount, ListIndex şi Sorted tratate la casetele combo sunt valabile şi pot fi utilizate în mod asemănător şi la cutiile de listare; • DriveListBox (caseta de listare şi selecţie a unităţilor de disc)
Fig. 2.45. Caseta de listare şi selecţie a unităţilor de disc. Acest tip de control (figura 2.45) sunt combobox-uri ale căror elemente reprezintă diferitele unităţi de disc existente pe calculator, permiţând astfel selectarea şi activarea uneia dintre acestea în funcţie de opţiunea utilizatorului. Un click mouse pe săgeata din stânga casetei de editare provoacă deschiderea cutiei de listare şi afişarea unităţilor existente. Cea mai importantă proprietate a acestui control este proprietatea Drive care este încărcată cu numele unităţii selecţionată din listă şi prezentă în zona de editare a cutiei. Printre evenimentele cele mai importante se numără evenimentul apăsării unei taste (KeyPress) şi cel survenit în urma alegerii unei noi unităţi, adică evenimentul Change (schimbare). Ca unităţi 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 selecţie a fişierelor)
68
Mediul de dezvoltare Visual Basic
Fig. 2.46. Caseta de listare şi selecţie a fişierelor. Acest control (figura 2.46) reprezintă o casetă de listare conţinând toate fişierele directorului curent. Ea se include în aplicaţie atunci când se doreşte deschiderea unui anumit fişier. La încărcarea acestei casete, din cadrul toolbox-ului, ea va conţine implicit fişierele din directorul (curent) în care este instalat Visual Basic-ul. Executând un dublu click mouse pe denumirea unui fişier din listă, proprietatea FileName a acestui control va fi încărcată cu numele fişierului şi calea spre acel fişier. Pentru a afişa în cadrul zonei de listare a casetei fişierele care se găsesc într-un director, va trebui încărcată proprietatea Path precizându-se calea spre acel director, astfel: .Path = "" Proprietatea Pattern permite definirea unui filtru de afişaj a fişierelor, adică se vor afişa doar acele fişiere care au extensia setată în cadrul proprietăţii Pattern. În cadrul acesteia pot fi utilizate simbolurile * şi ?. Primul simbol se va utiliza atunci când se doreşte afişarea tuturor fişierelor care au o anumită extensie indiferent de numele acestora (*.extensie) sau a fişierelor 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 fişierului. De exemplu, dacă se doreşte afişarea fişierelor care au primul caracter din numele extensiei litera "d" indiferent de celelalte şi de numele acestora, proprietatea Pattern va fi definită astfel Pattern = "*.d??" . 69
Visual Basic Casetele de selectare a fişierelor recunosc, pe lângă celelalte evenimente comune tuturor controalelor (cu unele excepţii: Timer), două evenimente particulare: ♦ PathChange: care este declanşat fie de schimbarea valorii proprietăţii Path, fie de atribuirea unei valori proprietăţii FileName, care conţine calea spre un alt director decât cel setat prin Path; ♦ PatternChange: este declanşat la schimbarea valorii proprietăţii Pattern, sau atunci când proprietatea FileName este încărcată cu o valoare în care se specifică un alt filtru de căutare, diferit de cel setat în cadrul proprietăţii Pattern. În legătură cu acest tip de control mai pot fi folosite şi proprietăţile referitoare la atributele unui fişier. Acestea pot fi: Archive, Normal, Hidden, ReadOnly şi System, care pot avea valoarea True sau False. Setarea primei valori are ca efect afişarea fişierelor care au cel puţin unul din atributele setate pe această valoare, iar cea de-a doua valoare are efectul invers primei. Proprietăţile Archive, Normal şi ReadOnly au valoarea True setată implicit, iar Hidden si System au valoare implicită valoarea False. De obicei caseta de selecţie a fişierelor se foloseşte în combinaţie cu caseta de selecţie a directoarelor şi caseta de selecţie a unităţilor 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 poziţii, modele şi culori. Modificarea poziţiei liniei se face plasând cursorul mouse-ului pe linie şi ţinând apăsat butonul stâng se deplasează linia în direcţia dorită. Modificarea lungimii liniei se face plasând cursorul mouse-ului pe unul dintre cei doi pointeri aflaţi la capetele liniei şi ţinând apăsat butonul stâng se deplasează mouse-ul în direcţia 70
Mediul de dezvoltare Visual Basic dorită. Modelul liniei este dat de valoarea proprietăţii BorderStyle care poate fi: 0 - Transparent : transparentă; 1 - Solid : plină; 2 - Dash : intreruptă; 3 - Dot : punctată; 4 - Dash-Dot : combinaţie între 2 şi 3; 5 - Dash-Dot-Dot : combinaţie între 2 şi 3; 6 - Inside solid : plină. Pentru a modifica culoarea liniei se setează valoarea proprietăţii 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 operaţii cum ar fi: deschiderea unor fişiere, salvarea fişierelor, 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 execuţiei aplicaţiei. Proprietăţile cele mai importante ale acestui control pot fi vizualizate şi modificate cu ajutorul lui Custom care permite afişarea unei ferestre de dialog (figura2.49). 71
Visual Basic
Fig. 2.49. Fereastra de setare a proprietăţilor obiectului Common Dialogs Control Properties. În cadrul tabelelor acestei ferestre se găsesc toate proprietăţile controlului CommonDialog. Astfel: ♦ Tabela Open/Save As cuprinde proprietăţile ce aparţin unei ferestre de deschidere/salvare a fişierelor. Cele mai importante elemente ale ferestrei sunt: DialogTitle: corespunde proprietăţii cu acelaşi nume din fereastra cu proprietăţi a cărei valoare reprezintă numele ferestrei de deschidere/salvare a fişierelor. Este creată cu ajutorul controlului CommonDialog; FileName: are ca valoare calea şi numele fişierului selectat din cadrul ferestrei create şi afişate pe parcursul execuţiei aplicaţiei; InitDir: reprezintă directorul curent în momentul afişării ferestrei; Filter: reprezintă filtrul de căutare a fişierelor. ♦ Tabela Color cuprinde proprietăţile aferente ferestrei de selectare a culorilor dintre care cea mai importantă este: Color: reprezintă culoarea selectată din cadrul ferestrei. ♦ Tabela Font cuprinde proprietăţile aferente ferestrei de selecţie a fonturilor. 72
Mediul de dezvoltare Visual Basic ♦ Tabela Print cuprinde proprietăţile aferente ferestrei de setare a parametrilor imprimantei. ♦ Tabela Help cuprinde proprietăţile aferente ferestrei de asistenţă (help). De exemplu, dacă se doreşte afişarea unei ferestre de deschidere a fişierelor în cadrul aplicaţiei, se procedează astfel: a). se deschide prin intermediul proprietătii 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 următor: CommonDialog1.ShowOpen astfel: Private Sub Command1_Click() CommonDialog1.ShowOpen End Sub De reţinut 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 asemănător cu controlul ComboBox, dar care se referă la înregistrările unei baze de date. 2.3.2.2. Încărcarea şi modificarea elementelor ferestrei. 73
Visual Basic Pentru a încărca 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 suprafaţa formei; ţinând apăsat butonul stâng se deplasează mouse-ul determinând dimensiunea elementului ce va fi încărcat în momentul părăsirii butonului stâng al mouse-ului. Prin apăsarea butonului drept al mouse-ului, când cursorul acestuia se află pe suprafaţa toolbox-ului, va apare un meniu popup cu un set de opţiuni ce permit diferite operaţii asupra toolbox-ului, opţiuni ce se găsesc şi în cadrul meniurilor din fereastra principală. Structura ferestrei de controale (toolbox) din figura 2.30 nu constituie un standard, conţinutul acestei ferestre putând 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 afişate prin apăsarea tastei î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 opţiunea Components … şi care este prezentată în figura 2.51.:
74
Mediul de dezvoltare Visual Basic
Fig. 2.51. Fereastra Components. Elementele acestei ferestre sunt: ♦ Tabela Controls care conţine: • Lista cu controale: cuprinde toate controalele disponibile la un moment dat; • Butoanele de comandă Ok, Cancel, Browse…, Help. Butonul Browse…, permite încărcarea de pe disc şi a altor fişiere (cu extensia .OCX) ce conţin controale sau obiecte ale altor aplicaţii. ♦ Tabela Designers care conţine acele controale de tip ActiveX care vor fi ataşate în cadrul opţiunii Add ActiveX Designer din meniul Project; ♦ Tabela Insertable Objects care conţine obiectele disponibile, ale altor aplicaţii Windows, care pot fi încărcate şi utilizate în aplicaţie (fişiere cu extensia .OCX, .DLL, .EXE). Pentru a selecta controalele sau obiectele din cadrul listei se marchează caseta de opţiune ce însoţeşte denumirea acestora. Odată selectate ele vor apărea în cadrul toolbox-ului.
75
Visual Basic
2.3.3. Forma (Form)
Fig. 2.52. Forma. Forma (figura 2.52) sau macheta de lucru (fereastra aplicaţiei) este obiectul fundamental al interfeţei aplicaţiei 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 opţiune, etichete, chenare, casete de editare, etc. În general fereastra este primul obiect afişat la lansarea în execuţie a unei aplicaţii. În momentul conceperii interfeţei, Visual Basic-ul afişează întotdeauna o fereastră de lucru numită fereastra principală. Dacă însă proiectul aplicaţiei conţine mai multe ferestre, selectând opţiunea Project1 Properties din cadrul meniului Project, iar din fereastra afişată se poate selecta în caseta Start Up Object fereastra ce se doreşte a fi lansată prima în execuţie. Pentru a crea o nouă foaie de lucru (fereastra) se va selecta opţiunea 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 aparţinând acesteia, 76
Mediul de dezvoltare Visual Basic numite ferestre “fiu”. Crearea unei ferestre “mamă” se face selectând opţiunea Add MDI form din cadrul meniului Project. Visual Basic ataşează automat numele acesteia celorlalte fişiere din cadrul ferestrei Project. Pentru ca o fereastră simplă să aparţină ferestrei “mamă” valoarea booleană a proprietăţii MDIChild, corespunzătoare ferestrei simple, trebuie să fie setată pe True (adevărat). Într-o fereastră “mamă”, în afară de ferestrele “fiu”, nu pot fi implementate decât casete de imagini precum şi acele obiecte care au proprietatea Align (poziţionare). Apăsând butonul drept al mouse-ului, atunci când acesta este pe formă, va apare un meniu popup ale cărui opţiuni sunt şi în cadrul meniurilor din cadrul ferestrei principale.
2.3.4. Fereastra Project 77
Visual Basic
Buton pentru vizualizarea codului program
Buton pentru vizualizarea obiectelor
Buton pentru activare/deactivare a modului de afişare sub formă de foldere a claselor
Numele proiectului
Modulele (fişierele) componente ale proiectului
Fig. 2.53. Fereastra Project. Fereastra Project (figura 2.53) afişează modulele (fişierele) ce compun proiectul unei aplicaţii. Elementele componente ale acestei ferestre sunt: Caseta în care sunt listate modulele proiectului. Modulele proiectului sunt fişiere ce conţin forme (.FRM), declaraţii globale (.BAS), definiţiile unor clase (.CLS), a unor controale (.CTL) şi fişiere ce conţin anumite resurse - imagini, text (.RES) etc;
•
Butonul View Object
care permite vizualizarea formei 78
Mediul de dezvoltare Visual Basic corespunzătoare modulului selectat în cadrul listei. Acest buton este valabil numai pentru fişierele ce conţin forme; • Butonul View Code permite afişarea ferestrei Code (ferestrei de editare a codului program) corespunzătoare modulului selectat în cadrul listei. Acest buton nu poate fi folosit atunci când se selectează un fişier resursă; • Butonul Toggle Folders permite afişarea/ascunderea claselor şi a modulelor .BAS sub forma unor foldere, iar a instanţelor la acele clase sub forma unor fişiere ale folderelor. Dacă atunci când cursorul mouse-ului se găseşte în cadrul acestei ferestre se apasă butonul drept, va fi afişat un meniu popup care permite o serie de operaţiuni asupra modulelor din lista.
2.3.5. Fereastra Properties Caseta derulantă cu obiecte
Lista cu proprietăţi
Caseta cu explicaţii
Fig. 2.54. Fereastra Properties. Fereastra Properties (figura 2.54) conţine denumirea proprietăţilor (prima coloana) şi valorile acestora (a doua coloana), corespunzătoare 79
Visual Basic obiectului curent (forma sau control). Prin intermediul acestei ferestre pot fi modificate valorile proprietăţilor unui obiect, valori ce determină comportamentul obiectului respectiv în cadru aplicaţiei. Elementele acestei ferestre sunt: • Caseta derulantă cu obiecte (Object Box): conţine 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 proprietăţi (Properties List): este alcătuită din două tabele. Prima tabela Alphabetic, conţine coloanele cu numele proprietăţilor şi valorile acestora, sortate în ordine alfabetica după numele proprietăţilor. Cea de-a doua tabelă Categorized, conţine lista proprietăţilor ordonată pe grupe de proprietăţi. • Caseta cu explicaţii: conţine o prezentare succintă a principalelor caracteristici ale proprietăţii selectate. Pentru modificarea valorilor unei proprietăţi se execută un click mouse pe numele proprietăţii respective din prima coloana şi se introduc valorile corespunzătoare în coloana a doua. Unele proprietăţi, atunci când sunt selectate, duc la apariţia butonului în coloana de valori, prin activarea căruia se permite încărcarea valorii proprietăţii. Aceste proprietăţi sunt cele care au ca valoare numele unor fişiere 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 proprietăţi au o lista de valori predefinită. Pentru vizualizarea acestei liste se selectează proprietatea şi se apasă butonul marcat cu o săgeată în jos, din cadrul coloanei cu valori, putând fi în acest fel selectată din listă valoarea dorită. Proprietăţile obiectelor pot fi variabile sau constante de tip numeric, alfanumeric, logic, grafic, etc.
2.3.6. Fereastra Color Palette 80
Mediul de dezvoltare Visual Basic
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 conţinutului (foreground) unei forme sau control; • (2) reprezintă culoarea fondului şi a conţinutului 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 afişarea unei ferestre în cadrul căreia 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 conţinutul (implicit este activ fondul) după care se execută un clic mouse pe culoarea dorită din zona (3).
2.3.7. Fereastra Form Layout 81
Visual Basic
Fig. 2.56. Fereastra Form Layout. Fereastra Form Layout poate fi utilizată atunci când se doreşte mutarea ferestrei aplicaţiei şi poziţionarea ei într-o anumită zonă pe desktop. Deplasarea şi poziţionarea ferestrei se realizează prin glisarea (“tragerea”) acesteia cu ajutorul mouse-ului pe suprafaţa desktop-ului din fereatra Form Layout.
82
Proprietăţile, metodele şi evenimentele obiectelor
3.1. Proprietăţile obiectelor În cadrul limbajelor de programare ce au la bază tehnica programării aplicaţiilor în mod vizual, fiecărui obiect (formă, buton de comandă, casetă de editare, etc.) îi sunt asociate o serie de proprietăţi care determină comportamentul lor în aplicaţie. Aceste proprietăţi reprezintă câmpuri de variabile predefinite si asociate diferitelor obiecte vizuale. Valorile proprietăţilor pot fi de diferite tipuri astfel: Integer (Height, Width, Top, Left), String (Caption, Name), Boolean (AutoSize, Visible, Enabled), Variant (BackColor, ForeColor, Icon, Picture), etc. Proprietăţile obiectelor au valori implicite. Aceste valori pot fi modificate în faza de proiectare a aplicaţiei sau pe parcursul execuţiei (prin program). În vederea modificării valorii proprietăţilor unui obiect se va proceda astfel: •
în momentul proiectării interfeţei: ♦ se selectează cu ajutorul mouse-ului obiectul ale cărui proprietăţi se doresc a fi modificate; ♦ în fereastra Properties, se selectează proprietatea ce se doreşte a fi modificată (prima coloană a listei cu proprietăţi); ♦ se introduce, în zona de editare a acestei ferestre (a doua coloană a listei cu proprietăţi), noua valoare urmată de apăsarea tastei .
83
Visual Basic Observaţii: • obiectul ale cărui proprietăţi se doresc a fi modificate se poate selecta din lista cutiei combo (caseta cu obiecte), situată în partea de sus a ferestrei Properties; • ataşarea noii valori unei proprietăţi se poate face după ce s-a selectat proprietatea respectivă prin preluarea din lista cutiei combo asociate proprietăţii, noua valoare. Exemplu: Dacă se doreşte modificarea textului conţinut într-o etichetă explicativă (Label) implementată pe fereastra machetă (fig. 3.1), se procedează astfel:
Fig. 3.1 Fereastra machetă ce conţine eticheta. ♦ se activează (selectează) eticheta printr-un click mouse; ♦ se activează printr-un click mouse proprietatea Caption din fereastra Properties (figura 3.2);
84
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.2. Fereastra Properties pentru schimbarea etichetei. ♦ se execută un click mouse în coloana cu valori, iar când apare cursorul de editare se introduce textul dorit după care se validează cu . De exemplu să se introducă textul Denumire material:. Rezultatul este următorul: ♦
Fig. 3.3. Efectul setării proprietăţii Caption. ♦ dacă se doreşte autodimensionarea etichetei în funcţie de textul conţinut, se selectează proprietatea AutoSize corespunzătoare etichetei. Această proprietate fiind o constantă logică (booleană) va afişa în câmpul cu 85
Visual Basic valori (coloana a doua) o listă (figura 3.4) cu valorile True (adevărat), care permite autodimensionarea obiectului în funcţie de textul conţinut, sau valoarea False (fals), care are ca efect inhibarea autodimensionării.
Fig. 3.4. Setarea proprietăţii AutoSize. •
în cadrul programului sursă: ♦ în cadrul unei proceduri generale, sau în cadrul unei proceduri (subrutine) asociată unui eveniment, se introduce următoarea linie program: . =
Exemplu: Form1.Visible = True Form1.Caption = “&Ok” În continuare vor fi prezentate cele mai utilizate proprietăţi, specificându-se la fiecare şi obictele cărora le aparţin sunt următoarele. ActiveControl Această proprietate aparţine obiectelor: fereastră (Form), fereastra "mamă" (MDI form) şi ecran (Screen). Ea returnează obiectul din cadrul aplicaţiei care este activ în acel moment, adică acel obiect care deţine focus – ul. Formatul general: {form | mdiform | Screen}.ActiveControl 86
Proprietăţile, metodele şi evenimentele obiectelor Cu ajutorul proprietăţii ActiveControl se pot accesa în acelaşi timp şi alte proprietăţi ale obiectului la care aceasta se aplică. Exemplu: Pentru a modifica proprietăţile obiectului ecran se va proceda astfel: Screen. ActiveControl.AutoSize = True ActiveForm Aparţine 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 aplicaţii care foloseşte 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 opţiune î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 aparţine următoarelor controalelor: casete de opţiune (CheckBox), etichete (Label), butoane de opţiune (OptionButton) si 87
Visual Basic casetelor de editare (TextBox). Ea determină modul de aliniere a casetelor de opţiune, butoanelor de opţiune si a textului din etichete şi din caseta de editare. Formatul general: [form.]control.Alignment[ = expresie_numerică ] •
Pentru casetele de opţiune şi butoanele de opţiune, expresie_numerică poate lua una din următoarele valori: 0 - Left Justify : (valoare implicită) caz în care căsuţa sau butonul sunt aliniate la stânga ş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 următoarele valori: 0 - Left Justify :(valoare implicită) caz în care textul este aliniat la stânga; 1 - Right Justify :text aliniat la dreapta; 2 – Center :text centrat.
Archive, Hidden, Normal, Read Only, System Aparţine controlului: Caseta de selecţie a fişierelor (FileListBox). Această proprietate determină ce tip (cu ce atribute) de fişiere vor fi afişate în listă. Fişierele pot avea următoarele atribute: • Archive: pentru fişierele arhivă; • Hidden: pentru fişierele ascunse; • Normal: pentru fişierele normale; • Read Only: pentru fişierele protejate la scriere; • System: pentru fişierele sistem. 88
Proprietăţile, metodele şi evenimentele obiectelor Formatul general: [form.]filelistbox.Archive[ = boolean ] [form.]filelistbox.Hidden[ = boolean ] [form.]filelistbox.Normal[ = boolean ] [form.]filelistbox.System[ = boolean ] Aceste proprietăţi ale casetei de selecţie a fişierelor, pot lua una din următoarele valori de tip boolean: • True : (implicită pentru Archive, şi Normal) afişează în zona de listare fişierele cu atributele respective; • False : (implicită pentru Hidden şi System) nu afişează fişierele care au atributele respective. AutoRedraw Aparţine controalelor: forma (Form) şi casetei de imagini (Picturebox). Formatul general: [form.][picturebox.]AutoRedraw[ = {True|False}] Această proprietate permite actualizarea desenelor afişate într-o fereastră, sau într-o zonă imagine (PictureBox), când acestea sunt mutate sau redimensionate. Ea se referă la următoarele metode grafice: Circle, Cls, Line, Point, Print şi PSet. Fiind o variabilă booleană această proprietate poate lua următoarele valori: • True : permite actualizarea figurilor geometrice după fiecare operaţie executată asupra lor; • False : anulează actualizarea figurilor geometrice.
89
Visual Basic Autosize Aparţine controalelor: etichetă (Label) şi casetei de imagini (Picturebox). Determină autodimensionare etichetelor în funcţie de mărimea textului introdus în cadrul lor şi a zonei de imagini în funcţie de dimensiunile imaginii încărcate în cadrul acesteia. Format general: obiect.AutoSize[ = {True|False}] Poate lua următoarele valori: • True : permite autodimensionarea obiectului în funcţie de conţinut; • False : anulează autodimensionarea obiectului. Exemplu: Dacă se încarcă proprietatea Caption a etichetei Label1 cu valoarea “Aplicaţii Visual Basic”, iar proprietatea AutoSize a etichetei are valoarea False, eticheta va arăta astfel:
După setarea proprietăţii AutoSize cu valoarea False, eticheta va arăta astfel:
90
Proprietăţile, metodele şi evenimentele obiectelor BackColor, ForeColor Aparţin 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 defineşte sau returnează culoarea de fond a obiectului, iar proprietatea ForeColor este o valoare hexazecimală care defineşte sau returnează culoarea elementelor din cadrul obiectului. Selectarea uneia dintre aceste proprietăţi din cadrul ferestrei Properties şi acţionarea butonului de valori din coloana cu valorile proprietăţii se afişează o fereastra (figura 3.5, figura 3.6) din care se poate selecta culoarea dorită atât pentru fond cât şi pentru conţinut.
Fig. 3.5. Tabela System de selectare a culorilor.
91
Visual Basic
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ă proporţia de culori: albastru, roşu şi verde. Pentru definirea culorii unui obiect pot fi utilizate două funcţii: • RGB (roşu%, verde%, albastru%) care returnează culoarea în funcţie de proporţia culorilor roşu, verde şi albastru. Argumentele pot fi cuprinse între 0 şi 225; • QBCColor (nr%) care returnează culoarea corespunzând numărului de culoare specificat (nr% - valoare cuprinsă între 0 şi 15). Exemplu: Form1.BackColor = RGB(100,50,150) Form1.ForeColor = QBColor(0) Cele două proprietăţi au ca valori numere hexazecimale ce reprezintă culoarea respectivă. De exemplu, dacă se alege din fereastra Color Box culoarea roşie pentru fond, proprietatea BackColor va avea valoarea &H000000FF&.
92
Proprietăţile, metodele şi evenimentele obiectelor BorderStyle Aparţine 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 execuţiei programului. Valorile pe care le poate lua această proprietate sunt: 0 - None : neîncadrat; 1 - Fixed single : cadru simplu; 2 - Sizeable : cadru dimensionabil (doar pentru ferestre); 3 - Fixed Double : cadru dublu (doar pentru ferestre). Cancel Aparţine doar butonului de comandă (CommandButton). Setată True această proprietate asociază butonului de comandă tasta . Deci, apăsând tasta butonul cu proprietatea Cancel setată True va fi activat. Caption Aparţine obiectelor: fereastră (Form), fereastră "mamă" (MDI form), casetelor de opţiune (Checkbox), butonului de comandă (CommandButton), chenarului (Frame), etichetei (Label), meniului (Menu), butonului de opţiune (OptionButton). Această proprietate este de tip String şi defineşte titlul acestor obiecte (textul explicativ din cadrul lor). Formatul general: [form.][control.]Caption[ = şir_de_caractere ]
93
Visual Basic De exemplu, pentru a schimba titlul ferestrei de lucru cu textul "Aplicaţie 1" se încarcă proprietatea Caption în cadrul programului sursă astfel: Form1.Caption = "Aplicaţie 1" Implicit, această proprietate este încărcată cu numele obiectului căruia îi aparţine (Form1 pentru prima fereastră). Valoarea acestei proprietăţi poate fi, deasemenea, încărcată şi în cadrul ferestrei cu proprietăţi. Checked Aparţine meniului. Formatul general: opţiune_meniu.Checked[ = boolean ] Această proprietate plasează un indiciu " " în faţa opţiunii de meniu. Acest simbol, în general, este utilizat pentru a scoate în evidenţă faptul că o opţiune este activă. Valorile posibile sunt: • True: indiciul este afişat; • False: indiciul nu este afişat. Modificarea valorii acestei proprietăţi poate fi făcută şi selectând caseta de opţiune Checked, din cadrul ferestrei Menu Editor, corespunzătoare opţiunii curente (figura 3.7).
94
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.7. Marcajul casetei de opţiune Checked din fereastra Menu Editor. Rezultatul selectării casetei Checked este prezentat în figura 3.8.
Fig. 3.8. Efectul proprietăţii Checked.
95
Visual Basic ControlBox Aparţine formei (ferestrei aplicaţiei). Această proprietate determină afişarea, sau nu a icon-ului meniului de control situat în colţul din dreapta sus a ferestrei (stânga utilizatorului). Valoarea sa implicită este True şi nu poate fi modificată în timpul execuţiei programului. Valorile posibile sunt: • True : determină afişarea 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 proprietăţii ControlBox.
96
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.10. Efectul valorii False a proprietăţii ControlBox. CurrentX, CurrentY Aparţin obiectelor: fereastră (Form), casetă de imagini (PictureBox), imprimantă (printer). Ele determină coordonatele, pe orizontala CurrentX şi pe verticala CurrentY, folosite în legătură cu metodele grafice (Cls, Circle, Line, Print, PSet, etc). Aceste coordonate sunt date şi de valorile proprietăţilor ScaleHeight, ScaleWidth, ScaleLeft şi ScaleTop. De exemplu, când cursorul se află în colţul din stânga sus al ferestrei (în timpul executării unei metode Cls, ), CurrentX şi CurrentY sunt 0. Default Aparţine butonului de comandă (CommandButton). Această proprietate de tip boolean specifică butonul de comandă care poate fi activat, în acel moment, la acţionarea tastei . 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ţă. 97
Visual Basic Dragicon Aparţine tuturor obiectelor exceptând fereastra (Form), minutarul (Timer) şi obiectele speciale. Această proprietate determină afişarea unui icon atunci când utilizatorul realizează o operaţie Drag & Drop (glisare). Valoarea acestei proprietăţi este dată de calea spre un fişier ce conţine un icon (.ico). Setarea ei în cadrul ferestrei Properties se poate face fie introducând calea spre fişierul (.ico) dorit, fie prin apăsarea butonului din partea stângă a casetei de editare ducând la afişarea unei ferestre de dialog în cadrul căreia poate fi ales fişierul (.ico) dorit. DragMode Aparţine tuturor obiectelor exceptând fereastra (Form), minutarul (Timer) şi obiectele speciale. Când valoarea proprietăţii DragMode este setată 1 se activează posibilitatea de deplasare a obiectului în timpul execuţiei unei aplicaţii. Când valoarea DragMode este setata 0, pentru a putea efectua operaţia Drag & Drop se apelează metoda Drag. Ea poate lua următoarele 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 Aparţine următoarelor obiecte: fereastră, casetă de imagine, imprimantă (Printer), linie (Line), figuri geometrice (Shape). Această proprietate specifică culoarea de afişaj a metodelor grafice, culoare obţinută prin efectuarea unor operaţii logice (Not, And, Or, Xor) între valorile proprietăţilor ForeColor şi BackColor. DrawMode poate lua valori între 1 şi 16. 98
Proprietăţile, metodele şi evenimentele obiectelor
DrawStyle Aparţine obiectelor: fereastră (Form), casetă de imagini (PictureBox), imprimantă (Printer). Această proprietate defineşte modelul de trasare (desenare) a metodelor grafice (Line, Pset şi Circle). Formatul general: {[form.] [picturebox] | Printer}.DrawStyle[ = stil ] unde stil poate fi una din următoarele valori: 0 Solid : (implicit) plin; 1 Dash : întrerupt; 2 Dot : punctat; 3 Dash-Dot : combinaţie între 2 şi 3; 4 Dash-Dot-Dot : combinaţie între 2, 3, 3; 5 Transparent : invizibil; 6 Inside Solid : plin. DrawWidth Aparţine obiectelor: fereastră (Form), casetă de imagini (PictureBox), imprimantă (Printer). Această proprietate determină grosimea liniei de desenare a metodelor grafice ce aparţin obiectelor respective. DrawWidth poate lua valori cuprinse între 1 şi 32767 pixeli.
Drive 99
Visual Basic Aparţine casetei de selecţie a unităţilor de disc (DriveListBox). Această proprietate defineşte sau returnează unitatea de disc selectată şi eticheta acestei unităţi. Poate avea ca valori specificaţiile pentru unităţile de stocare a informaţiei existente şi conectate la calculator. De exemplu, pentru driver-ul de dischetă valoarea acestei proprietăti poate fi "A:" sau "B:", pentru hard disk "C: [ eticheta_volum]", pentru cd-rom "G:", "L:", etc. Modificarea valorii proprietăţii Drive generează implicit evenimentul Change a controlului caseta de selecţie a unităţii de disc. Enabled Aparţine tuturor obiectelor, cu excepţia celor speciale. Această proprietate, de tip boolean, activează sau dezactivează un obiect. Când un obiect este dezactivat, el nu mai răspunde la nici un eveniment. Valori posibile: • True: obiect activ; • False: obiect inactiv. În cazul meniului şi butoanelor de comandă valoarea False a acestei proprietăţi are ca efect afişarea textului (definit de proprietatea Caption) în culoarea gri semnificând faptul că acea opţiune sau acel buton este inactiv (figura 3.11). Enabled=True
Enabled=False
Fig. 3.11. Efectele proprietăţii Enabled asupra butoanelor de comandă.
FileName 100
Proprietăţile, metodele şi evenimentele obiectelor Aparţine casetei de selecţie a fişierelor (FileListBox). Această proprietate de tip şir de caractere (String), defineşte sau returnează numele fişierului selectat în casetă de selecţie a fişierelor. File Name va returna un şir vid dacă nici un fişier din listă nu a fost selectat. FillColor Aparţine obiectelor: fereastră (Form), casetă de imagini (PictureBox), imprimantă (printer) şi elementelor grafice (shape). FillColor defineşte culoarea de umplere a figurilor geometrice realizate cu ajutorul metodelor grafice. Dacă proprietatea FillStyle este setată pe valoarea 1 (Transparent), valorile proprietăţii FillColor nu au nici un efect. La fel ca şi la proprietăţile BackColor şi ForeColor, valoarea proprietăţii FillColor va fi reprezentată de un număr hexazecimal. FillStyle Aparţine obiectelor: fereastră (Form), casetă de imagini (PictureBox), imprimantă (Printer) şi elementelor grafice. Această proprietate defineşte 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. FontBold, FontItalic, FontStrikethru, FontTransparent, FontUnderline Aceste proprietăţi aparţin tuturor obiectelor exceptând barele de defilare, minutarul şi obiectele speciale (Clipboard, Debug şi Screen). Ele determină stilul de caractere utilizate pentru afişarea textului într-o fereastră astfel: • FontBold : text îngroşat (exemplu); 101
Visual Basic • FontItalic : text înclinat (exemplu); • FontStrikethru : text barat (exemplu); • FontTransparent : text transparent; • FontUnderline : text subliniat (exemplu). Aceste proprietăţi pot lua doar valori de tip boolean (True sau False). Valoarea True permite activarea proprietăţii, respectiv stilului pentru caractere, iar valoarea False dezactivează stilul de scriere. Modificarea şi încărcarea acestei proprietăţi poate fi efectuată şi prin intermediul ferestrei Properties, selectând din caseta cu valori a obiectului butonul de punctat din dreapta casetei. Rezultatul este afişarea ferestrei din figura 3.12. şi prin care pot fi setate în mod interactiv aceste proprietăţi.
Fig. 3.12. Fereastra Font. FontCount Aparţine obiectelor: imprimantă (Printer) şi ecran (Screen). Această proprietate returnează numărul de font-uri (stiluri de text) disponibile în acel moment. Formatul general: {Printer|Screen}.FontCount 102
Proprietăţile, metodele şi evenimentele obiectelor Valorile returnate de proprietatea FontCount nu pot fi modificate în timpul execuţiei aplicaţiei. FontName Aparţine tuturor obiectelor în afară de meniu (Menu), barele de deplasare (HScrollBar, VScrollBar), minutarul (Timer) şi obiectele speciale (Clipboard, Debug, Screen, Printer). Valoarea acestei proprietăţi reprezintă numele stilului de text (fonturilor) ce va fi afişat. Exemplu: Dacă se doreşte ca textul introdus pe forma sa fie afişat cu font-uri Times New Roman atunci valoarea acestei proprietăti va fi: Form1. FontName = "Tms Rmn" Încărcarea acestei proprietăţi în momentul conceperii interfeţei aplicaţiei se face alegând, din cutia combo (din cadrul ferestrei Properties) în care se găsesc valorile fiecărei proprietăţi selectate, stilul de text dorit. Fontsize Aparţine 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
103
Visual Basic Aparţine 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 număr 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 când se va face apel la o procedură sau funcţie Windows (API Windows). Height, Width Aparţine tuturor obiectelor exceptând meniul (Menu), minutarul (Timer) şi obiectele speciale. Aceste proprietăţi determină dimensiunile obiectului: Height reprezintă înălţimea, iar Width reprezintă lăţimea obiectului. Unitatea de măsură utilizată este indicată de valoarea proprietăţii ScaleMode aparţinând aceluiaşi obiect. Pentru imprimantă ea va reprezenta marimea foii (în Twips sau altă unitate setată cu ScaleMode), iar pentru ecran va defini mărimea acestuia. hWnd Aparţine tuturor obiectelor cu excepţia 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 funcţii sau proceduri API Windows.
104
Proprietăţile, metodele şi evenimentele obiectelor Icon Aparţine ferestrei aplicaţiei (Form) simple sau "mamă". Această proprietate permite asocierea unui icon ferestrelor aplicaţiei. Prin intermediul acestui icon utilizatorul va lansa în execuţie aplicaţia căreia îi este asociat. Fiecărei ferestre a aplicaţiei i se poate ataşa un icon astfel încât atunci când fereastra este minimizată icon-ul asociat ei va apare în partea inferioară a desktop-ului pe bara de stare (Taskbar). Valoarea acestei proprietăţi este calea şi numele unui fişier cu extensia .ico în care este definit icon-ul. Acest fişier poate fi încărcat, de pe una din unităţile 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 proprietăţii Icon. Image Aparţine 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 funcţii sau al unei proceduri API Windows. Index Aparţine tuturor obiectelor în afară de fereastră (Form) şi obiectele speciale. Valoarea acestei proprietăţi reprezintă indexul unui control în cadrul unui tablou de controale. Ea este generată atunci când sunt încărcate, pe formă, mai multe controale care au aceeaşi valoare a proprietăţii Name, creându-se astfel un tablou de controale, primul având 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 105
Visual Basic Command1, va apare o fereastră de dialog în cadrul căreia se poate opta pentru iniţializarea 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 execuţiei aplicaţiei. Interval Aparţine 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 proprietăţii Interval; • atribuirea valorii False proprietăţii Enabled. Left, Top Aparţine tuturor obiectelor fără minutar, meniu şi obiecte speciale. Proprietatea Left returnează distanţa între marginea stânga al obiectului curent şi cea a obiectului care-l conţine. Proprietatea Top furnizează distanţa între marginea superioară a obiectului curent şi cea a obiectului care-l conţine. Pentru fereastră aceste proprietăţi determină distanţa dintre marginile ferestrei (stângă şi superioară) şi marginile ecranului, valori exprimate în twips (implicit) sau altă unitate de măsură setată prin intermediul proprietăţii ScaleMode. 106
Proprietăţile, metodele şi evenimentele obiectelor LinkItem Aparţine 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 aplicaţii Windows (setată în cadrul proprietăţii 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: [form.]{label|picturebox|textbox}.LinkItem[ = nume_element] unde: • nume_element: este denumirea sau referinţa elementului altei aplicaţii Windows, legată în procesul DDE (o celulă, un domeniu, o tabelă Excel, un domeniu dintr-un document Word, etc.). Exemplu: Referinţa la un domeniu de celule dintr-o pagină Excel, legată de aplicaţia Visual Basic, prin intermediul unei casete de editare se realizează astfel: Text1.Text = “A1B2”
LinkMode Aparţine obiectelor fereastră (Form), etichetă (Label), casetă de imagini (PictureBox) şi casetă de editare (TextBox). Această proprietate determină tipul de legătură DDE ce va fi stabilită între un obiect sau o fereastră Visual Basic şi o altă aplicaţie Windows. 107
Visual Basic • Pentru controale proprietatea LinkMode poate lua una dintre următoarele valori: 0 - None : (implicit) nici o legătură; 1 - Automatic : legătura se stabileşte, în mod automat, de fiecare dată când are loc un transfer de date; 2 - Manual : legătura se stabileşte numai atunci când metoda LinkRequest este apelată; 3 - Notify : în acest caz evenimentul LinkNotify este generat când are loc transferul de date, dar legătură se stabileste numai atunci când metoda LinkRequest este apelată. •
Pentru ferestre valorile proprietăţii LinkMode sunt: 0 - None - (implicit) nici o legătură; 1 – Source - permite specificarea unui obiect sursă (label, textbox, etc.) într-un proces DDE. Când se doreşte încheierea schimbului dinamic de date se atribuie valoarea 0 proprietăţii LinkMode. LinkTimeOut Aparţine obiectelor: etichetă (Label), casetă de imagini (PictureBox), casetă de editare (TextBox). Valoarea acestei proprietăţi defineşte timpul necesar pentru stabilirea unei legături cu o altă aplicaţie. Exemplu: Label1.LinkTimeOut = 100 Semnifică faptul că timpul în care trebuie să se facă legătura (un răspuns DDE) cu o aplicaţie este de 10 secunde. Dacă se depăşeşte acest interval de timp va fi generată o eroare. Valoarea implicită a acestei proprietăţi este 50 (5 secunde). 108
Proprietăţile, metodele şi evenimentele obiectelor
LinkTopic Aparţine obiectelor: fereastră (Form), etichetă (Label), casetă de imagini (PictureBox) şi casetă de editare (TextBox). Această proprietate defineşte numele aplicaţiei şi subiectul de schimb al datelor într-un proces (legătură) DDE. Aceste două informaţii trebuie separate de o linie verticală (|). Numele aplicaţiei poate fi, de exemplu WORD sau EXCEL şi subiectul corespunzător poate fi un document sau o foaie de calcul. De exemplu, pentru stabilirea unui schimb de date între eticheta ferestrei aplicaţiei realizată cu Visual Basic şi o celulă Excel (de exemplu A1B2) această proprietate va avea valoarea: form1.label1.LinkTopic = "Excel|A1B2" List Aparţine obiectelor: casetă combo (ComboBox), casetă de selectare a fişierelor (FileListBox), a directoarelor (DirectoryListBox), a unităţilor 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, până la ListCount - 1 (proprietatea ListCount indicând numărul elementelor din listă). Parametrul şir_de_caractere returnează sau setează conţinutul elementului din listă. 109
Visual Basic 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. Conţinutul proprietăţii List. ListCount Aparţine obiectelor: casetă combo (ComboBox), casetă de selectare a fişierelor (FileListBox), a directoarelor (DirectoryListBox), a unităţilor de disc (DriveListBox) şi casetă de listare (ListBox). Această proprietate returnează: • Număr de elemente pentru: caseta combo, caseta de listare; • Număr de unităţi de disc pentru: caseta de selectare a unităţilor de disc; • Număr de subdirectoare pentru: caseta de selectare a directoarelor; • Număr de fişiere al directorului curent pentru: caseta de selectare a fişierelor. Această valoare nu poate fi modificată în timpul executării programului. ListIndex 110
Proprietăţile, metodele şi evenimentele obiectelor Aparţine obiectelor: casetă combo (ComboBox), casetă de selectare a fişierelor (FileListBox), a directoarelor (DirectoryListBox), a unităţilor de disc (DriveListBox) şi casetă de listare (ListBox). Această proprietate este de tip numeric şi returnează indicele elementului selecţionat î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 proprietăţii ListIndex este 3. Pentru a încarcă o etichetă cu valoarea proprietăţii ListIndex se va introduce următoarea linie program: Label1.Caption=Str(List1.ListIndex) MaxButton, MinButton Aparţine ferestrelor (Form). Valoarea True a proprietăţii MaxButton permite vizualizarea butonului din colţul stânga sus a ferestrei , putând fi astfel folosit la expandarea ferestrei pe tot ecranul. Valoarea False determină eliminarea acestui buton de pe fereastră. Proprietatea MinButton permite afişarea sau ascunderea butonului de reducere (minimizare) a unei ferestre . Valori posibile: • True : butonul este afişat în colţul din stânga sus al ferestrei; • False: butonul nu este disponibil în fereastră. MousePointer Aparţine tuturor obiectelor cu excepţia meniului, minutarului şi obiectelor speciale. 111
Visual Basic Această proprietate permite modificarea aspectului cursorului (pointer-ului) mouse-ului, atunci când acesta se deplasează deasupra unui control sau se realizează o anumită operaţiune. Valori posibile: 0 – Defaul 1 – Arrow 2 - Cross 3 - I-Beam 4 - Icon : afişează matricea de construcţie 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 către utilizator a unui icon pentru pointer, icon dat de proprietatea MouseIcon.
Name Aparţine tuturor ferestrelor şi controalelor. Această proprietate atribuie un nume de identificare unei ferestre sau unui control. Prin intermediul acestei proprietăţi se face referinţă la proprietăţile, metodele şi evenimentele obiectului pe care-l reprezintă. Exemplu: Implicit obiectul etichetă are proprietatea Name egală cu Label1 pentru prima etichetă încărcată pe fereastră. Referinţa la proprietatea 112
Proprietăţile, metodele şi evenimentele obiectelor Caption ale acestei etichete se face astfel: Label1.Caption=”Text”. Dacă se modifică conţinutul proprietăţii Name a etichetei, din Label1, în Etc1 referinţa la proprietatea Caption se va face astfel: Etc1.Caption=”Text”. Parent Aparţine tuturor obiectelor fără fereastre şi obiecte speciale. Această proprietate returnează valoarea proprietăţii Name a obiectului părinte, cel care conţine în cadrul său obiectul curent. Astfel pot fi setate proprietăţile unei ferestre pornind de la un control care este situat în cadrul acesteia: .Parent. = ScaleHeight, ScaleWidth Aparţine obiectelor: ferestre (Form), casete de imagini (PictureBox), imprimantă (Printer). Această proprietate determină înălţimea (ScaleHeight), respectiv lăţimea (ScaleWidth) obiectului la care se referă. Unităţile de măsură în care se exprimă valorile acestor două proprietăţi sunt setate de către proprietatea ScaleMode. Formatele generale sunt: {[form.][picturebox.]|Printer.}ScaleHeight[ = dimensiune ] {[form.][picturebox.]|Printer.}ScaleWidth[ = dimensiune ] unde dimensiune reprezintă înălţimea, respectiv lăţimea obiectului. ScaleLeft, ScaleTop Aparţine obiectelor: ferestre (Form), casete de imagini (PictureBox), imprimantă (Printer). 113
Visual Basic Această proprietate permite specificarea abscisei (ScaleLeft) şi ordonatei (ScaleTop) colţului stâng superior al ferestrei. De exemplu, instrucţiunile următoare setează coordonatele colţului stânga sus al ferestrei la valorile (0,100). Form1. ScaleLeft = 0 Form1. ScaleTop = 100 ScaleMode Aparţine obiectelor: ferestre (Form), casete de imagini (PictureBox), imprimantă (Printer). Această proprietate permite alegerea unităţii de măsură utilizată pentru exprimarea dimensiunilor şi coordonatelor obiectelor la care se referă. Poate lua următoarele valori: 0 - User : unitate definită de utilizator; 1 - Twip : 1/20 dintr-un punct; 2 - Punct : 0,375 mm; 3 - Pixel : mărimea lui depinde de rezoluţia setată; 4 - Character : caracter (120 Twip orizontal pe 240 vertical); 5 - Inch : 2,54 cm; 6 - Milimeter : mm; 7 - Centimeter : cm. SelLength, SelStart, SelText Aparţine obiectelor: cutia combo (ComboBox) şi casetă de editare. (TextBox) Proprietatea SelLength determină numărul caracterelor (nr_caractere) selectate (afişate în video invers) de utilizator în cadrul celor două controale. Formatul general: [form.]{combobox|textbox}.SelLength[ = nr_caractere ] 114
Proprietăţile, metodele şi evenimentele obiectelor Proprietatea SelStart returnează poziţia de unde se poate începe (indicator) selectarea unui text. Formatul general: [form.]{combobox|textbox}.SelStart[ = indicator ] Proprietatea SelText returnează textul selectat (text_sel). Formatul general: [form.]{combobox|textbox}.SelText[ = text_sel ] Sorted Aparţine obiectelor: caseta combo (ComboBox) şi caseta de listare (TextBox). Această proprietate permite sortarea (în ordine alfabetică sau crescătoare) a elementelor unei casete combo sau unei casete de listare. Valoarea acestei proprietăţi nu poate fi modificată în timpul executării programului. Valorile posibile sunt: • True : elementele sunt sortate; • False : elementele apar în ordinea introducerii lor în listă. TabIndex Aparţine tuturor obiectelor cu excepţia ferestrelor, meniului, minutarului şi obiectelor speciale. Această proprietate returnează un număr (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 când este acţionată tasta . Trecerea se va face în ordinea crescătoare a proprietăţii TabIndex. 115
Visual Basic Modificarea valorii proprietăţii TabIndex, a unui obiect, duce la modificarea automată a valorii acestei proprietăţi şi pentru celelalte obiecte. Pe o fereastră nu există niciodată 2 obiecte având aceeaşi valoare a proprietăţii TabIndex. TabStop Aparţine 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 . Valori posibile: • True : obiectul poate primi focus-ul prin acţionarea tastei ; • False : obiectul nu poate primi focus-ul prin acţionarea tastei . Text Aparţine obiectelor: casetă combo (ComboBox), casetă de listare (ListBox) şi casetei de editare (TextBox). Această proprietate returnează sau defineşte ş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 către utilizator într-o casetă de editare şi a le stoca într-o variabilă se utilizează următoarea linie program: txt=Text1.Text unde txt este variabila de tip String utilizată. Value 116
Proprietăţile, metodele şi evenimentele obiectelor Aparţine obiectelor: casete de opţiune (CheckBox), butoane de comandă (CommandButton), butoane de opţiune (OptionButton) şi barelor de deplasare (HscrollBar, VScrollBar). Această proprietate returnează, în mod diferenţiat, una din valorile următoare: •
Casete de opţiune: 0 = casetă nemarcată; 1 = casetă marcată; 2 = casetă gri (neaccesibilă).
•
Butoane de opţiune: True : buton selecţionat (cerc plin); False : buton neselectat (cerc gol).
•
Buton de comandă: True : butonul este selectat (evenimentul Command1_Click() este generat); False : butonul nu este selectat.
•
Bare de defilare: un număr cuprins între -32768 şi 32767 reprezentând poziţia cursorului pe bara de deplasare.
Visible Aparţine tuturor obiectelor în afară de minutar şi obiectele speciale. Această proprietate permite vizualizarea (afişarea), sau nu a unui obiect pe ecran, sau interfaţa aplicaţiei, în timpul execuţiei. Valori posibile: • True : obiectul este vizibil pe interfaţă; • False : obiectul este ascuns. Metodele Show şi Hide ale unei ferestre efectuează aceleaşi operaţii. WindowState 117
Visual Basic Aparţine ferestrei (formei). Această valoare determină modul de afişare a ferestrei pe desktop-ul Windows-ului. Valori posibile: 0 - Normal : (implicit) fereastră afişată aşa cum a fost creată; 1 - Minimized : fereastră afişată sub formă de icon pe bara de stare (taskbar) a Windows-ului; 2 - Maximized : fereastră mărită pe tot ecranul.
118
Proprietăţile, metodele şi evenimentele obiectelor
3.2. Metodele obiectelor Pe lângă un ansamblu complex de instrucţiuni Visual Basic-ul pune la dispoziţia programatorului şi o serie de metode. Metodele sunt acţiuni (instrucţiuni) ce se efectuează asupra obiectelor determinând comportamentul lor în cadrul aplicaţiei. Formatul general al unei metode este: .metodă [parametrii] Cele mai importante şi mai utilizate metode în Visual Basic sunt următoarele: AddItem Aparţine obiectelor: casetă de listare şi casetă combo. Această metodă adaugă (introduce) un nou element în lista acestor obiecte. Formatul general: .AddItem [,index] unde: • : reprezintă numele casetei combo sau casetei de listare la care se referă; • : reprezintă un şir de caractere (String) care va fi introdus în listă; • index: reprezintă un număr întreg ce specifică poziţia pe care va fi încărcat elementul în lista. Pentru primul element acest parametru are valoarea 0.
119
Visual Basic Exemplu: Pentru a încărca un element într-un ListBox se va introduce următoarea 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 Aparţine ferestrei "mamă" (MDI Form). Această metodă ordonează ferestrele "fiu" sau icon-urile din cadrul unei ferestre "mamă". Formatul general: .Arrange unde: • - reprezintă numele ferestrei "mamă"; • - reprezintă o constantă ce va determina modul de ordonare. Ea poate lua următoarele valori: 120
Proprietăţile, metodele şi evenimentele obiectelor 0 – Cascade : ordonarea ferestrelor non-minimizate, sub formă de cascadă; 1 - Tile_Horizontal : ordonarea ferestrelor non-minimizate, alăturate pe orizontală; 2 - Tile_Vertical : ordonarea ferestrelor non-minimizate, alaturate pe verticală; 3 - Arrange_Icons : ordonarea icoanelor ferestrelor "fiu" minimizate. Circle Aparţine ferestrelor simple, casetei de imagini şi obiectului imprimantă (printer). Această metodă permite desenarea unui cerc, arc de cerc sau a unei elipse în funcţie de valorile parametrilor săi. Formatul general: [.]Circle [Step](x, y), raza[,[culoare] [,[start] [,[stop] [,aspect] ] ] ] unde: • : reprezintă numele obiectului la care se foloseşte 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 proprietăţii ScaleMode a obiectului respectiv; • raza : reprezintă raza cercului; • culoare : reprezintă codul culorii de desenare a cercului. Acestui parametru i se pot da ca valori funcţiile RGB şi QBColor; • start, stop : reprezintă (în radiani) unghiul de început şi de sfârşit 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ă. 121
Visual Basic Exemplu: ScaleMode = 2 Form1.Circle (100, 100), 50 Clear Aparţine casetei de listare, casetei combo şi obiectului special clipboard (zona tampon). Această metodă şterge conţinutul casetei de listare, casetei combo şi clipboard-ului. Formatul general: .Clear Cls Aparţine ferestrelor simple şi casetei de imagini. Această proprietate şterge graficele şi textele generate direct pe aceste controale. Formatul general: [.]Cls Drag Aparţine tuturor obiectelor cu excepţia liniei grafice, elementelor grafice (shape), meniului şi minutarului. Această metodă asociată unui obiect, iniţiază, termină sau abandonează "tragerea" (deplasarea) obiectului respectiv pe suprafaţa ferestrelor din cadrul aplicaţiei.
122
Proprietăţile, metodele şi evenimentele obiectelor Formatul general: [.]Drag [actiune] unde: • acţiune - poate lua una din următoarele valori: 0 : Abandonează operaţiunea de deplasare a obiectului; 2 : Iniţiază operaţiunea de deplasare; 3 :Termină operaţiunea de deplasare, moment in care obiectul este depus. Dacă se omit parametrii şi acţiune metoda se va referi la obiectul curent (cel în a cărui procedură eveniment se foloseşte), iar parametrul acţiune va avea implicit valoarea 1. Hide Aparţine 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 legătură cu ferestrele "fiu", ci numai in legătură cu fereastră "mamă". Când metoda Hide este folosită în legătură cu o fereastră, care nu este încărcată pe ecran, aceasta va fi activată automat dar va fi ascunsă. Exemplu: Form1.Hide Această linie program are ca efect ascunderea ferestrei Form1. 123
Visual Basic Line Aparţine ferestrelor, casetei de imagini şi imprimantei (printer). Această metodă permite trasarea unei linii sau a unui patrulater, în funcţie de valorile parametrilor săi. Formatul general: [.]Line [[Step](x1, y1)] - [Step](x2, y2) [,[culoare][,B[F]]] unde: • x1,y1 : reprezintă coordonatele punctului din care începe trasarea liniei sau patrulaterului (colţul din stânga sus); • x2,y2 : reprezintă coordonatele punctului unde se termină trasarea liniei sau patrulaterului (colţul din dreapta jos); • B : indică trasarea unui patrulater definit de coordonatele de x1,y1 (colţul din stânga sus al patrulaterului) şi x2,y2 (colţul din dreapta jos); • F : permite umplerea patrulaterului cu culoarea de desenare. Acest parametru nu poate fi folosit fără parametrul B. Dacă parametrul F lipseşte 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 proprietăţii FillStyle. Grosimea liniei depinde de valorile proprietăţii DrawWidth a obiectului respectiv. Exemplu: Pentru trasarea într-o fereastră a unei diagonale se introduce următoarea linie program: Form1.Line (100, 100)-(1050, 1050) Rezultatul acestei linii program este prezentat în figura 3.15.
124
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.15. Rezultatul utilizării metodei Line. LinkExecute Aparţine acelor obiecte (controale) care pot avea o legătură DDE cu alte aplicaţii Windows: etichete, casete de imagini, casete de editare etc. Această proprietate permite transmiterea unei comenzi aplicaţiei care se află într-o legătură DDE cu obiectul respectiv. Această comandă trebuie să fie recunoscută de aplicaţia respectivă. Formatul general: .LinkExecute unde: • : este un şir de caractere reprezentând comanda ce va fi transmisă aplicaţiei dintr-o legătură DDE. De exemplu, în cazul legăturilor cu aplicaţii ca Microsoft Word sau Microsoft Excel se acceptă, ca şi comenzi, macroinstrucţiunile acestor aplicaţii incluse între paranteze drepte. LinkPoke Aparţine etichetelor, casetelor de imagini şi casetelor de editare. Această metodă transferă conţinutul obiectului în legătură cu care se foloseşte, elementului unei alte aplicaţii în cadrul unei legături DDE. Formatul general: 125
Visual Basic .LinkPoke Pentru etichete sursa de transfer va fi valoarea proprietăţii Caption, pentru caseta de editare va fi valoarea proprietăţii Text, iar pentru caseta de imagini va fi valoarea proprietăţii Picture. Elementul destinaţie va fi cel stabilit prin proprietăţile LinkTopic şi LinkItem. LinkRequest Aparţine etichetelor, casetelor de imagini şi casetelor de editare. Folosirea acestei metode are ca efect încărcarea valorii proprietăţilor Caption pentru etichete, Picture pentru caseta de imagini şi Text pentru caseta de editare, cu conţinutul elementului unei alte aplicaţii Windows aflată în legătură de tip DDE cu obiectul respectiv. Formatul general: .LinkRequest Dacă valoarea proprietăţii LinkMode a obiectului respectiv este 1 Automatic, atunci actualizarea obiectului cu conţinutul elementului sursă al aplicaţiei din cadrul legăturii DDE, se face în mod automat fără 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 proprietăţii LinkMode este 3 - Notify atunci actualizarea obiectului se va face doar dacă apare evenimentul LinkNotify, folosindu-se şi în acest caz metoda LinkRequest.
LinkSend 126
Proprietăţile, metodele şi evenimentele obiectelor Aparţine casetei de imagini. Această metodă determină transferul conţinutului zonei de imagini, elementului unei alte aplicaţii Windows aflată în legătură DDE cu zona de imagini. Formatul general: .LinkSend Move Aparţine tuturor controalelor în afară de meniu şi de minutar. Această metodă determină mutarea obiectului (controlului) respectiv în cadrul aplicaţiei. Formatul general: [.]Move stânga[, sus[, lungime[, înălţime] ] ] unde: • stânga : este un număr ce reprezintă coordonata pe orizontală (abscisa) a marginii stângi a obiectului; • sus : este un număr ce indică coordonata pe verticală (ordonata) a marginii de sus a obiectului; • lungime : este un număr prin care se stabileşte lungimea (lăţimea) obiectului; • înălţime : este un număr prin care se stabileşte înălţimea obiectului. Aceste coordonate sunt valorile proprietăţilor ScaleLeft, ScaleRight, ScaleWidth şi ScaleHeight. Point Aparţine ferestrelor simple şi casetei de imagini. Formatul general: .Point (x,y) 127
Visual Basic Această proprietate returnează valoarea funcţiei RGB a punctului de coordonate x, y. Unitatea de măsură este cea setată prin proprietatea ScaleMode. Popupmenu Aparţine ferestrelor. Această proprietate afişează un meniu popup la coordonatele date de poziţia curentă a mouse-ului sau la coordonatele specificate de programator. Formatul general: [.]PopupMenu nume_meniu [, flags [, x [, y] ] ] unde: • nume_meniu : reprezintă valoarea proprietăţii Name a unei opţiuni principale definite în cadrul ferestrei de realizare a meniurilor (Menu Design Window) şi care trebuie sa aibă cel puţin o subopţiune; • x,y : reprezintă abscisa respectiv ordonata punctului unde va fi afişat meniul popup; • flags : reprezintă o constantă prin care se determină poziţia meniului popup faţă de coordonata x şi modul de activare al acestuia. Ea poate avea următoarele valori: 0 POPUPMENU_LEFTALIGN : (Implicit) meniul popup este aliniat la stânga 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 recunoaşte (activează) atunci 128
Proprietăţile, metodele şi evenimentele obiectelor când utilizatorul apasă butonul stâng al mouse-ului; 2 POPUPMENU_RIGHTBUTTON : meniul popup se activează atunci când utilizatorul apasă butonul drept al mouse-ului. Pentru a utiliza în cadrul parametrului flags ambele tipuri de constante se foloseşte operatorul logic OR. Unitatea de masură în care sunt exprimate coordonatele x şi y este dată de valoarea proprietăţii ScaleMode (implicit 1-Twips) Exemplu: Aplicaţia 8 din capitolul 6. Pset Aparţine ferestrelor simple, casetelor de imagini şi imprimantei. Această metodă permite desenarea unui punct în cadrul obiectului respectiv. Formatul general: [.]PSet [Step](x, y)[,culoare] unde: • x,y : reprezintă abscisa şi ordonata punctului ce va fi desenat. Mărimea punctului depinde de valoarea proprietăţii DrawWidth.
Refresh Aparţine tuturor obiectelor exceptând ferestrele "mamă" (MDIform), meniurile, minutarul şi obiectele speciale. 129
Visual Basic Atunci când este folosită această metodă reactualizează obiectul respectiv (proprietăţile acestuia). Formatul general: [].Refresh RemoveItem Aparţine casetei de listare şi casetei combo. Această proprietate şterge un element din cadrul listei acestor obiecte. Formatul general: .RemoveItem index unde index este un număr întreg ce reprezintă poziţia elementului respectiv în listă. Exemplu: Dacă din cadrul unei liste (figura 3.16) se doreşte să se şteargă elementul al treilea se va utiliza următoarea linie program: List1.RemoveItem 2
130
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.16. Conţinutul listei List1. Rezultatul este prezentat în figura 3.17.
Fig. 3.17. Efectul metodei RemoveItem. Scale Aparţine ferestrelor simple, casetei de imagini şi imprimantei. Această metodă permite stabilirea coordonatelor sistem ale obiectului la care se referă. 131
Visual Basic Formatul general: [.]Scale [(x1, y1) - (x2, y2)] unde: • x1,y1 : reprezintă coordonatele colţului din stânga sus a obiectului; • x2,y2 : reprezintă coordonatele colţului din dreapta jos a obiectului. SetFocus Aparţine tuturor obiectelor în afară de chenar, meniu, linie grafică, elemente grafice (shape), minutar, imagine (image). Această metodă transmite focus-ul obiectului în legătură cu care este folosită, adică acel obiect va deveni obiectul activ în cadrul aplicaţiei. Formatul general: .SetFocus Această metodă nu poate fi folosită în legătură cu obiectele care au valoarea proprietăţii Enabled setată False. Show Aparţine ferestrelor. Această proprietate activează (încarcă în memorie şi pe ecran) fereastra la care se referă. Formatul general: [.]Show [stil] unde: • stil : reprezintă modul de încărcare a ferestrei, dacă ea va fi o fereastră modală sau nu şi poate lua una din următoarele valori: 0 : fereastră nemodală; 1 : fereastră modală. 132
Proprietăţile, metodele şi evenimentele obiectelor Fereastră modală este acea fereastră care nu se închide decât atunci când utilizatorul a realizat o acţiune cerută de această fereastră (apăsarea unui buton, editarea unui text în zona de editare, etc.). Fereastră "mamă" (MDIform) nu poate fi setată ca fereastră modală. TextHeight Aparţine ferestrelor simple, casetei de imagini şi imprimantei. Această metodă returnează înălţimea (în unitatea de măsură curentă exprimată prin proprietatea ScaleMode) unui text din cadrul obiectului la care se referă. Formatul general: [.]TextHeight (text) unde text este o variabilă de tip şir de caractere, care reprezintă textul a cărui înălţime va fi returnată de metodă TextHeight. TextWidth Aparţine ferestrelor simple, casetei de imagini şi imprimantei. Această metodă returnează lungimea (în unitatea de măsură curentă exprimată prin proprietatea ScaleMode) unui text din cadrul obiectului la care se referă. Formatul general: [.]TextWidth (text) unde text este o variabilă de tip şir de caractere, care reprezintă textul a cărui lungime va fi returnată de metodă TextWidth.
3.3. Evenimentele 133
Visual Basic Fiecare obiect din cadrul interfeţei aplicaţiei (fereastra de lucru şi controalele) "reacţionează" la anumite evenimente cum ar fi : apăsarea unei taste, un click sau dublu click mouse, schimbarea proprietăţilor unui obiect, redimensionarea obiectului, etc. Aceste evenimente pot fi clasificate în evenimente externe şi evenimente interne. • Evenimentele externe sunt acele evenimente generate de acţiunea utilizatorului (acţionarea unei taste, un click sau dublu click mouse, etc); • Evenimentele interne aplicaţiei sunt generate de modificarea valorilor unor proprietăţi independent de acţiunile utilizatorului (evenimentul Timer al minutarului, etc.). În Visual Basic fiecărui eveniment îi este asociată o procedură (subrutină) eveniment în cadrul căreia programatorul poate introduce instrucţiunile ce vor fi executate în momentul producerii evenimentului. Sintaxa unei proceduri eveniment e următoarea : [Private| Public| Friend] [Static] Sub _(parametrii) [instrucţiuni] [Exit Sub] [instrucţiuni] End Sub unde: • Private| Public| Friend: aceste instrucţiuni sunt opţionale. Dacă sunt utilizate ele se exclud reciproc, astfel încât, 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 către 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 134
• • • •
Proprietăţile, metodele şi evenimentele obiectelor alte proceduri din modulul clasă, dar nu poate fi accesată prin intermediul instanţei la acea clasă. Static: specifică faptul că variabilele declarate, în cadrul procedurii la care se referă, sunt recunoscute doar în cadrul acestei proceduri; : reprezintă numele obiectului căruia îi aparţine evenimentul respectiv; : reprezintă denumirea (identificatorul) evenimentului; parametrii: reprezintă variabile ce pot fi utilizate în legătură 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 acţionat şi variabilele x şi y care returnează poziţia mouse-ului. Linia program din interiorul procedurii are ca rezultat, în momentul deplasării mouse-ului pe fereastră, afişarea în titlul ferestrei a poziţiei mouse-ului pe fereastră în funcţie de cele două variabile x şi y. Evenimentul click mouse corespunzător obiectului Command1 de pe fereastra machetă este următorul: Private Sub Command1_Click() [instrucţiuni] End Sub Procedura eveniment asociată unui obiect are ca efect executarea instrucţiunilor, din cadrul procedurii, în momentul în care apare evenimentul la care se referă.
135
Visual Basic Obiectele puse la dispoziţia programatorului nu reacţionează la aceleaşi evenimente. De exemplu minutarul nu are decât procedura eveniment Timer. Programul sursă corespunzător fiecărei proceduri eveniment se va introduce în cadrul ferestrei (Code) de editare a programului (figura 3.18.). Activarea ferestrei Code se realizează atât printr-un dublu click mouse pe obiectul din machetă, cât şi prin selectarea opţiunii Code din cadrul meniului View. Caseta combo Object
Caseta combo Procedure
Caseta de editare a programului
Butonul de vizualizare doar a procedurilor
Butonul de vizualizare a întregului program
Fig. 3.18. Fereastra Code. Fereastra Code are următoarele elemente: • Caseta combo Object (figura 3.19.): permite afişarea unei liste din cadrul căreia poate fi ales obiectul, din machetă, pentru care se va introduce programul corespunzător procedurilor sale eveniment; 136
Proprietăţile, metodele şi evenimentele obiectelor
Fig. 3.19. Conţinutul casetei Object. •
•
•
Caseta combo Procedure (figura 3.20.): permite afişarea unei liste care conţine toate procedurile eveniment ce pot fi utilizate în legătură cu obiectul selectat în caseta Object;
Fig. 3.20. Conţinutul casetei Procedure. Caseta de editare (scriere) a programului sursă: permite introducerea instrucţiunilor corespunzătoare atât declaraţiilor şi procedurilor generale (General), cât şi a instrucţiunilor corespunzătoare procedurilor eveniment; Butonul de vizualizarea doar a procedurilor: acţionarea acestui buton are ca rezultat vizualizarea, în cadrul casetei de scriere 137
Visual Basic (editare) a programului, doar a procedurilor (subrutinelor) ascunzând zona declaraţiilor (General); • Butonul de vizualizare a întregului program: permite afişarea în cadrul casetei de scriere a programului, atât a procedurilor eveniment cât şi a declaraţiilor corespunzătoare modulului curent. Cele mai importante şi mai utilizate proceduri eveniment în Visual Basic sunt următoarele: Activate / Deactivate Aparţin ferestrelor. Evenimentele Activate si Deactivate apar atunci când fereastra este activată (Activate), respectiv când ea devine o fereastră pasivă (Deactivate). Ferestrele active sunt acelea asupra cărora este transmis focus-ul, fie de către utilizator, fie de către programator prin utilizarea instrucţiunilor SetFocus sau Show. Dezactivarea ferestrelor se realizează prin utilizarea metodei Hide, a instrucţiunii UnLoad sau prin setarea proprietăţii Visible pe valoarea False. Formatul general este următorul : Sub Form_Activate ( ) End Sub Sub MDIForm_Activate ( ) End Sub Sub Form_Deactivate ( ) End Sub Sub MDIForm_Deactivate ( ) End Sub
138
Proprietăţile, metodele şi evenimentele obiectelor Change Evenimentul poate să apară la următoarele controalele : caseta combo, caseta de selecţie a unităţilor de disc, a directoarelor, etichete, zona de imagini, bare de defilare şi caseta de editare. Acest eveniment apare la schimbarea conţinutului acestor obiecte (valorilor unor proprietăţi ale obiectului respectiv). Format general: Sub _Change( [index As Integer] ) End Sub unde index este folosit pentru identificarea obiectului în cazul când există un tablou de obiecte de acelaşi tip. Astfel : • în cadrul casetei combo acest eveniment apare când valoare din cadrul casetei de editare a cutiei este modificată (schimbată) prin intervenţia utilizatorului. Deci valoarea proprietăţii Text a fost modificată. •
în cadrul casetei de selecţie a unităţilor de disc evenimentul Change este generat în următoarele cazuri : ♦ utilizatorul selectează o unitate nouă de disc din listă; ♦ proprietatea Drive a fost modificată pe parcursul executării programului.
•
în cadrul casetei de selecţie a directoarelor acest eveniment este generat în următoarele cazuri: ♦ utilizatorul selectează un nou director; ♦ proprietatea Path a fost modificată în cursul executării programului.
•
în cazul etichetelor, acest eveniment este generat în următoarele cazuri: ♦ se realizează un schimb dinamic de date între eticheta şi elementul unei alte aplicaţii Windows, o legătură DDE; 139
Visual Basic ♦ proprietatea Caption a fost modificată în cursul executării programului. •
în cazul zonei de imagini, acest eveniment este generat în următoarele cazuri: ♦ zona de imagini are o legătură DDE; ♦ proprietatea Picture a fost modificată în cursul executării programului.
•
în cazul barelor de defilare, acest eveniment este generat în următoarele cazuri : ♦ utilizatorul deplasează pointerul pe bara de defilare; ♦ proprietatea Value a fost modificată în cursul executării programului.
•
în cadrul casetei de editare, acest eveniment este generat în următoarele cazuri : ♦ utilizatorul modifică conţinutul casetei de editare; ♦ proprietatea Text a fost modificată în cursul executării programului. Click
Acest eveniment aparţine tuturor obiectelor, fără caseta de selecţie a unităţilor de disc, chenar (cadru), barele de defilare, caseta de editare, minutarul şi toate obiectele speciale. Evenimentul Click este generat atunci când utilizatorul realizează un click pe butonul stâng al mouse-ului în momentul în care cursorul acestuia este poziţionat pe obiectul respectiv. Acest eveniment poate fi generat în aceeaşi măsură acţionând tasta (la butoanele de comandă proprietatea Cancel trebuie sa aibă valoarea True), sau . Format general: Sub Form_Click()
- pentru ferestre. 140
Proprietăţile, metodele şi evenimentele obiectelor End Sub Sub _Click( [index as Integer] ) End Sub
- pentru celelalte obiecte.
Exemplu: Pentru a schimba textul conţinut în cadrul unei etichete, la executarea unui click mouse pe butonul de comandă Command1, se va utiliza următoarea 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 aparţine următoarelor obiecte : caseta combo, caseta de selecţie a fişierelor, fereastra, eticheta, butonul de opţiune, chenar, caseta de editare, zona de imagini şi caseta de listare. 141
Visual Basic Evenimentul DblClick este generat atunci când utilizatorul realizează un dublu click mouse pe obiect. Formatul general: Sub Form_DblClick() End Sub Sub _Dblclick( [index As Integer] ) End Sub DragDrop Aparţine tuturor obiectelor fără meniu, minutar şi obiectele speciale. Evenimentul DragDrop este generat de operaţiunea de glisare (Drag & Drop) realizată asupra obiectului respectiv. Această operaţiune se realizează astfel: se poziţionează pointerul mouse-ului pe obiect; menţinând butonul stâng al acestuia apăsat se deplasează obiectul respectiv pe suprafaţa ferestrei până în poziţia în care se doreşte a fi depus; se eliberează butonul mouse-ului. Evenimentul DragDrop apare numai atunci când 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 _DragDrop([Index As Integer,]Source As Control, X As Single, Y As Single) End Sub unde : 142
• •
Proprietăţile, metodele şi evenimentele obiectelor Source As Control: corespunde obiectului care este deplasat. Se poate utiliza instrucţiunea If Type of Source Is... pentru determinarea exactă a tipului de obiect; X şi Y: reprezentând coordonatele pointerului mouse-ului când obiectul este depus. DragOver
Aparţine tuturor obiectelor, fără meniu, minutar şi obiecte speciale. Evenimentul DragOver apare atunci când utilizatorul deplasează un obiect peste alte obiecte din cadrul interfeţei. Acest eveniment se produce de fiecare dată când pointerul mouse-ului e deplasat atunci când se efectuează operaţia 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 _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 instrucţiunea If Type of Source Is ... pentru a determina exact tipul de obiect; X şi Y : reprezintă coordonatele pointerului mouse-ului când obiectul este deplasat (glisat); 143
Visual Basic • State: (stare) permite cunoaşterea în care moment obiectul deplasat trece pe sub alte obiecte ale ferestrei. Parametrul State poate avea una din următoarele valori : 0 : pointerul mouse-ului se găseşte 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 Aparţine casetei combo. Evenimentul DropDown este generat atunci când utilizatorul apasă pe butonul de derulare (săgeata) a unei casete combo. Format general: Sub _DropDown( [Index As Integer] ) End Sub GotFocus Aparţine tuturor obiectelor, fără cadru, etichete, meniu, minutar şi obiecte speciale. Evenimentul GotFocus este generat atunci când un obiect primeşte focus-ul (prin acţionarea tastei , sau a butonului stânga mouse, operaţii realizate de către utilizator). Acest eveniment poate apare şi atunci când programatorul foloseşte în cadrul sursei program a aplicaţiei metoda SetFocus. Formatul general: Sub Form_GotFocus( ) End Sub Sub _GotFocus([Index As Integer] ) End Sub 144
Proprietăţile, metodele şi evenimentele obiectelor
KeyDown, KeyUp Aparţine tuturor obiectelor fără cadru, etichete, minutar şi obiecte speciale. Evenimentele KeyDown si KeyUp sunt generate atunci când utilizatorul a acţionat o tastă (KeyDown) sau a eliberat tasta (KeyUp). Formatul general: Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) End Sub Sub _KeyDown([Index As Integer,]KeyCode As Integer, Shift As Integer) End Sub Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) End Sub Sub _KeyUp([Index As Integer,]KeyCode As Integer, Shift As Integer) End Sub •
•
•
unde : KeyCode: reprezintă codul ASCII corespunzător unei taste apăsate sau eliberate. În fişierul constant.txt sunt declarate constantele aferente tastelor. De exemplu Key_F1 care corespunde tastei F1 sau Key_Down care corespunde tastei săgeată în jos; Shift: determină dacă tastele (valoarea 1), (valoarea 2) şi (valoarea 4) sunt apăsate în momentul evenimentului. Observaţie: Evenimentele KeyDown şi KeyUp nu sunt generate dacă: în cazul butoanelor de comandă proprietăţile Default sau Cancel sunt True; 145
Visual Basic • tasta este acţionată. KeyPress Aparţine tuturor obiectelor, fără cadru, etichete, meniu, minutar şi obiecte speciale. Evenimentul KeyPress este generat de acţionarea unei taste. Format general: Sub Form_KeyPress(KeyAscii As Integer) End Sub Sub _KeyPress([Index As Integer,]KeyAscii As Integer) End Sub unde : • KeyAscii: corespunde codului ASCII al tastei acţionate. Observaţie: Acest eveniment nu este generat dacă una dintre tastele , sau este apăsată.
LinkClose Aparţine următoarelor obiecte : fereastra, etichete, zona de imagine şi zona de editare. Evenimentul este generat atunci când se întrerupe (termină) schimbul dinamic de date cu o alta aplicaţie Windows (se întrerupe o legătură DDE). Procedura eveniment asociată este în general utilizată pentru a indica (de exemplu prin instrucţiunea MsgBox) terminarea schimbului dinamic de date. 146
Proprietăţile, metodele şi evenimentele obiectelor Formatul general: Sub {Form|MDIForm}_LinkClose( ) End Sub Sub _LinkClose( [Index As Integer] ) End Sub LinkError Aparţine obiectelor : fereastra, eticheta, zona de imagini şi caseta de editare. Evenimentul este generat când apare o eroare în timpul legăturii DDE cu o aplicaţie Windows. Formatul general: Sub {Form|MDIForm}_LinkError(LinkErr As Integer) End Sub Sub _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 fişierul constant.txt care poate fi inclus în aplicaţie. LinkExecute Aparţine ferestrelor. Evenimentul apare atunci când o comandă a fost trimisă unei ferestre dintr-o altă aplicaţie (care este client într-o legătură DDE). Această comandă este trimisă ca şir de caractere (parametru a procedurii eveniment asociată). Format general: 147
Visual Basic Sub {Form|MDIForm}_LinkExecute(CmdStr As String, Cancel As Integer) End Sub unde : • Cmdstr: reprezintă comanda transmisă de fereastra aplicaţiei client; • Cancel: poate lua valoarea 0, ceea ce semnifică faptul că comanda a fost acceptată de aplicaţia client, sau o valoare diferită de 0, ceea ce semnifică faptul că comanda nu a fost acceptată de client. LinkOpen Aparţine obiectelor : fereastra, eticheta, zona de imagini şi caseta de editare. Evenimentul LinkOpen apare atunci când este iniţiată o legătură DDE. Format general: Sub {Form|MDIForm}_LinkOpen(Cancel As Integer) End Sub Sub _LinkOpen([Index As Integer,]Cancel As Integer) End Sub unde parametrul Cancel poate lua valoarea 0, caz în care legătura cu aplicaţia client continuă, sau o valoare diferită de 0, caz în care legătura este abandonată. Load Aparţine ferestrelor. Evenimentul Load este generat atunci când o fereastra este încărcată pe ecran. 148
Proprietăţile, metodele şi evenimentele obiectelor Format general: Sub Form_Load( ) End Sub Sub MDIForm_Load( ) End Sub Procedura eveniment asociată evenimentului Load corespunzător ferestrei principale a aplicaţiei este executată prima în momentul lansării în execuţie a aplicaţiei. Exemplu: Pentru iniţierea unei variabile la încărcarea unei ferestre se va asocia valoarea variabilei în cadrul procedurii eveniment Load, astfel: Private Sub Form_Load() i=1 End Sub
LostFocus Aparţine tuturor obiectelor fără cadru, eticheta, meniu, minutar şi obiectele speciale. Evenimentul este generat atunci când un obiect este dezactivat (pierde focus-ul). Acest eveniment se petrece când utilizatorul acţionează tasta , realizează un click mouse pe un alt obiect sau metoda SetFocus este executată trecând focus-ul obiectului respectiv. Formatul general: Sub Form_LostFocus( ) End Sub 149
Visual Basic Sub _LostFocus([Index As Integer]) End Sub MouseDown, MouseUp Aparţine tuturor obiectelor, fără minutar si obiectele speciale. Evenimentele sunt generate atunci când utilizatorul acţionează fără 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 _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 _MouseUp([Index As Integer,]Button As Integer, Shift As Integer, X As Single, Y As Single) unde : • Button: indică butonul care a fost apăsat sau eliberat ( 1 - buton stânga, 2 - buton dreapta, 4 - buton central); • Shift: determină dacă tastele (valoarea 1), (valoarea 2) şi (valoarea 4) sunt acţionate în momentul evenimentului. Dacă mai multe taste sunt acţionate, Visual Basic returnează suma valorilor corespunzătoare fiecărei taste acţionate; 150
•
Proprietăţile, metodele şi evenimentele obiectelor X şi Y: corespund coordonatelor poziţiei pointerului mouse-ului în momentul evenimentului. MouseMove
Aparţine tuturor obiectelor, fără minutar şi obiectele speciale. Evenimentul MouseMove este generat atunci când 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 _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 acţionate (returnează: 1 - buton stânga, 2 - buton dreapta, 4 - buton central ) în timpul evenimentului. Dacă mai multe butoane sunt apăsate, Visual Basic returnează suma valorilor corespunzătoare butoanelor acţionate; Shift: determină dacă tastele (valoarea 1), (valoarea 2) şi (valoarea 4) sunt apăsate în momentul evenimentului. Dacă mai multe butoane sunt apăsate, Visual Basic returnează suma valorilor corespunzătoare fiecărui buton apăsat; X şi Y: corespund coordonatelor poziţiei pointer-ului mouse-ului în momentul evenimentului. Paint Aparţine obiectelor : fereastra şi zona de imagini. 151
Visual Basic Evenimentul Paint apare atunci când o parte, toată fereastra, sau zona de imagini este iniţiată pentru a fi încărcată cu o imagine. Formatul general: Sub Form_Paint( ) End Sub Sub _Paint([Index As Integer]) End Sub Acest eveniment nu se produce atunci când proprietatea AutoRedraw a obiectului are valoarea True. PathChange Aparţine casetei de selecţie a fişierelor. Evenimentul apare atunci când valorile proprietăţilor Path sau FileName au fost modificate în cadrul programului a aplicaţiei. Formatul general: Sub _PathChange([Index As Integer]) End Sub Procedura eveniment asociată este executată când utilizatorul selectează un nou fişier din caseta de selecţie a fişierelor. PatternChange Aparţine casetei de selecţie a fişierelor. Evenimentul apare atunci când utilizatorul introduce un nou filtru de selecţie a fişierelor în caseta de editare a obiectului. Această procedură este executată când valoarea proprietăţii FileName sau Pattern sunt modificate. 152
Proprietăţile, metodele şi evenimentele obiectelor Formatul general: Sub _PatternChange([Index As Integer]) End Sub Resize Aparţine ferestrelor şi zonelor de imagini. Evenimentul Resize este generat atunci când se modifică dimensiunile ferestrei sau a zonei de imagini. Formatul general: Sub {Form|MDIForm|picturebox}_Resize( ) End Sub
Timer Aparţine minutarului. Evenimentul apare de fiecare dată când 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 _Timer([Index As Integer]) End Sub UnLoad 153
Visual Basic Aparţine ferestrelor. Evenimentul este generat atunci când o fereastră este suprimată de pe ecran şi din memorie. Acest eveniment se produce când utilizatorul a realizat un dublu click mouse pe butonul de închidere a ferestrei, când în program a fost folosită instrucţiunea UnLoad sau atunci când aplicaţia este închisă forţat prin acţionarea combinaţiei de taste ++. Formatul general: Sub {Form|MDIForm}_Unload(Cancel As Integer) End Sub unde Cancel anulează operaţia de suprimare a ferestrei când valoarea sa este diferită de 0. Observaţie: Procedura eveniment asociată evenimentului UnLoad nu este executată dacă aplicaţia este închisă utilizând instrucţiunea End.
154
Limbajul de programare
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ă poziţii: o instrucţiune şi un argument. Exemplu: PRINT TIME$ Lungimea unei linii nu poate să depăşească 1024 caractere. O instrucţiune poate ocupa şi două linii, reunite printr-o linie de subliniere “_” plasată la sfârşitul primei linii. Exemplu: D=B^2-4*A_ *C este echivalentă cu: D=B^2-4*A*C O linie de program poate conţine mai multe instrucţiuni separate prin caracterul “:”, lucru nerecomandabil datorită dificultăţilor de citire şi înţelegere a programului. Exemplu: A=25: B=10: PRINT A*B Liniile de program pot fi scrise cu majuscule şi/sau cu minuscule. 155
Visual Basic
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 semnificaţie predefinită, motiv pentru care pot fi folosite numai în modul în care sunt specificate în formatele generale (de exemplu: PRINT, FOR…NEXT, DO…LOOP, etc). Cuvintele utilizator sunt create de programator atât pentru a defini datele ce se prelucrează, programele, fişierele, procedurile, cât ş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 rămân aceleaşi pe toată durata execuţiei programului. Utilizarea unei constante prezintă două avantaje: • un nume este adesea mai explicit decât o valoare; • dacă constanta este utilizată de mai multe ori în program, modificarea valorii asociate acesteia implică o singură schimbare la nivelul declaraţiei constantei. Pentru declararea unei constante este necesară utilizarea instrucţiunii Const. Sintaxa instrucţiunii este următoarea: [Global] Const nume_constantă=expresie [, nume_constantă=expresie]…
unde: 156
Limbajul de programare • Global este un cuvânt rezervat, care precede instrucţiunea 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 număr, un şir de caractere sau o expresie aritmetică sau logică cu excepţia operaţiilor exponenţiale. În cadrul expresiei nu pot fi folosite variabile, şiruri concatenate, funcţii utilizator sau funcţii intrinseci în Visual Basic . De asemenea, se pot defini constante ale căror expresii conţin 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 putând fi unul din: %, &, !, #, $. Acest caracter nu face parte din nume. Exemplu: Const MAXDIM%=250 Dim Nume$(MAXDIM) Dacă nu se foloseşte un caracter de definire a tipului constantei, tipul constantei este dat de tipul datei de bază din expresia conţinută de Const. Dacă expresia este un şir, atunci tipul constantei este şir. Când expresia este de tip numeric, ea este mai întâi 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 definiţie, tipul Variant poate apărea ca diferite tipuri de date ce decurg din context. Constantele nu sunt influenţate de instrucţiunea 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 secţiune 157
Visual Basic de declaraţie 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, fişierele ş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 conţine şi un ansamblu de constante predefinite care se găsesc în fişierul Constant.txt din cadrul meniului File, care afişează o fereastră în cadrul căreia se poate indica fişierul *.txt ce va fi încărcat. Utilizarea butonului de comandă Merge determină Visual Basic-ul să adauge definirile de constante textului eventual prezent, iar butonul Replace înlocuieşte textul cu un nou conţinut.
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 locaţii 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 având 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 conţin puncte sau spaţii şi nu pot fi cuvinte rezervate în limbajul Visual Basic. Fiecare variabilă este de un anumit tip care informează calculatorul câtă memorie necesită şi operaţiile care pot fi realizate cu respectivul tip de date.
158
Limbajul de programare Pentru declararea unei variabile se utilizează patru instrucţiuni: DIM, GLOBAL, STATIC şi REDIM. Tipul variabilei poate fi definit cu ajutorul unui caracter de tip adăugat numelui variabilei (#, $, etc). Instrucţiunea DIM declară variabilele şi alocă spaţiul de stocare pentru acestea. Sintaxa instrucţiunii Dim este următoarea: DIM [WithEvents] nume_variabilă [([subscripts])] [As [New] type] [, [WithEvents] nume_variabilă [([subscripts])] [As [New] type]] . . . unde: • WithEvents: specifică faptul că nume_variabilă este un obiect pentru a răspunde la evenimente create de un obiect ActiveX. Cu această opţiune nu se poate utiliza New. Cu WithEvents se pot declara oricâte variabile dar nu se pot definii vectori; • nume_variabilă: este numele variabilei; • subscripts: se foloseşte 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 excepţia cazurilor când este schimbat cu ajutorul instrucţiunii Deftip). Declararea implicită Variabilele pot să nu fie declarate înainte de prima lor utilizare în program, pentru ele Visual Basic-ul alocând î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 aplicaţiei. Exemplu: 159
Visual Basic Canti=10 Pu=25 Valoare_int=Cant*Pu Declararea explicită Pentru a evita problemele legate de utilizarea greşită a numelor variabilelor, se poate plasa următoarea instrucţiune la începutul unei secţiuni de declaraţie în toate fişierele şi modulele. Option explicit Această instrucţiune va genera un mesaj de eroare când se întâlneşte o variabilă care nu a fost declarată în prealabil. Instrucţiunea Option explicit poate fi inserată automat în toate fişierele şi modulele prin selectarea opţiunii Reguied Variables Declaration din caseta de dialog Environment Options a meniului Options (tastându-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 căruia 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 instrucţiunile DIM, STATIC, sau REDIM) fiind recunoscute numai în procedura în care apar. Variabilele declarate cu DIM sunt active numai pe perioada executării 160
Limbajul de programare procedurii, în timp ce variabilele declarate cu STATIC îşi păstrează valorile pe tot timpul execuţiei 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 puţin mai larg, deoarece variabilele sunt recunoscute de toate procedurile şi funcţiile unui modul sau unei forme. Ele se declară cu instrucţiunea Dim în secţiunea de declaraţie a unei forme sau a unui modul şi îşi păstrează valorile pe toată durata aplicaţiei. Variabile globale Variabilele globale au raza de acţiune cea mai largă. Ele sunt recunoscute în toate procedurile şi în toate funcţiile din cadrul aplicaţiei, pe toată durata de rulare. Declararea unei astfel de variabile se face cu ajutorul instrucţiunii GLOBAL în secţiunea de declaraţii a unui modul. Instrucţiunea GLOBAL nu este admisă în proceduri sau în modulul formei. Exemplu: Global .n As Double.. Într-un program pot fi declarate două variabile cu acelaşi 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. 161
Visual Basic
4.4.3. Durata de viaţă a variabilelor O altă caracteristică de care se ţine seama la declararea variabilelor este durata de viaţă. Viaţa unei variabile începe în momentul în care a fost declarată şi se regăseşte în memorie şi se sfârşeşte când nu mai este regăsită în memorie. Viaţa unei variabile nu trebuie confundată cu domeniul. Există două durate de viaţă posibile pentru o variabilă: viaţa limitată la procedură şi viaţa limitată la aplicaţie. Viaţa 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 execuţie a procedurii în care au fost declarate. Viaţa limitată la aplicaţie Variabilele globale ca şi cele de modul sau formă au o durată de viaţă egală cu timpul rulării aplicaţiei. Pentru ca o variabilă locală să-şi păstreze valoarea pe tot timpul execuţiei aplicaţiei, ea se declară statică. Declararea uneia sau a mai multor variabile statice se face folosind cuvântul 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 162
Limbajul de programare Pentru declararea tuturor variabilelor unei proceduri ca statice se pune la începutul procedurii cuvântul 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
INTEGER LONG
Întregi Întregi lungi
% &
Lungim e 2 octeţi 4 octeţi
CURRENCY
Numere zecima-le cu virgulă fixă
@
8 octeţi
SINGLE
Numere zeci-male cu virgulă flotantă simplă precizie (pentru aplicaţii ştiinţi-fice) Numere zecima-le
!
4 octeţi
-3,402.823E38÷ -1,401.298E-45 si 1,401.298E-45÷ 3,402.823E38
8 octeţi
1,797.693.134.86
DOUBLE
# 163
Domeniul -32.768÷32.767 -2.147.483.648÷ 2.147.483.647 -922.337.203.685. 477,5808÷ 922.337.203.685. 477,5807
Visual Basic 232E308÷ 4,940.656.458.41 247E-324 si 4,940.656.458.41 247E-324÷ 1,797.693.134.86 232E308
cu virgulă flotantă dublă precizie (pentru calcule ştiinţifi-ce)
STRING (şir)
Şir caractere
STRING
Şir $ caractere de lungime fixă Suita de 8 fără biti Date de fără tipul “adevărat” sau “fals” Poate conţine data şi/sau ora Depinde de fără con-ţinutul variabi-lei: toate numerele, toate şiru-rile, toate datele şi orele.
BYTE BOOLEAN
DATE VARIANT
$
164
lung. variabilă lung. fixă
Lungime predefinită
1 octet
0 la 255
2 octeţi 8 octeţi lung. variabilă
0 la aproximativ 65.500 caractere
True sau False
OBJECT
Fără
8 octeţi
Limbajul de programare Stochează date relative la o instanţă a unei clase sau obiect.
La datele de tip Boolean valoarea True este echivalentă cu numărul 0, iar valoarea False este echivalentă cu numărul -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 găzdui valoarea oricărui număr imaginabil. O variabilă de tip Integer are cu certitudine un grad mai mare de restricţie în utilizare pentru că restrânge mult domeniul de valori. Cu toate acestea, trebuie semnalate două avantaje ale acestui tip. Primul ar fi că ocupă numai doi octeţi de memorie faţă de patru cât ocupă tipul Double, iar datele de tip Integer sunt manipulate mai rapid decât celelalte tipuri. Tipul Currency se utilizează în operaţii 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 fără 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, 165
Visual Basic Visual Basic asociază datei însăşi o altă informaţie care specifică tipul datei. Tipul datei unei variabile Variant este accesibilă graţie funcţiei VarType. Această funcţie se utilizează pentru a afişa tipul unei date într-o etichetă cu instrucţiunea următoare: Eticheta =VarType (Stoc) Funcţia returnează următoarele: TIPUL 0 1 2 3 4 5 6 7 8 11 17 8192
DESCRIERE Empty(=vide) Null Integer Long Single Double Currency Date String Boolean Byte Tablou
Empty şi Null nu reprezintă noi tipuri de date, ci conţinuturi particulare de variabile: • Empty: variabila nu a fost iniţializată cu o dată; • Null: semnifică faptul că informaţia nu este cunoscută. Exemplu: numele de fată pentru un bărbat. Programatorul nu trebuie să se ocupe cu tipul de date a unei variabile Variant. Visual Basic iniţializează singur tipul datei când se va da o valoare variabilei. El va alege în mod automat şi inteligent, tipul corespunzând cel mai bine datei introduse. Apoi, chiar atunci când conţinutul datei se schimba, Visual Basic este capabil să-i aleagă un alt tip de dată mai adecvat.
166
Limbajul de programare 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 secvenţei: • Varsta va fi de tip 0 (Empty) deoarece nu a fost iniţializată; • 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 număr este pus între semnele ghilimele; • Stocul va fi de tipul 2 (Integer); • Data_nasterii va fi de tipul 7 (Date); Tipul DATE conţine data şi ora. Dacă data nu este indicată ea este 30/12/1899 (data de naştere a bunicului lui Bill Gates), iar dacă nu este indicată ora, este considerată miezul nopţii. Iniţializarea datelor se face într-una din manierele următoare: 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 găsite dacă sunt omise, de asemenea şi secolul. 167
Visual Basic
4.5. Tipuri de date definite de utilizator Pe lângă cele 10 tipuri de date mai există posibilităţi ca programatorul să-şi definească propriile tipuri de date (structuri de date). Acestea sunt ansambluri de date elementare ce se definesc cu ajutorul instrucţiunilor Type şi End Type în procedura “ Declaration “, într-un modul.BAS. De exemplu, sistemul “Articol” conţine 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 instrucţiunii 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 câmpuri 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 câmpurile din articol_consumat trec în articol_aprovizionat.
168
Limbajul de programare
4.6. Operatorii Un operator este un simbol, un caracter sau un cuvânt care semnifică o relaţie între două sau mai multe elemente.
4.6.1. Operatorii aritmetici În Visual Basic se pot utiliza următorii operatori aritmetici: OPERATORI + * / \ MOD ^
DESCRIERE Adunare Scădere Înmulţire Împărţire Împărţire întreagă (rezultatul este întreg) Restul la împărţire Ridicare la putere
Observaţie: Visual Basic oferă funcţia DIV în locul operatorului \ pentru realizarea operaţiunile de împărţire întreagă.
4.6.2. Operatori de concatenare Concatenarea a două şiruri de caractere se poate face cu unul din operatorii “+” sau “&” (care sunt echivalenţi). x=”ABC” + ”DE” y=”ABC” & ”DE” În ambele cazuri rezultatul este un nou şir “ABCDE”.
4.6.3. Operatorii relaţionali 169
Visual Basic Operatorii relaţionali admişi sunt: OPERATORI > < = > = sau = > < = sau = < < > sau > < Like
DESCRIERE Mai mare Mai mic Egal Mai mare sau egal Mai mic sau egal Diferit de Echivalenţă, congruenţă
4.6.4. Operatorii logici Operatorii logici admişi sunt: OPERATORI AND (ŞI) NOT (NU) OR (SAU) EQV (ECHIVALENT) IMP (IMPLICARE) XOR (EXCLUSIV)
IS
DESCRIERE Rezultatul este adevărat când cei doi operanzi sunt adevăraţi (X And Y) Rezultatul este adevărat dacă operandul este fals şi invers (Not X) Rezultatul este adevărat dacă unul din operanzi este adevărat (X OR Y) Rezultatul este adevărat dacă cei doi operanzi sunt fie adevăraţi fie falşi (X EQV Y) Rezultatul este fals dacă primul operand este adevărat şi următorul fals (X IMP Y) Rezultatul este adevărat dacă unul din operanzi este adevărat. Dacă ambii operanzi sunt sau adevăraţi sau falşi rezultatul este fals. Rezultatul este adevărat dacă cei doi operanzi (variabile de tip obiect) descind din acelaşi obiect. Dacă operanzi descind din obiecte 170
Limbajul de programare diferite rezultatul este fals. Execuţia operatorilor în cadrul unei expresii se face într-o ordine predeterminată numită precedenţa operatorilor. Această ordine poate fi modificată prin utilizarea parantezelor în cadrul expresiei ce urmează a fi evaluată. În cazul în care, o expresie conţine operatori de mai multe tipuri, operatorii aritmetici sunt executaţi primii, apoi operatorii relaţionali şi în final operatorii logici. Ordinea de precedenţă (prioritatea în calcule a operaţiilor) este prezentată în următorul tabel: OPERATORI ARITMETICI Exponentul (^) Negaţie (-) Înmulţire şi împărţire (*,/) Împărţire întreagă (/) Modular (Mod) Adunare şi scădere (+,-) Concatenarea şirurilor &
OPERATORI RELAŢIONALI Egalitate (=) Inegalitate (< >) Mai mic () Mai mic sau egal (< =) Mai mare sau egal (> =) LIKE
XOR EQV IMP IS
4.7. Funcţiile integrate în Visual Basic Există numeroase funcţii predefinite în Visual Basic.
4.7.1. Funcţii matematice 171
Visual Basic FUNCŢIA Abs Atn Cos Exp INT FIX LOG SIGN
SIN TAN
DESCRIEREA Returnează valoarea absolută a unui număr (Abs (x)). Returnează aria tangentă de x (Atn(x)). Returnează cosinusul lui x. Returnează ex la puterea parametrului (Exp(x)). Returnează porţiunea întreagă a unui număr (INT (x)). Returnează partea întreagă a lui x prin trunchierea lui x (FIX (x)). Returnează logaritmul natural dintr-un număr (LOG (x)). Returnează o valoare în funcţie de semnul parametrului (SIGN (x)) astfel: 1 pentru x>0 -1 pentru x= n Then Command2.Enabled = False End If •
în cadrul procedurii eveniment Command3_Click() asociată butonului Maxim se introduce următorul 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 următorul 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 următorul program:
'Calcul si afisare suma sir 260
Dezvoltarea aplicaţiilor în Visual Basic 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 următorul program:
'Calcul si afisare medie sir If n 0 Then media = suma / n End If Label6.Caption = "= " & media Execuţia aplicaţiei este următoarea:
Aplicaţia 4 Pentru studenţii, dintr-o grupă, să se introducă nume şi prenume, număr matricol şi notele de la trei examene. Să se afişeze într-o listă numele şi prenumele, numărul matricol, notele şi media fiecărui student. Se va calcula şi afişa generală a grupei. 261
Visual Basic Rezolvare: Fereastra machetă proiectată este următoarea:
În cadrul programului se vor utiliza următoarele variabile: • n: reprezintă numărul studenţilor din grupă; • i: reprezintă variabila contor cu ajutorul căreia se va parcurge conţinutul variabilelor de tip tablou (masive); • numep$(): reprezintă o variabilă şir de caractere de tip tablou care va conţine numele şi prenumele fiecărui student din grupă; • matric(): reprezintă o variabilă de tip tablou care va conţine numărul matricol al fiecărui student din grupă; • nota1(), nota2(), nota3(), media(): reprezintă variabilele care vor conţine notele la cele trei examene şi media fiecărui student din grupă; • s: reprezintă variabila ce va conţine suma mediilor studenţilor din grupă fiind utilizată la calculul mediei generale a grupei; 262
•
Dezvoltarea aplicaţiilor în Visual Basic MedieGrupa: reprezintă variabila ce va conţine media generală a grupei.
Programul aferent aplicaţiei este următorul: '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