limbaj vizual basic

Upload: tefanius-florian-voica

Post on 03-Apr-2018

308 views

Category:

Documents


5 download

TRANSCRIPT

  • 7/28/2019 Limbaj Vizual Basic

    1/58

    Limbajul Visual Basic

    Informatica

    Limbajul Visual Basic

    Rezumat-se prezinta limbajul de programare Visual Basic sub Excel, si

    un exemplu de realizare a unei aplicatii Windows pentru calcululsalariilor personalului angajat al unei firme.

    3.1. Programarea aplicatiilor Windows

    Pentru realizarea unei aplicatii pot fi avute n vedere doua tehnologii deprogramare si anume:

    -programare procedurala

    - programare orientata spre obiecte si dirijata deevenimente.

    n programarea procedurala, o aplicatie este constituita din unulsau mai multe programe care se vor executa ntr-o anumita ordine,fiecare program fiind constituit dintr-o secventa de instructuni scrisentr-un limbaj de programare.

    Acesta era modul clasic de realizare a aplicatiilor si sistemelorinformatice si are o serie de dezavantaje printre care: productivitatescazuta n realizarea programelor, efort mare pentru realizarea

    programelor si mai ales a interfetelor etc.

    Aparitia tehnologiei orientate obiect, a mediilor visuale deprogramare si a sistemului de operare Windows a condus la aparitia sidezvoltarea unei noi tehnologii de programare a aplicatiilor windows sianume programarea orientata pe obiecte si dirijata de evenimente,tehnologie ce va fi prezentata n cele ce urmeaza n cadrul limbajuluiVisual Basic.

    O aplicatie Windows afiseaza unul sau mai multe ecrane carecontin obiecte cu care va interactiona utilizatorul pentru a controlaevolutia programului. ntr-un mediu de programare vizual, obiectele

  • 7/28/2019 Limbaj Vizual Basic

    2/58

    principale sunt formele si controalele desenate n forme (forma = ofereastra) Aceste obiecte pot fi create prin selectie si depunere folosind

    barele de instrumente ale mediului respectiv.

    Spre exemplu, bara cu instrumente Visual Basic permite creareaunei varietati de obiecte printre care: forme, butoane, casete cu lista,casete derulante combinate, casete de validare, butoane radio (butoanede optiune), etc. Fiecare din aceste obiecte are un comportament

    predefinit. Spre exemplu cnd se ex 212d37c ecuta click pe un butonacesta trece n pozitia apasat si apoi revine n pozitia normala. Pentru aschimba comportamentul obiectului acestuia trebuie sa-i atasati cod de

    program (instructiuni) corespunzator, cod ce se va executa atunci cndare loc un anumit eveniment (spre exemplu n cazul butonuluievenimentul este click).

    Evenimentele se produc ca urmare a unei actiuni a utilizatorului(ex. evenimentul click corespunde apasarii butonului stng al mouse-ului pe obiectul respectiv), sau n urma executiei codului programului,sau pot fi declansate de catre sistem.

    Majoritatea obiectelor vor raspunde unui anumit numar deevenimente generate de catre utilizator printre care click-uri, dubluclick-uri, apasari de taste sau trageri si eliberari ale obiectului. LimbajulVisual Basic pune la dispozitia utilizatorului un mediu de dezvoltare

    care permite crearea de programe orientate spre obiecte si conduse deevenimente. Pentru lucrul cu obiecte conduse de evenimente se parcurgurmatoarele etape:

    - se creeaza o noua forma careia i se da un nume;

    - se deseneaza si se denumesc obiectele ce urmeaza a fi afisate nforma respectiva;

    - se ataseaza fiecarui obiect codul ce va fi executat ca raspuns la

    evenimente generate de utilizator sau de sistem.

    Va rezulta o interfata grafica cu care interactioneaza utilizatorulpentru a controla evolutia programului. Rezumnd putem spune ca nprogramarea orientata spre obiecte si dirijata de evenimente, obiecteleau un comportament predefinit care poate fi modificat de utilizator prinatasare de cod corespunzator si aceste obiecte raspund la evenimentedeclansate fie ca urmare a actiunii utilizatorului asupra obiectelor, fie caurmare a executiei codului atasat, fie declansate de sistem.

    3.2. Proprietati si metode

  • 7/28/2019 Limbaj Vizual Basic

    3/58

    Un obiect (Astfel n gramatica programarii orientate spreobiecte :- obiectele sunt substantive;) (Aceste obiecte pot fi:butoane de comand, etichete, ferestre de texte, ferestre de

    liste, "butoane radio", bare de defilare, casete "combo",etc. Aici se ncadreaz i ablonul sau fereastra aplicaiei,denumit drept "form"(form). ) care este definit de un set

    deproprietati cum ar fi: dimensiune, culoare, pozitie peecran, forma, textul afi at pe el, comportament (ex. daca un

    buton radio este activ sau nu la un moment dat etc.). Astfel n

    gramatica programarii orientate spre obiecte :-proprietatile suntadjective;

    O metoda este o procedura (succesiune deinstructiuni) asociata unei anumite actiuni a unuiobiect. Metodele reprezint instruciuni (proceduri)asociate obiectelor, Spre exemplu n Visual Basicexista o metoda Move asociata majoritatiiobiectelor (permite mutarea obiectelor). Astfel n

    gramatica programarii orientate spre obiecte : - metodelesunt verbe.

    Deci proprietatile descriu obiectele iarmetodele definesc actiunile obiectelor, iar pe dealta parte proprietatile reprezinta date iarmetodele reprezinta cod (instructiuni).

    Astfel n gramatica programarii orientate spre obiecte :

    - obiectele sunt substantive;

    - proprietatile sunt adjective;

    - metodele sunt verbe.

    DECI:

    Aceste obiecte pot fi: butoane de comand, etichete,

  • 7/28/2019 Limbaj Vizual Basic

    4/58

    ferestre de texte, ferestre de liste, "butoane radio", bare dedefilare, casete "combo", etc. Aici se ncadreaz i ablonul saufereastra aplicaiei, denumit drept "form"(form).

    Fiecare obiect are un set de proprietti ce determin

    culoarea, forma, textul afi at pe el, dimensiunea, poziia etc.Metodele reprezint instruciuni (proceduri) asociateobiectelor, iar Evenimentele reprezint aciunile ce se pot"ntmpla" n decursul execuiei cu aceste obiecte (click-mouse, apsare de taste, micarea mouse-ului etc).De exemplu, dac se dorete ca un buton de comand s deschidun formular, n procedura corespunztoare evenimentului Clickasociat acelui buton, se va plasa codul corespunztor deschideriiunui nou formular.Evenimentele se produc ca urmare a unei aciuni a utilizatorului, aexecuiei programului sau pot fi declanate de sistem. Producerea

    unui eveniment (Click, Double Click, Drag&Drop, KeyPress etc.)declaneaz execuia unei proceduri eveniment. Utilizatorul poatecrea propriul cod n corpul acestei proceduri. Apelarea uneiproceduri eveniment pentru un obiect dat se face automat, dacobiectul e focalizat i dac se produce o aciune care s declanezerespectivul eveniment. Procedura eveniment poate fi apelat i princod, la fel ca orice alt procedur, ns acest lucru nu va duce i ladeclanarea evenimentului asociat. Exemplu:Nume_Obiect.Nume_Eveniment(Lista_Argumente)

    Metodele obiectelor vizuale , spre deosebire de procedurile

    Utilizarea notatiei cu punct pentru referirea proprietatilor si metodelor

    Referirea unei proprietati se face astfel:

    Obiect . Proprietate = Valoare

    Exemplu - fie forma frmForma1 si variabila dColor n carememoram culoarea de fond a formei

    dColor = frmForma1.BackColor (citeste culoarea curenta si odepune n dColor)

    frmForma1.BackColor = QBColor (Blue) - stabileste nouaculoare de fond a formei la valoarea Blue.

    Referirea metodelor se face asemanator cu referireaproprietatilor, nsa n plus metodele pot necesita precizarea unorinformatii suplimentare.

    Exemplu - pentru mutarea obiectului Buton1 n coltul din stngasus al formei curente se apeleaza metoda Move si se precizeaza

  • 7/28/2019 Limbaj Vizual Basic

    5/58

    coordonatele coltului din stnga sus:

    Buton1.Move 0,0

    Stabilire proprietati si executare metode

    Proprietatile unui obiect pot fi setate n faza de proiectare (atuncicnd se deseneaza sau se modifica formele) utiliznd fisa Properties aformei sau obiectului din forma (fisa este automat vizualizata la selectiaobiectului respectiv: forma, buton, etc.). De asemenea fisa Properties

    poate fi vizualizata prin click dreapta si selectie Properties.

    Proprietatile pot fi modificate si prin program n momentulexecutiei formei, daca codul de program asociat contine instructiuni

    care refera si seteaza proprietati (ca n exemplul de mai sus n careschimbam culoarea fondului formei).

    Spre deosebire de proprietati, metodele pot fi executate numai nmomentul executiei programului (eventual n momentul depanarii

    programului utiliznd facilitatea Debugger a programului Visual Basic).

    Denumirea obiectelor

    Orice obiect are proprietatile:

    Name - numele utilizat n scrierea codului

    Capture - numele dat obiectului pentru a putea fiidentificat de utilizator. Visal Basic da nume implicite obiectelor. Esteindicat ca utilizatorul sa dea nume obiectelor (Name) utilizndurmatoarea conventie:

    - un prefix format din 3 litere mici (ex. frm pentru forma, cmd pentrubuton de comanda, etc.)

    - un sir de caractere care identifica obiectul (ex. Forma1, Ecran1,Buton1, etc.).

    n tabelul urmator sunt prezentate conventiile de denumire aobiectelor din Visual Basic:

    Obiect Prefix ExempluForma frm frmForma1

    Buton de comanda cmd, btn cmdButon, btnOK Caseta de text txt txtCaseta1

  • 7/28/2019 Limbaj Vizual Basic

    6/58

  • 7/28/2019 Limbaj Vizual Basic

    7/58

    InsertUserFormstergere forma:

    File Remove UserForm

    (pentru forma selectata = ultima activata)

    No (fara export = fara salvare)

  • 7/28/2019 Limbaj Vizual Basic

    8/58

    Dupa creare forma se pot desena obiecte n forma utiliznd barade instrumente Toolbox Controls prin selectare obiect, antrenare pesuprafata formei si depunere obiect ca n exemplul de mai jos:

    n partea stnga a ecranului este afisata lista proprietatilorobiectului selectat (care pot fi eventual modificate - setate).

    Cu click dreapta pe obiect se pot vizualiza:

    - proprietatile obiectului

    - codul asociat

    si eventual se pot efectua si alte operatii (Cut, Copy, Paste, Delete).

    Vizualizare forme

    View Project Explorer

  • 7/28/2019 Limbaj Vizual Basic

    9/58

    din lista Project ce apare se alege forma dorita (care poate fieditata cu click dreapta, sau executata din Run Sub / UserForm).

    sau selectie obiect din lista Project si apoi

    View Object (pentru afisare obiect n modul Design)

    Code (pentru afisare cod pentru obiectul selectat)

    Executie forma:

    Run Run Sub / UserForm (pentru forma curenta)

    Pentru revenire n ecranul anterior (editorul Visual Basic) se nchide forma (seapasa butonul Close al formei)

    3.4. Variabile

    O variabila este o zona temporara de memorie careia i se da un nume,si care poate memora (stoca) un anumit tip de data care poate fi modificata pe

    parcursul executiei programului. n Visual Basic numele unei variabile poateavea max. 256 caractere, trebuie sa nceapa cu un caracter alfanumeric (litere,cifre) si nu poate fi un cuvnt rezervat al limbajului Visual Basic (cum ar fi

  • 7/28/2019 Limbaj Vizual Basic

    10/58

    Sub, Function, etc.).

    Tipuri de variabile n Visual Basic

    Tip Sufix Dimensiune(octeti)

    Domeniu de valori

    Byte - 1 0-255Boolean - 2 Adevarat, Fals

    (True, False)Integer - ntreg % 2 -32768, + 32768Long integer - ntreglung

    & 4 -2.147.483.648,2.147.483.647

    Simpla precizie ! 4 -3.40E38 ; 3.40E38Dubla precizie # 8 -1.80E308 ,

    1.80E308Currency - valuta @ 8 -9.22E14 , 9.22E14Date - datacalendaristica

    - 8 ian 1, 100 ; dec 31 ,9999

    Object - obiect - 4 Adresa unui obiectString - sir $ 1/caracter 65500 octetiVariant - nedefinit - dupa caz n functie de tipUser-Defined

    (definit de utilizator)

    - dupa caz n functie de tipul

    elementelor

    Declaratii implicite si explicite de variabile

    Declararea implicita se face utiliznd sufixul (ca n tabelul de maisus).

    Exemplu:

    Vrsta% = 42 (variabila vrsta este de tip ntreg)

    Daca ultimul caracter nu este unul din caracterele de declarare atipului: %, &, !, #, @, $ atunci tipul prestablit este variant.

    Declararea explicita a unei variabile se face utilizndinstructiunea Dim la nceputul unei proceduri.

    Exemplu:

    Dim Varsta As Integer

  • 7/28/2019 Limbaj Vizual Basic

    11/58

    Dim X As Double

    Dim sir1, sir2 As String (sir1 este de tip variant, sir2 estede tip string)

    Dim sir As String 10 (de tip sir ce poate contine max. 10caractere)

    Domeniul unei variabile

    Domeniul unei variabile este zona programului n care variabilaeste vizibila. ntruct o variabila poate fi declarata la 4 nivele diferiteexista corespunzator 4 nivele diferite de domenii de vizibilitate sianume:

    1. nivel procedura

    2. variabile statice n interiorul procedurilor

    3. nivel forma

    4. nivel modul standard

    1. Nivelul procedura este primul nivel la care poate fi declarata o

    variabila fie implicit

    fie cu instructiunea Dim. Exista doua tipuri de procedura n VisualBasic si anume:

    - proceduri Sub

    - proceduri Function.

    Variabilele declarate n proceduri vor fi variabile locale ale procedurilor

    respective,fiind valabile (accesibile) numai n procedurile n care au fost declarate.

    Deci aceste variabile au cea mai redusa vizibilitate si cel mai restrnsdomeniu.

    Cnd executia unei proceduri se ncheie, toate variabilele locale aleacesteia sunt eliminate din memorie.

    # Deci variabilele locale ale unei proceduri sunt reinitializate la fiecare

  • 7/28/2019 Limbaj Vizual Basic

    12/58

    apel al procedurii.

    2. Variabile statice - n interiorul procedurilor

    O variabila locala poate fi facuta permanenta daca n loculinstructiunii Dim se foloseste instructiunea Static. Astfel o variabilastatica si conserva valoarea ntre apelurile succesive ale procedurii ncare a fost declarata (deci nu va fi reinitializata la fiecare apel al

    procedurii), nsa este vizibila numai n cadrul procedurii n care a fostdeclarata.

    3. Variabile la nivel forma

    O variabila declarata la nivelul unei forme, va fi accesibila la

    nivelul tuturor

    procedurilor acelei forme.

    4. Variabile la nivelul modul standard

    Modulele de cod sunt module utilizate pentru a pastraprocedurile si functiile generale neinfluentate de evenimente sivariabilele si constantele globale. Aceste module se creeaza prinselectarea optiunii Module din meniul Insert al programului Visual

    Basic, sau prin click pe butonul module din bara cu instrumente.

    Declararea unei variabile la nivelul unui astfel de modul se faceprin plasarea acesteia n zona de declaratii a obiectului General, zonaaccesibila prin intermediul ferestrei de cod. Cel mai nalt domeniu devizibilitate este nivelul global. Orice variabila declarata la acest niveleste vizibila din orice procedura a aplicatiei (proiectului). Declarareaunei variabile globale se face utiliznd cuvntul cheie Global nsectiunea General / Declaration a modulului de cod.

    Exemplu: Global NumePrenume As String

    Constante

    O constanta poate fi privita ca o variabila a carei valoare nu semodifica niciodata ramnnd aceeasi pe parcursul ntregii vieti a

    programului.

    Utilizarea constantelor duce la cresterea calitatii programelor. Casi n cazul unei variabile, domeniul unei constante este determinat de

    locul unde este declarata. Constantele se declara cu cuvntul cheieConst. Este indicat ca numele constantelor sa fie scrise cu litere mari

  • 7/28/2019 Limbaj Vizual Basic

    13/58

    pentru a fi usor reperabile.

    Exemplu de utilizare InputBox( ), MsgBox

    Const IB_TITLU = "Titlu InputBox"

    Dim sNume As String 'variabila locala

    Dim sPrompt as string

    Static ixPos As Integer, iyPos As Integer 'valoare pastratantre apeluri

    SPrompt = "Introduceti numele dumneavoastra:"

    ixPos = Iif(ixPos > 0, 0, 1440) ' schimba pozitia ferestrei

    iyPos = Iif (iyPos >0, 0, 1440)

    sNume = InputBox$ (sPrompt, IB-TITLU, ixPos, iyPos)

    If sNume = " " Then

    MsgBox "Nu s-a introdus nimic!"

    Tipuri de date definite de utilizator

    n afara de tipurile de date predefinite n cadrul limbajului VisualBasic, utilizatorul poate sa-si defineasca propriile sale tipuri de date,care pot contine unul sau mai multe tipuri de date predefinite. Tipurilede date definit de utilizator pot fi declarate numai n sectiunea General /Declaration a modulului de cod cu ajutorul cuvintelor cheie Type si End

    Type (deci tipurile definite de utilizator sunt vizibile din orice punct alaplicatiei, proiectului respectiv).

    Exemplu:

    Type t_pers

    Nr As Integer

    Nume As String 30

  • 7/28/2019 Limbaj Vizual Basic

    14/58

    DataNasterii As Date

    End Type

    Dupa definirea unu astfel de tip de data acesta poate fi utilizatpentru declararea unei variabile de acest tip. Pentru variabila se poateutiliza Dim, Static, Global pentru a defini domeniul de vizibilitate alacestei variabile.

    Exemplu:

    Dim Persoane As t_pers

    Persoane.Nr = 15

    Pesoane.Nume = "Ionescu Ion"

    Persoane.DataNasteri =

    #december 20 ,1983 #Astfel de tipuri de variabile sunt utilizate n programele de baze de date.

    Prefixele variabilelor

    De obicei fiecare programator si defineste variabilele utilizndun prefix scris cu litere mici pentru a identifica tipul variabilei dupacum urmeaza:

    i - Integer

    s - String

    l - Long--------

    Exista o lista standard de prefixe de variabile numita notatieungara (Hungarian Notation) - inventata de un programator denationalitate ungara de la firma Microsoft pentru limbajul C.

    3.5. Operatii de intrare /iesire realizate cu functiile InputBox ( ) siMsgBox ( )

  • 7/28/2019 Limbaj Vizual Basic

    15/58

    Limbajul Visual Basic dispune de functiile InputBox ( ) siMsgBox ( ) pentru realizarea de operatii simple de intrare/iesire prinutilizarea unor casete de dialog predefinite. n cadrul unui programutilizatorul trebuie sa poata introduce date si sa poata afisa sau extrage

    rezultate.

    Functia InputBox ( ) - afiseaza o caseta de dialog siasteapta ca utilizatorul sa introduca text, apoi returneaza continutulcasetei de text. Valoarea returnata este fie de tip variant fie de tip Stringn functie de varianta utilizata:

    Valret = InputBox (prompt, title, default, xpos, ypos, helpfile,context)

    - ntoarce Variant

    Valret$ = InputBox$ (prompt, title, default. xpos, ypos, helpfile,context)

    - ntoarce String

    - Argumentul prompt este singurul argument obligatoriu, care va fiun mesaj (de tip String) care invita utilizatorul sa introduca text ncaseta de text afisata. Pentru a introduce text pe mai multe linii se

    va introduce CR. LF, (chr(13), chr(10)) sau constanta predefinitavbcrlf, ntre fiecare doua rnduri succesive).

    - Title este un sir de caractere ca va fi afisat n bara de titlu a caseteide dialog.

    - Default - se poate completa pentru acest argument un sir decaractere care sa fie considerat raspunsul predefinit (va apare afisatn caseta de text), iar daca nu se completeaza, caseta de text (n careutilizatorul va introduce textul) va fi afisata goala.

    - xpos, ypos - sunt expresii numerice care specifica distanta peorizontala, verticala a coltului din stnga sus al casetei de dialogfata de coltul din stnga al ecranului (formei). Daca sunt omise,caseta de dialog va fi centrata pe orizontala la o treime din naltimeaecranului. Daca se omite title sau default sau ambele si vrem sa

    precizam xpos, ypos atunci n locul argumentelor omise se va folosicte o virgula pentru fiecare argument omis.

    - Pentru ambele functii InputBox( ) si MsgBox( ), argumentele

    helpfile (sir) si context (nr. ntreg) sunt utilizate pentru a pune ladispozitie asistenta soft dependenta de context, caz n care

  • 7/28/2019 Limbaj Vizual Basic

    16/58

    utilizatorul poate apasa tasta F1 pentru a vedea articolul Help creatpentru respectiva caseta de dialog.

    Daca se selecteaza butonul OK sau se apasa Enter, functia InputBox( )

    returneaza continutul casetei de text. Daca nu se introduce text sau seselecteaza butonul Cancel, functia returneaza un sir de lungime 0 (" ").

    Variabila Valret va memora continutul casetei de text (textul introdus).

    Functia MsgBox ( ), procedura MsgBox

    Functia MsgBox( ) si procedura MsgBox afiseaza un mesaj ntr-o

    caseta de dialog si asteapta ca utilizatorul sa selecteze un buton. FunctiaMsgBox ( ) returneaza o valoare ntreaga care indica numarul butonuluiselectat. Procedura MsgBox nu returneaza nici o valoare ( se utilizeazaatunci cnd nu intereseaza cum este nchisa caseta de dialogcorespunzatoare).

    Sintaxa functiei MsgBox ( ) este:

    Valret % = MsgBox(msg, type, title, helpfile, context)

    Sintaxa procedurii MsgBox este:

    MsgBox msg, type, title, helpfile, context

    -msg = expresie sir afisata ca mesaj n caseta de dialog

    -type = expresie numerica ce precizeaza numarul si tipulbutoanelor si a altor elemente ce vor fi afisate n caseta de dialog

    corespunzator tabelului de mai jos.n tabelul de mai jos sunt date grupele de valori care descriu:

    1. numarul si tipul butoanelor casetei de dialog

    2. tipul pictogramei

    3. butonul prestabilit

    4. modalitatea casetei de dialog.

    Valoare Semnificatie Constanta simbolica

  • 7/28/2019 Limbaj Vizual Basic

    17/58

    recomandata0 Afiseaza numai butonul OK vbOKOnly1 Afiseaza butoanele OK si

    CancelvbOKCancel

    2 Afiseaza butoanele

    Abort,Retry,Ignore

    vbAbortRetryIgnore

    3 Afiseaza butoanele Yes, No,Cancel

    vbYesNoCancel

    4 Afiseaza butoanele Yes, No vbYesNo5 Afiseaza butoanele Retry,

    CancelvbRetryCancel

    16 Afiseaza pictograma Critical vbCritical32 Afiseaza un semn de ntrebare vbQuestion48 Afiseaza un semn de

    exclamarevbExclamation

    64 Afiseaza pictogramaInformation vbInformation0 Primul buton este prestabilit vbDefaultButton1256 Al doilea buton este

    prestabilitvbDefaultButton2

    512 Al treilea buton esteprestabilit

    vbDefaultButton3

    0 Caseta modala aplicatiei vbApplicationModal4096 Caseta modala sistemului vbSystemModal

    Pentru a obtine valoarea argumentului type se va nsuma cte un

    numar din fiecare grup. Daca argumentul type este omis se considera implicitvaloarea 0.

    Modalitatea implicita a unei casete de dialog este ApplicationModal.

    n modalitatea aplicatie utilizatorul trebuie sa raspunda casetei dedialog nainte de a putea sa lucreze n aplicatia curenta. n modalitatea Systemtoate aplicatiile sunt suspendate pna cnd utilizatorul raspunde casetei dedialog.

    Att pentru functia MsgBox( ) ct si pentru procedura MsgBoxargumentul msg este obligatoriu, celelalte fiind facultative. Valoareareturnata de functia MsgBox( ) indica butonul care a fost selectat,conform tabelului de mai jos:

    Valoare Semnificatie Constanta simbolicarecomandata

    1 Butonul OK selectat vbOK 2 Butonul Cancel selectat vbCancel3 Butonul Abort selectat vbAbort4 Butonul Retry selectat vbRetry

    5 Butonul Ignore selectat vbIgnore6 Butonul Yes selectat vbYes

  • 7/28/2019 Limbaj Vizual Basic

    18/58

    7 Butonul No selectat vbNo

    Este indicat a se utiliza constante simbolice n locul numerelordeoarece n acest fel creste claritatea programului (semnificatiaconstantei vbAbort este evidenta, pe cnd nr. 3 nu spune nimic).

    3.6. Structuri de ramificare si ciclare (luare decizii)

    Pentru luarea deciziilor n cadrul unui program Visual Basic sepot utiliza doua categorii de instructiuni cu ajutorul carora se dirijeazaexecutia instructiunilor programului n functie de ndeplinirea anumitorconditii.

    Cele doua categorii de instructiuni sunt:

    - instructiuni de ramificare - permit executia selectiva a anumitorsecvente de instructiuni functie de ndeplinirea unor conditii

    - instructiuni de ciclare - permit executia repetata a unor secvente deinstructiuni.

    3.6.1.Structuri de ramificare

    1) Structura If..EndIf - are sintaxa

    If< conditie > then

    < instructiuni 1 >

    Else

    < instructiuni 2 >

    EndIf

    Daca este adevarata se executa secventa deinstructiuni si se continua programul cu instructiunilecare urmeaza dupa EndIf.

    Daca este falsa se executa secventa de instructiuni si se continua programul cu instructiunile care urmeazadupa EndIf.

    Exemplu:

  • 7/28/2019 Limbaj Vizual Basic

    19/58

    If Culoare < 15 Then

    Culoare = Culoare + 1

    Else

    Culoare = 1

    EndIf

    Se pot construi structuri If imbricate (incluse), nsa pentruaceasta se poate utiliza simplu structura If..ElseIf...EndIf, sau n cazulmai multor actiuni se poate utiliza structura Select Case.

    Exemplu:

    If iValRet = vbYes Then

    sMsg = "A-ti selectat Yes"

    Elseif iValRet = vbNo Then

    sMsg = "A-ti selectat No"

    Else If iValRet = vbCancel then

    SMsg = "A-ti selectat Cancel"

    EndIf

    Structura If..ElseIf..EndIf poate fi condensata ntr-o singura linie de codutiliznd functia IIF ( ) ca n exemplul de mai jos:

    Culoare = IIF (Culoare

  • 7/28/2019 Limbaj Vizual Basic

    20/58

    Case 5

    sGrupa = "de cinci ani" = 5 ani

    Case 13 To 19

    sGrupa = "Adolescent"

    Case 20 To 35, 50, 60 to 65

    sGrupa = "adult"

    Case Is > 65

    sGrupa = "vrstnic"

    Case Else

    sGrupa ="ceilalti"

    EndSselect

    n functie de conditia (prima ndeplinita ) se executa secventa deinstructiuni corespunzatoare, apoi se continua cu instructiunile care

    urmeaza dupa EndSelect. Daca nici una din conditiile anterioare nu estendeplinita se executa instructiunile care urmeaza dupa CaseElse.

    3.6.2. Structuri de ciclare

    1) While...Wend are sintaxa:

    While

    Wend

    Se executa secventa de instructiuni atta timp ctconditia este ndeplinita (adevarata).

    2) Do..Loop are sintaxa:

    Do Until

  • 7/28/2019 Limbaj Vizual Basic

    21/58

    Loop

    sau

    Do

    ......

    If Then

    Exit Do

    Else

    Loop Until

    Structura Do.Loop repeta un bloc de instructiuni atta timp ct oanumita conditie este adevarata sau pna n momentul n care o anumitaconditie devine adevarata.

    Instructiunea Exit Do poate fi folosita numai ntr-o structuraDo..Loop ca o conditie de a parasi ciclul.

    3) For.Next - repeta o secventa de instructiuni de un numarprecizat de ori dupa urmatoarea sintaxa:

    For icontor = To [Step ]

    Next

    Executia ciclului For.Next se poate termina fortat cuinstructiunea Exit For.

    Exemplu: (calculeaza suma numerelor pare pna la 100).

    For iNr = 0 TO 100 step 2

    isuma = isuma + iNr

  • 7/28/2019 Limbaj Vizual Basic

    22/58

    Next

    3.7. Module si proceduri

    n Visual Basic 4.0, exista trei tipuri de module:

    - module ale formei

    - module de cod

    - module clasa

    Fiecare tip de modul contine proceduri care pot fi partajate pediverse nivele ale

    domeniului de vizibilitate n cadrul aplicatiei. Toate exemplele datepna n prezent cu exceptia variabilelor globale vor fi stocate n moduleasociate unor forme.

    Exemplu - daca se scrie cod asociat evenimentului click al unui butonva rezulta o procedura de eveniment (spre deosebire de o proceduragenerala) care va fi parte a formei n care se afla butonul. Cu exceptia

    cazului cnd se elimina cuvntul cheie Private din antetul procedurii deeveniment a formei, acest cod nu va fi vizibil n afara formei.

    O clasa este un sablon n baza caruia pot fi create obiecte. Clasadefineste proprietatile obiectelor ce apartin clasei si metodele utilizate

    pentru controlul comportamentului obiectelor. Modulele clasa contin odefinitie formala a unei clase care va fi instantiata ca obiect OLEautomatic.

    Un modul de cod contine cod public, declaratii, proceduri

    subrutina si functii care pot fi partajate ntre toate modulele unuiproiect. Modulul de cod este numit si modul standard pentru a putea fidiferentiat de modulele formei si modulele clasa.

    Proceduri generale si proceduri eveniment

    O procedura generala comunica aplicatiei cum sa efectueze oanumita actiune. Pentru a efectua actiunea, procedura trebuie apelata

    explicit n cadrul aplicatiei. O procedura generala poate fi plasata noricare din cele 3 tipuri de module. O procedura eveniment ramne

  • 7/28/2019 Limbaj Vizual Basic

    23/58

    inactiva pna cnd este apelata pentru a raspunde unor evenimenteprovocate de utilizator (ex. click cu mouse-ul) sau declansate de sistem(ex. evenimente de ceas, evenimente de ncarcare n memorie).

    3.7.1. Proceduri subrutine

    O procedura subrutina (sau simplu procedura) este o secventa deinstructiuni care are un nume si ale carei instructiuni sunt executate ca un tot.O procedura subrutina efectueaza o anumita actiune nsa nu returneaza nici ovaloare. O procedura subrutina ncepe cu instructiunea Sub si se termina cuinstructiunea End Sub (exemplu procedura asociata evenimentului click alunui buton).

    Limbajul Visual Basic are o serie de proceduri ncorporate ca deexemplu:

    ProceduraDescriere Exemplu de utilizare

    MsgBox Afiseaza un mesaj ntr-ocaseta

    MsgBox "mesaj",..

    Print Tipareste Print iProcent & "%"FileCopy Copiaza un fisier FileCopy "Fis1.doc","Fis2.doc"

    Name Redenumeste un fisier Name "Fisier1" As"Fisier2"

    Kill sterge un fisier Kill "Fis1.doc"Beep Emite un sunet BeepDate Stabileste data sistemului Date #December 18,

    2002#

    Utilizatorul si poate defini propriile proceduri pentru a efectua diverseactiuni.

    Exemplu:

    Sub StergeFisiere( )

    Kill " *.Tmp"

    Kill " *. Dat"

  • 7/28/2019 Limbaj Vizual Basic

    24/58

    Beep

    MsgBox "S-au sters fisierele *.Tmp, *.Dat"

    End Sub

    Pentru apelarea procedurii stergeFisiere din orice punct alaplicatiei se va specifica numele procedurii ca instructiune n cadrul

    programului. (desi parantezele apar n definitia procedurii, la apelulprocedurii se va specifica doar numele fara paranteze !).

    Procedura de mai sus nu necesita argumente, nsa daca oprocedura urmeaza sa primeasca argumente acestea se vor specifica can exemplul:

    Sub Produs(iNr1 As Integer, iNr2 As Integer)

    iVarGlobal = iNr1*iNr2

    End Sub

    Apelul procedurii este ilustrat n exemplul de mai jos:

    Dim iV1 As Integer, iV2As Integer

    iV1 = 560

    iV2 = 829

    Produs iV1, iV2

    .......

    3.7.2. Proceduri functii

    O procedura functie (sau simplu o functie) este o secventa deinstructiuni care efectueaza o anumita operatie ntr-un program sireturneaza o valoare. O functie ncepe cu instructiunea Function si setermina cu instructiunea End Function.

  • 7/28/2019 Limbaj Vizual Basic

    25/58

    n Visual Basic exista o serie de functii predefinite printre care:

    Functia Descriere Exemplu de utilizare Valoarereturnata

    Len( ) Returneazalungime sir

    iLung=Len("Limbaje deprogramare")

    iLung = 21

    Mid( ) Returneaza unsubsir din sir

    sSubsir=Mid("ABCDE", 1,2) sSubsir = "AB"

    Chr( ) Returneazacaracterulcorespunzatorcodului

    sCar = Chr(65) sCar = "A"

    Asc( ) Returneaza codul

    corespunzatorcaracterului

    iCod = Asc ("A") iCod = 65

    UCase( ) Converteste nlitere mari

    sMari = Ucase("Ionescu") sMari ="IONESCU"

    LCase( ) Converteste nlitere mici

    sMici = Lcase("LIMBAJE") sMici ="limbaje"

    InStr( ) Returneaza pozitiaunui subsir n sir

    iPozitie = Instr("ABCDE","BCD")

    iPozitie = 2

    Pe lnga functiile predefinite fiecare utilizator si poate crea propriilefunctii

    Exemplu - definirea unei functiiutilizator pentru criptarea unui sirde caractere

    Function Criptare(sSirTastat As String ) As String

    Dim iLen As Integer

    Dim sSirCriptat As String, sCar As String, sCript As String

    iLen = Len(sSirTastat) depune n iLen lungimeasirului tastat

    For x = 1 To iLen pentru fiecare caracter dinsirul tastat

  • 7/28/2019 Limbaj Vizual Basic

    26/58

    sCar = Mid$(sSirtastat, x, 1) extrage caracterul

    sCript = Chr$(Asc(sCar) +1) cripteaza caracterul prinincrementare cu 1

    sSirCriptat = sSirCriptat&sCript adauga caracterul criptatsirului criptat

    Next

    Criptare = sSirCriptat

    End Function

    Apelul functiei Criptare:

    Private Sub frmApel

    Dim sRezultat As String

    sSirTastat$ = InputBox$("Tasteaza sirul de criptat")

    Srezultat = Criptare(SirTastat$)

    MsgBox Srezultat

    End Sub

    Daca vrem sa descriptam sirul criptat vom scrie o functie careeste aproape identica cu cea de criptare si anume:

    Function Decriptare(sSirIntrare

    As string) As string

    numediferit

    Dim iLen As Integer

    Dim sSirIesire As string, sCarIntrare As string, sCarIesireas string

    iLen = Len(sSirIntrare)

  • 7/28/2019 Limbaj Vizual Basic

    27/58

    For x = 1 To iLen

    sCarIntrare = Mid$(sSirIntrare, x, 1)

    sCarIesire = Chr$(Asc(ScarIntrare)-1) minus nloc de plus

    sSirIesire = sSirIesire & sCarIesire

    Next

    Decriptare = sSirIesire Decriptare nloc de criptare

    End Function

    Se constata ca cele doua functii pot fi scrise ca o singura functiede doua argumente si anume:

    Function CriptDecript (sSirIntrare As String, iOperatie AsInteger) As String

    Dim iLen As Integer

    Dim sSirIesire As string, sCarIntrare As String, sCarIesire AsString

    iLen = Len(sSirIntrare)

    For x = 1 To iLen

    sCarIntrare = Mid$(sSirIntrare, x, 1)

    sCarIesire = Chr$(Asc(sCarIntrare) + iOperatie)

    sSirIesire = sSirIesire & sCarIesire

    Next

    CriptDecript = sSirIesire

    End Function

    iar la apelarea functiei iOperatie va fi:

  • 7/28/2019 Limbaj Vizual Basic

    28/58

    +1 pentru criptare

    -1 pentru decriptare

    Exemplu de apel:

    Dim V1 As String, V2 As String

    V1 = InputBox$("Introduceti sirul de criptat")

    V2 = CriptDecript(V1, 1)

    MsgBox V2

    Pentru crearea procedurilor si functiilor se deschide fereastra decod a modulului de cod standard.

    Lista Object contine cuvntul General iar lista Proc continecuvntul Declarations. n sectiunea General Declaration a modului sevor declara variabilele si constantele la nivel de modul (globale) si apoise definesc (introduc) procedurile si functiile modulului (codul sursa

    prezentat mai sus).

    Observatii

    Fiecare din functiile si procedurile aplicatiei pot fi atasate unorobiecte grafice (butoane), deci n acest caz textul sursa corespunzator seva atasa butoanelor respective.

    Indiferent daca o functie are sau nu argumente, att la definirect si la apelare, parantezele sunt obligatorii !!

    3.8. Obiecte n Visual Basic

    Bare cu instrumente

    - Butoane de comanda - sunt utilizate pentru a ncepe, a ntrerupesau a ncheia un anumit proces.

    Cnd se executa click cu mouse-ul arata ca si cum ar fi apasat, deunde si denumirea sa n engleza Push button. Pentru a afisa text pe

    buton trebuie definita proprietatea Caption. Prezenta unui caracter& n

    textul proprietatii Caption face ca ceea ce urmeaza dupa & sa fie tastade acces n combinatie cu tasta Alt. Selectia unui buton de comanda se

  • 7/28/2019 Limbaj Vizual Basic

    29/58

    face prin click cu mouse-ul sau cu tasta Tab pentru a ajunge pe buton siapoi se apasa tasta Enter. Daca proprietatea Default a unui buton arevaloarea True, atunci acest buton poate fi selectat n orice moment prinapasarea tastei Enter indiferent ce control este curent n acel moment.

    Daca proprietatea Cancel a unui buton este stabilita pe valoareaTrue atunci acel buton poate fi selectat prin tasta Esc.

    Proprietati uzuale ale unui buton de comanda

    Proprietate Descriere Exemple de valoriAppearance Selecteaza aspectul 3D sau plat 1= 3D, 0 = plat

    Cancel Permite selectarea cu ESC True, FalseCaption sirul de caractere afisate pe

    butoncaractere

    Default Permite selectarea cu tastaEnter

    True, False

    Font Stabileste corpul, stilul sidimensiunea caracterelor

    MS Sans Serif, Bold,12

    - Etichete - sunt controale grafice folosite pentru a afisa text pecare utilizatorul nu lpoate modifica direct ci doar cu ajutorulinstructiunilor (codului). Pentru ca eticheta sa afiseze corect liniimultiple de diverse lungimi se vor stabili proprietatile AutoSize siWordWrap la valoarea True.

    - Casete de text sau TextBox-uri sau casete de editare, suntutilizate pentru a afisa informatii introduse de utilizator la rulare sauasociate controlului prin program. Accesul la textul afisat se obtine prinstabilirea sau citirea proprietatii Text a controlului, ceea ce poate face

    fie direct n faza de proiectare, fie prin cod utiliznd notatia cu punct.

    Exemplu de citire:

    sTextCaseta1= txtCaseta1.Text (daca a fost creata o caseta detext numita txtCaseta1).

    Pentru a afisa mai multe linii de text ntr-o caseta de text,proprietatea MultiLine trebuie sa fie selectata pe valoarea True.

    Daca o caseta de text multilinie nu contine o bara de derulareorizontala, textul va fi mpartit automat pe rnduri chiar daca caseta este

  • 7/28/2019 Limbaj Vizual Basic

    30/58

    redimensionata. Barele de derulare se stabilesc cu proprietateaScrollBars: Horizontal, Vertical, Both, None.

    Daca proprietatea MultiLine este True, se poate utiliza

    proprietatea Alignment pentru a alinia textul la stnga, la dreapta, sau ncentrul zonei, iar daca MultiLine este False, Alignment nu are efect.

    Implicit textul este aliniat la stnga

    Proprietati uzuale ale unei casete Text Box

    Proprietate Descriere Exemplu devaloriAppearance Selecteaza aspectul 3D

    sau plat

    1= 3D, 0 = plat

    Border Style Precizeaza tipulchenarului

    0 - fara chenar,

    1 - chenar simpluFont Stabileste corpul, stilul si

    dimensiunea caracterelorMS Sans Serif,Bold, 12

    PasswordChar Ascunde textul cu unsingur caracter

    Ex. * sau #

    SelStart Pozitia initiala pentruselectarea textului

    numai la rulare

    SelLength Precizeaza lungimeatextului selectat numai la rulare

    Tag Memoreaza informatiisuplimentare

    orice expresie sir

    Proprietatile SelStart si SelLength sunt disponibile numai larulare si deci nu vor fi afisate n fereastra Properties a casetei de text.Proprietatea Tag poate stoca informatii suplimentare, ca de exemplu

    parola sistemului n faza de proiectare.

    - Butoane de optiune (butoane radio) (Option Button) - afiseazao optiune care poate fi activata s-au dezactivata (,o), functie devaloarea True sau False a proprietatii Value a butonului. n general

    butoanele de optiune se utilizeaza n grupuri (mai multe butoane) afisatentr-un cadru - ca lista de optiuni ce se exclud reciproc. Toate butoanelede optiune afisate ntr-un recipient (cadru) se comporta ca un grup, decinumai unul singur poate fi activ la un moment dat (nti se deseneazacadrul si apoi se depun butoanele n cadru - desenarea ulterioara a

    cadrului nu are nici un efect asupra grupului).

  • 7/28/2019 Limbaj Vizual Basic

    31/58

    Prin intermediul proprietatii Caption fiecarui buton i se poateatasa un text ce va fi afisat imediat n dreapta butonului. Fiecarui butoni se poate atasa cod ca de exemplu:

    If optButon1.Value = True Then

    MsgBox "Buton selectat" Testeaza starea curentaa butonului

    optButon1

    Else

    MsgBox "Buton neselectat"

    End if

    - Casete de validare - afiseaza o caseta care poate fi activata saudezactivata (,).

    Se pot grupa mai multe casete de validare ntr-un cadru, nsa spredeosebire de butoanele de optiune, pot fi active mai multe casete din

    grup la un moment dat.

    Prin proprietatea Caption se poate afisa text explicativ n dreaptacasetei ca mai jos:

    Select Case chkCv1

    Case 0

    VMsg = "Nebifata"

    Case 1

    VMsg = "Bifata"

    Case 2

    VMsg = "Indisponibila"

    End select

  • 7/28/2019 Limbaj Vizual Basic

    32/58

    MsgBox VMsg

    - Cadre - ofera posibilitatea de a grupa controale nrudite(butoane de optiune, casete de validare). nti se deseneaza cadrul si

    apoi controalele.

    - Caseta cu lista (list box) afiseaza o lista de articole din careutilizatorul poate

    selecta unul sau mai multe. Pentru a prelucra articolele selectate seutilizeaza evenimentul Click sau Double Click ale casetei cu lista.

    Exemplu:

    Private Sub lstLista1_Dblclick( ) Afiseaza articolul selectat dincaseta cu lista

    txtSelectie = lstLista1 n caseta de text txtselectie

    End Sub

    Proprietatea ListCount a unei casete cu lista returneaza numarul dearticole din lista, iar proprietatea ListIndex determina articolul curentselectat astfel:

    ListIndex = 0 pentru primul articol din lista

    = ListCount -1 pentru ultimul articol din lista

    = -1 daca nu a fost selectat nici un articoldin lista

    Pentru a selecta mai multe articole din lista se utilizeaza proprietateaMultiselect astfel:

    MultiSelect = 0 - nu sunt admise selectii multiple (implicita)

    1 - selectie simpla (executare click cu mouse sauapasare tasta

    spatiu duce la selectarea sau deselectarea unuiarticol din

    lista;

    se pot utiliza sageti pentru mutarea selectiei

  • 7/28/2019 Limbaj Vizual Basic

    33/58

    de la un articol

    la altul.

    2 - selectie multipla (se apasa shift si apoi clickcu mouse sau

    utilizare sageti pentru a selecta articolulurmator adaugat la

    elementul selectat anterior.Pentru selectiimultiple de articole

    neadiacente se utilizeaza tasta Ctrl si Click cu

    mouse pe

    articol.

    Proprietatea Selected pe valoarea True sau False specifica daca unarticol din lista este selectat sau nu.

    Exemplu de cod atasat:

    iNr = lstlista1.ListCount - 1 afiseaza toate

    articolele selectate din

    lista (caseta cu lisa)lstLista1

    For x = 0 To iNr

    If lstLista1.Selected(x) = True Then

    MsgBox lstLista1.List(x)

    End If

    Next

    Pentru a adauga articole listei se utilizeaza metoda AddItem

    - Casete combinate (ComboBox) - combina facilitatile unuiTextBox cu cele ale unui ListBox (contine o caseta cu lista si o casetatext).

    Proprietati si metode comune ale casetelor cu lista si casetelor

  • 7/28/2019 Limbaj Vizual Basic

    34/58

    combinate.

    Proprietate Semnificatie Exemplu de utilizare

    ListCount Nr. articole ale listei iOptiune =

    lstLista1.ListCount - 1ListIndex Indexul numeric al

    articolului curentlstLista1.ListIndex = 3

    List Asociata cu indexulreturneaza articolul curentdin lista

    sArt3 = lstLista1.List(3)

    Selected Are valoarea True daca esteselectat articolul

    If lstLista1.Selected(3)Then

    .Sorted Lista va fi sortata daca

    valoarea proprietatii sortedeste True

    lstLista1.Sorted = True

    Metode Semnificatie Exemplu de utilizare

    AddItem Adauga listei un articol detip sir

    lstLista1.AddItem ="Ionescu Ion"

    Clear Elimina toate articolele dinlista

    lstLista1.Clear

    RemoveItem Elimina un singur articol dinlista

    lstLista1.RemoveItem 5

    Utilizarea matricelor - variabile multidimensionale

    Dim sStudenti(15) As String

    sStudenti(0) = "Ionescu Ion"

    .............

    sStudenti(14) = "Popescu Vasile"

    For iIndex = 0 To 14

    MsgBox sStudenti(iIndex)

    Next

    # Functia UBound(sStudenti) returneaza numarul de elementeale matricii (tabloului) Studenti.

    Exemplu de utilizare casete cu lista:

  • 7/28/2019 Limbaj Vizual Basic

    35/58

    Private Sub frmForma1_Click( )

    Dim sStudenti(15) As String Declara matriceasStudenti de 15

    elemente

    sStudenti(0) = "Ionescu" ' Initializeazaelementele matricii

    sStudenti(1) = "Florescu"

    ...........

    For iC = 0 To Ubound(sStudenti) - 1 Adauga fiecareelement al matricii ca

    lstLista1.AddItem (sStudenti(iC)) articol n caseta cu listalstLista1

    Next Functia Uboundreturneaza numarul

    de elemente alematricii

    lstLista1.ListIndex = 0 Selecteaza primularticol din lista

    - Bare de derulare (orizontale si verticale) permit parcurgereaunor liste mari. Ori de cte ori se efectueaza click pe o bara de derularese executa procedura evenimentului Change. Cnd se trage bara dederulare se declanseaza evenimentul Scrool, iar la eliberarea de pe barade derulare se executa evenimentul Change.

    - Spinner (SpinButton) - permite incrementare sau decrementarenumere, prin atasare si activarea unui buton spinner unei etichete sauunei casete de text.

    - Controale cu imagini - permit afisarea de imagini pe suprafataunei forme, putnd utilza pentru aceasta doua tipuri de controale sianume: PictureBox si Image.

    Controalele Image pot fi create din bara de instrumente Toolbox

  • 7/28/2019 Limbaj Vizual Basic

    36/58

    Controls, aceste controale prezentnd si avantajul ca imaginile plasaten ele pot fi redimensionate prin stabilirea proprietatii Stretch acontrolului la valoarea True. Controalele Image nu accepta graficadesenata n timpul rularii si nu pot fi utilizate ca recipiente pentru alte

    controale.

    Controalele PictureBox accepta grafica desenata n timpul rulariiprogramului utiliznd metodele Line, Circle si Pset. Daca graficancarcata dintr-un fisier depaseste suprafata controlului PictureBox,grafica va fi trunchiata exceptnd situatia n care proprietatea AutoSizeare valoarea True.

    Fisierele imagine pot fi importate n controale Image sauPictureBox fie prin setarea proprietatii Picture a controlulu, fie cu

    ajutorul functiei LoadPicture() n timpul rularii programului.

    Exemplu. Pentru a incarca fisierul imagine Poza.jpg din directorulC:\Imagini, n controlul Image care are numele (Name) imag1 se vascrie instructiunea:

    imag1.Picture = LoadPicture("C:\Imagini\Poza.jpg")

    Pentru a elimina imaginea dintr-un control imagine se va folosifunctia LoadPicture fara nici un argument ca n exemplul de mai jos:

    imag1.Picture = LoadPicture()

    - Controale lista de fisiere, de unitati de disc si de directoare

    - DriveListBox - permite selectarea, la rularea programului, aunei unitati de disc

    - DirListBox - afiseaza o lista ordonata a directoarelor sisubdirectoarelor de pe disc si prin click cu mouse permite

    utilizatorului sa navigheze prin directoare

    - FileListBox - afiseaza fisierele din directorul specificat deproprietatea Path la rularea programului.

    3.9. Referire celule dintr-o foaie de calcul tabelar n Visual Basic

    Se face astfel:

    Sheets(n).Cells(nr.rnd, nr.coloana)

  • 7/28/2019 Limbaj Vizual Basic

    37/58

    Exemplu. Instructiunea

    Sheets(3).Cells (1,2) = "Ionescu"

    depune sirul 'Ionescu' n celula B1 (rnd 1 coloana 2) din a treia foaiede calcul a

    registrului de calcul Excel curent. Pentru precizarea celulei (nr.rnd,nr.coloana) se pot utiliza variabile n bucle For.

    Exemplu:

    For irand = 1 To 5

    lstLista1.AddItem (Sheets(3).Cells(irand,2))

    Next

    adauga n caseta cu lista lstLista1 cinci nregistrari din a treia foaie de calcul,coloana 2 (B) rndurile de la 1 la 5 din registrul de calcul curent.

    3.10. Gestionarea unui proiect

    Resursele unui proiect sunt memorate ntr-un fisier al proiectului care nVisual Basic este un fisier cu extensia .RES.

    n cazul n care limbajul Visual Basic este utilizat din Excel, fisierulproiect este un fisier cu extensia .XLS.

    Componentele proiectului pot fi vizualizate selectnd din meniul Viewoptiunea Project Explorer astfel:

  • 7/28/2019 Limbaj Vizual Basic

    38/58

    n fereastra din stnga ecranului vor fi afisate componentele proiectului sianume:

    - componente Excel

    - componente Visual Basic (Forms, etc.)

    dupa cum este ilustrat n ecranul care urmeaza:

  • 7/28/2019 Limbaj Vizual Basic

    39/58

    3.11. Crearea si extinderea meniurilor

    Limbajul Visual Basic permite crearea de meniuri personale pentru oaplicatie cu ajutorul editorului de meniuri.

    Unei forme i se poate asocia o pictograma prin stabilirea proprietatiiIcon a formei n faza de proiectare atribuind proprietatii Icon un fisier cuformatul .ICO. Daca nu se specifica o pictograma, se va utiliza pictogramaVisual Basic prestabilita pentru forme.

    Aceasta pictograma va aparea n coltul din stnga sus al formei.

    Aceste elemente ale limbajului nu pot fi create si utilizate n Visual Basic subExcel.

    3.12. Realizarea programului executabil pentru aplicatie (proiect)

    Programul executabil pentru o aplicatie Windows (proiect) este unfisier executabil cu extensia .EXE care poate fi rulat n afara mediului dedezvoltare Visual Basic. Acest fisier mpreuna cu alte fisiere auxiliarenecesare programului va fi livrat viitorilor utilizatori ai aplicatiei si va putea fiinstalat si executat sub sistemul de operare Windows.

    Crearea programului executabil poate fi realizata pentru un proiect

  • 7/28/2019 Limbaj Vizual Basic

    40/58

    creat sub Visual Basic (si nu sub Excel ca n cazul de mai sus).

    3.13. Baze de date, Gestionarul de date, controlul Data, obiecte Set denregistrari,

    SQL pentru interogarea bazelor de date

    Gestionarea datelor n Visual Basic se realizeaza cu componenta DataManager care este o extensie a programului Visual Basic ce permite creareade baze de date Microsoft Jet (Access).

    O baza de date creata cu gestionarul de date Visual Basic poate fimanipulata cu programul Access si o baza de date creata cu programul Access

    poate fi gestionata cu gestionarul de date al programului Visual Basic.

    De asemenea programul Visual Basic poate accesa n citire o baza dedate de urmatoarele tipuri:

    Btrieve

    dBase III, IV

    FoxPro 2.0, 2.5

    Paradox 3.X, 4.X

    O baza de date creata sub Visual Basic consta din unul sau mai multetabele si relatiile dintre tabele memorate ntr-un fisier baza de date.

    Pentru crearea unei baze de date se selecteaza optiunea New Databasedin meniul File al gestionarului de date.

    Dupa crearea si salvarea fisierului ce va contine baza de date sedeschide fereastra Database ce contine urmatoarele bitoane de comanda:

    - Open - deschide o baza de date existenta si afiseaza datele acesteia

    - New - creaza un nou tabel n baza de date curenta

    - Delete - elimina un tabel din baza de date curenta

    - Design - afiseaza si eventual modifica structura unui tabel existent

    - Attach - ataseaza tabele la distanta

    - Relations - defineste relatii ntre date din tabele diferite.

    Controlul Data este un control predefinit ce poate fi utilizat pentruconectarea unei aplicatii Visual Basic la sursa de date selectata si pentru

  • 7/28/2019 Limbaj Vizual Basic

    41/58

    legarea altor controale (casete de text, casete cu imagini, etc.) cu cmpuri dintabele ale bazei de date.astfel nct orice modificari efectuate n continutulacestor controale sunt automat nregistrate n cmpurile corespunzatoare din

    baza de date. Spre exemplu daca un control caseta de text este legat de un

    cmp al bazei de date, atunci orice modificare a continutului casetei de text vafi automat efectuata n cmpul asociat din baza de date.

    Un obiect set de inregistrari Recordset este un set logic de nregistraridin baza de date cu ajutorul caruia pot fi accesate datele din baze de datemultiple prin cod Visual Basic deci fara a utiliza controlul Data sau controalelegate.

    O alta modalitate pentru interogarea, actualizarea si gestionareabazelor de date relationale o constituie limbajul SQL (Structured QueryLanguage) ale carui instructiuni pot fi utilizate n programe Visual Basic

    pentru accesarea si gestionarea datelor din baze de date relationale.

    Probleme rezolvate

    Se creaza un registru de calcul Excel care contine urmatoarele foi de calcul:

    - Sheet1 (Personal) - Lista personalului angajat, cu urmatoarele cmpuri:

    Marca

    Nume si prenume

    Functia

  • 7/28/2019 Limbaj Vizual Basic

    42/58

    Salar tarifar orar

  • 7/28/2019 Limbaj Vizual Basic

    43/58

    - Sheet2 (Pontaj) - Orele lucrate n luna., cu urmatoarele cmpuri:

    Marca

    Nume si prenume

    Total ore lucrate ( SUM(Ziua : Ziua31) )

    Ziua 1 (ore lucrate)

    Ziua 2 (ore lucrate)

    .

    Ziua 31 (ore lucrate)

    -Sheet3 (Retineri) - Lista retineri n luna., cu urmatoarele cmpuri:

    Marca

    Nume si prenume

    Avans

  • 7/28/2019 Limbaj Vizual Basic

    44/58

    CAR

    Rate

    - Sheet4 (Salarii) - Lista salariilor pentru luna., ce contine urmatoarelecmpuri:

    Marca

    Nume si prenumeFunctia

    Tarif orar

    Ore pontate

    Salar realizat

    Retineri

  • 7/28/2019 Limbaj Vizual Basic

    45/58

    Salar net

    n foile de calcul Pontaj, Retineri, Salarii, cmpurile Marca, Nume si prenumesunt preluate prin referire din foaia de calcul Personal.

    De asemenea , cmpurile Functia, Ore pontate sunt preluate prin referire nfoaia de calcul Salarii din foile de calcul Personal respectiv Pontaj, iar cmpulRetineri n foaia Salarii se obtine prin sumarea cmpurilor Avans, CAR, Ratedin foaia de calcul Retineri.

    n acest mod orice modificare asupra datelor n foile de calcul Personal,

    Pontaj, Retineri, se vor reflecta automat si n foaia de calcul Salarii.Din editorul Visual Basic, sa se creeze n foaia de calcul Salarii, un formularcare sa contina butonul de comanda Calcul Salarii caruia sa i se ataseze codulVisual Basic care identifica ultimul rnd completat n foile de calcul,calculeaza si depune rezultatele obtinute n cmpurile Salar Realizat, Salar

    Net din foaia de calcul Salarii utiliznd formulele:

    Salar Realizat = Tarif Orar * Ore Pontate

    Salar Net = Salar Realizat - Retineri

    La executia formei prin click cu mouse-ul pe butonul Calcul Salarii se vor

  • 7/28/2019 Limbaj Vizual Basic

    46/58

    realiza operatiile mentionate mai sus.

    Creare forma:

  • 7/28/2019 Limbaj Vizual Basic

    47/58

    Codul Visual Basic atasat butonului Calcul Salarii:

  • 7/28/2019 Limbaj Vizual Basic

    48/58

    Executie forma:

  • 7/28/2019 Limbaj Vizual Basic

    49/58

    Rezultatul obtinut dupa executia formei:

    n continuare se extinde problema cu alte tipuri de controale astfel:

    n formularul Form1 se creaza o caseta cu lista ListBox1 ce va continenumele si prenumele angajatilor si un control imagine Image1 n care se vaincarca un fisier imagine. Codul Visual Basic pentru completarea casetei culista si ncarcarea imaginii va fi atasat butonului de comanda CommandButton1. n ecranele ce urmeaza sunt ilustrate noile obiecte create , codulvisual basic si rezultatul executiei formei.

    Formularul Form1

  • 7/28/2019 Limbaj Vizual Basic

    50/58

    Codul Visual Basic

  • 7/28/2019 Limbaj Vizual Basic

    51/58

    Rezultatul executiei formei

    Rezultatul executiei formei dupa setarea proprietatilor BackColor si Fontale casetei cu lista pe alte valori

    Probleme propuse spre rezolvare

    1. Sa se scrie codul Visual Basic care sa realizeze completarea tuturorcmpurilor n foaia de calcul Salarii (se pleaca de la o foaie de calcul Salariivida), utiliznd foile de calcul Personal, Pontaj, Retineri si formulele de calculmentionate mai sus.

    2. Sa se scrie codul Visual Basic pentru crearea foilor de calcul Pontaj,Retineri plecnd de la foaia de calcul Personal (valorile efective pentru orele

    pontate si retineri urmnd a fi preluate ulterior de la tastatura).

    Teste de verificare

    1. ntr-un mediu de programare Visual obiectele principale sunt:

  • 7/28/2019 Limbaj Vizual Basic

    52/58

    a) aplicatiile

    b) formele si controalele desenate n forme

    c) procedurile

    2. n Visual Basic obiectele pot fi create:

    a) cu comanda Object din meniul Insert a programului Excel

    b) folosind barele cu instrumente

    c) din meniul Edit al editorului Visual Basic

    3. n programarea orientata obiect si dirijata de evenimente,majoritatea obiectelor raspund la:

    a) evenimente

    b) controale

    c) proprietati

    4. Comportamentul unui obiect:

    a) este predefinit

    b) nu poate fi modificat de utilizator

    c) poate fi modificat de utilizator prin atasare de codcorespunzator

    5. Un obiect este definit de:

    a) un set de proprietati

    b) comportament

    6. Proprietatile descriu:

    a) actiunile obiectelor

    b) obiectele prin intermediul datelor

    c) metodele prin intermediul codului asociat

  • 7/28/2019 Limbaj Vizual Basic

    53/58

    7. n gramatica programarii orientate spre obiecte:

    a) obiectele sunt verbe

    b) proprietatile sunt adjective

    c) metodele sunt substantive

    d) obiectele sunt substantive

    e) metodele sunt verbe

    8. Referirea proprietatilor sau metodelor n cadrul codului scris nVisual Basic se poate face prin:

    a) numele proprietatilor sau metodelor

    b) utilizarea notatiei cu punct (nume obiect. Nume proprietate /metoda)

    9. Proprietatile unui obiect pot fi setate:

    a) numai n faza de proiectare utiliznd fisa Properties

    b) numai prin program utiliznd notatia cu punctc) att n faza de proiectare ct si prin program

    10.Metodele pot fi executate:

    a) att n faza de proiectare ct si n momentul executieiprogramului

    b) numai n momentul executiei programului

    c) numai n faza de proiectare

    11.Pentru referirea unui obiect n scrierea codului se poate utiliza:

    a) numele dat obiectului n proprietatea Capture

    b) numele dat obiectului n proprietatea Name

    c) numele obiectului dat n proprietatea Capture, fie cel dat nproprietatea Name

  • 7/28/2019 Limbaj Vizual Basic

    54/58

    12.O variabila n Visual basic poate fi declarata:

    a) implicit utiliznd sufixul

    b) explicit utiliznd instructiunea Dim

    c) cu instructiunea Declare

    d) cu instructiunea Static

    13. O variabila locala poate fi facuta permanenta n interiorul uneiproceduri daca:

    a) este declarata cu instructiunea Dim

    b) este declarata cu instructiunea Static

    14.O variabila declarata cu instructiunea Static

    a) este vizibila din orice punct al aplicatiei

    b) si conserva valoarea nsa este vizibila numai n cadrulprocedurii n care a fost declarata

    15.Cel mai nalt domeniu de vizibilitate a unei variabile se defineste cuinstructiunea:

    a) Static

    b) Dim

    c) Global

    16.Tipurile de date definite de utilizator pot fi declarate:

    a) la nivelul oricarei proceduri

    b) la nivel de forma

    c) numai n sectiunea General / Declaration a modului de cod

    17.Functia InputBox este:

    a) o functie definita de utilizator pentru preluare date de latastatura

    b) o functie a limbajului Visual Basic pentru preluare date ntr-o

  • 7/28/2019 Limbaj Vizual Basic

    55/58

    caseta de text predefinita

    c) o functie Visual Basic pentru afisarea valorii unei variabile

    18.n limbajul Visual Basic structurile de ramificare pot fi descrise:

    a) cu instructiunea If..End If

    b) cu instructiunea Do..Loop

    c) cu instructiunea Select..End Select

    d) cu instructiunea For...Next

    e) cu functia Iif(.)

    f) cu instructiunea If.Else If.EndIf

    19. n limbajul Visual Basic structurile de ciclare pot fi descrise cuinstructiunile:

    a) Select.End Select

    b) While.Wend

    c) For..Next

    d) If..ElseIf..EndIf

    e) Do.Loop

    20.n Visual Basic pot fi definite urmatoarele tipuri de proceduri:

    a) macro - definitii

    b) proceduri - subrutine

    c) macro- functii

    d) proceduri - functii

    21.O procedura subrutina poate realiza:

    a) returneaza o valoare

    b) efectueaza o actiune dar nu returneaza nici o valoarea

  • 7/28/2019 Limbaj Vizual Basic

    56/58

    c) efectueaza o actiune si poate returna o valoare

    22.n definirea unei proceduri subrutina trebuie respectate conditiile

    a) ncepe cu instructiunea Sub

    b) ncepe cu prima instructiune din corpul procedurii

    c) Continua cu instructiunile din corpul procedurii

    d) Se poate termina cu instructiunea End Sub

    e) Se termina cu instructiunea End Sub

    f) n instructiunea Sub trebuie precizat numele procedurii

    g) Numele procedurii se va termina cu ( )

    23.n definirea unei proceduri functii trebuie respectate conditiile:

    a) ncepe cu instructiunea Sub

    b) ncepe cu prima instructiune din corpul functiei

    c) ncepe cu instructiunea Functiond) Se poate termina cu instructiunea End Function

    e) Continua cu instructiunile din corpul functiei

    f) n instructiunea Function trebuie precizat numele functiei siargumentele ncadrate ntre paranteze

    g) Se termina cu instructiunea End Function

    24.O procedura de tip functie poate realiza:

    a) Efectueaza o anumita operatie

    b) Poate returna o valoare

    c) Efectueaza o operatie dar nu returneaza nici o valoare

    d) Returneaza o valoare

    e) Att la definire ct si la apelare parantezele sunt obligatorii

  • 7/28/2019 Limbaj Vizual Basic

    57/58

    25.O procedura de orice tip (Sub sau Function):

    a) poate fi atasata unui obiect grafic

    b) nu poate fi atasata unui obiect grafic

    c) numai procedurile subrutina pot fi atasate unor obiectegrafice

    d) numai procedurile de tip functie pot fi atasate unor obiectegrafice

    26. Se creeaza o caseta text (Text Box) numita txtCaseta1. Pentru amemora textul introdus n aceasta caseta n variabila sv1 se scrie

    instructiunea:

    a) sv1 = txtCaseta1.Name

    b) sv1 = txtCaseta1.Text

    c) sv1 = Text

    d) sv1 = txtCaseta1.Capture

    27. Pentru crearea unui grup de butoane de optiune ntr-un cadru seprocedeaza astfel:

    a) Se deseneaza mai nti butoanele de optiune

    b) Se deseneaza cadrul astfel nct sa contina butoanele deoptiune

    c) Se deseneaza cadrul si apoi butoanele de optiune n interiorulcadrului

    28.ntr-un grup de butoane de optiune pot fi active la un moment dat:

    a) mai multe butoane din grup

    b) un singur buton din grup

    c) toate butoanele din grup

    d) nici un buton din grup

    29.ntr-un grup de casete de validare pot fi active la un moment dat:

  • 7/28/2019 Limbaj Vizual Basic

    58/58

    a) mai multe casete de validare din grup

    b) nici o caseta de validare din grup

    c) numai o singura caseta de validare din grup (restrictieimpusa)

    d) toate casetele de validare din grup

    30.Obiectele care pot constitui containere de controale (alte obiecte) potfi:

    a) Formele

    b) Butoanele de comanda

    c) Cadrele (frame)

    d) Casetele cu lista (ListBox)

    e) Casetele combinate (ComboBox)

    31.Adaugarea de articole unei casete cu lista (ListBox) se poate realiza:

    a) prin tastare text n interiorul caseteib) utiliznd metoda AddItem

    c) prin setarea proprietati Text a casetei

    d) prin setarea proprietatii Value a casetei

    32. Referirea celulei C1, din a patra foaie de calcul a registrului decalcul Excel curent, n Visual Basic se face astfel:

    a) C1

    b) Sheets(4).Cells(C1)

    c) Sheets(4).Cells(1,3)