Professional Documents
Culture Documents
- programare procedurala
culoare,
moment
anumite
asociata
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 :
-
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
Forma
frm
frmForma1
Buton de comanda
cmd, btn
cmdButon, btnOK
Caseta de text
txt
txtCaseta1
Bare de derulare
hsb
orizontala
vsb
verticala
Meniu
mnu
Caseta de validare
chk
Caseta cu lista
lst
Cadru
fra
Imagine
img
opt
Exemplu
mnuMeniuPrinc
optBO1
Creare forma:
InsertUserForm
stergere forma:
File Remove UserForm
(pentru forma selectata = ultima activata)
No (fara export = fara salvare)
Dupa creare forma se pot desena obiecte n forma utiliznd bara de instrumente
Toolbox Controls prin selectare obiect, antrenare pe suprafata formei si depunere obiect
ca n exemplul de mai jos:
n partea stnga a ecranului este afisata lista proprietatilor obiectului selectat (care
pot fi eventual modificate - setate).
proprietatile obiectului
codul asociat
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:
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 cuvnt rezervat al limbajului Visual
Basic (cum ar fi Sub, Function, etc.).
Tip
Sufix
Dimensiune
Domeniu de valori
(octeti)
Byte
0-255
Boolean
Adevarat, Fals
(True, False)
Integer - ntreg
-32768, + 32768
-2.147.483.648,
2.147.483.647
Simpla precizie
-3.40E38 ; 3.40E38
Dubla precizie
-1.80E308 , 1.80E308
Currency - valuta
-9.22E14 , 9.22E14
Object - obiect
String - sir
1/caracter
65500 octeti
Variant - nedefinit
dupa caz
n functie de tip
User-Defined
dupa caz
n functie
elementelor
(definit de utilizator)
de
tipul
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 Visual Basic si anume:
-
proceduri Sub
proceduri Function.
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 utiliznd cuvntul 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
ramnnd 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 cuvntul 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
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.
ntoarce Variant
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 rnduri succesive).
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 stnga sus al casetei de dialog fata de coltul din stnga 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 cte o virgula pentru
fiecare argument omis.
-
2. tipul pictogramei
3. butonul prestabilit
4. modalitatea casetei de dialog.
Valoare
Semnificatie
vbOKOnly
vbOKCancel
vbAbortRetryIgnore
vbYesNoCancel
vbYesNo
vbRetryCancel
16
vbCritical
32
vbQuestion
48
vbExclamation
64
vbInformation
vbDefaultButton1
256
vbDefaultButton2
512
vbDefaultButton3
vbApplicationModal
4096
vbSystemModal
Pentru a obtine valoarea argumentului type se va nsuma cte 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 pna cnd utilizatorul raspunde casetei de dialog.
Semnificatie
Butonul OK selectat
vbOK
vbCancel
vbAbort
vbRetry
vbIgnore
vbYes
Butonul No selectat
vbNo
3.6.1.Structuri de ramificare
1) 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"
EndIf
Structura If..ElseIf..EndIf poate fi condensata ntr-o singura linie de cod utiliznd functia IIF ( ) ca n exemplul de mai jos:
instructiuni
Wend
Se executa secventa de instructiuni instructiuni atta
conditia conditie este ndeplinita (adevarata).
2) Do..Loop are sintaxa:
Do Until conditie
timp
ct
instructiuni
Loop
sau
Do
......
If conditie Then
Exit Do
Else
instructiuni
Loop Until conditie
Structura Do.Loop repeta un bloc de instructiuni atta timp ct o anumita conditie
este adevarata sau pna 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.
3) 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 pna la 100).
For iNr = 0 TO 100 step 2
isuma = isuma + iNr
Next
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 pna 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 cnd se elimina cuvntul 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.
Exemplu de utilizare
MsgBox
MsgBox "mesaj",..
Tipareste
FileCopy
Copiaza un fisier
Name
Redenumeste un fisier
Kill
sterge un fisier
Kill "Fis1.doc"
Beep
Emite un sunet
Beep
Date
Procedura
Beep
MsgBox "S-au sters fisierele *.Tmp, *.Dat"
End Sub
Descriere
Exemplu de utilizare
Valoare returnata
Len( )
iLung=Len("Limbaje de programare")
iLung = 21
Mid( )
sSubsir = "AB"
Chr( )
Returneaza
caracterul
corespunzator codului
sCar = "A"
Asc( )
Returneaza
corespunzator
caracterului
UCase( )
Converteste
mari
LCase( )
Converteste
mici
InStr( )
sCar = Chr(65)
iCod = 65
sMari
"IONESCU"
sMici = "limbaje"
iPozitie = 2
For x = 1 To iLen
sCar = Mid$(sSirtastat, x, 1)
extrage caracterul
Decriptare = sSirIesire
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
Descriere
Exemple de valori
Appearance
1= 3D, 0 = plat
Cancel
True, False
Caption
caractere
Default
True, False
Font
- 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 utiliznd notatia cu punct.
Exemplu de citire:
sTextCaseta1= txtCaseta1.Text
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 rnduri 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 stnga, la dreapta, sau n centrul 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 de valori
Appearance
1= 3D, 0 = plat
Border Style
0 - fara chenar,
1 - chenar simplu
Font
PasswordChar
SelStart
Pozitia initiala
textului
SelLength
numai la rulare
Tag
pentru
Ex. * sau
Else
txtSelectie = lstLista1
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
= ListCount -1
= -1
Pentru a selecta mai multe articole din lista se utilizeaza proprietatea Multiselect astfel:
MultiSelect =
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
Semnificatie
Exemplu de utilizare
ListCount
iOptiune
lstLista1.ListCount - 1
ListIndex
lstLista1.ListIndex = 3
List
Selected
Sorted
Metode
Semnificatie
Exemplu de utilizare
AddItem
lstLista1.AddItem = "Ionescu
Ion"
Clear
lstLista1.Clear
RemoveItem
lstLista1.RemoveItem 5
sStudenti(0) = "Ionescu"
sStudenti(1) = "Florescu"
...........
For iC = 0 To Ubound(sStudenti) - 1
lstLista1.AddItem (sStudenti(iC))
Next
numarul
Ubound
returneaza
- Bare de derulare (orizontale si verticale) permit parcurgerea unor liste mari. Ori
de cte ori se efectueaza click pe o bara de derulare se executa procedura evenimentului
Change. Cnd 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,
putnd 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 prezentnd 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
utiliznd metodele Line, Circle si Pset. Daca grafica ncarcata dintr-un fisier depaseste
suprafata controlului PictureBox, grafica va fi trunchiata exceptnd 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
-
n cazul n care limbajul Visual Basic este utilizat din Excel, fisierul proiect este un fisier cu extensia .XLS.
Componentele proiectului pot fi vizualizate selectnd din meniul View optiunea Project Explorer astfel:
componente Excel
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:
-
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 cmpuri din tabele ale bazei de
date.astfel nct orice modificari efectuate n continutul acestor 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 va fi automat efectuata n cmpul 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 cmpuri:
Marca
Nume si prenume
Functia
CAR
Rate
n foile de calcul Pontaj, Retineri, Salarii, cmpurile Marca, Nume si prenume sunt preluate prin referire din foaia de calcul
Personal.
De asemenea , cmpurile Functia, Ore pontate sunt preluate prin referire n foaia de calcul Salarii din foile de calcul
Personal respectiv Pontaj, iar cmpul Retineri n foaia Salarii se obtine prin sumarea cmpurilor 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 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 realiza operatiile mentionate mai sus.
Creare forma:
Executie forma:
Formularul Form1
Rezultatul executiei formei dupa setarea proprietatilor BackColor si Font ale casetei cu lista pe alte valori
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. 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 n Visual 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 punct
c) att n faza de proiectare ct si prin program
10. Metodele pot fi executate:
a) att n faza de proiectare ct si n momentul executiei programului
b) numai n momentul executiei programului
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 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
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 cu instructiunile:
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
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 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
c) Sheets(4).Cells(1,3)