Limbajul Visual Basic
Rezumat- se prezinta limbajul de programare Visual Basic sub Excel, si un exemplu de realizare a unei aplicatii Windows pentru calculul salariilor personalului angajat al unei firme.
3.1. Programarea aplicatiilor Windows
Pentru realizarea unei aplicatii pot fi avute īn vedere doua tehnologii de programare si anume:
- programare procedurala
- programare orientata spre obiecte si dirijata de evenimente.
Īn programarea procedurala, o aplicatie este constituita din unul sau mai multe programe care se vor executa īntr-o anumita ordine, fiecare program fiind constituit dintr-o secventa de instructuni scrise īntr-un limbaj de programare.
Acesta era modul clasic de realizare a aplicatiilor si sistemelor informatice si are o serie de dezavantaje printre care: productivitate scazuta īn realizarea programelor, efort mare pentru realizarea programelor si mai ales a interfetelor etc.
Aparitia tehnologiei orientate obiect, a mediilor visuale de programare si a sistemului de operare Windows a condus la aparitia si dezvoltarea unei noi tehnologii de programare a aplicatiilor windows si anume programarea orientata pe obiecte si dirijata de evenimente, tehnologie ce va fi prezentata īn cele ce urmeaza īn cadrul limbajului Visual Basic.
O aplicatie Windows afiseaza unul sau mai multe ecrane care contin obiecte cu care va interactiona utilizatorul pentru a controla evolutia programului. Īntr-un mediu de programare vizual, obiectele principale sunt formele si controalele desenate īn forme (forma = o fereastra) Aceste obiecte pot fi create prin selectie si depunere folosind barele de instrumente ale mediului respectiv.
Spre exemplu, bara cu instrumente Visual Basic permite crearea unei varietati de obiecte printre care: forme, butoane, casete cu lista, casete derulante combinate, casete de validare, butoane radio (butoane de optiune), etc. Fiecare din aceste obiecte are un comportament predefinit. Spre exemplu cānd se ex 212d37c ecuta click pe un buton acesta trece īn pozitia apasat si apoi revine īn pozitia normala. Pentru a schimba comportamentul obiectului acestuia trebuie sa-i atasati cod de program (instructiuni) corespunzator, cod ce se va executa atunci cānd are loc un anumit eveniment (spre exemplu īn cazul butonului evenimentul este click).
Evenimentele se produc ca urmare a unei actiuni a utilizatorului (ex. evenimentul click corespunde apasarii butonului stāng 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 de evenimente generate de catre utilizator printre care click-uri, dublu click-uri, apasari de taste sau trageri si eliberari ale obiectului. Limbajul Visual Basic pune la dispozitia utilizatorului un mediu de dezvoltare care permite crearea de programe orientate spre obiecte si conduse de evenimente. Pentru lucrul cu obiecte conduse de evenimente se parcurg urmatoarele etape:
se creeaza o noua forma careia i se da un nume;
se deseneaza si se denumesc obiectele ce urmeaza a fi afisate īn forma 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 utilizatorul pentru a controla evolutia programului. Rezumānd putem spune ca īn programarea orientata spre obiecte si dirijata de evenimente, obiectele au un comportament predefinit care poate fi modificat de utilizator prin atasare de cod corespunzator si aceste obiecte raspund la evenimente declansate fie ca urmare a actiunii utilizatorului asupra obiectelor, fie ca urmare a executiei codului atasat, fie declansate de sistem.
3.2. Proprietati si metode
Un obiect este definit de un set de proprietati cum ar fi: dimensiune, culoare, pozitie pe ecran, comportament (ex. daca un buton radio este activ sau nu la un moment dat etc.). O metoda este o procedura (succesiune de instructiuni) asociata unei anumite actiuni a unui obiect. Spre exemplu īn Visual Basic exista o metoda Move asociata majoritatii obiectelor (permite mutarea obiectelor).
Deci proprietatile descriu obiectele iar metodele definesc actiunile obiectelor, iar pe de alta parte proprietatile reprezinta date iar metodele reprezinta cod (instructiuni). Astfel īn gramatica programarii orientate spre obiecte :
obiectele sunt substantive;
proprietatile sunt adjective;
metodele sunt verbe.
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 care memoram culoarea de fond a formei
dColor = frmForma1.BackColor (citeste culoarea curenta si o depune īn dColor)
frmForma1.BackColor = QBColor (Blue) - stabileste noua culoare de fond a formei la valoarea Blue.
Referirea metodelor se face asemanator cu referirea proprietatilor, īnsa īn plus metodele pot necesita precizarea unor informatii suplimentare.
Exemplu - pentru mutarea obiectului Buton1 īn coltul din stānga sus al formei curente se apeleaza metoda Move si se precizeaza coordonatele coltului din stānga sus:
Buton1.Move 0,0
Stabilire proprietati si executare metode
Proprietatile unui obiect pot fi setate īn faza de proiectare (atunci cānd se deseneaza sau se modifica formele) utilizānd fisa Properties a formei sau obiectului din forma (fisa este automat vizualizata la selectia obiectului 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 momentul executiei formei, daca codul de program asociat contine instructiuni care refera si seteaza proprietati (ca īn exemplul de mai sus īn care schimbam culoarea fondului formei).
Spre deosebire de proprietati, metodele pot fi executate numai īn momentul executiei programului (eventual īn momentul depanarii programului utilizānd facilitatea Debugger a programului Visual Basic).
Denumirea obiectelor
Orice obiect are proprietatile:
Capture - numele dat obiectului pentru a putea fi identificat de utilizator. Visal Basic da nume implicite obiectelor. Este indicat ca utilizatorul sa dea nume obiectelor (Name) utilizānd urmatoarea conventie:
un prefix format din 3 litere mici (ex. frm pentru forma, cmd pentru buton de comanda, etc.)
un sir de caractere care identifica obiectul (ex. Forma1, Ecran1, Buton1, etc.).
Īn tabelul urmator sunt prezentate conventiile de denumire a obiectelor din Visual Basic:
Obiect |
Prefix |
Exemplu |
Forma |
frm |
frmForma1 |
Buton de comanda |
cmd, btn |
cmdButon, btnOK |
Caseta de text |
txt |
txtCaseta1 |
Bare de derulare orizontala verticala |
hsb vsb | |
Meniu |
mnu |
mnuMeniuPrinc |
Caseta de validare |
chk | |
Caseta cu lista |
lst | |
Cadru |
fra | |
Imagine |
img | |
Buton de optiune (radio) |
opt |
optBO1 |
3.3. Utilizare Visual Basic din Excel
Lansare editor Visual Basic:
Tools Macro Visual Basic Editor
Creare forma
Insert UserForm
stergere forma
File Remove UserForm
(pentru forma selectata = ultima activata)
No (fara export = fara salvare)
Dupa creare forma se pot desena obiecte īn forma utilizānd bara de instrumente Toolbox Controls prin selectare obiect, antrenare pe suprafata formei si depunere obiect ca īn exemplul de mai jos:
Īn partea stānga a ecranului este afisata lista proprietatilor obiectului 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
din lista Project ce apare se alege forma dorita (care poate fi editata 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 (se apasa 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 poate avea max. 256 caractere, trebuie sa īnceapa cu un caracter alfanumeric (litere, cifre) si nu poate fi un cuvānt rezervat al limbajului Visual Basic (cum ar fi Sub, Function, etc.).
Tipuri de variabile īn Visual Basic
Tip |
Sufix |
Dimensiune (octeti) |
Domeniu de valori |
Byte | |||
Boolean |
Adevarat, Fals (True, False) |
||
Integer - īntreg | |||
Long integer - īntreg lung |
& | ||
Simpla precizie |
-3.40E38 3.40E38 |
||
Dubla precizie |
-1.80E308 , 1.80E308 |
||
Currency - valuta |
-9.22E14 , 9.22E14 |
||
Date - data calendaristica |
ian 1, 100 dec 31 ,9999 |
||
Object - obiect |
Adresa unui obiect |
||
String - sir |
1/caracter |
65500 octeti |
|
Variant - nedefinit |
dupa caz |
īn functie de tip |
|
User-Defined (definit de utilizator) |
dupa caz |
īn functie de tipul elementelor |
Declaratii implicite si explicite de variabile
Declararea implicita se face utilizānd sufixul (ca īn tabelul de mai sus).
Exemplu:
Vārsta% = 42 (variabila vārsta este de tip īntreg)
Daca ultimul caracter nu este unul din caracterele de declarare a tipului: %, & atunci tipul prestablit este variant.
Declararea explicita a unei variabile se face utilizānd instructiunea Dim la īnceputul unei proceduri.
Exemplu:
Dim Varsta As Integer
Dim X As Double
Dim sir1, sir2 As String (sir1 este de tip variant, sir2 este de tip string)
Dim sir As String 10 (de tip sir ce poate contine max. 10 caractere)
Domeniul unei variabile
Domeniul unei variabile este zona programului īn care variabila este vizibila. Īntrucāt o variabila poate fi declarata la 4 nivele diferite exista corespunzator 4 nivele diferite de domenii de vizibilitate si anume:
nivel procedura
variabile statice īn interiorul procedurilor
nivel forma
nivel modul standard
Nivelul procedura este primul nivel la care poate fi declarata o variabila fie implicit
fie cu instructiunea Dim. Exista doua tipuri de procedura īn Visual Basic 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 restrāns domeniu.
Cānd executia unei proceduri se īncheie, toate variabilele locale ale acesteia sunt eliminate din memorie.
Deci variabilele locale ale unei proceduri sunt reinitializate la fiecare apel al procedurii.
Variabile statice - īn interiorul procedurilor
O variabila locala poate fi facuta permanenta daca īn locul instructiunii Dim se foloseste instructiunea Static. Astfel o variabila statica īsi conserva valoarea īntre apelurile succesive ale procedurii īn care a fost declarata (deci nu va fi reinitializata la fiecare apel al procedurii), īnsa este vizibila numai īn cadrul procedurii īn care a fost declarata.
Variabile la nivel forma
O variabila declarata la nivelul unei forme, va fi accesibila la nivelul tuturor
procedurilor acelei forme.
Variabile la nivelul modul standard
Modulele de cod sunt module utilizate pentru a pastra procedurile si functiile generale neinfluentate de evenimente si variabilele si constantele globale. Aceste module se creeaza prin selectarea 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 face prin plasarea acesteia īn zona de declaratii a obiectului General, zona accesibila prin intermediul ferestrei de cod. Cel mai īnalt domeniu de vizibilitate este nivelul global. Orice variabila declarata la acest nivel este vizibila din orice procedura a aplicatiei (proiectului). Declararea unei variabile globale se face utilizānd cuvāntul cheie Global īn sectiunea General / Declaration a modulului de cod.
Exemplu: Global NumePrenume As String
Constante
O constanta poate fi privita ca o variabila a carei valoare nu se modifica niciodata ramānānd aceeasi pe parcursul īntregii vieti a programului.
Utilizarea constantelor duce la cresterea calitatii programelor. Ca si īn cazul unei variabile, domeniul unei constante este determinat de locul unde este declarata. Constantele se declara cu cuvāntul cheie Const. Este indicat ca numele constantelor sa fie scrise cu litere mari pentru a fi usor reperabile.
Exemplu de utilizare InputBox( ), MsgBox
Const IB TITLU = "Titlu InputBox"
Dim sNume As String variabila locala
Static ixPos As Integer, iyPos As Integer 'valoare pastrata īntre apeluri
SPrompt = "Introduceti numele dumneavoastra:"
ixPos = Iif(ixPos > ' schimba pozitia ferestrei
iyPos = Iif (iyPos >
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 Visual Basic, utilizatorul poate sa-si defineasca propriile sale tipuri de date, care pot contine unul sau mai multe tipuri de date predefinite. Tipurile de 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 al aplicatiei, proiectului respectiv).
Exemplu:
Type t pers
Nr As Integer
Nume As String
DataNasterii As Date
End Type
Dupa definirea unu astfel de tip de data acesta poate fi utilizat pentru declararea unei variabile de acest tip. Pentru variabila se poate utiliza Dim, Static, Global pentru a defini domeniul de vizibilitate al acestei variabile.
Exemplu:
Dim Persoane As t_pers
Persoane.Nr = 15
Pesoane.Nume = "Ionescu Ion"
Astfel de tipuri de variabile sunt utilizate īn programele de baze de date.
Prefixele variabilelor
De obicei fiecare programator īsi defineste variabilele utilizānd un prefix scris cu litere mici pentru a identifica tipul variabilei dupa cum urmeaza:
i - Integer
s - String
l - Long
--------
Exista o lista standard de prefixe de variabile numita notatie ungara (Hungarian Notation) - inventata de un programator de nationalitate ungara de la firma Microsoft pentru limbajul C.
3.5. Operatii de intrare /iesire realizate cu functiile InputBox ( ) si MsgBox ( )
Limbajul Visual Basic dispune de functiile InputBox ( ) si MsgBox ( ) pentru realizarea de operatii simple de intrare/iesire prin utilizarea unor casete de dialog predefinite. Īn cadrul unui program utilizatorul trebuie sa poata introduce date si sa poata afisa sau extrage rezultate.
Functia InputBox ( ) - afiseaza o caseta de dialog si asteapta ca utilizatorul sa introduca text, apoi returneaza continutul casetei de text. Valoarea returnata este fie de tip variant fie de tip String īn 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 fi un mesaj (de tip String) care invita utilizatorul sa introduca text īn caseta de text afisata. Pentru a introduce text pe mai multe linii se va introduce CR. LF, (chr(13), chr(10)) sau constanta predefinita vbcrlf, īntre fiecare doua rānduri succesive).
Title este un sir de caractere ca va fi afisat īn bara de titlu a casetei de dialog.
Default - se poate completa pentru acest argument un sir de caractere care sa fie considerat raspunsul predefinit (va apare afisat īn caseta de text), iar daca nu se completeaza, caseta de text (īn care utilizatorul va introduce textul) va fi afisata goala.
xpos, ypos - sunt expresii numerice care specifica distanta pe orizontala, verticala a coltului din stānga sus al casetei de dialog fata de coltul din stānga al ecranului (formei). Daca sunt omise, caseta de dialog va fi centrata pe orizontala la o treime din īnaltimea ecranului. Daca se omite title sau default sau ambele si vrem sa precizam xpos, ypos atunci īn locul argumentelor omise se va folosi cāte o virgula pentru fiecare argument omis.
Pentru ambele functii InputBox( ) si MsgBox( ), argumentele helpfile (sir) si context (nr. īntreg) sunt utilizate pentru a pune la dispozitie asistenta soft dependenta de context, caz īn care utilizatorul poate apasa tasta F1 pentru a vedea articolul Help creat pentru 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 se selecteaza 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. Functia MsgBox ( ) returneaza o valoare īntreaga care indica numarul butonului selectat. Procedura MsgBox nu returneaza nici o valoare ( se utilizeaza atunci cānd nu intereseaza cum este īnchisa caseta de dialog corespunzatoare).
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 tipul butoanelor 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:
numarul si tipul butoanelor casetei de dialog
tipul pictogramei
butonul prestabilit
modalitatea casetei de dialog.
Valoare |
Semnificatie |
Constanta simbolica recomandata |
Afiseaza numai butonul OK |
vbOKOnly |
|
Afiseaza butoanele OK si Cancel |
vbOKCancel |
|
Afiseaza butoanele Abort,Retry,Ignore |
vbAbortRetryIgnore |
|
Afiseaza butoanele Yes, No, Cancel |
vbYesNoCancel |
|
Afiseaza butoanele Yes, No |
vbYesNo |
|
Afiseaza butoanele Retry, Cancel |
vbRetryCancel |
Afiseaza pictograma Critical |
vbCritical |
|
Afiseaza un semn de īntrebare |
vbQuestion |
|
Afiseaza un semn de exclamare |
vbExclamation |
|
Afiseaza pictograma Information |
vbInformation |
Primul buton este prestabilit |
vbDefaultButton1 |
|
Al doilea buton este prestabilit |
vbDefaultButton2 |
|
Al treilea buton este prestabilit |
vbDefaultButton3 |
Caseta modala aplicatiei |
vbApplicationModal |
|
Caseta modala sistemului |
vbSystemModal |
Pentru a obtine valoarea argumentului type se va īnsuma cāte un numar din fiecare grup. Daca argumentul type este omis se considera implicit valoarea 0.
Modalitatea implicita a unei casete de dialog este ApplicationModal.
Īn modalitatea aplicatie utilizatorul trebuie sa raspunda casetei de dialog īnainte de a putea sa lucreze īn aplicatia curenta. Īn modalitatea System toate aplicatiile sunt suspendate pāna cānd utilizatorul raspunde casetei de dialog.
Atāt pentru functia MsgBox( ) cāt si pentru procedura MsgBox argumentul msg este obligatoriu, celelalte fiind facultative. Valoarea returnata de functia MsgBox( ) indica butonul care a fost selectat, conform tabelului de mai jos:
Valoare |
Semnificatie |
Constanta simbolica recomandata |
Butonul OK selectat |
vbOK |
|
Butonul Cancel selectat |
vbCancel |
|
Butonul Abort selectat |
vbAbort |
|
Butonul Retry selectat |
vbRetry |
|
Butonul Ignore selectat |
vbIgnore |
|
Butonul Yes selectat |
vbYes |
|
Butonul No selectat |
vbNo |
Este indicat a se utiliza constante simbolice īn locul numerelor deoarece īn acest fel creste claritatea programului (semnificatia constantei vbAbort este evidenta, pe cānd nr. 3 nu spune nimic).
3.6. Structuri de ramificare si ciclare (luare decizii)
Pentru luarea deciziilor īn cadrul unui program Visual Basic se pot utiliza doua categorii de instructiuni cu ajutorul carora se dirijeaza executia instructiunilor programului īn functie de īndeplinirea anumitor conditii.
Cele doua categorii de instructiuni sunt:
instructiuni de ramificare - permit executia selectiva a anumitor secvente de instructiuni functie de īndeplinirea unor conditii
instructiuni de ciclare - permit executia repetata a unor secvente de instructiuni.
3.6.1.Structuri de ramificare
Structura If..EndIf - are sintaxa
If < conditie > then
< instructiuni 1 >
Else
< instructiuni 2 >
EndIf
Daca <conditie> este adevarata se executa secventa de instructiuni <instructiuni1> si se continua programul cu instructiunile care urmeaza dupa EndIf.
Daca <conditie> este falsa se executa secventa de instructiuni <instructiuni 2> si se continua programul cu instructiunile care urmeaza dupa EndIf.
Exemplu:
If Culoare < 15 Then
Culoare = Culoare + 1
Else
Culoare = 1
EndIf
Se pot construi structuri If imbricate (incluse), īnsa pentru aceasta se poate utiliza simplu structura If..ElseIf...EndIf, sau īn cazul mai 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"
Structura If..ElseIf..EndIf poate fi condensata īntr-o singura linie de cod utilizānd functia IIF ( ) ca īn exemplul de mai jos:
Culoare = IIF (Culoare <15, Culoare, 1) '(testeaza sa nu se depaseasca codul
14 pentru culoare)
Structura Select..EndSelect - pentru realizarea unei actiuni din mai multe posibile.
Exemplu: fie iVarsta o variabila numerica īn care este memorata vārsta.
Select Case iVarsta
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 >
sGrupa = "vārstnic"
Case Else
sGrupa ="ceilalti"
EndSselect
Īn functie de conditia (prima īndeplinita ) se executa secventa de instructiuni corespunzatoare, apoi se continua cu instructiunile care urmeaza dupa EndSelect. Daca nici una din conditiile anterioare nu este īndeplinita se executa instructiunile care urmeaza dupa CaseElse.
3.6.2. Structuri de ciclare
While...Wend are sintaxa:
While <conditie>
<instructiuni>
Wend
Se executa secventa de instructiuni <instructiuni> atāta timp cāt conditia <conditie> este īndeplinita (adevarata).
Do..Loop are sintaxa:
Do Until <conditie>
<instructiuni>
Loop
sau
Do
If <conditie> Then
Exit Do
Else
<instructiuni>
Loop Until <conditie>
Structura Do.Loop repeta un bloc de instructiuni atāta timp cāt o anumita conditie este adevarata sau pāna īn momentul īn care o anumita conditie devine adevarata.
Instructiunea Exit Do poate fi folosita numai īntr-o structura Do..Loop ca o conditie de a parasi ciclul.
For.Next - repeta o secventa de instructiuni de un numar precizat de ori dupa urmatoarea sintaxa:
For icontor = <valoare initiala> To <valoare finala> Step <pas>
<instructiuni>
Next
Executia ciclului For.Next se poate termina fortat cu instructiunea Exit For.
Exemplu: (calculeaza suma numerelor pare pāna la 100).
For iNr = 0 TO 100 step 2
isuma = isuma + iNr
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 pe diverse nivele ale
domeniului de vizibilitate īn cadrul aplicatiei. Toate exemplele date pāna īn prezent cu exceptia variabilelor globale vor fi stocate īn module asociate unor forme.
Exemplu - daca se scrie cod asociat evenimentului click al unui buton va rezulta o procedura de eveniment (spre deosebire de o procedura generala) care va fi parte a formei īn care se afla butonul. Cu exceptia cazului cānd se elimina cuvāntul cheie Private din antetul procedurii de eveniment a formei, acest cod nu va fi vizibil īn afara formei.
O clasa este un sablon īn baza caruia pot fi create obiecte. Clasa defineste proprietatile obiectelor ce apartin clasei si metodele utilizate pentru controlul comportamentului obiectelor. Modulele clasa contin o definitie formala a unei clase care va fi instantiata ca obiect OLE automatic.
Un modul de cod contine cod public, declaratii, proceduri subrutina si functii care pot fi partajate īntre toate modulele unui proiect. Modulul de cod este numit si modul standard pentru a putea fi diferentiat de modulele formei si modulele clasa.
Proceduri generale si proceduri eveniment
O procedura generala comunica aplicatiei cum sa efectueze o anumita actiune. Pentru a efectua actiunea, procedura trebuie apelata explicit īn cadrul aplicatiei. O procedura generala poate fi plasata īn oricare din cele 3 tipuri de module. O procedura eveniment ramāne inactiva pāna cānd este apelata pentru a raspunde unor evenimente provocate 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 de instructiuni care are un nume si ale carei instructiuni sunt executate ca un tot. O procedura subrutina efectueaza o anumita actiune īnsa nu returneaza nici o valoare. O procedura subrutina īncepe cu instructiunea Sub si se termina cu instructiunea End Sub (exemplu procedura asociata evenimentului click al unui buton).
Limbajul Visual Basic are o serie de proceduri īncorporate ca de exemplu:
Procedura |
Descriere |
Exemplu de utilizare |
MsgBox |
Afiseaza un mesaj īntr-o caseta |
MsgBox "mesaj",.. |
|
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 |
Beep |
Date |
Stabileste data sistemului |
Date December 18, 2002 |
Utilizatorul īsi poate defini propriile proceduri pentru a efectua diverse actiuni.
Exemplu:
Sub StergeFisiere( )
Kill " *.Tmp"
Kill " *. Dat"
Beep
MsgBox "S-au sters fisierele *.Tmp, *.Dat"
Pentru apelarea procedurii stergeFisiere din orice punct al aplicatiei se va specifica numele procedurii ca instructiune īn cadrul programului. (desi parantezele apar īn definitia procedurii, la apelul procedurii se va specifica doar numele fara paranteze !).
Procedura de mai sus nu necesita argumente, īnsa daca o procedura urmeaza sa primeasca argumente acestea se vor specifica ca īn exemplul:
Sub Produs(iNr1 As Integer, iNr2 As Integer)
iVarGlobal = iNr1*iNr2
End Sub
Apelul procedurii este ilustrat īn exemplul de mai jos:
iV1 = 560
iV2 = 829
Produs iV1, iV2
.......
3.7.2. Proceduri functii
O procedura functie (sau simplu o functie) este o secventa de instructiuni care efectueaza o anumita operatie īntr-un program si returneaza o valoare. O functie īncepe cu instructiunea Function si se termina cu instructiunea End Function.
Īn Visual Basic exista o serie de functii predefinite printre care:
Functia |
Descriere |
Exemplu de utilizare |
Valoare returnata |
Len( ) |
Returneaza lungime sir |
iLung=Len("Limbaje de programare") |
iLung = 21 |
Mid( ) |
Returneaza un subsir din sir |
sSubsir=Mid("ABCDE", 1,2) |
sSubsir = "AB" |
Chr( ) |
Returneaza caracterul corespunzator codului |
sCar = Chr(65) |
sCar = "A" |
Asc( ) |
Returneaza codul corespunzator caracterului |
iCod = Asc ("A") |
iCod = 65 |
UCase( ) |
Converteste īn litere mari |
sMari = Ucase("Ionescu") |
sMari = "IONESCU" |
LCase( ) |
Converteste īn litere mici |
sMici = Lcase("LIMBAJE") |
sMici = "limbaje" |
InStr( ) |
Returneaza pozitia unui subsir īn sir |
iPozitie = Instr("ABCDE", "BCD") |
iPozitie = 2 |
Pe lānga functiile predefinite fiecare utilizator īsi poate crea propriile functii
Dim iLen As Integer
Dim sSirCriptat As String, sCar As String, sCript As String
iLen = Len(sSirTastat) depune īn iLen lungimea sirului tastat
For x = 1 To iLen pentru fiecare caracter din sirul tastat
sCar = Mid (sSirtastat, x, 1) extrage caracterul
sCript = Chr$(Asc(sCar) +1) cripteaza caracterul prin incrementare cu 1
sSirCriptat = sSirCriptat&sCript adauga caracterul criptat sirului 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 care este aproape identica cu cea de criptare si anume:
Dim iLen As Integer
Dim sSirIesire As string, sCarIntrare As string, sCarIesire as string
iLen = Len(sSirIntrare)
For x = 1 To iLen
sCarIntrare = Mid$(sSirIntrare, x, 1)
sCarIesire = Chr$(Asc(ScarIntrare)-1) minus īn loc de plus
sSirIesire = sSirIesire & sCarIesire
Next
Decriptare = sSirIesire Decriptare īn loc de criptare
End Function
Se constata ca cele doua functii pot fi scrise ca o singura functie de doua argumente si anume:
Function CriptDecript (sSirIntrare As String, iOperatie As Integer) As String
Dim iLen As Integer
Dim sSirIesire As string, sCarIntrare As String, sCarIesire As String
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:
+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 de cod a modulului de cod standard.
Lista Object contine cuvāntul General iar lista Proc contine cuvāntul Declarations. Īn sectiunea General Declaration a modului se vor declara variabilele si constantele la nivel de modul (globale) si apoi se definesc (introduc) procedurile si functiile modulului (codul sursa prezentat mai sus).
Observatii
Fiecare din functiile si procedurile aplicatiei pot fi atasate unor obiecte grafice (butoane), deci īn acest caz textul sursa corespunzator se va atasa butoanelor respective.
Indiferent daca o functie are sau nu argumente, atāt la definire cāt si la apelare, parantezele sunt obligatorii !!
3.8. Obiecte īn Visual Basic
Bare cu instrumente
- Butoane de comanda - sunt utilizate pentru a īncepe, a īntrerupe sau a īncheia un anumit proces.
Cānd se executa click cu mouse-ul arata ca si cum ar fi apasat, de unde 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 tasta de acces īn combinatie cu tasta Alt. Selectia unui buton de comanda se face prin click cu mouse-ul sau cu tasta Tab pentru a ajunge pe buton si apoi se apasa tasta Enter. Daca proprietatea Default a unui buton are valoarea True, atunci acest buton poate fi selectat īn orice moment prin apasarea tastei Enter indiferent ce control este curent īn acel moment.
Daca proprietatea Cancel a unui buton este stabilita pe valoarea True atunci acel buton poate fi selectat prin tasta Esc.
Proprietati uzuale ale unui buton de comanda
Proprietate |
Descriere |
Exemple de valori |
Appearance |
Selecteaza aspectul 3D sau plat |
1= 3D, 0 = plat |
Cancel |
Permite selectarea cu ESC |
True, False |
Caption |
sirul de caractere afisate pe buton |
caractere |
Default |
Permite selectarea cu tasta Enter |
True, False |
Font |
Stabileste corpul, stilul si dimensiunea caracterelor |
MS Sans Serif, Bold, 12 |
- Etichete - sunt controale grafice folosite pentru a afisa text pe care utilizatorul nu īlpoate modifica direct ci doar cu ajutorul instructiunilor (codului). Pentru ca eticheta sa afiseze corect linii multiple de diverse lungimi se vor stabili proprietatile AutoSize si WordWrap la valoarea True.
Casete de text sau TextBox-uri sau casete de editare, sunt utilizate pentru a afisa informatii introduse de utilizator la rulare sau asociate controlului prin program. Accesul la textul afisat se obtine prin stabilirea sau citirea proprietatii Text a controlului, ceea ce poate face fie direct īn faza de proiectare, fie prin cod utilizānd notatia cu punct.
Exemplu de citire:
sTextCaseta1= txtCaseta1.Text (daca a fost creata o caseta de text 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 derulare orizontala, textul va fi īmpartit automat pe rānduri chiar daca caseta este redimensionata. Barele de derulare se stabilesc cu proprietatea ScrollBars: Horizontal, Vertical, Both, None.
Daca proprietatea MultiLine este True, se poate utiliza proprietatea Alignment pentru a alinia textul la stānga, la dreapta, sau īn centrul zonei, iar daca MultiLine este False, Alignment nu are efect.
Implicit textul este aliniat la stānga
Proprietati uzuale ale unei casete Text Box
Proprietate |
Descriere |
Exemplu de valori |
Appearance |
Selecteaza aspectul 3D sau plat |
1= 3D, 0 = plat |
Border Style |
Precizeaza tipul chenarului |
0 - fara chenar, 1 - chenar simplu |
Font |
Stabileste corpul, stilul si dimensiunea caracterelor |
MS Sans Serif, Bold, 12 |
PasswordChar |
Ascunde textul cu un singur caracter |
Ex. * sau |
SelStart |
Pozitia initiala pentru selectarea textului |
numai la rulare |
SelLength |
Precizeaza lungimea textului selectat |
numai la rulare |
Tag |
Memoreaza informatii suplimentare |
orice expresie sir |
Proprietatile SelStart si SelLength sunt disponibile numai la rulare 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) - afiseaza o optiune care poate fi activata s-au dezactivata ( ,o), functie de valoarea True sau False a proprietatii Value a butonului. Īn general butoanele de optiune se utilizeaza īn grupuri (mai multe butoane) afisate īntr-un cadru - ca lista de optiuni ce se exclud reciproc. Toate butoanele de optiune afisate īntr-un recipient (cadru) se comporta ca un grup, deci numai unul singur poate fi activ la un moment dat (īntāi se deseneaza cadrul si apoi se depun butoanele īn cadru - desenarea ulterioara a cadrului nu are nici un efect asupra grupului).
Prin intermediul proprietatii Caption fiecarui buton i se poate atasa un text ce va fi afisat imediat īn dreapta butonului. Fiecarui buton i se poate atasa cod ca de exemplu:
If optButon1.Value = True Then
MsgBox "Buton selectat" Testeaza starea curenta a butonului
optButon1
Else
MsgBox "Buton neselectat"
End if
- Casete de validare - afiseaza o caseta care poate fi activata sau dezactivata (
Se pot grupa mai multe casete de validare īntr-un cadru, īnsa spre deosebire 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 dreapta casetei ca mai jos:
Select Case chkCv1
Case 0
VMsg = "Nebifata"
Case 1
VMsg = "Bifata"
Case 2
VMsg = "Indisponibila"
End select
MsgBox VMsg
- Cadre - ofera posibilitatea de a grupa controale īnrudite (butoane de optiune, casete de validare). Īntāi se deseneaza cadrul si apoi controalele.
- Caseta cu lista (list box) afiseaza o lista de articole din care utilizatorul poate
selecta unul sau mai multe. Pentru a prelucra articolele selectate se utilizeaza evenimentul Click sau Double Click ale casetei cu lista.
Private Sub lstLista1_Dblclick( ) Afiseaza articolul selectat din caseta cu lista
txtSelectie = lstLista1 īn caseta de text txtselectie
End Sub
Proprietatea ListCount a unei casete cu lista returneaza numarul de articole din lista, iar proprietatea ListIndex determina articolul curent selectat astfel:
ListIndex = 0 pentru primul articol din lista
ListCount -1 pentru ultimul articol din lista
= -1 daca nu a fost selectat nici un articol din lista
Pentru a selecta mai multe articole din lista se utilizeaza proprietatea Multiselect astfel:
MultiSelect = 0 - nu sunt admise selectii multiple (implicita)
1 - selectie simpla (executare click cu mouse sau apasare tasta
spatiu duce la selectarea sau deselectarea unui articol din
lista;
se pot utiliza sageti pentru mutarea selectiei de la un articol
la altul.
2 - selectie multipla (se apasa shift si apoi click cu mouse sau
utilizare sageti pentru a selecta articolul urmator adaugat la
elementul selectat anterior.Pentru selectii multiple de articole
neadiacente se utilizeaza tasta Ctrl si Click cu mouse pe
articol.
Proprietatea Selected pe valoarea True sau False specifica daca un articol 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 unui TextBox cu cele ale unui ListBox (contine o caseta cu lista si o caseta text).
Proprietati si metode comune ale casetelor cu lista si casetelor combinate.
Proprietate |
Semnificatie |
Exemplu de utilizare |
ListCount |
Nr. articole ale listei |
iOptiune = lstLista1.ListCount - 1 |
ListIndex |
Indexul numeric al articolului curent |
lstLista1.ListIndex = 3 |
List |
Asociata cu indexul returneaza articolul curent din lista |
sArt3 = lstLista1.List(3) |
Selected |
Are valoarea True daca este selectat articolul |
If lstLista1.Selected(3) Then |
Sorted |
Lista va fi sortata daca valoarea proprietatii sorted este True |
lstLista1.Sorted = True |
Metode |
Semnificatie |
Exemplu de utilizare |
AddItem |
Adauga listei un articol de tip sir |
lstLista1.AddItem = "Ionescu Ion" |
Clear |
Elimina toate articolele din lista |
lstLista1.Clear |
RemoveItem |
Elimina un singur articol din lista |
lstLista1.RemoveItem 5 |
Utilizarea matricelor - variabile multidimensionale
sStudenti(0) = "Ionescu Ion"
.............
sStudenti(14) = "Popescu Vasile"
For iIndex = 0 To 14
MsgBox sStudenti(iIndex)
Next
Functia UBound(sStudenti) returneaza numarul de elemente ale matricii (tabloului) Studenti.
Exemplu de utilizare casete cu lista:
Private Sub frmForma1 Click( )
Dim sStudenti(15) As String Declara matricea sStudenti de 15
elemente
sStudenti(0) = "Ionescu" ' Initializeaza elementele matricii
sStudenti(1) = "Florescu"
...........
For iC = 0 To Ubound(sStudenti) - 1 Adauga fiecare element al matricii ca
lstLista1.AddItem (sStudenti(iC)) articol īn caseta cu lista lstLista1
Next Functia Ubound returneaza numarul
de elemente ale matricii
lstLista1.ListIndex = 0 Selecteaza primul articol din lista
- Bare de derulare (orizontale si verticale) permit parcurgerea unor liste mari. Ori de cāte ori se efectueaza click pe o bara de derulare se executa procedura evenimentului Change. Cānd se trage bara de derulare se declanseaza evenimentul Scrool, iar la eliberarea de pe bara de derulare se executa evenimentul Change.
- Spinner (SpinButton) - permite incrementare sau decrementare numere, prin atasare si activarea unui buton spinner unei etichete sau unei casete de text.
- Controale cu imagini - permit afisarea de imagini pe suprafata unei forme, putānd utilza pentru aceasta doua tipuri de controale si anume: PictureBox si Image.
Controalele Image pot fi create din bara de instrumente Toolbox Controls, aceste controale prezentānd si avantajul ca imaginile plasate īn ele pot fi redimensionate prin stabilirea proprietatii Stretch a controlului la valoarea True. Controalele Image nu accepta grafica desenata īn timpul rularii si nu pot fi utilizate ca recipiente pentru alte controale.
Controalele PictureBox accepta grafica desenata īn timpul rularii programului utilizānd metodele Line, Circle si Pset. Daca grafica īncarcata dintr-un fisier depaseste suprafata controlului PictureBox, grafica va fi trunchiata exceptīnd situatia īn care proprietatea AutoSize are valoarea True.
Fisierele imagine pot fi importate īn controale Image sau PictureBox 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 directorul C:\Imagini, īn controlul Image care are numele (Name) imag1 se va scrie instructiunea:
imag1.Picture = LoadPicture("C:\Imagini\Poza.jpg")
Pentru a elimina imaginea dintr-un control imagine se va folosi functia 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, a unei unitati de disc
DirListBox - afiseaza o lista ordonata a directoarelor si subdirectoarelor de pe disc si prin click cu mouse permite utilizatorului sa navigheze prin directoare
FileListBox - afiseaza fisierele din directorul specificat de proprietatea Path la rularea programului.
3.9. Referire celule dintr-o foaie de calcul tabelar īn Visual Basic
Se face astfel:
Sheets(n).Cells(nr.rānd, nr.coloana)
Exemplu. Instructiunea
Sheets(3).Cells (1,2) = "Ionescu"
depune sirul 'Ionescu' īn celula B1 (rānd 1 coloana 2) din a treia foaie de calcul a
registrului de calcul Excel curent. Pentru precizarea celulei (nr.rānd, 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) rāndurile 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 īn Visual Basic este un fisier cu extensia .RES.
Īn cazul īn care limbajul Visual Basic este utilizat din Excel, fisierul proiect este un fisier cu extensia .XLS.
Componentele proiectului pot fi vizualizate selectānd din meniul View optiunea Project Explorer astfel:
Īn fereastra din stānga ecranului vor fi afisate componentele proiectului si anume:
componente Excel
componente Visual Basic (Forms, etc.)
dupa cum este ilustrat īn ecranul care urmeaza:
3.11. Crearea si extinderea meniurilor
Limbajul Visual Basic permite crearea de meniuri personale pentru o aplicatie cu ajutorul editorului de meniuri.
Unei forme i se poate asocia o pictograma prin stabilirea proprietatii Icon a formei īn faza de proiectare atribuind proprietatii Icon un fisier cu formatul .ICO. Daca nu se specifica o pictograma, se va utiliza pictograma Visual Basic prestabilita pentru forme.
Aceasta pictograma va aparea īn coltul din stānga sus al formei.
Aceste elemente ale limbajului nu pot fi create si utilizate īn Visual Basic sub Excel.
3.12. Realizarea programului executabil pentru aplicatie (proiect)
Programul executabil pentru o aplicatie Windows (proiect) este un fisier executabil cu extensia .EXE care poate fi rulat īn afara mediului de dezvoltare Visual Basic. Acest fisier īmpreuna cu alte fisiere auxiliare necesare programului va fi livrat viitorilor utilizatori ai aplicatiei si va putea fi instalat si executat sub sistemul de operare Windows.
Crearea programului executabil poate fi realizata pentru un proiect 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 de īnregistrari,
SQL pentru interogarea bazelor de date
Gestionarea datelor īn Visual Basic se realizeaza cu componenta Data Manager care este o extensie a programului Visual Basic ce permite crearea de baze de date Microsoft Jet (Access).
O baza de date creata cu gestionarul de date Visual Basic poate fi manipulata 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 de date 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 multe tabele si relatiile dintre tabele memorate īntr-un fisier baza de date.
Pentru crearea unei baze de date se selecteaza optiunea New Database din meniul File al gestionarului de date.
Dupa crearea si salvarea fisierului ce va contine baza de date se deschide 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 pentru conectarea unei aplicatii Visual Basic la sursa de date selectata si pentru legarea altor controale (casete de text, casete cu imagini, etc.) cu cāmpuri din tabele ale bazei de date.astfel īncāt orice modificari efectuate īn continutul acestor controale sunt automat īnregistrate īn cāmpurile corespunzatoare din baza de date. Spre exemplu daca un control caseta de text este legat de un cāmp al bazei de date, atunci orice modificare a continutului casetei de text va fi automat efectuata īn cāmpul asociat din baza de date.
Un obiect set de inregistrari Recordset este un set logic de īnregistrari din baza de date cu ajutorul caruia pot fi accesate datele din baze de date multiple prin cod Visual Basic deci fara a utiliza controlul Data sau controale legate.
O alta modalitate pentru interogarea, actualizarea si gestionarea bazelor de date relationale o constituie limbajul SQL (Structured Query Language) 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 cāmpuri:
Marca
Nume si prenume
Functia
Salar
tarifar orar
- Sheet2 (Pontaj) - Orele lucrate īn luna., cu urmatoarele cāmpuri:
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 cāmpuri:
Marca
Nume si prenume
Avans
CAR
Rate
- Sheet4 (Salarii) - Lista salariilor pentru luna., ce contine urmatoarele cāmpuri:
Marca
Nume si prenume
Functia
Tarif orar
Ore pontate
Salar realizat
Retineri
Salar net
Īn foile de calcul Pontaj, Retineri, Salarii, cāmpurile Marca, Nume si prenume sunt preluate prin referire din foaia de calcul Personal.
De asemenea , cāmpurile Functia, Ore pontate sunt preluate prin referire īn foaia de calcul Salarii din foile de calcul Personal respectiv Pontaj, iar cāmpul Retineri īn foaia Salarii se obtine prin sumarea cāmpurilor Avans, CAR, Rate din 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 formular care sa contina butonul de comanda Calcul Salarii caruia sa i se ataseze codul Visual Basic care identifica ultimul rānd completat īn foile de calcul, calculeaza si depune rezultatele obtinute īn cāmpurile Salar Realizat, Salar Net din foaia de calcul Salarii utilizānd 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 realiza operatiile mentionate mai sus.
Creare forma:
Codul Visual Basic atasat
butonului Calcul Salarii:
Executie forma:
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 contine numele si prenumele angajatilor si un control imagine Image1 īn care se va incarca un fisier imagine. Codul Visual Basic pentru completarea casetei cu lista si īncarcarea imaginii va fi atasat butonului de comanda Command Button1. Īn ecranele ce urmeaza sunt ilustrate noile obiecte create , codul visual basic si rezultatul executiei formei.
Formularul Form1
Codul Visual Basic
Rezultatul executiei formei
Rezultatul executiei formei dupa setarea proprietatilor BackColor si Font ale casetei cu lista pe alte valori
Probleme propuse spre rezolvare
1. Sa se scrie codul Visual Basic care sa realizeze completarea tuturor cīmpurilor īn foaia de calcul Salarii (se pleaca de la o foaie de calcul Salarii vida), utilizānd foile de calcul Personal, Pontaj, Retineri si formulele de calcul mentionate mai sus.
2. Sa se scrie codul Visual Basic pentru crearea foilor de calcul Pontaj, Retineri plecānd de la foaia de calcul Personal (valorile efective pentru orele pontate si retineri urmānd a fi preluate ulterior de la tastatura).
Teste de verificare
Īntr-un mediu de programare Visual obiectele principale sunt:
a) aplicatiile
b) formele si controalele desenate īn forme
c) procedurile
Ī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
Īn programarea orientata obiect si dirijata de evenimente, majoritatea obiectelor raspund la:
a) evenimente
b) controale
c) proprietati
Comportamentul unui obiect:
a) este predefinit
b) nu poate fi modificat de utilizator
c) poate fi modificat de utilizator prin atasare de cod corespunzator
Un obiect este definit de:
a) un set de proprietati
b) comportament
Proprietatile descriu:
a) actiunile obiectelor
b) obiectele prin intermediul datelor
c) metodele prin intermediul codului asociat
Ī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
Referirea proprietatilor sau metodelor īn cadrul codului scris īn Visual Basic se poate face prin:
a) numele proprietatilor sau metodelor
b) utilizarea notatiei cu punct (nume obiect. Nume proprietate / metoda)
Proprietatile unui obiect pot fi setate:
a) numai īn faza de proiectare utilizānd fisa Properties
b) numai prin program utilizānd notatia cu punct
c) atāt īn faza de proiectare cāt si prin program
Metodele pot fi executate:
a) atāt īn faza de proiectare cāt si īn momentul executiei programului
b) numai īn momentul executiei programului
c) numai īn faza de proiectare
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 īn proprietatea Name
O variabila īn Visual basic poate fi declarata:
a) implicit utilizānd sufixul
b) explicit utilizānd instructiunea Dim
c) cu instructiunea Declare
d) cu instructiunea Static
O variabila locala poate fi facuta permanenta īn interiorul unei proceduri daca:
a) este declarata cu instructiunea Dim
b) este declarata cu instructiunea Static
O variabila declarata cu instructiunea Static
a) este vizibila din orice punct al aplicatiei
b) īsi conserva valoarea īnsa este vizibila numai īn cadrul procedurii īn care a fost declarata
Cel mai īnalt domeniu de vizibilitate a unei variabile se defineste cu instructiunea:
a) Static
b) Dim
c) Global
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
Functia InputBox este:
a) o functie definita de utilizator pentru preluare date de la tastatura
b) o functie a limbajului Visual Basic pentru preluare date īntr-o caseta de text predefinita
c) o functie Visual Basic pentru afisarea valorii unei variabile
Ī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
Īn limbajul Visual Basic structurile de ciclare pot fi descrise cu instructiunile:
a) Select.End Select
b) While.Wend
c) For..Next
d) If..ElseIf..EndIf
e) Do.Loop
Īn Visual Basic pot fi definite urmatoarele tipuri de proceduri:
a) macro - definitii
b) proceduri - subrutine
c) macro- functii
d) proceduri - functii
O procedura subrutina poate realiza:
a) returneaza o valoare
b) efectueaza o actiune dar nu returneaza nici o valoarea
c) efectueaza o actiune si poate returna o valoare
Ī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 ( )
Ī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 Function
d) Se poate termina cu instructiunea End Function
e) Continua cu instructiunile din corpul functiei
f) Īn instructiunea Function trebuie precizat numele functiei si argumentele īncadrate īntre paranteze
g) Se termina cu instructiunea End Function
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) Atāt la definire cāt si la apelare parantezele sunt obligatorii
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 obiecte grafice
d) numai procedurile de tip functie pot fi atasate unor obiecte grafice
Se creeaza o caseta text (Text Box) numita txtCaseta1. Pentru a memora 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
Pentru crearea unui grup de butoane de optiune īntr-un cadru se procedeaza astfel:
a) Se deseneaza mai īntāi butoanele de optiune
b) Se deseneaza cadrul astfel īncāt sa contina butoanele de optiune
c) Se deseneaza cadrul si apoi butoanele de optiune īn interiorul cadrului
Ī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
Īntr-un grup de casete de validare pot fi active la un moment dat:
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 (restrictie impusa)
d) toate casetele de validare din grup
Obiectele care pot constitui containere de controale (alte obiecte) pot fi:
a) Formele
b) Butoanele de comanda
c) Cadrele (frame)
d) Casetele cu lista (ListBox)
e) Casetele combinate (ComboBox)
Adaugarea de articole unei casete cu lista (ListBox) se poate realiza:
a) prin tastare text īn interiorul casetei
b) utilizānd metoda AddItem
c) prin setarea proprietati Text a casetei
d) prin setarea proprietatii Value a casetei
Referirea celulei C1, din a patra foaie de calcul a registrului de calcul Excel curent, īn Visual Basic se face astfel:
a) C1
b) Sheets(4).Cells(C1)
c) Sheets(4).Cells(1,3)
|