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)