Anda di halaman 1dari 325

IOAN BOLDEA

MARIA BOLDEA CLAUDIU BRNDA








VISUAL BASIC



















Coperta: Claudiu BRNDA





















Descrierea CIP a Bibliotecii Naionale
BOLDEA, IOAN; BOLDEA, MARIA; BRNDA CLAUDIU
Visual Basic/Ioan Boldea, Maria Boldea, Claudiu Brnda
Timioara, 2000, Ed. Brumar



324 p.; il.; 22,5 cm
ISBN 973-9295-94-0
Ioan BOLDEA Maria BOLDEA Claudiu BRNDA







VISUAL BASIC


























Conf. Dr. Ioan BOLDEA coordonator
Prof. Dr. Maria BOLDEA
Prep. Univ. Claudiu BRNDA



























Tehnoredactare computerizat: Claudiu BRNDA

BRUMAR 2000
ISBN 973-9295-94-0
Bun de tipar: 01.06.2000
Aprut: iunie, 2000
Tiparul executat la Tipografia BRUMAR, Timioara
Str. Pestalozzi, Nr. 22
Tel. / Fax: +40(56)203934; +40(56)293441
E-mail: arbeit@arbeit.dnttm.ro
5

CUPRINS


CAPITOLUL I. INTRODUCERE

1.1. Evoluia limbajului BASIC ....
1.2. Limbajul Visual Basic ....
1.3. Specificitatea limbajului Visual Basic
sub Windows ......

CAPITOLUL II. MEDIUL DE DEZVOLTARE
VISUAL BASIC

2.1. Conceptul de mediu integrat de dezvoltare
2.2. Lansarea n execuie a mediului de programare
Visual Basic
2.3. Elementele mediului de programare Visual Basic .
2.3.1. Fereastra principal ..
2.3.1.1. Linia de meniu .
2.3.1.2. Bara cu instrumente .
2.3.2. Fereastra cu controale (Toolbox) .....
2.3.2.1. Elementele ferestrei cu controale
(Toolbox ) ....
2.3.2.2. ncrcarea i modificarea elementelor
ferestrei ........
2.3.3. Forma ( Form ) .
2.3.4. Fereastra Project .......
2.3.5. Ferastra Properties ....
2.3.6. Fereastra Color Palette .....
2.3.7. Fereastra Form Layout .....





9
11

15
17
18
22
22
22
51
53
53
74
76
78
79
81
82
6

CAPITOLUL III. PROPRIETILE, METODELE I
EVENIMENTELE OBIECTELOR

3.1. Proprietile obiectelor ...
3.2. Metodele obiectelor
3.3. Evenimentele ..

CAPITOLUL IV. LIMBAJUL DE PROGRAMARE

4.1. Linia de program ........
4.2. Cuvintele ....
4.3. Constantele .
4.4. Variabile .
4.4.1. Declararea variabilelor ....
4.4.2. Domeniul unei variabile ...
4.4.3. Durata de via a variabilelor ..
4.4.4. Tipuri de variabile
4.5. Tipuri de date definite de utilizatori ...
4.6. Operatorii ....
4.6.1. Operatorii aritmetici .
4.6.2. Operatori de concatenare ..
4.6.3. Operatori relaionali .
4.6.4. Operatori logici .
4.7. Funciile integrate n Visual Basic .
4.7.1. Funcii matematice ...
4.7.2. Funcii pentru gestionarea tipurilor de date ..
4.7.3. Funcii pentru iruri de caractere ..
4.7.4. Funcii pentru gestionarea datei i orei .
4.7.5. Funcii matematice derivate .
4.7.6. Funcii de conversie a datelor ...
4.8. Instruciuni ..
4.8.1. Instruciunea REM
4.8.2. Instruciunea LET .
4.8.3. Instruciunea PRINT .
83
119
134
155
156
156
158
158
160
162
163
168
169
169
169
170
170
171
172
172
173
174
175
177
177
177
178
179
7
4.8.4. Instruciuni pentru controlul programelor ....
4.8.4.1. Instruciunile condiionale .....
4.8.4.1.1. Instruciunea IF...THEN .
4.8.4.1.2. Instruciunea SELECT...CASE ..
4.8.4.2. Instruciuni repetitive .
4.8.4.2.1. Instruciunea DO...LOOP ...
4.8.4.2.2. Instruciunea FOR...NEXT .
4.8.4.3. Instruciuni pentru tratarea fiierelor .
4.8.4.3. 1. Instruciunea OPEN ...
4.8.4.3. 2. Instruciunea CLOSE .
4.8.4.3. 3. Instruciunea INPUT# ...
4.8.4.3. 4. Instruciunea INPUT .
4.8.4.3. 5. Instruciunea LINE INPUT# .....
4.8.4.3. 6. Funcia EOF ...
4.8.4.3. 7. Funciile LOF i LOC ....
4.8.4.3. 8. Instruciunea PRINT# ....
4.8.4.3. 9. Instruciunea WRITE# ...
4.8.4.3.10. Instruciunea PUT ..
4.8.4.3.11. Instruciunea GET .
4.8.4.3.12. Instruciunea SEEK ...

CAPITOLUL V. GESTIONAREA BAZELOR
DE DATE

5.1. Gestionarea bazelor de date n Visual Basic ..
5.2. Aplicaia Visual Data Manager ..
5.3. Obiectul DBEngine
5.4. Obiectul Database ...
5.5. Utilizarea comenzilor SQL n Visual Basic ...
5.6. Obiectul Recordset .
5.7. Controlul Data




180
180
181
185
188
188
189
192
192
194
194
195
195
196
196
197
198
198
200
201
203
204
210
215
219
230
237
8
CAPITOLUL VI. DEZVOLTAREA APLICAIILOR
N VISUAL BASIC

6.1. Gestionarea unei aplicaii Visual Basic ..
6.2. Etapele elaborrii unei aplicaii Visual Basic .
6.3. Aplicaii Visual Basic .
Aplicaia 1 .
Aplicaia 2 .
Aplicaia 3 .
Aplicaia 4 .
Aplicaia 5 .
Aplicaia 6 .
Aplicaia 7 .
Aplicaia 8 .
Aplicaia 9 .
Aplicaia 10 ....
Aplicaia 11 ...
Aplicaia 12 ...
Aplicaia 13 ...
Aplicaia 14 ...
Aplicaia 15 ...

BIBLIOGRAFIE ...........................................................................

241
244
248
248
251
258
262
265
270
276
282
284
287
296
301
303
308
310

323


Introducere
9










1.1. Evoluia limbajului BASIC

Limbajul BASIC (acronim pentru Beginners All-purpouse
Symbolic Instruction Code) a fost creat la nceputul anilor 60, de un
colectiv de cercettori de la Universitatea Darmouth, SUA, condus de
profesorii Thomas Kurtz i John Kemeny. i-a ctigat rapid popularitatea
dorit noutilor oferite utilizatorilor, strnind ntr-o msur mai mare dect
alte limbaje prerile specialitilor, dintre care unii l-au admirat, n timp ce
alii l-au dezavuat. Ca i majoritatea limbajelor de nivel nalt (High-Level
Languages - HLL) cu o larg rspndire: Pascal, Fortran, Cobol, Prolog
etc., limbajul Basic a prezentat att avantaje ct i inconveniente. Succesele
limbajului Basic i inclusiv laudele aduse vizau simplificarea comunicrii
cu utilizatorul i uurina n folosirea instruciunilor de ctre persoane care
se iniiau n programare. Printre caracteristicile iniiale ale limbajului se
numr: era de uz general, permitea introducerea ulterioar a unor
caracteristici, era un limbaj interactiv, afia mesaje de eroare, nu necesita
cunoaterea hardware-ului, sistemul de operare devenea transparent pentru
utilizatori etc. Critica viza, mai ales, faptul c limbajul Basic nu permitea o
programare structurat (utilizarea instruciunii GOTO i etichetarea liniilor
surs), lipsa parametrilor formali n definirea subprogramelor, viteza de
calcul sczut n condiiile utilizrii interpretorului etc. n cursul evoluiei
sale, limbajul Basic a cunoscut o continu perfecionare, prin noi versiuni,
devenind din ce n ce mai puternic astfel nct s poat fi utilizat n
elaborarea unor aplicaii complexe.
Visual Basic
10
William (Bill) Gates i Paul Allen, n 1975, implementeaz n
premier limbajul Basic pe micro-calculatoare.
n anul 1981 firma IBM comercializeaz primul su PC cu sistemul
de operare Microsoft-DOS, crendu-se astfel enorme posibiliti de difuzare
pe plan mondial pentru limbajul Basic n versiunile GW-Basic sau PC-
Basic. Faptul c posesorul unui PC beneficia mpreun cu sistemul de
operare MS-DOS i de o versiune de Basic, ofer utilizatorului acestui
limbaj posibilitatea realizrii unor programe mici si mijlocii. Lipsa unor
funcii si insuficienele editorului GW/PC-Basic au creat dificulti n
dezvoltarea unor aplicaii complexe, lucru care a condus la apariia unor
versiuni mult mai puternice. Astfel, Microsoft elaboreaz QuickBasic care
dispune de un editor performant i de alte funciuni ce simplific
programarea aplicaiilor si creeaz premisele pentru o programare de
calitate. Pe de alt parte apariia unui compilator (care transform programul
Basic n programe DOS) face ca programele s fie executate n mod direct i
mult mai rapid. Versiunile MS-DOS 5 i MS-DOS 6 favorizeaz apariia
unei versiuni mai uoare a lui QuickBasic i anume: QBasic, care, n ciuda
lipsei unor funciuni, permite o utilizare confortabil. Dotat cu un excelent
editor nzestrat cu o bun capacitate de tratare si dezvoltare optim pentru
programarea structurat, QBasic este un produs universal. Din pcate, i
lipsete capacitatea de a crea programe autonome (fiiere.EXE) capabile s
fie executate fr QBasic. Facilitile lui QuickBasic sub MS-DOS au
permis deprtarea de Basic a imaginii de limbaj pentru nceptori, imagine
rspndit n anumite instituii de nvmnt.
Limbajul Basic a cunoscut i alte implementri i anume: versiunile
Turbo Basic si Basica care au adugat noi faciliti n dezvoltarea
aplicaiilor informatice.
De-a lungul anilor s-a simit o real nevoie de convivialitate, care va
da natere interfeei Windows, ajungndu-se astfel la o standardizare a
dialogului om-main. O realizare deosebit o reprezint implementarea,
realizat de ctre firma Microsoft, a produsului Visual Basic care reunete
numeroasele faciliti ale versiunilor anterioare de Basic cu facilitile
interfeei Windows, reprezentnd cea mai uoar i rapid cale de
dezvoltare a aplicaiilor sub mediul Windows (RAD Rapid Applicantion
Development).

Introducere
11
1.2. Limbajul Visual Basic

Visual Basic-ul a fost realizat de firma Microsoft n mai 1991. El
constituie o materializare a proiectului acestei firme pentru primul su
limbaj de dezvoltare de nivel nalt sub Windows. Dup versiunea 1 i 2, a
aprut versiunea 3 n Ediie Standard i Profesional, apoi versiunea 4 n
octombrie 1995, n toamna lui 1996 versiunea 5, iar n prezent se lucreaz
cu versiunea 6.
Interesul major pentru limbajul Visual Basic este determinat de
faptul c el permite dezvoltarea aplicaiilor sub Windows ntr-un limbaj
simplu i de nivel nalt.
Marele avantaj n raport cu limbajul C sau C+ (utilizate pentru
dezvoltarea aplicaiilor sub Windows) const n faptul c nu mai trebuie
apelate funcii complexe Windows, deoarece se apeleaz API (Aplication
Program Interface).
Aplicaiile realizate n Visual Basic pot comunica cu alte aplicaii
dezvoltate sub Windows prin intermediul unor interfee: DDE (Dynamic
Data Exchange), OLE (Object Linking and Empedding), ActiveX,
Microsoft Jet DataBase Engine, ODBC (Open DataBase Connectivity) i
Crystal Reports.
Pe de alt parte, se impune a rectifica o idee preconceput, aceea de
a considera c Visual Basic-ul este destinat mai ales crerii de aplicaii
grafice i de jocuri. Firma Microsoft a comis o eroare strategic incluznd
cuvntul Basic n numele principalului instrument de dezvoltare a
aplicaiilor sub Windows, oferindu-i o imagine fals de limbaj elementar
pentru amatori.
ncepnd cu versiunea 3 a limbajului Visual Basic, care a integrat
maina pentru baze de date Jet provenit de la Access, firmele care creeaz
aplicaii de gestiune au nceput s utilizeze efectiv Visual Basic n cadrul
acestor aplicaii.
Astzi, cu versiunea 6 de Visual Basic se dispune de un excelent
instrument de dezvoltare a aplicaiilor mult mai facil dect al altor medii
informatice concurente.
Visual Basic se dezvolt i se impune din ce n ce mai mult pe pia
nu n mod singular, ci alturi i n concuren cu alte noi limbaje de nivel
Visual Basic
12
nalt sub Windows. Principalele medii de programare care se impun i care
sunt n concuren cu Visual Basic sunt:

ACCESS: este un sistem dezvoltat de firma Microsoft complet
orientat pe gestiunea bazelor de date;
CA-VISUAL OBJECTS: este succesorul lui Clipper derivat din
dBASE, fiind un limbaj orientat pe obiecte. El conine un
compilator i poate fi utilizat n mod procedural clasic, pe
evenimente sau n mod obiect;
DELPHI: este creat de firma Borland (Inprise) i prezint
urmtoarele caracteristici:
programare vizual;
programare orientata obiect i pe evenimente, gestiunea
bazelor de date;
dispune de un compilator foarte puternic;
genereaz cod executabil ce poate rula pe orice calculator pe
care este instalat Windows-ul;
este un concurent veritabil al lui Visual Basic;
LIMBAJUL C: este un limbaj apropiat de asamblare. Permite
construirea de subprograme numite funcii care pot fi reutilizate
n alte programe sau n alte funcii superioare. Programele n
limbajul C sunt complexe, de aceea sunt puine ntreprinderile
care se aventureaz n programarea aplicaiilor de gestiune n
acest limbaj;
LIMBAJUL C++: este un subansamblu al limbajului C ce ofer
posibilitatea programrii orientat obiect. Microsoft furnizeaz o
versiune particular i atractiv a limbajului C++ i anume
Visual C++ care funcioneaz pe 16 bii sau 32 bii. Acesta
permite o programare parial vizual, manipuleaz icon-uri i
mouse-ul pentru a redacta liniile de program. Firma Borland este
prezent n acest domeniu cu limbajul Borland C++, respectiv
C++ Builder;
Introducere
13
PARADOX: este un concurent direct a lui Access. Paradox
pentru Windows a fost editat de Borland i se programeaz n
limbajul Object Pal;
PASCAL: este un limbaj uor de abordat i bine adaptat pentru
efectuarea calculelor tiinifice. Societatea Borland este primul
editor al compilatorului Pascal. Versiunea Borland Object
Pascal pentru Windows este foarte puternic facilitnd ntr-un
grad foarte mare programarea orientat obiect;
POWERBUILDER: editat de firma Powersoft este un concurent
foarte serios al Visual Basic-ului. Se apropie de programarea
orientat obiect. Fuziunea celor dou firme PowerSoft i Sybase,
autoare ale mediului de gestiune a bazelor de date SQL Server,
iar ulterior i cu alte ateliere productoare de medii AMC
Designer, poate conduce la crearea unui trio foarte promitor
pentru arhitectura client-server: AMC Designer pentru
concepere, Powerbuilder pentru dezvoltarea prii client i SQL
Server pentru partea de servicii a bazei de date;
SQL FORMS este un produs al firmei Oracle Corporation
destinat s gestioneze sub Windows baze de date. Astzi este
integrat n mediul de dezvoltare Developer 2000, care mai
conine alte dou produse: Forms i Graphics i care
completeaz oferta client-server a societii Oracle Corporation.
Sistemul de gestiune a bazelor de date Oracle + va fi instalat pe
partea de Server, iar Developer 2000 va permite crearea de
programe pe partea de Client;
SQL WINDOWS: foarte orientat pe arhitectura client-server,
este un limbaj de programare sub Windows ce se rspndete
foarte rapid;
VISUAL dBASE: urmeaz vechilor dBase 2, dBase 3, dBase 4.
Sistemul de gestiune a bazelor de date dBase 5 este prima
versiune Windows a familiei dBase. A fost tardiv pe piaa
sistemelor de dezvoltare sub Windows (finele anului 1994) i nu
a reuit s recupereze pe aceast pia avansul principalului su
concurent Access. Firma Borland, care la angajat pe creatorul
Astiton Tate al familiei dBase, face s urmeze dBase 5 prin
Visual Basic
14
Visual dBase versiunea 5.5 ca o reacie la apariia lui FoxPro.
Acest sistem de dezvoltare prezint avantajul c recunoate
vechile programe scrise n dBase 4. n prezent se utilizeaz
versiunea 7 a acestui sistem;
VISUAL FOXPRO: a fost conceput la origine pentru a concura
primele versiuni de dBase. Produsul FoxPro a fost preluat de
Microsoft care l-a fcut s evolueze spre actualul produs Visual
FoxPro. El este un limbaj destul de clasic dar foarte performant
n execuie. Visual Basic 4 i-a mprumutat maina de gestionat
baze de date numita Jet, main gsit i n Access;
INSTRUMENTE ALE BIROTICII: cum ar fi Excel 2000 sau
Word 2000, orientate pe lucrul cu tablouri, respectiv pe tratarea
textelor, cu ajutorul crora se pot realiza aplicaii destul de
complexe sub Windows. Ele utilizeaz butoane, baze de date i
limbaje apropiate de Visual Basic: Word Basic cu Word i
Visual Basic pentru Aplicaii cu Excel. Toate programele scrise
cu Visual Basic pentru Excel pot fi copiate i executate n Visual
Basic. Compatibilitatea este total.
Exist preri potrivit crora Visual Basic este un limbaj orientat pe
obiecte. ns el nu dispune de toate funciunile caracteristice unui limbaj
orientat pe obiecte, dar se apropie mult de un astfel de limbaj, deoarece
prezint o serie de avantaje care permit o trecere uoar la ceea ce toi
informaticienii numesc: programarea orientata pe obiecte (POO).
Visual Basic poate fi calificat ca un limbaj de programare pe
evenimente. De fapt, acestea sunt aciunile utilizatorului asupra unui obiect
proiectat pe ecran care declaneaz execuia procedurilor.
O caracteristic esenial a lui Visual Basic o constituie faptul c
este un limbaj de programare vizual, ceea ce nseamn c o bun parte din
codul program este generat fr introducerea instruciunilor de la tastatur ci
printr-un simplu clic pe icon-uri cu ajutorul mouse-ului.





Introducere
15
1.3. Specificitatea limbajului Visual Basic
sub Windows

Cu toate c denumirea de Visual Basic a produsului face aluzie la
clasicul BASIC (Beginners All-purpouse Symbolic Instruction Code), el se
deosebete foarte mult de acesta, prin introducerea de concepte noi ca
urmare a evoluiei metodelor de programare care urmresc crearea rapid a
unor aplicaii puternice (programarea vizual), elementele comune cu
BASIC-ul fiind doar instruciunile folosite n generarea codului program a
aplicaiei. Versiunea de BASIC pe baza creia este conceput limbajul de
programare Visual Basic, este versiunea QuickBasic.
Conceptul de programare vizual este un concept modern i se refer
la posibilitatea, pe care o are programatorul, de a crea o aplicaie folosind un
ablon pe care se ncarc toate elementele de control (obiecte) a aplicaiei,
fr a scrie nici o linie de program. Acest tip de programare dezvolt
metoda de programare orientat pe obiecte. Elementele definitorii ale
programrii vizuale sunt:
obiectele: acestea pot fi obiecte speciale (clipboard-ul, printer-ul) i
controale sau elemente de control (butoane de comand, butoane radio,
csue de opiune, bare de defilare, zone de listare, casete de introducere
date, casete combo, etc.). Tot ca obiect este tratat i ablonul sau fereastra
aplicaiei, cunoscut n Visual Basic sub denumirea de form (form), care
reprezint elementul de baz ntr-o aplicaie programat n mod vizual;
proprietatile obiectelor: fiecrui obiect ii aparine un grup de
proprieti care determina comportamentul obiectului respectiv in cadrul
aplicaiei;
metodele: reprezint instruciuni (proceduri) sau funcii speciale
asociate obiectelor;
evenimentele: fiecrui obiect i aparin un grup de evenimente,
care reprezint aciunile ce pot aprea pe parcursul execuiei aplicaiei, n
legtura cu acel obiect (apsarea butoanelor mouse-ului, apsarea unei taste,
micarea cursorului mouse-ului pe suprafaa obiectului .a.).
n cadrul familiei limbajelor axate pe programarea vizual alturi de
Visual Basic mai pot fi amintite mediile de programare Visual FoxPro,
Visual dBase, Delphi, Visual C++ , C++ Builder, Visual JAVA .a. De
Visual Basic
16
reinut este faptul c programarea vizual, cu toate c este ntlnit cel mai
frecvent n cadrul mediilor de dezvoltare a aplicaiilor Windows, poate fi
ntlnit i n cadrul unor medii de dezvoltare a aplicaiilor i sub alte
sisteme de operare cum ar fi, de exemplu, Visual Basic-ul pentru MS-DOS.








Mediul de dezvoltare Visual Basic
17










2.1. Conceptul de mediu integrat de
dezvoltare

Limbajele de programare actuale au fost dotate cu faciliti de
asistare a programatorului n conceperea i execuia programelor pe un
sistem de calcul.
Iniial a aprut noiunea de mediu de programare, ce reprezint un
sistem de programe pentru asistarea programatorului n proiectarea i
codificarea algoritmilor, apoi n editarea i depanarea programelor.
Creterea gradului de asisten oferit de ctre acest sistem a
contribuit la introducerea noiunii de mediu integrat de dezvoltare (IDE -
Integrated Development Environment), caz n care programatorul este
asistat n toate fazele de realizare a unei aplicaii. Visual Basic este un
mediu de dezvoltare a aplicaiilor ce ruleaz sub Windows.
Datorit uurinei dialogului pe care utilizatorul l are prin
intermediul unei interfee grafice (GUI - Graphic User Interface) foarte
prietenoas i totodat a performanelor mediului Windows l face pe acesta
din ce n ce mai rspndit att ca program obinuit ce ruleaz sub sistemul
de operare MS-DOS, versiunile Windows 3.x, ct i ca sistem de operare
prin versiunea Windows 95 sau Windows NT, Windows 98, Windows
2000. Exist i o versiune a acestui limbaj i anume Visual Basic pentru
MS-DOS, cu ajutorul creia pot fi realizate aplicaii deosebit de puternice
care ruleaz direct de sub sistemul de operare MS-DOS.
Mediul de dezvoltare Visual Basic cuprinde un sistem de aplicaii care
pot fi lansate n execuie independent una de cealalt. Aceste aplicaii sunt:
Visual Basic
18

mediul de programare Visual Basic, (din cadrul cruia
pot fi executate i celelalte aplicaii ale mediului de
dezvoltare);
API Text Viewer;
Application Performance Explorer;
Application Setup Wizard;
Automation Manager;
Crystal Reports;
RemAuto Connection Manager.

Este necesar s se fac distincie ntre mediul de programare Visual
Basic i limbajul de programare Visual Basic deoarece primul se refer la
interfaa grafic a mediului de programare i anume la fereastra cu obiecte
(Toolbox), bara de meniu, fereastra de setare a proprietilor, fereastra
proiect, fereastra de editare a codului program a aplicaiei etc., n timp ce
limbajul de programare cuprinde un ansamblu de simboluri i regulile de
sintax utilizate n descrierea procedurilor de prelucrare automat a datelor.


2.2. Lansarea n execuie a mediului de
programare Visual Basic

Pentru lansarea n execuie a mediului de programare Visual Basic se
procedeaz astfel:
- din cadrul mediului de lucru Windows (95/98/NT/2000):
A.
se apas butonul Start;
se selecteaz meniul (grupul) Programs;
se selecteaz meniul (grupul) Microsoft Visual
Studio;
se execut un clic mouse pe icon-ul Microsoft
Visual Basic.

Mediul de dezvoltare Visual Basic
19
B.
se lanseaz n execuie Microsoft Windows
Explorer;
se deschide folder-ul (directorul) \Programs
Files\Developer Studio\Microsoft Visual Basic;
se execut un dublu click mouse pe icon-ul
vb (5 sau 6).

n urma lansrii n execuie a mediului Visual Basic, este afiat pe
ecran o fereastr de dialog cu titlul New Project (figura 2.1) din cadrul
creia programatorul poate alege de la nceput ablonul unei anumite
aplicaii. Fereastra conine trei tabele, astfel:
New: permite selectarea unui ablon de proiect nou;
Existing: permite deschiderea unui proiect existent deja pe disc;
Recent: permite afiarea i selectarea dintr-o list a unui proiect
care a fost prelucrat recent. Lista conine un anumit numr de
proiecte (fiiere proiect) care au fost prelucrate n sesiunile de
lucru anterioare.


Fig. 2.1. Fereastra de dialog New Project.

Visual Basic
20

Dup selectarea unei alternative din fereastra New Project va fi
afiat un ansamblu de ferestre (figura 2.2), care constituie interfaa dintre
acesta i programator.




















Fig. 2.2. Mediul de programare Visual Basic

Interfaa Visual Basic este alctuit din urmtoarele ferestre:
Fereastra principal compus din dou elemente:
Linia de meniu (Menu Bar): este alcatuit din meniuri
folosite la crearea i executarea unei aplicaii Visual
Basic;
Bara cu instrumente (Toolbar): conine un grup de
butoane ce corespund comenzilor obinuite ale unui
mediu de programare pentru ncarcare fiiere, salvare
fiiere, lansare program, depanare, etc. i dou casete care
indic poziia i dimensiunea obiectului curent.
Toolbar
Linia de meniu
Toolbar
Fereastra Project
Fereastra Properties
Toolbox
Forma
Fereastra de afiaj a
formei n execuie
Mediul de dezvoltare Visual Basic
21
Fereastra (caseta) cu controale (Toolbox): conine un set de
butoane ce reprezint controalele (elemente de control) care pot fi
ncrcate pe foaia de lucru (fereastra aplicaiei).
Foaia de lucru (fereastra aplicaiei - Form): reprezint
ablonul aplicaiei, fereastra pe care vor fi plasate controalele i
care va constituii interfaa dintre aplicaie i utilizator purtnd
denumirea de form.
Fereastra Project (proiect): conine numele tuturor fiierelor
(modulelor) ce reprezint formele (ferestrele .FRM), modulele de
cod (.BAS), fiiere ce conin definiia unor clase (.CLS) i fiiere
cu resurse (.RES), care constituie proiectul aplicaiei curente
(fiier cu extensia .MAK sau .VBP).
Fereastra Properties: conine proprietile elementului de
control curent sau a formei, proprieti ce reprezint
caracteristicile unui obiect (controale sau forme) cum ar fi
dimensiunea, culoarea, numele etc. i ale cror valori determin
comportamentul obiectului respectiv n cadrul aplicaiei.
Fereastra Color Palette: permite modificarea interactiv a
culorilor elementelor unui obiect crendu-se astfel noi scheme de
culori asociate aplicaiei.
Fereastra Form Layout: permite modificarea poziiei ferestrei
aplicaiei n cadrul desktop-ului.












2.3. Elementele mediului de programare
Visual Basic
22
Visual Basic

2.3.1. Fereastra principal

Fereastra principal (fig. 2.3) conine: linia de meniu i bara de
instrumente.


Fig. 2.3. Fereastra principal

2.3.1.1. Linia de meniu


Fig. 2.4. Linia (bara) de meniu


Conine urmtoarele meniuri principale: File, Edit, View, Project,
Format, Debug, Run, Tools, Add-Ins, Windows i Help.












Mediul de dezvoltare Visual Basic
23
Meniul FILE

Fig. 2.5. Meniul File.

Meniul File este alctuit dintr-un set de opiuni ce pot fi folosite la
gestionarea i prelucrarea fiierelor proiect (.MAK, .VBP, .VBG) precum i
a fiierelor componente ale proiectului unei aplicaii Visual Basic.
Opiunile meniului File sunt:
New Project: permite crearea unui nou proiect. Selectarea acestei
opiuni are ca efect imediat apariia unei ferestre de dialog n cadrul creia
programatorul este ntrebat dac dorete s salveze proiectul anterior,
nainte de a se iniializa unul nou. Nu poate fi deschis la un moment dat
dect un singur proiect;

Open Project (<Ctrl>+<O>): permite ncrcarea (deschiderea)
unui proiect deja existent. Dup selectarea acestei opiuni vechiul proiect va
fi nchis (nu nainte de a fi salvat) i se va afia o fereastr de dialog n
cadrul creia se selecteaz numele fiierului proiect (.MAK, .VBP) ce se
dorete a fi ncrcat spre prelucrare;

Save Form1 (<Ctrl>+<S>): permite salvarea pe disc a fiierelor ce
compun proiectul. Aceste fiiere pot fi fiiere ce conin o form cu toate
controalele din cadrul ei avnd extensia .FRM, fiiere (module) ce conin
declaraii globale, de variabile i proceduri, avnd extensia .BAS i fiiere
Visual Basic
24
(module) ce conin definiia unei clase i care au extensia .CLS. Dac
fiierul respectiv a mai fost salvat i el exist pe disc atunci apelarea acestei
opiuni are ca efect simpla salvare a fiierului fr nici o interogare din
partea mediului de programare, iar dac fiierul respectiv nu a mai fost
salvat se va afia o fereastr de dialog n cadrul creia se va introduce
numele i extensia sub care se dorete a fi salvat fiierul;

Save Form1 As (<Ctrl>+<A>): are aceleai efecte ca i opiunea
Save Form1 cu deosebirea c de fiecare dat cnd este apelat aceast
opiune mediul Visual Basic afieaz o fereastr de dialog n care se va
introduce numele fiierului respectiv dac el nu a mai fost salvat niciodat
sau un alt nume dac fiierul respectiv a mai fost salvat i el exist pe disc,
caz n care fiierul vechi rmne neschimbat, modificrile curente fiind
salvate n noul fiier al crui nume va apare i n cadrul ferestrei Project, a
proiectului curent;

Save Project: permite salvarea pe disc a proiectului curent i a
fiierelor ce compun proiectul. Dac proiectul curent a mai fost salvat i el
exist pe disc efectul alegerii acestei opiuni este doar salvarea proiectului
fr nici o interogare din partea mediului de programare, iar dac proiectul
nu a mai fost salvat se va afia o fereastr de dialog n cadrul creia se va
introduce, n primul rnd, numele fiierelor ce compun proiectul i apoi
numele sub care se dorete salvarea proiectului pe disc;

Save Project As : are aceleai efecte ca i opiunea Save Project
dar acesta opiune permite salvarea proiectului curent i sub o alta denumire.
Salvarea proiectului sub o alt denumire nu are ca efect i salvarea sub o
alt denumire a fiierelor ce-l compun. De aceea, poate aprea situaia n
care dou proiecte s conin aceleai fiiere. Pentru nlturarea acestei
situaii dup salvarea unui proiect cu un alt nume se va salva sub o alt
denumire i fiierele care l compun folosind opiunea Save Form1 As ;

Add Project : permite adugarea unui proiect nou, sau a unuia deja
existent, la proiectul curent rezultnd astfel un grup de proiecte. Salvarea
unui grup de proiecte pe disc se va face ntr-un fiier cu extensia .VBG;

Mediul de dezvoltare Visual Basic
25
Remove Project: permite nchiderea proiectului curent (aflat n lucru)
cu posibilitatea de a fi salvat. Prin intermediul acestei opiuni pot fi
eliminate (terse) unele proiecte din cadrul unui grup de proiecte;

Print Setup i Print : permit setarea parametrilor imprimantei i
tiprirea la imprimant a diverselor elemente ale unui proiect (coninutul
fiierului, forma, imaginile din cadrul unei forme, coninutul fiierului
(modulului) de declaraii globale) sau a ntregului proiect;

Make Project1.exe : are ca efect crearea unui fiier executabil ce
conine ntregul proiect al aplicaiei i care va putea fi lansat n execuie
independent de mediul Visual Basic. Numele fiierului executabil se va
introduce n cadrul ferestrei de dialog ce se afieaz n urma selectrii
acestei opiuni. O aplicaie independent, att fa de mediul Visual Basic
ct i fa de fiierele din directorul n care este instalat Windows-ul, poate
fi obinut cu ajutorul aplicaiei Application Setup Wizard ce se gsete n
cadrul grupului n care a fost instalat Visual Basic-ul. n cadrul acestei
aplicaii se introduce numele proiectului ce se dorete a fi transformat ntr-
un fiier executabil, iar n urma prelucrrii va rezulta un kit de instalare
(distribuire) cu ajutorul cruia aplicaia creat cu Visual Basic va putea fi
instalat pe orice calculator;

Make Project Group: permite compilarea i generarea unui cod
executabil pentru fiecare proiect dintr-un grup de proiecte. Apelarea acestei
instruciuni are ca efect imediat afiarea unei ferestre (figura 2.6) care
conine numele proiectelor, iar pentru compilare i generare a codului
executabil se valideaz butonul Build;





Visual Basic
26

Fig. 2.6. Fereastra pentru compilarea i generarea programului executabil
pentru un grup de proiecte.

Exit: permite prsirea mediului de programare Visual Basic. Poate fi
apelat i prin acionarea combinaiei de taste <ALT>+<Q>.


Meniul EDIT

Fig. 2.7. Meniul Edit.

Mediul de dezvoltare Visual Basic
27
Meniul Edit (figura2.7.) permite, prin opiunile sale, efectuarea unor
operaiuni att asupra textului din cadrul ferestrei de editare a programului
surs ct i asupra controalelor din cadrul unei forme. Cele mai folosite
opiuni sunt:

Undo (<Ctrl>+<Z>): anuleaz ultima operaiune efectuat asupra
controalelor sau textului;
Cut (<Ctrl>+<X>): terge elementul de control din cadrul unei
forme sau textul selectat i le copiaz n Clipboard (zona tampon);
Copy (<Ctrl>+<C>): se comport la fel ca i Cut, dar obiectele
selectate nu sunt terse;

Paste (<Ctrl>+<V>): readuce coninutul zonei tampon (Clipboard)
n locul marcat, fie cu ajutorul mouse-ului, fie cu ajutorul cursorului de
editare;

Find (<Ctrl>+<F>) : permite cutarea unui anumit ir de
caractere n cadrul modulelor proiectului;

Replace (<Ctrl>+<H>): permite nlocuirea unui anumit ir de
caractere, care va fi cutat n cadrul modulelor proiectului, cu un alt ir
introdus de programator;

Insert File: ofer posibilitatea inserrii, n poziia curent a
cursorului, a mai multor linii de text (explicativ sau cod program) existente
n fiiere externe, fiiere ce au extensia .TXT, .BAS, .CLS;

List Properties/Methods (<Ctrl>+<J>): permite afiarea n
fereastra de scriere programului surs, a unei liste care conine proprietile
i metodele unui anumit obiect sau a tuturor obiectelor disponibile. O
facilitate major a mediului de programare Visual Basic este i aceea c la
editarea (scrierea) programului surs se afieaz n mod automat o list cu
proprietile i metodele unui obiect dac se introduce dup denumirea
acestuia caracterul . (punct). Din lista derulant afiat se poate alege o
proprietate sau o metod (cu ajutorul tastelor direcionale) dup care se
Visual Basic
28
apas tasta <ENTER>, aceasta fiind afiat n continuarea caracterului .
sub forma: obiect.proprietate|metod;

Exemplu:
Dac se deschide fereastra de editare a codului program i n cadrul
ei se tasteaz denumirea obiectului Form dup care se tasteaz caracterul
., rezultatul va fi afiarea automat a listei cu proprietile i metodele
acestui obiect (figura 2.8), care pot fi selectate i utilizate.


Fig. 2.8. Afiarea automat a listei cu proprietile i metodele unui obiect

List Constants (<Ctrl>+<Shift>+<J>): permite afiarea n timpul
scrierii programului surs, a unei liste derulante care conine valorile
constante ale unei proprieti sau funcii. Pentru afiarea listei derulante cu
aceste valori constante se tasteaz numele proprietii sau funciei i apoi
caracterul = (egal);

Exemplu:
n fereastra de editare a codului program se introduce obiectul
Form1 cu proprietatea Visible dup care se introduce caracterul =.
Rezultatul (figura 2.9) este afiarea automat lng caracterul = a listei cu
constantele corespunztoare proprietii Visible (True sau False). Una dintre
valorile constante pot fi alese (selectate) din list cu ajutorul tastelor
direcionale i validat prin <ENTER>.


Mediul de dezvoltare Visual Basic
29

Fig. 2.9. Lista cu constantele proprietii Visible.

Quick Info (<Ctrl>+<I>): poate fi folosit doar n cadrul ferestrei de
scriere a codului program. Permite afiarea unor informaii despre obiectele,
proprietile, metodele, funciile, procedurile i variabilele din program, n
mod separat pentru fiecare. Pentru a obine informaii despre un element
enumerat mai sus se poziioneaz cursorul mouse-ului deasupra denumirii
elementului i se alege opiunea Quick Info din cadrul meniului Edit.
Elementul la care se refer mesajul este prezentat cu text de tip bold
(ngroat);

Exemplu:
Pentru a obine informaii despre tipul proprietii Visible a
obiectului Form1 (fereastra aplicaiei) se poziioneaz cursorul mouse-ului
deasupra cuvntului Visible i se alege opiunea Quick Info, rezultatul fiind
afiarea sub cuvnt a mesajului Visible As Boolean. Rezultatul este
prezentat n figura 2.10.


Fig. 2.10. Tipul proprietii Visible a obiectului Form1.

Parameter Info (<Ctrl>+<Shift>+<I>): permite afiarea
argumentului (parametrilor), a tipului de dat pentru fiecare parametru n
parte din cadrul unei funcii, precum i tipul de dat returnat de funcie.
Aceast opiune poate fi utilizat doar n cadrul ferestrei de scriere a
programului surs. Pentru a avea efect se poziioneaz cursorul mouse-ului
n zona argumentului funciei (ntre cele dou paranteze) i se activeaz
Visual Basic
30
opiunea. Aceast facilitate este foarte util pentru c la scrierea unei funcii
afieaz toi parametrii i tipul parametrilor de care funcia respectiv are
nevoie. Parametrul ce trebuie introdus la un moment dat este prezentat cu
text bold. Informaiile furnizate de opiunea Parameter Info apar n mod
automat i atunci cnd, la scrierea codului program, se tasteaz dup
denumirea funciei caracterul ( (parantez rotund deschis);

Exemplu:
Pentru afiarea informaiilor despre parametrii funciei MsgBox se
poate proceda n dou moduri, astfel:
se tasteaz (n cadrul ferestrei de scriere a programului surs)
numele funciei MsgBox dup care se tasteaz (, rezultatul
fiind afiarea automat a parametrilor funciei (figura 2.11).


Fig. 2.11. Lista parametrilor funciei MsgBox.

dup ce funcia a fost introdus i se dorete modificarea sau
introducerea unui parametru, se poziioneaz cursorul
mouse-ului n interiorul argumentului i se selecteaz din
meniul Edit opiunea Parameter Info (figura 2.12).


Fig. 2.12. Lista parametrilor funciei MsgBox pe parcursul editrii
funciei.


Mediul de dezvoltare Visual Basic
31
Complete Word (<Ctrl>+<Space>): poate fi utilizat doar n cadrul
ferestrei de scriere a programului surs i permite completarea unui cuvnt
(denumire obiect, proprietate, metod, funcie, eveniment, procedur, etc.)
dac s-a introdus suficiente litere din acel cuvnt pentru a fi identificat de
interpretorul mediului de programare. Dac se introduce un anumit numr
de litere dintr-un cuvnt care pot fi interpretate i completate (continuate) n
cel puin dou sensuri, atunci apelarea acestei opiuni are ca efect afiarea
unei liste derulante din care se poate alege sensul dorit n funcie de context;

Exemplu:
Dac pentru funcia MsgBox se tasteaz doar primele trei
litere Msg i se apeleaz opiunea Complete Word, efectul va
fi completarea automat a celor trei litere cu urmtoarele trei
Box rezultnd astfel cuvntul funciei MsgBox;
Dac pentru utilizarea obiectului Form1 se introduc primele
trei litere For i se apeleaz pentru completare opiunea
Complete Word, rezultatul este afiarea unei liste derulante
din care se poate alege completarea n funcie de context
(figura 2.13).

Fig. 2.13. Afiarea unei liste derulante pentru completare n funcie de
context.

Bookmarks: permite inserarea i apelul unor repere n cadrul
programului surs. Odat inserate aceste repere se poate face foarte uor i
rapid saltul cursorului de editare (scriere) de la o anumit linie program
Visual Basic
32
(reper) dintr-o procedur la o alt linie program mult mai ndeprtat.
Aceast opiune are urmtoarele subopiuni (figura 2.14):



Fig. 2.14. Elementele opiunii Bookmarks.


Toggle Bookmark: permite inserarea unui reper;
Next Bookmark: permite deplasarea (saltul) cursorului de
editare la urmtorul reper;
Previous Bookmark: permite deplasarea cursorului de editare
la reperul precedent;
Clear All Bookmarks: are ca efect tergerea tuturor reperelor
din cadrul codului program al proiectului curent (n lucru).

Observaie:
Majoritatea opiunilor meniului Edit pot fi selectate i utiliznd
meniul contextual apelat din cadrul ferestrei de editare a programului surs
(figura 2.15). Pentru apelarea meniului contextual se poziioneaz cursorul
mouse-ului n interiorul ferestrei de editare a programului surs i se
execut un click pe butonul din dreapta al mouse-ului.









Mediul de dezvoltare Visual Basic
33


Fig.2.15. Meniul contextual din cadrul ferestrei de editare a programului
surs.

Meniul VIEW


Fig.2.16. Meniul View.

Visual Basic
34
Acest meniu permite, prin intermediul opiunilor sale, vizualizarea
unor obiecte, proceduri, ferestre sau bare de instrumente astfel:

Code: permite afiarea ferestrei de editare (scriere) a programului
surs a aplicaiei corespunztor obiectului curent;

Object (<Shift>+<F7>): afieaz forma, selectat n cadrul ferestrei
Project, mpreun cu toate obiectele din cadrul acesteia;

Definition (<Shift>+<F2>): afieaz coninutul unei proceduri,
funcii (apelate) care este apelat de o alt procedur (apelant). Aceast
opiune poate fi activat doar n momentul n care cursorul se gsete n
cadrul procedurii apelante.

Exemplu:
Dac n cadrul procedurii eveniment Form_Load() asociat ferestrei
Form1 se apeleaz funcia MsgBox, rezultatul seleciei opiunii Definition va
fi afiarea unei ferestre ce conine informaii despre funcia MsgBox ;

Last Position (<Ctrl>+<Shift>+<F2>): plaseaz cursorul la poziia
n care s-a gsit, naintea poziiei curente, n cadrul ferestrelor Code (editor
de cod program) i Debug. De exemplu dac cursorul se afl la linia 3, iar
nainte de aceasta se afla la linia 1, n urma apelrii opiunii Last Position
cursorul va fi mutat automat la linia 1;

Object Browser (<F2>): permite afiarea pe ecran a unei ferestre de
dialog denumit fereastra Object Browser n cadrul creia sunt listate toate
obiectele, clasele disponibile n cadrul mediului Visual Basic;

Imediate Window (<Ctrl>+<G>): permite afiarea unei ferestre n
care programatorul poate introduce valori noi unor variabile sau apela
anumite proceduri, dar toate acestea numai cnd programul a fost lansat n
execuie (start) i apoi ntrerupt (break mode). Utilitatea acestei ferestre
const n faptul c programatorul poate vizualiza efectul schimbrii
valorilor unor variabile fr s recompileze proiectul;

Mediul de dezvoltare Visual Basic
35
Locals Window: permite afarea unei ferestre care cuprinde valorile
variabilelor utilizate n cadrul aplicaiei curente;

Watch Window: permite afiarea unei ferestre n cadrul creia vor fi
evaluate valorile unor variabile, funcii sau expresii, pe parcursul execuiei
programului. Utilitatea acestei opiuni (faciliti) const n faptul c pe
parcursul execuiei programului pot fi vizualizate modificrile valorilor
variabilelor sau expresiilor utilizate, astfel c n funcie de aceast evaluare
programatorul poate revenii i rescrie valorile sau expresiile iniiale;

Call Stack: poate fi utilizat doar n mod de ntrerupere i are ca efect
afiarea unei ferestre ce conine o list cu toate procedurile aflate n execuie
i neterminate;

Project Explorer (<Ctrl>+<R>): afieaz fereastra Project
(proiect);

Properties Window (<F4>): afieaz fereastra cu proprieti
(properties) aferente obiectului curent;

Form Layout Window: permite afiarea i activarea ferestrei de
modificare a poziiei pe desktop a ferestrei curente n timpul execuiei;

Property Pages (<Shift>+<F4>): poate fi utilizat doar n legtur
cu obiectele proiectate de utilizator (ActiveX) i permite afiarea i
modificarea unor proprieti ale acestor obiecte. nainte de apelul acestei
opiuni obiectul utilizator trebuie selectat;

Toolbox: afieaz fereastra cu controale;

Color Palette: afieaz fereastra de modificare a paletei de culori a
elementelor aplicaiei;

Toolbars: permite afiarea unor bare cu instrumente n cadrul
ferestrei principale. Aceste bare cu instrumente conin o serie de icon-uri ce
Visual Basic
36
pot fi apelate direct printr-un click mouse i care au aceleai efecte ca i
opiunile din meniul pe care l reprezint bara cu instrumente. Barele cu
instrumente active la un moment dat sunt marcate cu marcajul .


Meniul PROJECT

Fig. 2.17. Meniul Project.

Meniului Project (figura 2.17.) permite prin intermediul opiunilor
sale adugarea, sau eliminarea unor elemente ale proiectului concretizate n
fiiere externe. Tot din cadrul acestui meniu se poate configura modul i
ordinea de execuie a ferestrelor proiectului (aplicaiei). Cuprinde
urmtoarele opiuni:

Add Form: permite afiarea unei ferestre din cadrul creia se poate
alege o nou fereastr (form ablon) pentru a fi ataat aplicaiei sau
deschiderea i ataarea uneia deja existente pe disc;

Add MDI Form: permite crearea i ataarea la proiectul curent a unei
forme MDI (Multiple Document Interface) numit i forma mama care
conine mai multe ferestre (forme) simple numite i ferestre fiu. Un proiect
Mediul de dezvoltare Visual Basic
37
nu poate avea dect o singur form (fereastra) MDI. Aceast opiune mai
permite i ataarea la proiect a unei forme MDI deja existente pe disc;

Add Module: permite crearea i ataarea unui nou modul ce conine
declaraii de variabile, tipuri i proceduri definite de programator i care vor
fi globale pentru proiectul curent (publice) sau ataarea unui modul existent
pe disc. Acest modul se prezint sub forma unui fiier cu extensia .BAS;

Add Class module: permite crearea i ataarea unui nou modul n
care se va definii o clas, adic vor fi definite proprietile i metodele
acelei clase, sau ataarea unui modul clas existent pe disc. Modulele clas
(ce cuprind definiia unei clase cu proprietile, metodele i evenimentele ei)
se prezint sub forma unui fiier cu extensia .CLS;

Add User Control: permite crearea i ataarea la proiectul curent a
unui nou obiect (control) creat de utilizator prin tehnologia ActiveX. Aceast
opiune permite i ataarea unui obiect (ActiveX) deja creat i existent pe
disc sub forma unor fiiere cu extensia .CTL;

Add Property Page: permite crearea unei liste cu proprieti pentru
un obiect ActiveX ce poate fi ataat proiectului curent. Listele cu proprieti
pot fi ncrcate de pe disc unde sunt stocate sub forma unor fiiere cu
extensia .PAG;

Add User Document: permite crearea i ataarea la proiect a unui
document utilizator. Acest document utilizator reprezint un obiect care
conine informaiile despre instana acelui obiect. Documentul utilizator
poate fi o baz de date, o tabel a bazei de date, un obiect ActiveX, etc.
Aceast opiune este activ i poate fi utilizat doar n cazul n care
proiectul este un ablon ActiveX EXE sau ActiveX DLL;

Add ActiveX Designer: are o singur subopiune Microsoft
UserConnection i permite crearea i legarea unui obiect ActiveX de o baz
de date de tip Oracle, Access, SysBase, dBase, FoxPro, Excel etc.;

Visual Basic
38
Add File (<Ctrl>+<D>): permite introducerea coninutului unui
fiier (text (.TXT), cu declaraii globale (.BAS), o clas (.CLS), un control
(obiect) definit de utilizator (.CTL), o list (pagin) cu proprieti (.PAG), o
form (.FRM)) existent pe disc n cadrul modulului (proiectului) curent.
Fiierul ncrcat astfel poate fi utilizat n acelai timp i de ctre o alt
aplicaie, respectiv un alt proiect;

Remove Form1: permite eliminarea unei ferestre, unui modul sau
unui alt fiier din cadrul proiectului curent;

References : afieaz o fereastra de dialog (References dialog box)
prin intermediul creia bibliotecile de obiecte ale altor aplicaii Windows
pot fi folosite n cadrul unei aplicaii Visual Basic. Bibliotecile de obiecte
sunt definite n cadrul fiierelor cu extensia .OLB, .TLB, .OCX i uneori
chiar cu extensia .DLL sau .EXE. Coninutul unei astfel de biblioteci, adic
a obiectelor care o compun mpreun cu proprietile i metodele acestora se
poate vizualiza n cadrul ferestrei Object Browser. Pentru ncarcarea unei
noi biblioteci de obiecte de pe disc se activeaz butonul Browse din cadrul
ferestrei References;

Components: permite afiarea ferestrei Components Window n
cadrul creia pot fi selectate sau deselectate controale externe (definite n
cadrul fiierelor cu extensia .OCX) precum i diferite obiecte aparinnd
unor aplicaii Windows (o tabel Excel, un document Word, etc.) ce pot fi
incluse n aplicaie datorit tehnologiei ActiveX (sunt coninute n fiiere cu
extensia .EXE sau .DLL). Controalele sau obiectele selectate vor apare sub
forma de butoane n cadrul ferestrei cu controale (Toolbox);

Project1 Properties: permite afiarea ferestrei Project Properties,
prin intermediul creia pot fi setate unele proprieti i caracteristici de
compilare a proiectului curent. Fereastra Project Properties conine n acest
sens patru tabele, astfel: General, Make, Compile, Component;




Mediul de dezvoltare Visual Basic
39
Meniul FORMAT


Fig. 2.18. Meniul Format.

Meniul Format (figura 2.18.) permite efectuarea unor operaii de
aranjare a obiectelor (controalelor) din cadrul unei ferestre. Pentru ca
opiunile acestui meniu s aib efect, obiectele trebuie s fie selectate.
Conine urmtoarele opiuni:

Align: permite aliniere obiectelor selectate la stnga, centrul, dreapta,
partea superioar, mijlocul, partea inferioar a formei sau raportat la
matricea de puncte (grid) de pe form;

Exemplu:
Dac se ncarc, se poziioneaz i se selecteaz dou butoane de
comand pe o fereastra ca n figura 2.19, iar apoi se alege opiunea Lefts a
submeniului Align rezultatul va fi alinierea la stnga ferestrei a celor dou
butoane ca n figura 2.20.







Visual Basic
40

Fig. 2.19. Obiecte ncrcate i nealiniate.


Fig. 2.20. Alinierea obiectelor selectate.

Make Same Size: permite redimensionarea (la aceeai dimensiune) a
tuturor obiectelor selectate;

Size to Grid: permite modificarea dimensiunilor obiectelor selectate
n funcie de matricea de puncte (grid) din cadrul ferestrei;

Horizontal Spacing: are ca efect modificarea spaiului, pe orizontal,
dintre obiectele selectate. Conine urmtoarele subopiuni:
Mediul de dezvoltare Visual Basic
41
Make Equal: poate fi utilizat numai atunci cnd sunt selectate
cel puin trei obiecte, i are ca efect aplicarea unui spaiu egal
ntre ele;
Increase: permite mrirea spaiului dintre cel puin dou obiecte
selectate;
Decrease: permite reducerea spaiului dintre cel puin dou
obiecte selectate;
Remove: permite tergerea (eliminarea) spaiului dintre cel puin
dou obiecte selectate;

Vertical Spacing: are aceleai efecte ca i submeniul Horizontal
Spacing, cu diferena c modificrile de spaiu dintre obiectele selectate au
loc pe vertical;

Center in Form: permite centrarea obiectelor selectate n cadrul
formei (ferestrei) att n funcie de limea (Horizontally) ct i n funcie de
nlimea (Vertically) acesteia;

Order: permite modificarea vizualizrii obiectelor suprapuse.
Utilitatea acestui submeniu const n faptul c dac se dorete vizualizarea
unui obiect, care se gsete sub un alt obiect, se selecteaz obiectul de
deasupra, iar apoi se alege opiunea Send to Back. Pentru a readuce obiectul
la starea iniial (deasupra) se selecteaz opiunea Bring to Front.

Exemplu:
Dac se ncarc i se poziioneaz pe fereastr dou butoane de
comand ca n figura 2.21, pentru vizualizarea n ntregime a butonului
Command1 se selecteaz butonul Command2, iar din submeniul Order se
alege opiunea Send to Back, efectul fiind prezentat n figura 2.22. Pentru
revenire se alege opiunea Bring to Front a aceluiai submeniu;





Visual Basic
42


Fig. 2.21. Modificarea vizualizrii obiectelor suprapuse.


Fig. 2.22. Vizualizarea obiectelor suprapuse.

Lock Controls: activarea acestei opiuni are ca efect fixarea
obiectelor selectate din fereastra, dup ce acestea au fost aduse n poziiile
dorite. n urma alegerii aceste opiuni obiectele nu vor mai putea fi
deplasate din poziiile curente. Dezactivarea opiunii se va face prin
realegerea ei.


Mediul de dezvoltare Visual Basic
43


Meniul DEBUG


Fig. 2.23. Meniul Debug.

Meniul Debug (figura 2.23.) permite depanarea aplicaiei att n faza
de editare i scriere a programului ct i n timpul execuiei. Opiunile
acestui meniu permit programatorului s urmreasc evoluia anumitor
proceduri i variabile pe parcursul execuiei programului. Are urmtoarele
opiuni:

Step Into (<F8>): execut aplicaia pas cu pas, scond n eviden
efectele (comportamentul) fiecrei instruciuni din cadrul modulelor
proiectului;

Step Over (<Shift + F8>): are aceleai efecte ca i opiunea Step
Into, cu deosebirea c atunci cnd se ntlnete o instruciune ce apeleaz o
procedur (Call) se execut acea procedur asemntor unei singure
instruciuni, fr a se parcurge pas cu pas instruciunile ce o compun,
trecndu-se, apoi, la instruciunea ce urmeaz instruciunii care a apelat
procedura;

Visual Basic
44
Step Out (<Ctrl>+<Shift>+<F8>): poate fi utilizat numai n faza
de ntrerupere a execuiei programului i are ca efect executarea tuturor
instruciunilor care urmeaz n procedura curent dup instruciunea la care
s-a fcut ntreruperea, dup care se revine n faza de ntrerupere;

Run to cursor (<Ctrl>+<F8>): permite execuia unui bloc de
instruciuni care se afl ntre o instruciune selectat i poziia curent a
cursorului de scriere;

Add Watch : are ca efect afiarea pe ecran a unei ferestre de dialog
(Add Watch Window) n cadrul creia se vor introduce variabile sau expresii
a cror valoare va fi permanent afiat i urmrit, n cadrul ferestrei Debug,
pe parcursul execuiei aplicaiei. n cadrul acestei ferestre de dialog exist i
un grup de butoane radio prin intermediul crora se poate seta tipul
urmririi care poate fi o urmrire normal a evoluiei valorilor variabilelor
i expresiilor respective, o ntrerupere a execuiei aplicaiei atunci cnd
valorile sunt adevrate sau o ntrerupere a execuiei atunci cnd valorile
variabilelor sau expresiilor se modific;

Edit Watch (<Ctrl>+<W>): permite modificarea caracteristicilor
de urmrire a variabilelor sau expresiilor ce au fost introduse n urma
apelrii opiunii Add Watch;

Quick Watch(<Shift>+<F9>): permite afiarea unei ferestre care
conine valoarea variabilei sau expresiei urmrite, la un moment dat. Ea
poate fi apelat numai n momentul n care aplicaia a fost ntrerupt (break
mode);

Toggle Breakpoint (<F9>): permite introducerea sau tergerea unor
puncte de ntrerupere n execuia aplicaiei. Punctele de ntrerupere sunt
marcaje ataate instruciunilor din cadrul modulelor unui proiect astfel nct
n momentul execuiei aplicaiei, cnd sunt gsite aceste marcaje, mediul
Visual Basic ntrerupe execuia aplicaiei la acea instruciune. Pentru
introducerea unor puncte de ntrerupere se deschide fereastra de editare a
codului program al aplicaiei (fereastra Code) apoi se plaseaz cursorul de
Mediul de dezvoltare Visual Basic
45
editare n linia la care se dorete ntreruperea i se activeaz opiunea
Toggle Breakpoint, linia respectiv fiind marcat cu o anumit culoare;

Clear All Breakpoints (<Ctrl>+<Shift>+<F9>): permite tergerea
tuturor punctelor de ntrerupere din cadrul modulelor unui proiect. Pentru a
terge un singur punct de ntrerupere se poziioneaz cursorul de editare n
cadrul liniei marcate i se reactiveaz opiunea Toggle Breakpoint;

Set Next Statement (<Ctrl>+<F9>): permite schimbarea secvenei
de execuie a aplicaiei n aa fel nct urmtoarea instruciune ce va fi
executat s fie cea pe care este plasat cursorul. De exemplu, se lanseaz n
execuie aplicaia n modul pas cu pas (Step Into sau Step Over) i se dorete
executarea instruciunii de pe linia patru a codului program. Pentru a realiza
acest lucru (nu pas cu pas) se poziioneaz cursorul de editare pe linia patru
i se activeaz opiunea Set Next Statement;

Show Next Statement: permite plasarea cursorului de editare la linia
care va fi executat n cadrul modulului curent.


Meniul RUN

Fig. 2.24. Meniul Run.

Meniul Run (figura 2.24) conine o serie de opiuni ce sunt folosite
pentru lansarea n execuie i controlul execuiei aplicaiei. Opiunile acestui
meniu sunt:

Start (<F5>): permite lansarea n execuie a aplicaiei definit n
cadrul proiectului curent. n momentul n care este apelat aceast opiune
Visual Basic
46
mediul Visual Basic compileaz proiectul, iar n cazul n care exist erori
programatorul este avertizat asupra naturii erorii afind o fereastr n care
este descris eroarea, dup care poziioneaz cursorul la linia n care a fost
depistat eroarea respectiv. Verificarea programului surs al aplicaiei, din
punct de vedere a-l sintaxei instruciunilor, este efectuat de compilatorul
Visual Basic n momentul n care instruciunea este introdus i se apas
tasta <ENTER> pentru a se trece la o noua linie program;

Start With Full Compile (<Ctrl>+<F5>): are aceleai efecte ca i
opiunea Start, cu deosebirea c nainte de execuie, proiectul este compilat
n ntregime;

Break (<Ctrl>+<Break>): permite suspendarea (ntreruperea)
temporar a execuiei unei aplicaii lansate n execuie. Deselectarea acestei
opiuni determin reluarea execuiei aplicaiei din punctul n care s-a fcut
suspendarea;

End: ncheie forat execuia unei aplicaii;

Restart (<Shift>+<F5>): permite reluarea execuiei aplicaiei de la
nceput, avnd ca efect tergerea tuturor datelor introduse n timpul rulrii
anterioare a aplicaiei.


Meniul TOOLS

Fig. 2.25. Meniul Tools.

Meniul Tools (figura 2.25.) permite utilizarea unor utilitare de
urmrire a proprietilor obiectelor, de creare a meniurilor aplicaiei i de
Mediul de dezvoltare Visual Basic
47
configurare a mediului de programare Visual Basic. Conine urmtoarele
opiuni:

Add Procedure: permite crearea unei proceduri, funcii, proprieti
sau a unei proceduri eveniment (n cazul claselor). Aceast opiune poate fi
apelat doar n momentul n care fereastra de editare a programului surs
este activ. n urma apelrii acestei opiuni se va afia o fereastr de dialog
n care se introduce numele procedurii, funciei sau proprietii precum i
natura acesteia, adic dac ea va fi public (disponibil tuturor modulelor
proiectului) sau privat (disponibil doar modulului curent);

Procedure Attributes: permite afiarea unei ferestre prin
intermediul crei pot fi setate proprietile i metodele unui anumit obiect
selectat. Este util la definirea unor clase noi;

Menu Editor (<Ctrl>+<E>): are ca efect afiarea ferestrei de
concepere a sistemului de meniuri i submeniuri (Menu Editor) aferente
unei aplicaii;

Options: are ca efect afiarea unei ferestre n cadrul creia se gsesc
ase casete Editor, Editor Format, General, Docking, Environment,
Advanced prin intermediul crora pot fi stabilite caracteristicile i
parametrii mediului de programare Visual Basic.


Meniul ADD-INS

Fig. 2.26. Meniul Add-Ins.

Visual Basic
48
Meniul Add-Ins (figura 2.26.). Prin intermediul opiunilor pe care le
conine acest meniu se permite lucrul cu anumite aplicaii, accesorii ale
mediului de programare Visual Basic. Aceste opiuni sunt:

Visual Data Manager : are ca efect lansarea in execuie a
gestionarului bazelor de date Visual Data Manager dac acesta este
disponibil;

Report Designer : permite lansarea n execuie a aplicaiei Crystal
Reports disponibil doar n cazul versiunii profesionale a mediului de
dezvoltare Visual Basic, utilizat pentru crearea unor rapoarte n legtur cu
aplicaia;

Add-In Manager : afieaz fereastra Add-In prin intermediul
creia pot fi incluse sau terse anumite aplicaii n cadrul meniului Add-Ins.
Aplicaiile disponibile sunt listate n cadrul zonei de listare Available Add-
Ins din cadrul ferestrei Add-In. Pentru ncrcarea unor aplicaii n cadrul
meniului Add-Ins se selecteaz csua aflat n dreptul numelui aplicaiei
respective din list.


Meniul WINDOW

Fig. 2.27. Meniul Window.

Mediul de dezvoltare Visual Basic
49
Meniul Window (figura 2.27.) conine un set de opiuni care pot fi
utilizate pentru aranjarea sau modificarea ferestrelor n cadrul mediului de
programare Visual Basic. Are urmtoarele opiuni:

Split: poate fi utilizat doar n legtur cu fereastra de editare a
programului surs al aplicaiei i are ca efect, n urma activrii (marcarea
opiunii cu ), scindarea ferestrei pe orizontal n dou pri ce au acelai
coninut. Revenirea la starea iniial se face demarcnd aceast opiune
printr-un click mouse pe denumirea ei. Rezultatul unei astfel de operaii este
prezentat n figura 2.28;


Fig. 2.28. Efectul opiunii Split.

Tile Horizontally: are ca efect reordonarea tuturor ferestrelor
deschise din cadrul mediului de programare sub form alturat pe
orizontal;

Tile Vertically: are ca efect reordonarea tuturor ferestrelor deschise
din cadrul mediului de programare sub form alturat pe vertical;

Visual Basic
50
Cascade: permite reordonarea ferestrelor deschise sub form
suprapus asemntor unei cascade.


Meniul HELP

Fig. 2.29. Meniul Help.

Meniul Help (figura 2.29.). Opiunile acestui meniu asigur asisten
programatorului prin furnizarea tuturor informaiilor necesare despre mediul
de dezvoltare Visual Basic, astfel:

Microsoft Visual Basic Help Topics: afieaz coninutul sistemului
de asisten (ajutor) al Visual Basic-ului sub forma unei liste ce conine mai
multe domenii de referin (asemntor cu o bibliotec) asupra utilizrii
mediului de dezvoltare;

Books Online : permite accesarea manualului de asisten existent
n cadrul kit-ului de instalare (CD-ROM);

Obtaining Technical Support : permite obinerea unor informaii
tehnice despre utilizarea Visual Basic-ului i a pachetelor software
Microsoft;

Microsoft on the Web : poate fi utilizat doar n cazul n care
calculatorul este conectat la INTERNET. Aceast opiune conine o serie de
legturi (adrese) spre site-uri care ofer informaii de ultim or despre
utilizarea mediului de dezvoltare Visual Basic. Avantajul acestei opiuni
const n actualitatea informaiilor pe care le ofer;
Mediul de dezvoltare Visual Basic
51

About Microsoft Visual Basic: afieaz o fereastr care conine
informaii despre versiunea curent a mediului Visual Basic, licena de
utilizare i starea sistemului.

2.3.1.2. Bara cu instrumente (Toolbar)

n tabelul de mai jos sunt descrise butoanele din cadrul Toolbar-ului
Standard i corespondena acestora cu unele opiuni din cadrul liniei de
meniu principal.

Buton din cadrul
toolbar-ului
Aciune Opiuni echivalente din
cadrul meniului
Creeaz un nou
proiect (sau un grup
de proiecte)
Add Project din
cadrul meniului File
Creeaz o noua form
(fereastra)
Add Form din cadrul
meniului Project
Deschide (ncarc) un
proiect existent pe
disc
Open Project din cadrul
meniului File

Salveaz proiectul
curent
Save Project din cadrul
meniului File

Afieaz fereastra de
creare a meniurilor
Menu Editor din cadrul
meniului Tools

Copierea n zona de
memorie a textului sau
obiectului selectat cu
tergerea lui la surs
(mutare)
Cut din cadrul
meniului Edit

Copierea n zona de
memorie a textului sau
obiectului selectat
Copy din cadrul meniului
Edit

Preluarea i repunerea
la destinaie a
Paste din cadrul meniului
Edit
Visual Basic
52
coninutului zonei de
memorie (clipboard)


Cutarea unui ir de
caractere (text) n
cadrul programului
surs a proiectului
Find din cadrul meniului
Edit

Anuleaz ultima
(ultimele) operaie
executat de utilizator
Undo din cadrul meniului
Edit

Reface ultima
(ultimele) operaie de
anulare (Undo)
Redo din cadrul meniului
Edit

Lanseaz n execuie
aplicaia (proiectul)
curent
Start din cadrul meniului
Run

ntrerupe temporar
execuia aplicaiei
Break din cadrul
meniului Run

ncheie execuia
aplicaiei
End din cadrul meniului
Run

Afieaz fereastra
Proiect
Project Explorer din
cadrul meniului View

Afieaz fereastra
Properties
Properties Window din
cadrul meniului View

Afieaz fereastra
Form Layout
Form Layout Window din
cadrul meniului View

Afieaz fereastra
Object Browser
Object Browser din
cadrul meniului View

Afieaz fereastra
Toolbox
Toolbox din cadrul
meniului View



2.3.2. Fereastra cu controale (Toolbox)
Mediul de dezvoltare Visual Basic
53




















Fig. 2.30. Toolbox ul (Fereastra cu controale).

2.3.2.1. Elementele ferestrei cu controale (Toolbox)

Fereastra cu controale conine un set de butoane ce reprezint
obiectele (elemente de control) care pot fi utilizate de programator pentru
construirea unei aplicaii. Cele mai folosite controale sunt:
Pointer: reprezint singurul buton din cadrul toolbox-ului care nu
constituie un obiect de control efectiv. El este folosit pentru deplasarea sau
dimensionarea unui element de control din cadrul unei forme i pentru
anularea selectrii unui buton din cadrul toolbox-ului. Atunci cnd butonul
ce reprezint pointer-ul este apsat controalele din cadrul formei pot fi
deplasate plasnd cursorul (pointer-ul) mouse-ului pe acel element de
Picture Box
Text Box
Command Button
Option Button
List Box
Vertical Scroll
Drive List Box
File List Box
Line
Data
Common Dialog
DBCombo
Pointer
Label
Frame
Check
Combo
Horizontal
Timer
Directory
Shape
Image
OLE
DBList
Visual Basic
54
control i tinnd apsat butonul stng al mouse-ului se deplaseaz controlul
pe suprafaa formei, operaiune cunoscut sub denumirea de Drag & Drop.
Pentru dimensionarea unui element de control se selecteaz, printr-un click
al mouse-ului, elementul respectiv i prin plasarea cursorului pe unul din
pointerii situai n jurul elementului se deplaseaz mouse-ul innd butonul
stng apsat. Pointer-ul din cadrul toolbox-ului este activat implicit dup ce
un element de control a fost ncrcat pe form;

Label (eticheta):



Fig. 2.31. Eticheta.

Label (figura 2.31) reprezint o etichet explicativ ce conine un
anumit text ce va fi afiat pe suprafaa formei. El poate fi plasat pe forma
pentru a evidenia anumite aspecte ale aplicaiei. Coninutul etichetei, textul
care va fi afiat, o reprezint valoarea proprietii Caption care este dat de
un ir de caractere. Iniial proprietatea Caption este egal cu "Label1" la
prima etichet, "Label2" pentru cea de a doua i aa mai departe. Pentru
modificarea valorii acestei proprieti se selecteaz Caption din cadrul
ferestrei Properties (click mouse) i se tasteaz textul dorit. Culorile
fondului i textului etichetei pot fi schimbate modificnd valorile
proprietilor BackColor, respectiv ForeColor sau prin intermediul ferestrei
Color Palette;







Frame (cadru,chenar)

Mediul de dezvoltare Visual Basic
55

Fig. 2.32. Chenar.

Frame (figura 2.32.) reprezint un cadru n care poate fi plasat un
grup de controale. De obicei n cadrul unui chenar se introduc toate
controalele care sunt necesare realizrii unei anumite operaii. Titlul
chenarului este dat de valoarea proprietii Caption a acestuia. Pentru a
introduce un control (inclusiv un alt cadru) n chenar, se va proceda astfel:
selectarea controlului Frame (chenar) din cadrul cutiei cu
controale (toolbox) i ncrcarea lui pe foaia de lucru printr-un
dublu click mouse pe icon-ul ce reprezint chenarul;
aducerea chenarului la dimensiunea dorit, care se realizeaz
prin poziionarea mouse-ului pe unul dintre cei opt pointeri
situai n jurul controlului de pe fereastr i innd butonul stng
apsat se va deplasa mouse-ul pn cnd chenarul are
dimensiunea dorit, apoi se las butonul liber;
selectarea din cadrul cutiei cu controale a controlului ce se
dorete a fi ncrcat n interiorul chenarului;
poziionarea cursorului mouse-ului n interiorul chenarului i
innd butonul stng apsat se deplaseaz mouse-ul setnd astfel
dimensiunea controlului respectiv.
Mutarea chenarului pe foaie face ca i controalele din interiorul acestuia
s fie mutate n acelai timp, ele pstrndu-i poziia n cadrul chenarului;






ChekBox (caseta de opiune)

Visual Basic
56

Fig. 2.33. Caseta de opiune.

ChekBox (figura 2.33) este o caset nsoit de un anumit text ce
reprezint o opiune. Selectarea casetei are ca efect activarea opiunii
(comenzii) respective iar deselectarea casetei are ca efect dezactivarea
opiunii. Principalele proprieti ale acesteia sunt Caption i Value. Caption
reprezint numele opiunii ce nsoete caseta de opiune (implicit valoarea
acestei proprieti este Chek1, Chek2 etc.) i Value care poate avea
urmtoarele valori:
0 - Uncheked: csua nemarcat - ceea ce semnific opiune
inactiv;
1 Cheked: csua marcat prin dou diagonale n interiorul
acesteia, ceea ce semnific opiunea activ;
2 Grayed: csua umplut cu culoarea gri.

Modificarea strii unei csue de opiune se face printr-un click
mouse pe aceasta, sau cu ajutorul tastaturii prin acionarea tastei
<SPACEBAR> (bara de spaiu), rezultatul fiind unul dintre cele trei cazuri
de mai sus.
Dac, ntr-o fereastr sunt mai multe csue de marcaj deplasarea de
pe una pe alta se va face (n lipsa mouse-ului) cu ajutorul tastei <TAB>;


ComboBox (caseta combo)


Fig. 2.34. Caseta combo (caset derulant).

ComboBox (figura 2.34) este o combinaie (combinated box) ntre o
caset de editare (textbox) i o caset de listare (listbox). Utilizarea casetei
combo presupune editarea unui text (care poate fi o opiune) n caseta de
editare i prin acionarea tastei <ENTER>, introducerea acestuia n caseta
Mediul de dezvoltare Visual Basic
57
de listare. Invers, selectarea cu ajutorul mouse-ului a unui element din cutia
de listare printr-un click mouse, aducerea lui n caseta de editare.
Vizualizarea elementelor din caseta de listare se face printr-un click mouse
pe sgeata din dreapta casetei de editare.
n funcie de posibilitile de combinare a celor dou controale ce
alctuiesc cutia combo exist trei tipuri de casete combo. Stabilirea unuia
dintre aceste tipuri se face prin intermediul proprietii Style care poate lua
una din urmtoarele valori:
0 - Dropdown Combo: care reprezint caseta combo propriu-
zis;
1 - Simple Combo: este afiat i activ doar caseta de editare;
2 - Dropdown List: este activ doar caseta de listare.
Pentru adugarea unui element n cadrul cutiei de listare se va folosi
metoda AddItem cu structura:
<nume_caseta>.AddItem "<element>"
unde:
<nume_caseta> - reprezint numele casetei combo respective i este dat
de valoarea proprietii Name a acesteia;
"<element>" - reprezint elementul ce va fi indrodus n cadrul casetei
de listare i care trebuie s fie un ir de caractere (tip String);

Exemplu:
Combo1.AddItem Element 1
Combo1.AddItem Element 2
.

Pentru a suprima un element din cadrul casetei de listare se va utiliza
metoda RemoveItem cu urmtorul format:
<nume_cutie>.RemoveItem <index>



unde:
<index> - reprezint poziia elementului din list care va fi ters (pentru
primul element din list acesta este 0).

Visual Basic
58
Exemplu:
Pentru a terge din lista casetei combo primul elemente se va
introduce urmtoarea linie program:
Combo1.RemoveItem (0)

Datorit faptului c o caset combo este rezultatul combinrii a dou
tipuri de controale, aceasta le motenete proprietile. Cele mai importante
proprieti sunt:
List: reprezint un tablou ale crui elemente sunt elementele din
cadrul casetei de listare;
ListIndex: reprezint numrul corespunztor poziiei elementului
selectat din cadrul listei;
ListCount: reprezint numrul de elemente din list la un
moment dat;
Sorted (valoare True): permite sortarea elementelor din list n
ordine alfabetic.
Modificrile unui element efectuate n cadrul casetei de editare
genereaz evenimentul Change;


HScrollBar i VScrollBar (bara de deplasare pe orizontal i bara
de deplasare pe vertical)


Fig. 2.35. Bara de deplasare pe orizontal i bara de deplasare pe vertical.

Barele de deplasare (figura 2.35.) sunt, n general, acele controale
care faciliteaz vizualizarea textului dintr-o caset de editare (textbox) cu
proprietatea Multiline setat True i a casetelor de listare (listbox). Ele sunt
compuse din dou sgei, plasate la extremitile acestora, i un cursor care
se deplaseaz de la un capt la altul al barei. Deplasarea, ntr-un sens sau
Mediul de dezvoltare Visual Basic
59
altul, este generat de activarea sgeilor care poate fi fcut printr-un click
mouse pe ele, sau cu ajutorul tastelor direcionale. Aceste controale pot fi
folosite i separat de alte controale (textbox, listbox) fiind necesar doar
setarea corespunztoare a anumitor proprieti ale acestora.
Dintre proprietile barelor de deplasare cele mai importante sunt:
Min: corespunde valorii minime pn la care poate fi deplasat
cursorul pe bar (cursorul n sus pentru barele verticale i la
stnga pentru cele orizontale);
Max: corespunde valorii celei mai mari pn la care poate fi
deplasat cursorul pe bar (cursorul n jos pentru barele verticale
i la dreapta pentru cele orizontale);
Value: reprezint valoarea corespunztoare poziiei cursorului.
Pentru stabilirea pasului care va fi fcut la o deplasare a
cursorului pe bar se folosesc proprietile SmallChange si LargeChange.
Astfel cursorul va face pasul stabilit de valoarea proprietii SmallChange
atunci cnd sunt acionate sgeile cu ajutorul mouse-ului, iar pasul stabilit
de LargeChange cnd se acioneaz cu mouse-ul poriunea barei de
deplasare situat ntre cele dou sgei. Implicit valoarea proprietilor
SmallChange i LargeChange este 1, iar cele ale proprietii Min i Max
corespund intervalului [0, 32767].
Evenimentul cel mai important al barelor de deplasare este Change.
Acesta este generat n timp ce cursorul se deplaseaz pe bar, deci cnd se
modific valoarea proprietii Value;


Timer (minutar): reprezint un element de control folosit atunci
cnd se dorete ca n acelai timp cu aplicaia s se execute i alte procese
(proceduri, instruciuni etc.). Acest tip de control este vizibil doar n
momentul proiectrii aplicaiei i nu n momentul execuiei acesteia. La
expirarea intervalului de timp se va declana evenimentul Timer acesta
lansnd n execuie procedura pentru care a fost creat. Intervalul de timp
este determinat prin atribuirea unei valori (reprezentat prin milisecunde)
proprietii Interval a controlului Timer.
Pentru a opri minutarul i a ntrerupe apelurile repetate ale
procedurii eveniment <nume_timer>_Timer(), trebuie atribuit valoarea
Visual Basic
60
False proprietii Enabled. Pentru reluare apelurile repetate trebuie atribuit
valoarea True proprietii Enable;


DirListBox (caseta de listare a directoarelor)



Fig. 2.36. Caseta de listare a directoarelor.

DirListBox (figura 2.36) este o caset n care sunt listate i pot fi
accesate directoarele unitii curente. Aceste casete prezint, sub form
arborescent (ierarhic), structura de directoare de pe o anumit unitate de
stocare (driver). Cea mai important proprietate a acestui control este
proprietatea Path, care conine calea spre directorul selectat. Selectarea unui
director (deschiderea lui) se face printr-un dublu click mouse pe numele
acestuia, ncrcndu-se astfel proprietatea Path.
Procedura asociat evenimentului Change a casetelor de selecie a
directoarelor este apelat n momentul n care valoarea proprietii Path se
modific, deci atunci cnd se execut un dublu click mouse pe numele unui
director din list;





Shape (elemente grafice)


Mediul de dezvoltare Visual Basic
61

Fig. 2.37. Elemente grafice.

Acest tip de control (figura 2.37) permite plasarea pe form a
urmtoarelor figuri geometrice: patrulater, ptrat, elips, cerc, patrulater cu
coluri arcuite, ptrat cu coluri arcuite. Dintre proprietile acestui control
pot fi enumerate:
Shape - are ca valoare figura geometric ce va fi folosit. Ea
poate avea urmtoarele valori:
0 Rectangle : patrulater;
1 - Square : ptrat;
2 - Oval : elips;
3 - Circle : cerc;
4 - Rounded rectangle : patrulater cu colurile arcuite;
5 - Rounded square : ptrat cu coluri arcuite.
Fillstyle - valoarea acestei proprieti reprezint modelul de
umplere a figurii respective. Poate avea urmtoarele valori:
0 Solid : plin;
1 Transparent : transparent;
2 - Horizontal line : linii orizontale;
3 - Vertical line : linii verticale;
4 - Upward diagonal : linii oblice de sus n jos i de
la stnga la dreapta;
5 - Downward diagonal : linii oblice de jos n sus i de
la stnga la dreapta;
6 Cross : combinaie ntre 2 i 3;
7 - Diagonal cross : combinaie ntre 4 i 5.
Odat introduse n cadrul foii de lucru aceste elemente grafice nu au dect
un rol decorativ;


Image (imagine)


Visual Basic
62

Fig. 2.38. Imagine.

Acest tip de control (figura 2.38) odat ncrcat pe foaia de lucru,
permite afiarea imaginilor care se gsesc n fiierele cu extensiile .bmp,
.wmf, .ico, .dib. ntre caseta de imagini i acest control exist unele
deosebiri cum ar fi, de exemplu, lipsa unor proprieti (Autoredraw,
Autosize, Clipcontrols, etc.), ct i a unor proceduri eveniment (Change,
Paint, Resize, etc.). n schimb, obiectul Image are proprietatea Stretch care
poate lua valoarea True, caz n care imaginea ncrcat, cu ajutorul
proprietii Picture, poate fi redimensionat trgnd cu mouse-ul de
pointerii de pe marginea imaginii. Iniial proprietatea Stretch are valoarea
False;


OLE: reprezint un element de control ce permite ncrcarea unui
anumit obiect aparinnd unei alte aplicaii Windows. De exemplu o tabel
din Excel, un document Word s.a..


DBList


Fig. 2.39. DBList.

DBList (figura 2.39) este un element de control ce permite listarea
nregistrrilor din cadrul unei baze de date;


PictureBox (caseta de imagini)


Mediul de dezvoltare Visual Basic
63

Fig. 2.40. Caseta de imagini.

Pentru a include n aplicaie i imagini, se vor folosi casetele de
imagini (fig. 2.40) care permit stocarea imaginilor (numai fiiere cu extensia
.ico, .bmp, .wmf). Imaginile pot fi asociate aplicaiei n dou moduri:
n momentul conceperii interfeei utiliznd proprietatea Picture
aparinnd obiectului caseta de imagini;
pe parcursul execuiei programului utiliznd instruciunea
urmtoare:

<nume_caseta_imagini>.Picture =LoadPicture(<nume_fisier>)

<nume_fisier> - reprezint calea spre fiierul (.bmp, .ico, .wmf) care
conine imaginea ce va fi ncrcat n aceast zon.
Pentru a elimina imaginea ncrcat n zona de imagini se va folosi
instruciunea:

<nume_zona_imagini>.Picture = LoadPicture("")

Datorit faptului c mrimea casetei de imagini nu este totdeauna
egal cu cea a imaginii ncrcate, fcnd vizibil doar o parte a acesteia, se
va seta proprietatea AutoSize (autodimensionare) pe valoarea True, activnd
astfel capacitatea de autodimensionare a casetei de imagini, care se va
dimensiona, n mod automat, n funcie de dimensiunile imaginii ncrcate;





TextBox (caseta de editare)



Visual Basic
64
Fig. 2.41. Caseta de editare.

Acest tip de control (figura 2.41) permite introducerea de la tastatur
a diferitelor tipuri de informaii, operaiune realizat de ctre utilizatorul
aplicaiei. n cadrul acestei casete utilizatorul va putea s introduc
informaiile care-i sunt necesare execuiei aplicaiei i care pot fi
alfanumerice (sub forma unui ir de caractere), sau pot fi numerice.
Proprietatea care va fi ncrcat cu coninutul casetei de editare este
proprietatea Text. n cazul n care, n cadrul casetei de editare sunt introduse
date numerice, compilatorul Visual Basic le trateaz ca iruri de caractere.
Pentru a le considera date numerice se va folosi funcia Val, care transform
un ir de caractere n numrul reprezentat de cifrele din cadrul irului.

Exemplu:
Se va introduce n cadrul casetei de editare numrul 686. Pentru ca
el s fie considerat de aplicaie numr i nu ir de caractere se va scrie
urmtoarea linie program:
numar = Val(<nume_c_e>.Text)
unde:
numar - va fi egal cu numrul 686 i va putea fi folosit n operaii
matematice;
<nume_c_e> - reprezint numele casetei de editare dat de
proprietatea Name a acesteia i care iniial este egal cu Text1 pentru prima
caseta de editare, Text2 pentru cea de a doua i aa mai departe pentru
celelalte casete de editare introduse n cadrul foii de lucru.
Caseta de editare posed numeroase alte proprieti care permit
modificarea formei de afiare a coninutului casetei (FontBold, FontItalic,
etc).
Dac textul ce va fi introdus n cadrul casetei de editare este format
din mai multe linii, se va seta proprietatea Multiline pe valoarea True, iar
dac textul va fi mai mare dect caseta de editare, pentru a-l putea vizualiza
n ntregime, se va seta proprietatea ScrollBars pe una din urmtoarele
valori:
0 - None : fr bare de defilare;
1 - Horizontal : bara de defilare pe orizontal;
2 - Vertical : bara de defilare pe vertical;
Mediul de dezvoltare Visual Basic
65
3 - Both : att bara de defilare pe orizontal ct i bara de
defilare pe vertical.
Pentru trecerea de la o caset de editare la alta i n general, de la un
obiect la altul, n cadrul aceleai foi de lucru se folosete tasta <TAB>. n
program, pentru aceeai operaie, se folosete metoda SetFocus valabil
tuturor controalelor (obiectelor) cu excepia obiectelor Cadru, Caseta
imagini, Linie, Meniu, Figuri grafice i Minutar. Sintaxa metodei SetFocus
este:

<nume_obiect>.SetFocus

n urma folosirii acestei metode obiectul respectiv devine activ cu condiia
ca proprietatea Enable a acestuia s fie setat pe valoarea True;


CommandButton (buton de comand)



Fig. 2.42. Buton de comand.

Butoanele de comand (figura 2.42) reprezint acele controale care
acionate cu ajutorul mouse-ului sau tastei <ENTER> realizeaz operaiunea
precizat de textul de pe buton. Aceste controale sunt numite butoane
deoarece la acionarea lor produc un efect vizual ce d senzaia apsrii unui
buton real.
Principalele proprieti ale butoanelor de comand sunt:
Caption: a crei valoare reprezint textul ce va fi nscris pe
butonul de comand (se poate utiliza simbolul & naintea unui
caracter pentru a face posibil apelarea butonului prin
combinaia de taste <Alt> + caracterul ce se afl dup simbolul
&);
Cancel (valoare True): genereaz evenimentul Click n timp ce
utilizatorul acioneaz tasta <ESC>;
Visual Basic
66
Name: numele atribuit butonului (implicit Command1 pentru
primul buton, Command2 pentru cel de-al doilea etc.);
Default (valore True): indic faptul c butonul este activ (cel
care va declana o aciune la apsarea tastei <ENTER>). Acest
lucru se observ prin faptul c n jurul textului de pe buton apare
un chenar cu laturile formate din linii ntrerupte i un chenar cu
laturile din linii continue. ntr-o fereastr nu poate exista dect
un singur buton activ. Dac, de exemplu, pe o foaie de lucru se
ncarc dou butoane, iar la primul proprietatea Default are
valoarea True, setnd valoarea True i la proprietatea Default a
celui de-al doilea buton, proprietatea Default a primului buton
este ncrcat automat cu valoarea False, astfel nct numai un
buton de pe fereastr poate avea proprietatea Default setat pe
True;
Enabled (valoare False): permite dezactivarea butonului. Odat
dezactivat orice aciune asupra acestui obiect nu mai are nici un
efect;


OptionButton (buton de opiune)



Fig. 2.43. Buton de opiune.

Butoanele de opiune (figura 2.43) cunoscute i sub denumirea de
butoane radio datorit faptului c dintre mai multe butoane de opiune pot fi
active numai unul la un moment dat. Un buton de opiune devine activ n
momentul n care cercul care-l reprezint este plin. Deplasarea pe aceste
butoane i activarea lor se face asemntor casetelor de opiune. Activarea
(dezactivarea) unui buton de opiune este determinat de proprietatea Value
care poate avea urmtoarele valori:
False: cercul este gol, opiunea reprezentat de butonul radio
este dezactivat;
Mediul de dezvoltare Visual Basic
67
True: cercul este plin, deci opiunea respectiv este activat.
Butoanele de opiune, din cadrul diferitelor aplicaii Windows, sunt
de obicei grupate ntr-un chenar. n acest caz, pot fi create mai multe
grupuri de butoane radio total independente. Alegerea unei opiuni dintr-un
chenar (cadru) nu influeneaz n nici un fel celelalte grupe de opiuni care
se gsesc n chenare diferite. Textul din dreptul cercului este dat de valoarea
proprietii Caption a butoanelor de opiune i care poate fi situat n dreapta
sau stnga acestui n funcie de valoarea proprietii Alignment. Proprietatea
Alignment poate avea dou valori:
0 - Left Justify: textul este situat n stnga cercului (dreapta
utilizatorului);
1 - Right Justify: textul este situat n dreapta cerculeului (stnga
utilizatorului);


ListBox (caseta de listare)



Fig. 2.44. Caseta de listare.

Acest tip de control (figura 2.44.) permite stocarea i afiarea unor
elemente (iruri de caractere) sub forma unei liste. Dac numrul de
elemente depete dimensiunea casetei de listare (pe vertical), n partea
stng a acesteia va apare o bar de deplasare pe vertical, care prin
acionarea cu ajutorul mouse-ului, face posibil vizualizarea tuturor
elementelor din cadrul casetei. Pentru gestionarea elementelor din cadrul
listei se folosesc pe lng metodele AddItem, RemoveItem (tratate la
casetele combo) i urmtoarele metode: Clear i Refresh. Asfel:
<nume_lista>.Clear: terge toate elementele din list;
<nume_lista>.Refresh: face actualizarea listei.
Selectarea unui element din cadrul casetei de listare se face fie
printr-un click mouse pe el, fie cu ajutorul tastei <ENTER> dup ce s-a
Visual Basic
68
realizat poziionarea pe element cu ajutorul tastelor direcionale. Un element
selectat din cadrul listei este prezentat n video invers.
Proprietile List, ListCount, ListIndex i Sorted tratate la casetele
combo sunt valabile i pot fi utilizate n mod asemntor i la cutiile de
listare;


DriveListBox (caseta de listare i selecie a unitilor de disc)



Fig. 2.45. Caseta de listare i selecie a unitilor de disc.

Acest tip de control (figura 2.45) sunt combobox-uri ale cror
elemente reprezint diferitele uniti de disc existente pe calculator,
permind astfel selectarea i activarea uneia dintre acestea n funcie de
opiunea utilizatorului. Un click mouse pe sgeata din stnga casetei de
editare provoac deschiderea cutiei de listare i afiarea unitilor existente.
Cea mai important proprietate a acestui control este proprietatea
Drive care este ncrcat cu numele unitii selecionat din list i prezent
n zona de editare a cutiei. Printre evenimentele cele mai importante se
numr evenimentul apsrii unei taste (KeyPress) i cel survenit n urma
alegerii unei noi uniti, adic evenimentul Change (schimbare). Ca uniti
pot fi unitatea de hard disc (C:, D:, E:, F:, etc.), unitatea dischet (A:, B:),
unitatea cd-rom (L:, G:, etc.), unitatea streamer, disc optic etc..;


FileListBox (caseta de listare i selecie a fiierelor)

Mediul de dezvoltare Visual Basic
69


Fig. 2.46. Caseta de listare i selecie a fiierelor.

Acest control (figura 2.46) reprezint o caset de listare coninnd
toate fiierele directorului curent. Ea se include n aplicaie atunci cnd se
dorete deschiderea unui anumit fiier. La ncrcarea acestei casete, din
cadrul toolbox-ului, ea va conine implicit fiierele din directorul (curent) n
care este instalat Visual Basic-ul. Executnd un dublu click mouse pe
denumirea unui fiier din list, proprietatea FileName a acestui control va fi
ncrcat cu numele fiierului i calea spre acel fiier. Pentru a afia n
cadrul zonei de listare a casetei fiierele care se gsesc ntr-un director, va
trebui ncrcat proprietatea Path precizndu-se calea spre acel director,
astfel:

<caseta _de_selectie_ fiier>.Path = "<cale >"

Proprietatea Pattern permite definirea unui filtru de afiaj a
fiierelor, adic se vor afia doar acele fiiere care au extensia setat n
cadrul proprietii Pattern. n cadrul acesteia pot fi utilizate simbolurile * i
?. Primul simbol se va utiliza atunci cnd se dorete afiarea tuturor
fiierelor care au o anumit extensie indiferent de numele acestora
(*.extensie) sau a fiierelor cu un anumit nume indiferent de extensie
(nume_fisier.*), iar cel de-al doilea simbol se va folosi pentru substituirea
unuia sau mai multor caractere din cadrul numelui sau extensiei fiierului.
De exemplu, dac se dorete afiarea fiierelor care au primul caracter din
numele extensiei litera "d" indiferent de celelalte i de numele acestora,
proprietatea Pattern va fi definit astfel Pattern = "*.d??" .
Visual Basic
70
Casetele de selectare a fiierelor recunosc, pe lng celelalte
evenimente comune tuturor controalelor (cu unele excepii: Timer), dou
evenimente particulare:
PathChange: care este declanat fie de schimbarea valorii
proprietii Path, fie de atribuirea unei valori proprietii FileName,
care conine calea spre un alt director dect cel setat prin Path;
PatternChange: este declanat la schimbarea valorii proprietii
Pattern, sau atunci cnd proprietatea FileName este ncrcat cu o
valoare n care se specific un alt filtru de cutare, diferit de cel setat
n cadrul proprietii Pattern.
n legtur cu acest tip de control mai pot fi folosite i proprietile
referitoare la atributele unui fiier. Acestea pot fi: Archive, Normal, Hidden,
ReadOnly i System, care pot avea valoarea True sau False. Setarea primei
valori are ca efect afiarea fiierelor care au cel puin unul din atributele
setate pe aceast valoare, iar cea de-a doua valoare are efectul invers primei.
Proprietile Archive, Normal i ReadOnly au valoarea True setat implicit,
iar Hidden si System au valoare implicit valoarea False.
De obicei caseta de selecie a fiierelor se folosete n combinaie cu
caseta de selecie a directoarelor i caseta de selecie a unitilor de disc;


Line (linia grafic)



Fig. 2.47. Linia grafic.

Acest obiect (figura 2.47.) permite trasarea, n cadrul foii de lucru, a
liniilor grafice n diferite poziii, modele i culori. Modificarea poziiei liniei
se face plasnd cursorul mouse-ului pe linie i innd apsat butonul stng
se deplaseaz linia n direcia dorit. Modificarea lungimii liniei se face
plasnd cursorul mouse-ului pe unul dintre cei doi pointeri aflai la capetele
liniei i innd apsat butonul stng se deplaseaz mouse-ul n direcia
Mediul de dezvoltare Visual Basic
71
dorit. Modelul liniei este dat de valoarea proprietii BorderStyle care
poate fi:
0 - Transparent : transparent;
1 - Solid : plin;
2 - Dash : intrerupt;
3 - Dot : punctat;
4 - Dash-Dot : combinaie ntre 2 i 3;
5 - Dash-Dot-Dot : combinaie ntre 2 i 3;
6 - Inside solid : plin.
Pentru a modifica culoarea liniei se seteaz valoarea proprietii
DrawMode pe valoarea 9 - Mask Pen i din fereastra Color Palette se
selecteaz culoarea dorit pentru scris.
Acest control are doar un caracter decorativ nefiindui asociat nici o
procedur eveniment;


Data


Fig. 2.48. Data.

Reprezint un element de control ce permite lucrul cu diferite baze
de date (tabele): Acces, FoxPro, dBASE, Excel, Lotus, Paradox;


CommonDialog: reprezint un element de control care permite
crearea n mod interactiv a unei ferestre de dialog referitoare la diferite
operaii cum ar fi: deschiderea unor fiiere, salvarea fiierelor, setarea
imprimantei, stabilirea font-urilor, culorilor i a unor ferestre de asisten
(help). La fel ca i Timer-ul, nici acest control nu este vizibil pe parcursul
execuiei aplicaiei. Proprietile cele mai importante ale acestui control pot
fi vizualizate i modificate cu ajutorul lui Custom care permite afiarea unei
ferestre de dialog (figura2.49).

Visual Basic
72


Fig. 2.49. Fereastra de setare a proprietilor obiectului Common Dialogs
Control Properties.

n cadrul tabelelor acestei ferestre se gsesc toate proprietile
controlului CommonDialog. Astfel:
Tabela Open/Save As cuprinde proprietile ce aparin unei ferestre de
deschidere/salvare a fiierelor. Cele mai importante elemente ale
ferestrei sunt:
DialogTitle: corespunde proprietii cu acelai nume din
fereastra cu proprieti a crei valoare reprezint numele ferestrei de
deschidere/salvare a fiierelor. Este creat cu ajutorul controlului
CommonDialog;
FileName: are ca valoare calea i numele fiierului selectat
din cadrul ferestrei create i afiate pe parcursul execuiei aplicaiei;
InitDir: reprezint directorul curent n momentul afirii
ferestrei;
Filter: reprezint filtrul de cutare a fiierelor.
Tabela Color cuprinde proprietile aferente ferestrei de selectare a
culorilor dintre care cea mai important este:
Color: reprezint culoarea selectat din cadrul ferestrei.
Tabela Font cuprinde proprietile aferente ferestrei de selecie a font-
urilor.
Mediul de dezvoltare Visual Basic
73
Tabela Print cuprinde proprietile aferente ferestrei de setare a
parametrilor imprimantei.
Tabela Help cuprinde proprietile aferente ferestrei de asisten (help).

De exemplu, dac se dorete afiarea unei ferestre de deschidere a fiierelor
n cadrul aplicaiei, se procedeaz astfel:
a). se deschide prin intermediul propriettii Custom a obiectului
(controlului) CommonDialog, fereastra de proiectare i n cadrul acesteia se
seteaz proprietatea DialogTitle cu textul Deschidere fisiere;
b). se ncarc pe form un buton de comand iar n cadrul procedurii
eveniment Command1_Click() se tasteaz codul program n formatul
urmtor:
CommonDialog1.ShowOpen
astfel:

Private Sub Command1_Click()
CommonDialog1.ShowOpen
End Sub

De reinut este faptul c acest obiect (control) nu are nici o procedur
eveniment.


DBComboBox



Fig. 2.50. DBComboBox.

DBComboBox (figura 2.50) reprezint un element de control
asemntor cu controlul ComboBox, dar care se refer la nregistrrile unei
baze de date.


2.3.2.2. ncrcarea i modificarea elementelor ferestrei.
Visual Basic
74

Pentru a ncrca un element de control din toolbox pe form se
poate proceda n dou moduri:
A. se plaseaz cursorul mouse-ului pe butonul ce reprezint acel
element i se execut un dublu click;
B. se selecteaz cu ajutorul mouse-ului butonul ce reprezint
elementul respectiv; se deplaseaz apoi cursorul mouse-ului pe suprafaa
formei; innd apsat butonul stng se deplaseaz mouse-ul determinnd
dimensiunea elementului ce va fi ncrcat n momentul prsirii butonului
stng al mouse-ului.
Prin apsarea butonului drept al mouse-ului, cnd cursorul acestuia
se afl pe suprafaa toolbox-ului, va apare un meniu popup cu un set de
opiuni ce permit diferite operaii asupra toolbox-ului, opiuni ce se gsesc
i n cadrul meniurilor din fereastra principal.
Structura ferestrei de controale (toolbox) din figura 2.30 nu
constituie un standard, coninutul acestei ferestre putnd fi modificat n
sensul c pot fi introduse noi tipuri de controale create de diferite firme,
controale care, de obicei, au asociate ferestre de asisten (help).Aceast
fereastr de asisten poate fi afiate prin apsarea tastei <F1> n momentul
n care controlul respectiv este selectat n cadrul toolbox-ului sau pot fi
eliminate unele dintre cele existente prin intermediul ferestrei Components
ce poate fi activat din cadrul meniului Project opiunea Components i
care este prezentat n figura 2.51.:







Mediul de dezvoltare Visual Basic
75

Fig. 2.51. Fereastra Components.

Elementele acestei ferestre sunt:
Tabela Controls care conine:
Lista cu controale: cuprinde toate controalele disponibile
la un moment dat;
Butoanele de comand Ok, Cancel, Browse, Help.
Butonul Browse, permite ncrcarea de pe disc i a
altor fiiere (cu extensia .OCX) ce conin controale sau
obiecte ale altor aplicaii.
Tabela Designers care conine acele controale de tip ActiveX care vor fi
ataate n cadrul opiunii Add ActiveX Designer din meniul Project;
Tabela Insertable Objects care conine obiectele disponibile, ale altor
aplicaii Windows, care pot fi ncrcate i utilizate n aplicaie (fiiere cu
extensia .OCX, .DLL, .EXE).

Pentru a selecta controalele sau obiectele din cadrul listei se
marcheaz caseta de opiune ce nsoete denumirea acestora. Odat
selectate ele vor aprea n cadrul toolbox-ului.



Visual Basic
76
2.3.3. Forma (Form)


Fig. 2.52. Forma.

Forma (figura 2.52) sau macheta de lucru (fereastra aplicaiei) este
obiectul fundamental al interfeei aplicaiei ce va fi creat, pentru c este
ablonul pe care vor fi plasate elementele de control (maxim 255) cum ar fi
butoanele de comand, casetele de opiune, etichete, chenare, casete de
editare, etc. n general fereastra este primul obiect afiat la lansarea n
execuie a unei aplicaii. n momentul conceperii interfeei, Visual Basic-ul
afieaz ntotdeauna o fereastr de lucru numit fereastra principal. Dac
ns proiectul aplicaiei conine mai multe ferestre, selectnd opiunea
Project1 Properties din cadrul meniului Project, iar din fereastra afiat se
poate selecta n caseta Start Up Object fereastra ce se dorete a fi lansat
prima n execuie.
Pentru a crea o nou foaie de lucru (fereastra) se va selecta opiunea
Add Form din cadrul meniului Project. Visual Basic-ul atribuie numele
(identificator) Form1 primei ferestre create, numele Form2 pentru a doua
.a.m.d.
Ferestrele pot fi de dou feluri:
ferestre simple: sunt cele prezentate mai sus, adic acelea pe care pot
fi implementate diferite obiecte;
grup de ferestre (MDI form): cuprinde n cadrul lui o fereastr
mam i una sau mai multe ferestre simple aparinnd acesteia,
Mediul de dezvoltare Visual Basic
77
numite ferestre fiu. Crearea unei ferestre mam se face selectnd
opiunea Add MDI form din cadrul meniului Project. Visual Basic
ataeaz automat numele acesteia celorlalte fiiere din cadrul
ferestrei Project. Pentru ca o fereastr simpl s aparin ferestrei
mam valoarea boolean a proprietii MDIChild, corespunztoare
ferestrei simple, trebuie s fie setat pe True (adevrat).
ntr-o fereastr mam, n afar de ferestrele fiu, nu pot fi
implementate dect casete de imagini precum i acele obiecte care au
proprietatea Align (poziionare).
Apsnd butonul drept al mouse-ului, atunci cnd acesta este pe
form, va apare un meniu popup ale crui opiuni sunt i n cadrul
meniurilor din cadrul ferestrei principale.


























2.3.4. Fereastra Project
Visual Basic
78
Modulele
(fiierele)
componente
ale
proiectului
Numele
proiectului
Buton pentru
vizualizarea
codului program
Buton
pentru
vizualizarea
obiectelor
Buton pentru
activare/deactivare a
modului de afiare
sub form de foldere
a claselor























Fig. 2.53. Fereastra Project.

Fereastra Project (figura 2.53) afieaz modulele (fiierele) ce
compun proiectul unei aplicaii. Elementele componente ale acestei ferestre
sunt:
Caseta n care sunt listate modulele proiectului. Modulele proiectului
sunt fiiere ce conin forme (.FRM), declaraii globale (.BAS), definiiile
unor clase (.CLS), a unor controale (.CTL) i fiiere ce conin anumite
resurse - imagini, text (.RES) etc;



Butonul View Object care permite vizualizarea formei
Mediul de dezvoltare Visual Basic
79
corespunztoare modulului selectat n cadrul listei. Acest buton este
valabil numai pentru fiierele ce conin forme;
Butonul View Code permite afiarea ferestrei Code (ferestrei
de editare a codului program) corespunztoare modulului selectat n
cadrul listei. Acest buton nu poate fi folosit atunci cnd se selecteaz un
fiier resurs;
Butonul Toggle Folders permite afiarea/ascunderea claselor
i a modulelor .BAS sub forma unor foldere, iar a instanelor la acele
clase sub forma unor fiiere ale folderelor.
Dac atunci cnd cursorul mouse-ului se gsete n cadrul acestei
ferestre se apas butonul drept, va fi afiat un meniu popup care permite o
serie de operaiuni asupra modulelor din lista.

2.3.5. Fereastra Properties


















Fig. 2.54. Fereastra Properties.

Fereastra Properties (figura 2.54) conine denumirea proprietilor
(prima coloana) i valorile acestora (a doua coloana), corespunztoare
Caseta
derulant
cu obiecte
Lista cu
proprieti
Caseta cu
explicaii
Visual Basic
80
obiectului curent (forma sau control). Prin intermediul acestei ferestre pot fi
modificate valorile proprietilor unui obiect, valori ce determin
comportamentul obiectului respectiv n cadru aplicaiei.
Elementele acestei ferestre sunt:
Caseta derulant cu obiecte (Object Box): conine numele i tipul
obiectului curent din cadrul formei curente. Prin activarea butonului
situat n partea dreapt a casetei se va derula o list ce cuprinde toate
obiectele din cadrul formei curente;
Lista cu proprieti (Properties List): este alctuit din dou tabele.
Prima tabela Alphabetic, conine coloanele cu numele proprietilor i
valorile acestora, sortate n ordine alfabetica dup numele proprietilor.
Cea de-a doua tabel Categorized, conine lista proprietilor ordonat
pe grupe de proprieti.
Caseta cu explicaii: conine o prezentare succint a principalelor
caracteristici ale proprietii selectate.
Pentru modificarea valorilor unei proprieti se execut un click
mouse pe numele proprietii respective din prima coloana i se introduc
valorile corespunztoare n coloana a doua. Unele proprieti, atunci cnd
sunt selectate, duc la apariia butonului n coloana de valori, prin
activarea cruia se permite ncrcarea valorii proprietii. Aceste proprieti
sunt cele care au ca valoare numele unor fiiere de pe disc (cum ar fi
proprietatea Icon, Picture), sau cele care au o valoare ce trebuie stabilit n
cadrul unei ferestre de dialog, cum ar fi proprietatea Custom a elementului
de control CommonDialog. Alte proprieti au o lista de valori predefinit.
Pentru vizualizarea acestei liste se selecteaz proprietatea i se apas
butonul marcat cu o sgeat n jos, din cadrul coloanei cu valori, putnd fi n
acest fel selectat din list valoarea dorit.
Proprietile obiectelor pot fi variabile sau constante de tip numeric,
alfanumeric, logic, grafic, etc.




2.3.6. Fereastra Color Palette

Mediul de dezvoltare Visual Basic
81

Fig. 2.55. Fereastra Color Palette.

Fereastra Color Palette (figura 2.55) permite modificarea culorilor unei
forme sau a unui elemente de control (obiect). Elementele ferestrei sunt:
(1) reprezint culoarea fondului (background) i a coninutului
(foreground) unei forme sau control;
(2) reprezint culoarea fondului i a coninutului unui text din cadrul
unei forme sau control;
(3) reprezint paleta de culori.
Activarea butonului Default are ca rezultat setarea culorile obiectului cu
cele ale mediului Windows.
Butonul Custom Colors >> permite afiarea unei ferestre n cadrul
creia programatorul poate s creeze propriile culori.
Pentru modificarea culorilor unei forme sau control se selecteaz cu
ajutorul unui clic mouse n cadrul zonei (1), fondul sau coninutul (implicit
este activ fondul) dup care se execut un clic mouse pe culoarea dorit din
zona (3).





2.3.7. Fereastra Form Layout
Visual Basic
82


Fig. 2.56. Fereastra Form Layout.

Fereastra Form Layout poate fi utilizat atunci cnd se dorete
mutarea ferestrei aplicaiei i poziionarea ei ntr-o anumit zon pe desktop.
Deplasarea i poziionarea ferestrei se realizeaz prin glisarea (tragerea)
acesteia cu ajutorul mouse-ului pe suprafaa desktop-ului din fereatra Form
Layout.

Proprietile, metodele i evenimentele obiectelor
83










3.1. Proprietile obiectelor

n cadrul limbajelor de programare ce au la baz tehnica programrii
aplicaiilor n mod vizual, fiecrui obiect (form, buton de comand, caset
de editare, etc.) i sunt asociate o serie de proprieti care determin
comportamentul lor n aplicaie. Aceste proprieti reprezint cmpuri de
variabile predefinite si asociate diferitelor obiecte vizuale.
Valorile proprietilor pot fi de diferite tipuri astfel: Integer (Height,
Width, Top, Left), String (Caption, Name), Boolean (AutoSize, Visible,
Enabled), Variant (BackColor, ForeColor, Icon, Picture), etc. Proprietile
obiectelor au valori implicite. Aceste valori pot fi modificate n faza de
proiectare a aplicaiei sau pe parcursul execuiei (prin program). n vederea
modificrii valorii proprietilor unui obiect se va proceda astfel:

n momentul proiectrii interfeei:
se selecteaz cu ajutorul mouse-ului obiectul ale crui proprieti
se doresc a fi modificate;
n fereastra Properties, se selecteaz proprietatea ce se dorete a
fi modificat (prima coloan a listei cu proprieti);
se introduce, n zona de editare a acestei ferestre (a doua coloan
a listei cu proprieti), noua valoare urmat de apsarea tastei
<ENTER>.



Visual Basic

84
Observaii:
obiectul ale crui proprieti se doresc a fi modificate se poate selecta
din lista cutiei combo (caseta cu obiecte), situat n partea de sus a
ferestrei Properties;
ataarea noii valori unei proprieti se poate face dup ce s-a selectat
proprietatea respectiv prin preluarea din lista cutiei combo asociate
proprietii, noua valoare.

Exemplu:
Dac se dorete modificarea textului coninut ntr-o etichet explicativ
(Label) implementat pe fereastra machet (fig. 3.1), se procedeaz astfel:



Fig. 3.1 Fereastra machet ce conine eticheta.

se activeaz (selecteaz) eticheta printr-un click mouse;
se activeaz printr-un click mouse proprietatea Caption din fereastra
Properties (figura 3.2);










Proprietile, metodele i evenimentele obiectelor
85



Fig. 3.2. Fereastra Properties pentru schimbarea etichetei.

se execut un click mouse n coloana cu valori, iar cnd apare cursorul
de editare se introduce textul dorit dup care se valideaz cu <ENTER>.
De exemplu s se introduc textul Denumire material:. Rezultatul este
urmtorul:



Fig. 3.3. Efectul setrii proprietii Caption.

dac se dorete autodimensionarea etichetei n funcie de textul coninut,
se selecteaz proprietatea AutoSize corespunztoare etichetei. Aceast
proprietate fiind o constant logic (boolean) va afia n cmpul cu
Visual Basic

86
valori (coloana a doua) o list (figura 3.4) cu valorile True (adevrat),
care permite autodimensionarea obiectului n funcie de textul coninut,
sau valoarea False (fals), care are ca efect inhibarea autodimensionrii.



Fig. 3.4. Setarea proprietii AutoSize.

n cadrul programului surs:
n cadrul unei proceduri generale, sau n cadrul unei proceduri
(subrutine) asociat unui eveniment, se introduce urmtoarea linie
program:

<nume_obiect>.<proprietate> = <valoare>

Exemplu:
Form1.Visible = True
Form1.Caption = &Ok

n continuare vor fi prezentate cele mai utilizate proprieti,
specificndu-se la fiecare i obictele crora le aparin sunt urmtoarele.


ActiveControl

Aceast proprietate aparine obiectelor: fereastr (Form), fereastra
"mam" (MDI form) i ecran (Screen).
Ea returneaz obiectul din cadrul aplicaiei care este activ n acel
moment, adic acel obiect care deine focus ul.
Formatul general:

{form | mdiform | Screen}.ActiveControl

Proprietile, metodele i evenimentele obiectelor
87
Cu ajutorul proprietii ActiveControl se pot accesa n acelai timp i
alte proprieti ale obiectului la care aceasta se aplic.

Exemplu:
Pentru a modifica proprietile obiectului ecran se va proceda astfel:
Screen. ActiveControl.AutoSize = True


ActiveForm

Aparine obiectelor: fereastra "mam" (MDI Form) i ecran
(Screen).
Returneaz fereastra (ecranul) activ la un anumit moment. Dac un
obiect de pe o fereastr (forma) este activ (posed focus-ul) atunci i
fereastra respectiv este o fereastr activ.
Formatul general:

{mdiform | Screen}.ActiveForm

Aceast proprietate este util n cadrul unei aplicaii care folosete o
fereastr "mam", datorit faptului ca prin ea se poate face referire la una
dintre ferestrele "fiu" (descendente).

Exemplu:
Pentru a verifica dac un buton de opiune ntr-o anumit fereastr
din cadrul unui grup de ferestre (MDIForm) este setat la un moment dat se
procedeaz astfel:
If ActiveForm.Option1.Value = True Then
msg = MsgBox("Ok!", vbOKOnly, "Mesaj")
End If


Alignment

Aceast proprietate aparine urmtoarelor controalelor: casete de
opiune (CheckBox), etichete (Label), butoane de opiune (OptionButton) si
Visual Basic

88
casetelor de editare (TextBox). Ea determin modul de aliniere a casetelor
de opiune, butoanelor de opiune si a textului din etichete i din caseta de
editare.
Formatul general:

[form.]control.Alignment[ = expresie_numeric ]

Pentru casetele de opiune i butoanele de opiune,
expresie_numeric poate lua una din urmtoarele valori:

0 - Left Justify : (valoare implicit) caz n care csua sau
butonul sunt aliniate la stnga i textul (dat
de proprietatea Caption) la dreapta;
1 - Right Justify: inversul primei valori.

Pentru etichete i casete de editare expresie_numeric poate lua
una din urmtoarele valori:

0 - Left Justify :(valoare implicit) caz n care textul este
aliniat la stnga;
1 - Right Justify :text aliniat la dreapta;
2 Center :text centrat.


Archive, Hidden, Normal, Read Only, System

Aparine controlului: Caseta de selecie a fiierelor (FileListBox).
Aceast proprietate determin ce tip (cu ce atribute) de fiiere vor fi
afiate n list.
Fiierele pot avea urmtoarele atribute:
Archive: pentru fiierele arhiv;
Hidden: pentru fiierele ascunse;
Normal: pentru fiierele normale;
Read Only: pentru fiierele protejate la scriere;
System: pentru fiierele sistem.
Proprietile, metodele i evenimentele obiectelor
89
Formatul general:

[form.]filelistbox.Archive[ = boolean ]
[form.]filelistbox.Hidden[ = boolean ]
[form.]filelistbox.Normal[ = boolean ]
[form.]filelistbox.System[ = boolean ]

Aceste proprieti ale casetei de selecie a fiierelor, pot lua una din
urmtoarele valori de tip boolean:
True : (implicit pentru Archive, i Normal) afieaz n zona de
listare fiierele cu atributele respective;
False : (implicit pentru Hidden i System) nu afieaz fiierele
care au atributele respective.


AutoRedraw

Aparine controalelor: forma (Form) i casetei de imagini
(Picturebox).
Formatul general:

[form.][picturebox.]AutoRedraw[ = {True|False}]

Aceast proprietate permite actualizarea desenelor afiate ntr-o
fereastr, sau ntr-o zon imagine (PictureBox), cnd acestea sunt mutate
sau redimensionate. Ea se refer la urmtoarele metode grafice: Circle, Cls,
Line, Point, Print i PSet. Fiind o variabil boolean aceast proprietate
poate lua urmtoarele valori:
True : permite actualizarea figurilor geometrice dup
fiecare operaie executat asupra lor;
False : anuleaz actualizarea figurilor geometrice.





Visual Basic

90
Autosize

Aparine controalelor: etichet (Label) i casetei de imagini
(Picturebox).
Determin autodimensionare etichetelor n funcie de mrimea
textului introdus n cadrul lor i a zonei de imagini n funcie de
dimensiunile imaginii ncrcate n cadrul acesteia.
Format general:

obiect.AutoSize[ = {True|False}]

Poate lua urmtoarele valori:
True : permite autodimensionarea obiectului n funcie de
coninut;
False : anuleaz autodimensionarea obiectului.
Exemplu:
Dac se ncarc proprietatea Caption a etichetei Label1 cu valoarea
Aplicaii Visual Basic, iar proprietatea AutoSize a etichetei are valoarea
False, eticheta va arta astfel:






Dup setarea proprietii AutoSize cu valoarea False, eticheta va
arta astfel:





Proprietile, metodele i evenimentele obiectelor
91
BackColor, ForeColor

Aparin tuturor obiectelor n afar de minutar (Timer), barele de
deplasare (HScrollBar VScrollBar) i obiectelor speciale (Clipboard,
Screen, Printer).
Proprietatea BackColor este o variabil hexazecimal care definete
sau returneaz culoarea de fond a obiectului, iar proprietatea ForeColor
este o valoare hexazecimal care definete sau returneaz culoarea
elementelor din cadrul obiectului.
Selectarea uneia dintre aceste proprieti din cadrul ferestrei
Properties i acionarea butonului de valori din coloana cu valorile
proprietii se afieaz o fereastra (figura 3.5, figura 3.6) din care se poate
selecta culoarea dorit att pentru fond ct i pentru coninut.



Fig. 3.5. Tabela System de selectare a culorilor.











Visual Basic

92


Fig. 3.6. Tabela Palette de selectare a culorilor.

Pentru definirea culorilor Windows-ul utilizeaz un sistem numit
RGB (Red-Green-Blue), prin care se specific proporia de culori: albastru,
rou i verde.
Pentru definirea culorii unui obiect pot fi utilizate dou funcii:
RGB (rou%, verde%, albastru%) care returneaz culoarea n
funcie de proporia culorilor rou, verde i albastru. Argumentele
pot fi cuprinse ntre 0 i 225;
QBCColor (nr%) care returneaz culoarea corespunznd numrului
de culoare specificat (nr% - valoare cuprins ntre 0 i 15).

Exemplu:
Form1.BackColor = RGB(100,50,150)
Form1.ForeColor = QBColor(0)

Cele dou proprieti au ca valori numere hexazecimale ce
reprezint culoarea respectiv. De exemplu, dac se alege din fereastra
Color Box culoarea roie pentru fond, proprietatea BackColor va avea
valoarea &H000000FF&.




Proprietile, metodele i evenimentele obiectelor
93
BorderStyle

Aparine obiectelor: fereastr (Form), etichet (Label), caset de
imagini (PictureBox), caset de editare (TextBox).
Aceast proprietate este o valoare numeric ce determin tipul de
chenar (cadru) n care este ncadrat obiectul respectiv n timpul execuiei
programului.
Valorile pe care le poate lua aceast proprietate sunt:
0 - None : nencadrat;
1 - Fixed single : cadru simplu;
2 - Sizeable : cadru dimensionabil (doar pentru ferestre);
3 - Fixed Double : cadru dublu (doar pentru ferestre).


Cancel

Aparine doar butonului de comand (CommandButton).
Setat True aceast proprietate asociaz butonului de comand tasta
<ESC>. Deci, apsnd tasta <Esc> butonul cu proprietatea Cancel setat
True va fi activat.


Caption

Aparine obiectelor: fereastr (Form), fereastr "mam" (MDI form),
casetelor de opiune (Checkbox), butonului de comand (CommandButton),
chenarului (Frame), etichetei (Label), meniului (Menu), butonului de
opiune (OptionButton).
Aceast proprietate este de tip String i definete titlul acestor
obiecte (textul explicativ din cadrul lor).
Formatul general:

[form.][control.]Caption[ = ir_de_caractere ]

Visual Basic

94
De exemplu, pentru a schimba titlul ferestrei de lucru cu textul
"Aplicaie 1" se ncarc proprietatea Caption n cadrul programului surs
astfel:
Form1.Caption = "Aplicaie 1"

Implicit, aceast proprietate este ncrcat cu numele obiectului
cruia i aparine (Form1 pentru prima fereastr). Valoarea acestei
proprieti poate fi, deasemenea, ncrcat i n cadrul ferestrei cu
proprieti.


Checked

Aparine meniului.
Formatul general:

opiune_meniu.Checked[ = boolean ]

Aceast proprietate plaseaz un indiciu " " n faa opiunii de meniu.
Acest simbol, n general, este utilizat pentru a scoate n eviden faptul c o
opiune este activ.
Valorile posibile sunt:
True: indiciul este afiat;
False: indiciul nu este afiat.
Modificarea valorii acestei proprieti poate fi fcut i selectnd caseta
de opiune Checked, din cadrul ferestrei Menu Editor, corespunztoare
opiunii curente (figura 3.7).








Proprietile, metodele i evenimentele obiectelor
95



Fig. 3.7. Marcajul casetei de opiune Checked din fereastra Menu Editor.

Rezultatul selectrii casetei Checked este prezentat n figura 3.8.



Fig. 3.8. Efectul proprietii Checked.





Visual Basic

96
ControlBox

Aparine formei (ferestrei aplicaiei).
Aceast proprietate determin afiarea, sau nu a icon-ului meniului
de control situat n colul din dreapta sus a ferestrei (stnga utilizatorului).
Valoarea sa implicit este True i nu poate fi modificat n timpul execuiei
programului.
Valorile posibile sunt:
True : determin afiarea icon-ului meniului de control;
False : determin suprimarea icon-ului meniului de control.
Proprietatea ControlBox (True sau False) este incompatibil cu
BorderStyle egal 0, acesta din urma trebuind sa fie egal cu una din valorile
1, 2, sau 3.

Exemplu:
Dac se seteaz proprietatea ControlBox cu valoarea True fereastra
va avea bara de titlu ca i cea din figura 3.9, iar dac se seteaz cu valoarea
False va fi ca n figura 3.10.



Fig. 3.9. Efectul valorii True a proprietii ControlBox.








Proprietile, metodele i evenimentele obiectelor
97


Fig. 3.10. Efectul valorii False a proprietii ControlBox.


CurrentX, CurrentY

Aparin obiectelor: fereastr (Form), caset de imagini (PictureBox),
imprimant (printer).
Ele determin coordonatele, pe orizontala CurrentX i pe verticala
CurrentY, folosite n legtur cu metodele grafice (Cls, Circle, Line, Print,
PSet, etc). Aceste coordonate sunt date i de valorile proprietilor
ScaleHeight, ScaleWidth, ScaleLeft i ScaleTop.
De exemplu, cnd cursorul se afl n colul din stnga sus al ferestrei
(n timpul executrii unei metode Cls, ), CurrentX i CurrentY sunt 0.


Default

Aparine butonului de comand (CommandButton).
Aceast proprietate de tip boolean specific butonul de comand
care poate fi activat, n acel moment, la acionarea tastei <ENTER>. Textul
de pe butonul respectiv va fi ncadrat ntr-un patrulater cu laturile formate
din linii ntrerupte.
Valorile posibile sunt:
True : butonul de comand este cel activ (Default) ;
False : butonul de comand nu este activ.
Un singur buton de comand poate avea aceast proprietate setat pe
valoarea True ntr-o interfa.

Visual Basic

98
Dragicon

Aparine tuturor obiectelor exceptnd fereastra (Form), minutarul
(Timer) i obiectele speciale.
Aceast proprietate determin afiarea unui icon atunci cnd
utilizatorul realizeaz o operaie Drag & Drop (glisare). Valoarea acestei
proprieti este dat de calea spre un fiier ce conine un icon (.ico). Setarea
ei n cadrul ferestrei Properties se poate face fie introducnd calea spre
fiierul (.ico) dorit, fie prin apsarea butonului din partea stng a casetei de
editare ducnd la afiarea unei ferestre de dialog n cadrul creia poate fi
ales fiierul (.ico) dorit.


DragMode

Aparine tuturor obiectelor exceptnd fereastra (Form), minutarul
(Timer) i obiectele speciale.
Cnd valoarea proprietii DragMode este setat 1 se activeaz
posibilitatea de deplasare a obiectului n timpul execuiei unei aplicaii.
Cnd valoarea DragMode este setata 0, pentru a putea efectua operaia
Drag & Drop se apeleaz metoda Drag.
Ea poate lua urmtoarele valori:
0 - Manual : (implicita) pentru a deplasa obiectul va trebui
definit i metoda Drag;
1 Automatic : obiectul poate fi deplasat n mod implicit printr-o
simpl tragere cu mouse-ul.


DrawMode

Aparine urmtoarelor obiecte: fereastr, caset de imagine,
imprimant (Printer), linie (Line), figuri geometrice (Shape).
Aceast proprietate specific culoarea de afiaj a metodelor grafice,
culoare obinut prin efectuarea unor operaii logice (Not, And, Or, Xor)
ntre valorile proprietilor ForeColor i BackColor. DrawMode poate lua
valori ntre 1 i 16.
Proprietile, metodele i evenimentele obiectelor
99


DrawStyle

Aparine obiectelor: fereastr (Form), caset de imagini
(PictureBox), imprimant (Printer).
Aceast proprietate definete modelul de trasare (desenare) a
metodelor grafice (Line, Pset i Circle).
Formatul general:

{[form.] [picturebox] | Printer}.DrawStyle[ = stil ]

unde stil poate fi una din urmtoarele valori:
0 Solid : (implicit) plin;
1 Dash : ntrerupt;
2 Dot : punctat;
3 Dash-Dot : combinaie ntre 2 i 3;
4 Dash-Dot-Dot : combinaie ntre 2, 3, 3;
5 Transparent : invizibil;
6 Inside Solid : plin.


DrawWidth

Aparine obiectelor: fereastr (Form), caset de imagini
(PictureBox), imprimant (Printer).
Aceast proprietate determin grosimea liniei de desenare a
metodelor grafice ce aparin obiectelor respective. DrawWidth poate lua
valori cuprinse ntre 1 i 32767 pixeli.






Drive
Visual Basic

100

Aparine casetei de selecie a unitilor de disc (DriveListBox).
Aceast proprietate definete sau returneaz unitatea de disc
selectat i eticheta acestei uniti. Poate avea ca valori specificaiile pentru
unitile de stocare a informaiei existente i conectate la calculator. De
exemplu, pentru driver-ul de dischet valoarea acestei proprietti poate fi
"A:" sau "B:", pentru hard disk "C: [ eticheta_volum]", pentru cd-rom "G:",
"L:", etc.
Modificarea valorii proprietii Drive genereaz implicit
evenimentul Change a controlului caseta de selecie a unitii de disc.


Enabled

Aparine tuturor obiectelor, cu excepia celor speciale.
Aceast proprietate, de tip boolean, activeaz sau dezactiveaz un
obiect. Cnd un obiect este dezactivat, el nu mai rspunde la nici un
eveniment.
Valori posibile:
True: obiect activ;
False: obiect inactiv.
n cazul meniului i butoanelor de comand valoarea False a acestei
proprieti are ca efect afiarea textului (definit de proprietatea Caption) n
culoarea gri semnificnd faptul c acea opiune sau acel buton este inactiv
(figura 3.11).





Fig. 3.11. Efectele proprietii Enabled asupra butoanelor de comand.



FileName
Enabled=True Enabled=False
Proprietile, metodele i evenimentele obiectelor
101

Aparine casetei de selecie a fiierelor (FileListBox).
Aceast proprietate de tip ir de caractere (String), definete sau
returneaz numele fiierului selectat n caset de selecie a fiierelor.
File Name va returna un ir vid dac nici un fiier din list nu a fost
selectat.


FillColor

Aparine obiectelor: fereastr (Form), caset de imagini
(PictureBox), imprimant (printer) i elementelor grafice (shape).
FillColor definete culoarea de umplere a figurilor geometrice
realizate cu ajutorul metodelor grafice. Dac proprietatea FillStyle este
setat pe valoarea 1 (Transparent), valorile proprietii FillColor nu au nici
un efect. La fel ca i la proprietile BackColor i ForeColor, valoarea
proprietii FillColor va fi reprezentat de un numr hexazecimal.


FillStyle

Aparine obiectelor: fereastr (Form), caset de imagini
(PictureBox), imprimant (Printer) i elementelor grafice.
Aceast proprietate definete modelul de umplere a figurii grafice
definit cu ajutorul metodelor grafice. Valorile pe care le poate lua au fost
tratate la controlul elemente grafice (Shape) din cadrul capitolului doi.


FontBold, FontItalic, FontStrikethru, FontTransparent,
FontUnderline

Aceste proprieti aparin tuturor obiectelor exceptnd barele de
defilare, minutarul i obiectele speciale (Clipboard, Debug i Screen).
Ele determin stilul de caractere utilizate pentru afiarea textului
ntr-o fereastr astfel:
FontBold : text ngroat (exemplu);
Visual Basic

102
FontItalic : text nclinat (exemplu);
FontStrikethru : text barat (exemplu);
FontTransparent : text transparent;
FontUnderline : text subliniat (exemplu).
Aceste proprieti pot lua doar valori de tip boolean (True sau
False). Valoarea True permite activarea proprietii, respectiv stilului pentru
caractere, iar valoarea False dezactiveaz stilul de scriere.
Modificarea i ncrcarea acestei proprieti poate fi efectuat i prin
intermediul ferestrei Properties, selectnd din caseta cu valori a obiectului
butonul de punctat din dreapta casetei. Rezultatul este afiarea ferestrei din
figura 3.12. i prin care pot fi setate n mod interactiv aceste proprieti.


Fig. 3.12. Fereastra Font.

FontCount

Aparine obiectelor: imprimant (Printer) i ecran (Screen).
Aceast proprietate returneaz numrul de font-uri (stiluri de text)
disponibile n acel moment.
Formatul general:

{Printer|Screen}.FontCount

Proprietile, metodele i evenimentele obiectelor
103
Valorile returnate de proprietatea FontCount nu pot fi modificate n
timpul execuiei aplicaiei.


FontName

Aparine tuturor obiectelor n afar de meniu (Menu), barele de
deplasare (HScrollBar, VScrollBar), minutarul (Timer) i obiectele speciale
(Clipboard, Debug, Screen, Printer).
Valoarea acestei proprieti reprezint numele stilului de text (font-
urilor) ce va fi afiat.

Exemplu:
Dac se dorete ca textul introdus pe forma sa fie afiat cu font-uri
Times New Roman atunci valoarea acestei proprietti va fi:
Form1. FontName = "Tms Rmn"
ncrcarea acestei proprieti n momentul conceperii interfeei
aplicaiei se face alegnd, din cutia combo (din cadrul ferestrei Properties)
n care se gsesc valorile fiecrei proprieti selectate, stilul de text dorit.


Fontsize

Aparine tuturor obiectelor n afar de meniu (Menu), barele de
deplasare (HScrollBar, VScrollBar), minutarul (Timer) i obiectele speciale
(Clipboard, Debug, Screen, Printer).
Aceast proprietate determin talia font-urilor ce vor fi folosite
(setate prin FontName). Valoare maxim este de 2048 pixeli. Taliile, cel
mai frecvent utilizate, corespund unei valori cuprinse ntre 8 i 14.




hDc

Visual Basic

104
Aparine ferestrei (Form), casetei de imagini (PictureBox) i
obiectului imprimant (Printer).
Aceast proprietate furnizeaz un handle de context (hDc - Handle
Device Contexts) pentru contextul marginal. Un handle este un numr unic
atribuit de sistemul Windows obiectului imprimant, unei ferestre sau unei
zone de imagini.
Formatul general:

{[form.] [picturebox. ] | Printer.}hDC

Acest hDc va fi folosit atunci cnd se va face apel la o procedur sau
funcie Windows (API Windows).


Height, Width

Aparine tuturor obiectelor exceptnd meniul (Menu), minutarul
(Timer) i obiectele speciale.
Aceste proprieti determin dimensiunile obiectului: Height
reprezint nlimea, iar Width reprezint limea obiectului. Unitatea de
msur utilizat este indicat de valoarea proprietii ScaleMode aparinnd
aceluiai obiect.
Pentru imprimant ea va reprezenta marimea foii (n Twips sau alt
unitate setat cu ScaleMode), iar pentru ecran va defini mrimea acestuia.


hWnd

Aparine tuturor obiectelor cu excepia meniului (Menu) i
obiectelor speciale.
Aceast proprietate furnizeaz un handle (pointer) (hWnd - handle
Windows) asociat obiectului. Mediul Windows identific fiecare obiect
dup aceast valoare (handle) care poate fi folosit ca argument n cadrul
unei funcii sau proceduri API Windows.


Proprietile, metodele i evenimentele obiectelor
105
Icon

Aparine ferestrei aplicaiei (Form) simple sau "mam".
Aceast proprietate permite asocierea unui icon ferestrelor aplicaiei.
Prin intermediul acestui icon utilizatorul va lansa n execuie
aplicaia creia i este asociat. Fiecrei ferestre a aplicaiei i se poate ataa
un icon astfel nct atunci cnd fereastra este minimizat icon-ul asociat ei
va apare n partea inferioar a desktop-ului pe bara de stare (Taskbar).
Valoarea acestei proprieti este calea i numele unui fiier cu
extensia .ico n care este definit icon-ul. Acest fiier poate fi ncrcat, de pe
una din unitile de disc disponibile, prin alegerea lui din cadrul ferestrei ce
apare n urma unui dublu click mouse pe proprietatea Icon din fereastra
Properties, sau un click mouse pe butonul din dreapta casetei cu valoarea
proprietii Icon.


Image

Aparine obiectelor: fereastr (Form), caset de imagini
(PictureBox).
Aceast proprietate furnizeaz un handle (valoare ntreag) unei
imagini bitmap. Valoarea respectiv este recunoscut de Windows i poate
fi luat ca argument n cadrul unei funcii sau al unei proceduri API
Windows.


Index

Aparine tuturor obiectelor n afar de fereastr (Form) i obiectele
speciale.
Valoarea acestei proprieti reprezint indexul unui control n cadrul
unui tablou de controale. Ea este generat atunci cnd sunt ncrcate, pe
form, mai multe controale care au aceeai valoare a proprietii Name,
crendu-se astfel un tablou de controale, primul avnd proprietatea Index
egal cu zero. De exemplu, dac se ncarc pe form dou butoane de
comand, iar la al doilea se seteaz proprietatea Name cu valoarea
Visual Basic

106
Command1, va apare o fereastr de dialog n cadrul creia se poate opta
pentru iniializarea sau nu a unui tablou de controale. Dac se opteaz
afirmativ atunci proprietatea Index a primului buton de comand va fi egal
cu 0, iar a celui de-al doilea cu 1.
Aceast valoare nu poate fi modificat pe parcursul execuiei
aplicaiei.


Interval

Aparine obiectului minutar (Timer).
Aceast proprietate determin intervalul de timp (n milisecunde)
ntre 2 apeluri ale evenimentului Timer asociat minutarului.
Formatul general:

[form.]timer.Interval[ = millisecunde ]

unde milisecunde poate lua valori n intervalul [1,65535]. Valoarea de
65535 corespunde unui minut.
Exist 2 metode de a dezactiva un minutar:
atribuirea valorii 0 proprietii Interval;
atribuirea valorii False proprietii Enabled.


Left, Top

Aparine tuturor obiectelor fr minutar, meniu i obiecte speciale.
Proprietatea Left returneaz distana ntre marginea stnga al
obiectului curent i cea a obiectului care-l conine.
Proprietatea Top furnizeaz distana ntre marginea superioar a
obiectului curent i cea a obiectului care-l conine.
Pentru fereastr aceste proprieti determin distana dintre
marginile ferestrei (stng i superioar) i marginile ecranului, valori
exprimate n twips (implicit) sau alt unitate de msur setat prin
intermediul proprietii ScaleMode.

Proprietile, metodele i evenimentele obiectelor
107

LinkItem

Aparine obiectelor etichet (Label), caset de imagini (PictureBox)
i caset de editare (TextBox).
Aceast proprietate returneaz o valoare de tip alfanumeric i
permite definirea elementului unei aplicaii Windows (setat n cadrul
proprietii LinkTopic) care va fi utilizat n procesul de schimbare dinamic
a datelor (DDE - Dynamic Data Exchange). Acest element (nou definit)
poate fi, de exemplu numele celulei unei foi de calcul din Microsoft Excel
etc.
Formatul general:

[form.]{label|picturebox|textbox}.LinkItem[ = nume_element]

unde:
nume_element: este denumirea sau referina elementului altei
aplicaii Windows, legat n procesul DDE (o celul, un
domeniu, o tabel Excel, un domeniu dintr-un document Word,
etc.).

Exemplu:
Referina la un domeniu de celule dintr-o pagin Excel, legat de
aplicaia Visual Basic, prin intermediul unei casete de editare se realizeaz
astfel:
Text1.Text = A1B2



LinkMode

Aparine obiectelor fereastr (Form), etichet (Label), caset de
imagini (PictureBox) i caset de editare (TextBox).
Aceast proprietate determin tipul de legtur DDE ce va fi
stabilit ntre un obiect sau o fereastr Visual Basic i o alt aplicaie
Windows.
Visual Basic

108
Pentru controale proprietatea LinkMode poate lua una dintre
urmtoarele valori:
0 - None : (implicit) nici o legtur;
1 - Automatic : legtura se stabilete, n mod
automat, de fiecare dat cnd are loc
un transfer de date;
2 - Manual : legtura se stabilete numai atunci
cnd metoda LinkRequest este
apelat;
3 - Notify : n acest caz evenimentul LinkNotify
este generat cnd are loc transferul de
date, dar legtur se stabileste numai
atunci cnd metoda LinkRequest
este apelat.

Pentru ferestre valorile proprietii LinkMode sunt:
0 - None - (implicit) nici o legtur;
1 Source - permite specificarea unui obiect surs (label,
textbox, etc.) ntr-un proces DDE.
Cnd se dorete ncheierea schimbului dinamic de date se atribuie
valoarea 0 proprietii LinkMode.


LinkTimeOut

Aparine obiectelor: etichet (Label), caset de imagini
(PictureBox), caset de editare (TextBox).
Valoarea acestei proprieti definete timpul necesar pentru
stabilirea unei legturi cu o alt aplicaie.

Exemplu:
Label1.LinkTimeOut = 100
Semnific faptul c timpul n care trebuie s se fac legtura (un rspuns
DDE) cu o aplicaie este de 10 secunde.
Dac se depete acest interval de timp va fi generat o eroare.
Valoarea implicit a acestei proprieti este 50 (5 secunde).
Proprietile, metodele i evenimentele obiectelor
109


LinkTopic

Aparine obiectelor: fereastr (Form), etichet (Label), caset de
imagini (PictureBox) i caset de editare (TextBox).
Aceast proprietate definete numele aplicaiei i subiectul de
schimb al datelor ntr-un proces (legtur) DDE. Aceste dou informaii
trebuie separate de o linie vertical (|). Numele aplicaiei poate fi, de
exemplu WORD sau EXCEL i subiectul corespunztor poate fi un
document sau o foaie de calcul. De exemplu, pentru stabilirea unui schimb
de date ntre eticheta ferestrei aplicaiei realizat cu Visual Basic i o celul
Excel (de exemplu A1B2) aceast proprietate va avea valoarea:

form1.label1.LinkTopic = "Excel|A1B2"


List

Aparine obiectelor: caset combo (ComboBox), caset de selectare
a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de
disc (DriveListBox) i caset de listare (ListBox).
Aceast proprietate este de tip String i returneaz elementele din
lista acestor obiecte. Aceste elemente sunt stocate ntr-un tablou
unidimensional de tip ir de caractere (String). Fiecare element al tabloului
reprezint un element al listei.
Formatul general:

[form.]control.List(index)[ = ir_de_caractere ]

Unde index reprezint indicele elementului n cadrul listei. Indicele
primului element al listei este 0, indicele celui de-al doilea 1, pn la
ListCount - 1 (proprietatea ListCount indicnd numrul elementelor din
list). Parametrul ir_de_caractere returneaz sau seteaz coninutul
elementului din list.

Visual Basic

110
Exemplu:
Pentru lista din figura 3.13. proprietatea ListCount este egal cu 7.
Pentru elementul Marketing, selectat din list, indicele index este 3, iar
ir_de_caractere este egal cu textul Marketing.



Fig. 3.13. Coninutul proprietii List.


ListCount

Aparine obiectelor: caset combo (ComboBox), caset de selectare
a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de
disc (DriveListBox) i caset de listare (ListBox).
Aceast proprietate returneaz:
Numr de elemente pentru: caseta combo, caseta de listare;
Numr de uniti de disc pentru: caseta de selectare a unitilor de
disc;
Numr de subdirectoare pentru: caseta de selectare a directoarelor;
Numr de fiiere al directorului curent pentru: caseta de selectare a
fiierelor.
Aceast valoare nu poate fi modificat n timpul executrii
programului.


ListIndex

Proprietile, metodele i evenimentele obiectelor
111
Aparine obiectelor: caset combo (ComboBox), caset de selectare
a fiierelor (FileListBox), a directoarelor (DirectoryListBox), a unitilor de
disc (DriveListBox) i caset de listare (ListBox).
Aceast proprietate este de tip numeric i returneaz indicele
elementului selecionat n cadrul listei acestor obiecte.
Format general:

obiect.ListIndex [= index]

unde index reprezint indexul elementului curent din list.

Exemplu:
Dac se consider lista din figura 3.13. valoarea proprietii
ListIndex este 3. Pentru a ncarc o etichet cu valoarea proprietii
ListIndex se va introduce urmtoarea linie program:
Label1.Caption=Str(List1.ListIndex)


MaxButton, MinButton

Aparine ferestrelor (Form).
Valoarea True a proprietii MaxButton permite vizualizarea
butonului din colul stnga sus a ferestrei , putnd fi astfel folosit la
expandarea ferestrei pe tot ecranul. Valoarea False determin eliminarea
acestui buton de pe fereastr. Proprietatea MinButton permite afiarea sau
ascunderea butonului de reducere (minimizare) a unei ferestre .
Valori posibile:
True : butonul este afiat n colul din stnga sus al ferestrei;
False: butonul nu este disponibil n fereastr.


MousePointer

Aparine tuturor obiectelor cu excepia meniului, minutarului i
obiectelor speciale.
Visual Basic

112
Aceast proprietate permite modificarea aspectului cursorului
(pointer-ului) mouse-ului, atunci cnd acesta se deplaseaz deasupra unui
control sau se realizeaz o anumit operaiune.
Valori posibile:
0 Defaul
1 Arrow
2 - Cross
3 - I-Beam
4 - Icon : afieaz matricea de construcie a pointer-ului (invizibil);
5 Size
6 - Size NE SW
7 - Size N S
8 - Size NW SE
9 - Size W E
10 - Up Arrow
11 - Hourglass
12 - No Drop
99 Custom : permite definirea de ctre utilizator a unui icon pentru
pointer, icon dat de proprietatea MouseIcon.




Name

Aparine tuturor ferestrelor i controalelor.
Aceast proprietate atribuie un nume de identificare unei ferestre sau
unui control. Prin intermediul acestei proprieti se face referin la
proprietile, metodele i evenimentele obiectului pe care-l reprezint.

Exemplu:
Implicit obiectul etichet are proprietatea Name egal cu Label1
pentru prima etichet ncrcat pe fereastr. Referina la proprietatea
Proprietile, metodele i evenimentele obiectelor
113
Caption ale acestei etichete se face astfel: Label1.Caption=Text. Dac se
modific coninutul proprietii Name a etichetei, din Label1, n Etc1
referina la proprietatea Caption se va face astfel: Etc1.Caption=Text.


Parent

Aparine tuturor obiectelor fr fereastre i obiecte speciale.
Aceast proprietate returneaz valoarea proprietii Name a
obiectului printe, cel care conine n cadrul su obiectul curent. Astfel pot
fi setate proprietile unei ferestre pornind de la un control care este situat n
cadrul acesteia:

<nume_control>.Parent.<proprietate> = <valoare>


ScaleHeight, ScaleWidth

Aparine obiectelor: ferestre (Form), casete de imagini (PictureBox),
imprimant (Printer).
Aceast proprietate determin nlimea (ScaleHeight), respectiv
limea (ScaleWidth) obiectului la care se refer. Unitile de msur n care
se exprim valorile acestor dou proprieti sunt setate de ctre proprietatea
ScaleMode.
Formatele generale sunt:

{[form.][picturebox.]|Printer.}ScaleHeight[ = dimensiune ]
{[form.][picturebox.]|Printer.}ScaleWidth[ = dimensiune ]

unde dimensiune reprezint nlimea, respectiv limea obiectului.


ScaleLeft, ScaleTop

Aparine obiectelor: ferestre (Form), casete de imagini (PictureBox),
imprimant (Printer).
Visual Basic

114
Aceast proprietate permite specificarea abscisei (ScaleLeft) i
ordonatei (ScaleTop) colului stng superior al ferestrei. De exemplu,
instruciunile urmtoare seteaz coordonatele colului stnga sus al ferestrei
la valorile (0,100).
Form1. ScaleLeft = 0
Form1. ScaleTop = 100


ScaleMode

Aparine obiectelor: ferestre (Form), casete de imagini (PictureBox),
imprimant (Printer).
Aceast proprietate permite alegerea unitii de msur utilizat
pentru exprimarea dimensiunilor i coordonatelor obiectelor la care se
refer. Poate lua urmtoarele valori:
0 - User : unitate definit de utilizator;
1 - Twip : 1/20 dintr-un punct;
2 - Punct : 0,375 mm;
3 - Pixel : mrimea lui depinde de rezoluia setat;
4 - Character : caracter (120 Twip orizontal pe 240
vertical);
5 - Inch : 2,54 cm;
6 - Milimeter : mm;
7 - Centimeter : cm.

SelLength, SelStart, SelText

Aparine obiectelor: cutia combo (ComboBox) i caset de editare.
(TextBox)
Proprietatea SelLength determin numrul caracterelor
(nr_caractere) selectate (afiate n video invers) de utilizator n cadrul celor
dou controale.
Formatul general:

[form.]{combobox|textbox}.SelLength[ = nr_caractere ]

Proprietile, metodele i evenimentele obiectelor
115
Proprietatea SelStart returneaz poziia de unde se poate ncepe
(indicator) selectarea unui text.
Formatul general:

[form.]{combobox|textbox}.SelStart[ = indicator ]

Proprietatea SelText returneaz textul selectat (text_sel).
Formatul general:

[form.]{combobox|textbox}.SelText[ = text_sel ]


Sorted

Aparine obiectelor: caseta combo (ComboBox) i caseta de listare
(TextBox).
Aceast proprietate permite sortarea (n ordine alfabetic sau
cresctoare) a elementelor unei casete combo sau unei casete de listare.
Valoarea acestei proprieti nu poate fi modificat n timpul executrii
programului. Valorile posibile sunt:
True : elementele sunt sortate;
False : elementele apar n ordinea introducerii lor n list.


TabIndex

Aparine tuturor obiectelor cu excepia ferestrelor, meniului,
minutarului i obiectelor speciale.
Aceast proprietate returneaz un numr (index) atribuit obiectelor
de pe foaia de lucru (Form) n ordinea introducerii lor, astfel:
TabIndex = 0 pentru primul obiect creat pe fereastr;
TabIndex = 1 pentru al doilea obiect creat pe fereastr.
Ea determin ordinea de activare a controalelor atunci cnd este
acionat tasta <TAB>. Trecerea se va face n ordinea cresctoare a
proprietii TabIndex.
Visual Basic

116
Modificarea valorii proprietii TabIndex, a unui obiect, duce la
modificarea automat a valorii acestei proprieti i pentru celelalte obiecte.
Pe o fereastr nu exist niciodat 2 obiecte avnd aceeai valoare a
proprietii TabIndex.


TabStop

Aparine tuturor obiectelor n afar de ferestre, meniu, minutar,
etichet, cadru (chenar) i obiecte speciale.
Aceast proprietate activeaz, sau nu, transmiterea focus-ului unui
obiect cu ajutorul tastei <TAB>.
Valori posibile:
True : obiectul poate primi focus-ul prin acionarea tastei
<TAB>;
False : obiectul nu poate primi focus-ul prin acionarea tastei
<TAB>.


Text

Aparine obiectelor: caset combo (ComboBox), caset de listare
(ListBox) i casetei de editare (TextBox).
Aceast proprietate returneaz sau definete irul de caractere din
cadrul unei casete de editare, a unei casete combo sau a unei casete de
listare.

Exemplu:
Pentru a utiliza datele introduse de ctre utilizator ntr-o caset de
editare i a le stoca ntr-o variabil se utilizeaz urmtoarea linie program:
txt=Text1.Text
unde txt este variabila de tip String utilizat.


Value

Proprietile, metodele i evenimentele obiectelor
117
Aparine obiectelor: casete de opiune (CheckBox), butoane de
comand (CommandButton), butoane de opiune (OptionButton) i barelor
de deplasare (HscrollBar, VScrollBar).
Aceast proprietate returneaz, n mod difereniat, una din valorile
urmtoare:

Casete de opiune: 0 = caset nemarcat;
1 = caset marcat;
2 = caset gri (neaccesibil).

Butoane de opiune: True : buton selecionat (cerc plin);
False : buton neselectat (cerc gol).

Buton de comand: True : butonul este selectat (evenimentul
Command1_Click() este generat);
False : butonul nu este selectat.

Bare de defilare: un numr cuprins ntre -32768 i 32767 reprezentnd
poziia cursorului pe bara de deplasare.




Visible

Aparine tuturor obiectelor n afar de minutar i obiectele speciale.
Aceast proprietate permite vizualizarea (afiarea), sau nu a unui
obiect pe ecran, sau interfaa aplicaiei, n timpul execuiei.
Valori posibile:
True : obiectul este vizibil pe interfa;
False : obiectul este ascuns.
Metodele Show i Hide ale unei ferestre efectueaz aceleai operaii.


WindowState

Visual Basic

118
Aparine ferestrei (formei).
Aceast valoare determin modul de afiare a ferestrei pe desktop-ul
Windows-ului.
Valori posibile:
0 - Normal : (implicit) fereastr afiat aa cum a fost creat;
1 - Minimized : fereastr afiat sub form de icon pe bara de stare
(taskbar) a Windows-ului;
2 - Maximized : fereastr mrit pe tot ecranul.


Proprietile, metodele i evenimentele obiectelor
119

3.2. Metodele obiectelor

Pe lng un ansamblu complex de instruciuni Visual Basic-ul pune
la dispoziia programatorului i o serie de metode. Metodele sunt aciuni
(instruciuni) ce se efectueaz asupra obiectelor determinnd
comportamentul lor n cadrul aplicaiei.
Formatul general al unei metode este:

<obiect>.metod [parametrii]

Cele mai importante i mai utilizate metode n Visual Basic sunt
urmtoarele:


AddItem

Aparine obiectelor: caset de listare i caset combo.
Aceast metod adaug (introduce) un nou element n lista acestor
obiecte.
Formatul general:

<obiect>.AddItem <element> [,index]

unde:
<obiect>: reprezint numele casetei combo sau casetei de listare
la care se refer;
<element>: reprezint un ir de caractere (String) care va fi
introdus n list;
index: reprezint un numr ntreg ce specific poziia pe care va
fi ncrcat elementul n lista. Pentru primul element acest
parametru are valoarea 0.



Visual Basic

120
Exemplu:
Pentru a ncrca un element ntr-un ListBox se va introduce
urmtoarea linie program (n cadrul procedurii eveniment Form_Activate()):

List1.AddItem Aplicatie Visual Basic

Rezultatul este prezentat n figura 3.14.



Fig. 3.14. Utilizarea metodei AddItem.


Arrange

Aparine ferestrei "mam" (MDI Form).
Aceast metod ordoneaz ferestrele "fiu" sau icon-urile din cadrul
unei ferestre "mam".
Formatul general:

<mdiform>.Arrange <mod_ordonare>

unde:
<mdiform> - reprezint numele ferestrei "mam";
<mod_ordonare> - reprezint o constant ce va determina modul de
ordonare. Ea poate lua urmtoarele valori:
Proprietile, metodele i evenimentele obiectelor
121
0 Cascade : ordonarea ferestrelor non-minimizate,
sub form de cascad;
1 - Tile_Horizontal : ordonarea ferestrelor non-minimizate,
alturate pe orizontal;
2 - Tile_Vertical : ordonarea ferestrelor non-minimizate,
alaturate pe vertical;
3 - Arrange_Icons : ordonarea icoanelor ferestrelor "fiu"
minimizate.


Circle

Aparine ferestrelor simple, casetei de imagini i obiectului
imprimant (printer).
Aceast metod permite desenarea unui cerc, arc de cerc sau a unei
elipse n funcie de valorile parametrilor si.
Formatul general:

[<obiect>.]Circle [Step](x, y), raza[,[culoare] [,[start] [,[stop] [,aspect] ] ] ]

unde:
<obiect> : reprezint numele obiectului la care se folosete metoda;
Step : determin relativitatea coordonatelor centrului cercului fa
de coordonatele setate prin CurrentX i CurrentY;
(x,y) : reprezint coordonatele centrului cercului: x - linia, y
coloana. Unitatea de desen este dat de valoarea
proprietii
ScaleMode a obiectului respectiv;
raza : reprezint raza cercului;
culoare : reprezint codul culorii de desenare a cercului. Acestui
parametru i se pot da ca valori funciile RGB i QBColor;
start, stop : reprezint (n radiani) unghiul de nceput i de sfrit a
unui arc de cerc;
aspect : reprezint aspectul cercului. Implicit are valoare 1, iar peste
valori mai mari de 1 se va desena o elips.
Visual Basic

122

Exemplu:
ScaleMode = 2
Form1.Circle (100, 100), 50


Clear

Aparine casetei de listare, casetei combo i obiectului special
clipboard (zona tampon).
Aceast metod terge coninutul casetei de listare, casetei combo i
clipboard-ului.
Formatul general:

<obiect>.Clear


Cls

Aparine ferestrelor simple i casetei de imagini.
Aceast proprietate terge graficele i textele generate direct pe
aceste controale.
Formatul general:

[<obiect>.]Cls


Drag

Aparine tuturor obiectelor cu excepia liniei grafice, elementelor
grafice (shape), meniului i minutarului.
Aceast metod asociat unui obiect, iniiaz, termin sau
abandoneaz "tragerea" (deplasarea) obiectului respectiv pe suprafaa
ferestrelor din cadrul aplicaiei.


Proprietile, metodele i evenimentele obiectelor
123
Formatul general:

[<obiect>.]Drag [actiune]

unde:
aciune - poate lua una din urmtoarele valori:
0 : Abandoneaz operaiunea de deplasare a obiectului;
2 : Iniiaz operaiunea de deplasare;
3 :Termin operaiunea de deplasare, moment in care
obiectul
este depus.
Dac se omit parametrii <obiect> i aciune metoda se va referi la
obiectul curent (cel n a crui procedur eveniment se folosete), iar
parametrul aciune va avea implicit valoarea 1.


Hide

Aparine ferestrelor.
Aceast metod determin ascunderea ferestrei respective dar nu i
dezactivarea ei. Prin folosirea acestei metode se ncarc proprietatea Visible,
a ferestrei, cu valoarea False.
Formatul general:

[form|MDIform.]Hide

Aceast metod nu poate fi folosit n legtur cu ferestrele "fiu", ci
numai in legtur cu fereastr "mam".
Cnd metoda Hide este folosit n legtur cu o fereastr, care nu
este ncrcat pe ecran, aceasta va fi activat automat dar va fi ascuns.

Exemplu:
Form1.Hide

Aceast linie program are ca efect ascunderea ferestrei Form1.

Visual Basic

124

Line

Aparine ferestrelor, casetei de imagini i imprimantei (printer).
Aceast metod permite trasarea unei linii sau a unui patrulater, n
funcie de valorile parametrilor si.
Formatul general:

[<obiect>.]Line [[Step](x1, y1)] - [Step](x2, y2) [,[culoare][,B[F]]]

unde:
x1,y1 : reprezint coordonatele punctului din care ncepe trasarea
liniei sau patrulaterului (colul din stnga sus);
x2,y2 : reprezint coordonatele punctului unde se termin trasarea
liniei sau patrulaterului (colul din dreapta jos);
B : indic trasarea unui patrulater definit de coordonatele de x1,y1
(colul din stnga sus al patrulaterului) i x2,y2 (colul din dreapta
jos);
F : permite umplerea patrulaterului cu culoarea de desenare. Acest
parametru nu poate fi folosit fr parametrul B. Dac parametrul F
lipsete atunci patrulaterul este umplut cu culoarea stabilit prin
proprietatea FillColor a obiectului respectiv (fereastr, zon de
imagini, imprimant), iar stilul de umplere este dat de valoarea
proprietii FillStyle.
Grosimea liniei depinde de valorile proprietii DrawWidth a obiectului
respectiv.

Exemplu:
Pentru trasarea ntr-o fereastr a unei diagonale se introduce
urmtoarea linie program:

Form1.Line (100, 100)-(1050, 1050)

Rezultatul acestei linii program este prezentat n figura 3.15.


Proprietile, metodele i evenimentele obiectelor
125


Fig. 3.15. Rezultatul utilizrii metodei Line.


LinkExecute

Aparine acelor obiecte (controale) care pot avea o legtur DDE cu
alte aplicaii Windows: etichete, casete de imagini, casete de editare etc.
Aceast proprietate permite transmiterea unei comenzi aplicaiei
care se afl ntr-o legtur DDE cu obiectul respectiv. Aceast comand
trebuie s fie recunoscut de aplicaia respectiv.
Formatul general:

<obiect>.LinkExecute <comanda>

unde:
<comanda> : este un ir de caractere reprezentnd comanda ce va fi
transmis aplicaiei dintr-o legtur DDE.
De exemplu, n cazul legturilor cu aplicaii ca Microsoft Word sau
Microsoft Excel se accept, ca i comenzi, macroinstruciunile acestor
aplicaii incluse ntre paranteze drepte.


LinkPoke

Aparine etichetelor, casetelor de imagini i casetelor de editare.
Aceast metod transfer coninutul obiectului n legtur cu care se
folosete, elementului unei alte aplicaii n cadrul unei legturi DDE.
Formatul general:
Visual Basic

126

<obiect>.LinkPoke

Pentru etichete sursa de transfer va fi valoarea proprietii Caption,
pentru caseta de editare va fi valoarea proprietii Text, iar pentru caseta de
imagini va fi valoarea proprietii Picture.
Elementul destinaie va fi cel stabilit prin proprietile LinkTopic i
LinkItem.


LinkRequest

Aparine etichetelor, casetelor de imagini i casetelor de editare.
Folosirea acestei metode are ca efect ncrcarea valorii proprietilor
Caption pentru etichete, Picture pentru caseta de imagini i Text pentru
caseta de editare, cu coninutul elementului unei alte aplicaii Windows
aflat n legtur de tip DDE cu obiectul respectiv.
Formatul general:

<obiect>.LinkRequest

Dac valoarea proprietii LinkMode a obiectului respectiv este 1 -
Automatic, atunci actualizarea obiectului cu coninutul elementului surs al
aplicaiei din cadrul legturii DDE, se face n mod automat fr a fi necesar
apelarea metodei LinkRequest.
Dac proprietatea LinkMode are valoarea 2 - Manual atunci
actualizarea obiectului se va face doar la apelarea metodei LinkRequest.
Dac valoarea proprietii LinkMode este 3 - Notify atunci
actualizarea obiectului se va face doar dac apare evenimentul LinkNotify,
folosindu-se i n acest caz metoda LinkRequest.





LinkSend
Proprietile, metodele i evenimentele obiectelor
127

Aparine casetei de imagini.
Aceast metod determin transferul coninutului zonei de imagini,
elementului unei alte aplicaii Windows aflat n legtur DDE cu zona de
imagini.
Formatul general:

<nume_zona_imagini>.LinkSend

Move

Aparine tuturor controalelor n afar de meniu i de minutar.
Aceast metod determin mutarea obiectului (controlului) respectiv
n cadrul aplicaiei.
Formatul general:

[<obiect>.]Move stnga[, sus[, lungime[, nlime] ] ]

unde:
stnga : este un numr ce reprezint coordonata pe orizontal (abscisa)
a marginii stngi a obiectului;
sus : este un numr ce indic coordonata pe vertical (ordonata) a
marginii de sus a obiectului;
lungime : este un numr prin care se stabilete lungimea (limea)
obiectului;
nlime : este un numr prin care se stabilete nlimea obiectului.
Aceste coordonate sunt valorile proprietilor ScaleLeft, ScaleRight,
ScaleWidth i ScaleHeight.


Point

Aparine ferestrelor simple i casetei de imagini.
Formatul general:

<obiect>.Point (x,y)
Visual Basic

128

Aceast proprietate returneaz valoarea funciei RGB a punctului de
coordonate x, y.
Unitatea de msur este cea setat prin proprietatea ScaleMode.


Popupmenu

Aparine ferestrelor.
Aceast proprietate afieaz un meniu popup la coordonatele date de
poziia curent a mouse-ului sau la coordonatele specificate de programator.
Formatul general:

[<fereastr>.]PopupMenu nume_meniu [, flags [, x [, y] ] ]

unde:
nume_meniu : reprezint valoarea proprietii Name a unei opiuni
principale definite n cadrul ferestrei de realizare a
meniurilor (Menu Design Window) i care trebuie sa
aib cel puin o subopiune;
x,y : reprezint abscisa respectiv ordonata punctului unde va fi afiat
meniul popup;
flags : reprezint o constant prin care se determin poziia meniului
popup fa de coordonata x i modul de activare al acestuia. Ea
poate avea urmtoarele valori:
0 POPUPMENU_LEFTALIGN : (Implicit) meniul popup este
aliniat la stnga fa de x;
4 POPUPMENU_CENTERALIGN : meniul popup este centrat fa
de x;
8 POPUPMENU_RIGHTALIGN : meniul popup este aliniat la
dreapta fa de x.

Pentru modul de activare:

0 POPUPMENU_LEFTBUTTON : (implicit) meniul popup
recunoate (activeaz) atunci
Proprietile, metodele i evenimentele obiectelor
129
cnd utilizatorul apas butonul
stng al mouse-ului;
2 POPUPMENU_RIGHTBUTTON : meniul popup se activeaz
atunci cnd utilizatorul apas
butonul drept al mouse-ului.

Pentru a utiliza n cadrul parametrului flags ambele tipuri de
constante se folosete operatorul logic OR.
Unitatea de masur n care sunt exprimate coordonatele x i y este
dat de valoarea proprietii ScaleMode (implicit 1-Twips)

Exemplu: Aplicaia 8 din capitolul 6.


Pset

Aparine ferestrelor simple, casetelor de imagini i imprimantei.
Aceast metod permite desenarea unui punct n cadrul obiectului
respectiv.
Formatul general:

[<obiect>.]PSet [Step](x, y)[,culoare]

unde:
x,y : reprezint abscisa i ordonata punctului ce va fi desenat.
Mrimea punctului depinde de valoarea proprietii DrawWidth.






Refresh

Aparine tuturor obiectelor exceptnd ferestrele "mam" (MDIform),
meniurile, minutarul i obiectele speciale.
Visual Basic

130
Atunci cnd este folosit aceast metod reactualizeaz obiectul
respectiv (proprietile acestuia).

Formatul general:

[<obiect>].Refresh


RemoveItem

Aparine casetei de listare i casetei combo.
Aceast proprietate terge un element din cadrul listei acestor
obiecte.
Formatul general:

<obiect>.RemoveItem index

unde index este un numr ntreg ce reprezint poziia elementului
respectiv n list.

Exemplu:
Dac din cadrul unei liste (figura 3.16) se dorete s se tearg
elementul al treilea se va utiliza urmtoarea linie program:

List1.RemoveItem 2






Proprietile, metodele i evenimentele obiectelor
131


Fig. 3.16. Coninutul listei List1.

Rezultatul este prezentat n figura 3.17.



Fig. 3.17. Efectul metodei RemoveItem.


Scale

Aparine ferestrelor simple, casetei de imagini i imprimantei.
Aceast metod permite stabilirea coordonatelor sistem ale
obiectului la care se refer.
Visual Basic

132
Formatul general:
[<obiect>.]Scale [(x1, y1) - (x2, y2)]

unde:
x1,y1 : reprezint coordonatele colului din stnga sus a obiectului;
x2,y2 : reprezint coordonatele colului din dreapta jos a obiectului.


SetFocus

Aparine tuturor obiectelor n afar de chenar, meniu, linie grafic,
elemente grafice (shape), minutar, imagine (image).
Aceast metod transmite focus-ul obiectului n legtur cu care este
folosit, adic acel obiect va deveni obiectul activ n cadrul aplicaiei.
Formatul general:

<obiect>.SetFocus

Aceast metod nu poate fi folosit n legtur cu obiectele care au
valoarea proprietii Enabled setat False.


Show

Aparine ferestrelor.
Aceast proprietate activeaz (ncarc n memorie i pe ecran)
fereastra la care se refer.
Formatul general:

[<nume_fereastr>.]Show [stil]
unde:
stil : reprezint modul de ncrcare a ferestrei, dac ea va fi o fereastr
modal sau nu i poate lua una din urmtoarele valori:
0 : fereastr nemodal;
1 : fereastr modal.
Proprietile, metodele i evenimentele obiectelor
133
Fereastr modal este acea fereastr care nu se nchide dect atunci
cnd utilizatorul a realizat o aciune cerut de aceast fereastr (apsarea
unui buton, editarea unui text n zona de editare, etc.).
Fereastr "mam" (MDIform) nu poate fi setat ca fereastr modal.


TextHeight

Aparine ferestrelor simple, casetei de imagini i imprimantei.
Aceast metod returneaz nlimea (n unitatea de msur curent
exprimat prin proprietatea ScaleMode) unui text din cadrul obiectului la
care se refer.
Formatul general:

[<obiect>.]TextHeight (text)

unde text este o variabil de tip ir de caractere, care reprezint textul a crui
nlime va fi returnat de metod TextHeight.


TextWidth

Aparine ferestrelor simple, casetei de imagini i imprimantei.
Aceast metod returneaz lungimea (n unitatea de msur curent
exprimat prin proprietatea ScaleMode) unui text din cadrul obiectului la
care se refer.
Formatul general:

[<obiect>.]TextWidth (text)

unde text este o variabil de tip ir de caractere, care reprezint textul a crui
lungime va fi returnat de metod TextWidth.


3.3. Evenimentele

Visual Basic

134
Fiecare obiect din cadrul interfeei aplicaiei (fereastra de lucru i
controalele) "reacioneaz" la anumite evenimente cum ar fi : apsarea unei
taste, un click sau dublu click mouse, schimbarea proprietilor unui obiect,
redimensionarea obiectului, etc. Aceste evenimente pot fi clasificate n
evenimente externe i evenimente interne.
Evenimentele externe sunt acele evenimente generate de aciunea
utilizatorului (acionarea unei taste, un click sau dublu click
mouse, etc);
Evenimentele interne aplicaiei sunt generate de modificarea
valorilor unor proprieti independent de aciunile utilizatorului
(evenimentul Timer al minutarului, etc.).
n Visual Basic fiecrui eveniment i este asociat o procedur
(subrutin) eveniment n cadrul creia programatorul poate introduce
instruciunile ce vor fi executate n momentul producerii evenimentului.
Sintaxa unei proceduri eveniment e urmtoarea :

[Private| Public| Friend] [Static] Sub <obiect>_<eveniment>(parametrii)
[instruciuni]
[Exit Sub]
[instruciuni]
End Sub

unde:
Private| Public| Friend: aceste instruciuni sunt opionale. Dac sunt
utilizate ele se exclud reciproc, astfel nct, doar una dintre ele poate fi
activ la un moment dat. Ele specific modul de accesare a procedurii
eveniment n cadrul programului, astfel:
Private: specific faptul c procedura la care se refer este
recunoscut i poate fi accesat;
Public: specific faptul c procedura la care se refer este
recunoscut i poate fi accesat de ctre toate procedurile i
modulele programului;
Friend: poate fi utilizat doar pentru declararea procedurilor din
cadrul modulelor de definire a claselor pentru obiecte. Ea
specific faptul c procedura la care se refer poate fi accesat de
Proprietile, metodele i evenimentele obiectelor
135
alte proceduri din modulul clas, dar nu poate fi accesat prin
intermediul instanei la acea clas.
Static: specific faptul c variabilele declarate, n cadrul procedurii la
care se refer, sunt recunoscute doar n cadrul acestei proceduri;
<obiect>: reprezint numele obiectului cruia i aparine evenimentul
respectiv;
<evenimentul>: reprezint denumirea (identificatorul) evenimentului;
parametrii: reprezint variabile ce pot fi utilizate n legtur cu
procedura eveniment.

Exemplu:

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Form1.Caption = Str(X) + " " + Str(Y)
End Sub

Aceast procedur reprezint evenimentul MouseMove (deplasarea
cursorului mouse-ului) aferent ferestrei. Ea are ca i parametri variabila
Button care returneaz o valoare ce reprezint butonul de mouse acionat i
variabilele x i y care returneaz poziia mouse-ului. Linia program din
interiorul procedurii are ca rezultat, n momentul deplasrii mouse-ului pe
fereastr, afiarea n titlul ferestrei a poziiei mouse-ului pe fereastr n
funcie de cele dou variabile x i y.
Evenimentul click mouse corespunztor obiectului Command1 de pe
fereastra machet este urmtorul:

Private Sub Command1_Click()
[instruciuni]
End Sub

Procedura eveniment asociat unui obiect are ca efect executarea
instruciunilor, din cadrul procedurii, n momentul n care apare
evenimentul la care se refer.

Visual Basic

136
Obiectele puse la dispoziia programatorului nu reacioneaz la
aceleai evenimente. De exemplu minutarul nu are dect procedura
eveniment Timer.
Programul surs corespunztor fiecrei proceduri eveniment se va
introduce n cadrul ferestrei (Code) de editare a programului (figura 3.18.).
Activarea ferestrei Code se realizeaz att printr-un dublu click mouse pe
obiectul din machet, ct i prin selectarea opiunii Code din cadrul
meniului View.




















Fig. 3.18. Fereastra Code.


Fereastra Code are urmtoarele elemente:
Caseta combo Object (figura 3.19.): permite afiarea unei liste
din cadrul creia poate fi ales obiectul, din machet, pentru care
se va introduce programul corespunztor procedurilor sale
eveniment;
Caseta combo
Object
Caseta combo
Procedure
Caseta de
editare a
programului
Butonul de
vizualizare
doar a
procedurilor
Butonul de
vizualizare a
ntregului
program
Proprietile, metodele i evenimentele obiectelor
137



Fig. 3.19. Coninutul casetei Object.

Caseta combo Procedure (figura 3.20.): permite afiarea unei
liste care conine toate procedurile eveniment ce pot fi utilizate
n legtur cu obiectul selectat n caseta Object;



Fig. 3.20. Coninutul casetei Procedure.
Caseta de editare (scriere) a programului surs: permite
introducerea instruciunilor corespunztoare att declaraiilor i
procedurilor generale (General), ct i a instruciunilor
corespunztoare procedurilor eveniment;
Butonul de vizualizarea doar a procedurilor: acionarea acestui
buton are ca rezultat vizualizarea, n cadrul casetei de scriere
Visual Basic

138
(editare) a programului, doar a procedurilor (subrutinelor)
ascunznd zona declaraiilor (General);
Butonul de vizualizare a ntregului program: permite afiarea n
cadrul casetei de scriere a programului, att a procedurilor
eveniment ct i a declaraiilor corespunztoare modulului
curent.

Cele mai importante i mai utilizate proceduri eveniment n Visual
Basic sunt urmtoarele:


Activate / Deactivate

Aparin ferestrelor.
Evenimentele Activate si Deactivate apar atunci cnd fereastra este
activat (Activate), respectiv cnd ea devine o fereastr pasiv (Deactivate).
Ferestrele active sunt acelea asupra crora este transmis focus-ul, fie
de ctre utilizator, fie de ctre programator prin utilizarea instruciunilor
SetFocus sau Show. Dezactivarea ferestrelor se realizeaz prin utilizarea
metodei Hide, a instruciunii UnLoad sau prin setarea proprietii Visible pe
valoarea False.
Formatul general este urmtorul :

Sub Form_Activate ( )
End Sub

Sub MDIForm_Activate ( )
End Sub

Sub Form_Deactivate ( )
End Sub

Sub MDIForm_Deactivate ( )
End Sub


Proprietile, metodele i evenimentele obiectelor
139
Change

Evenimentul poate s apar la urmtoarele controalele : caseta
combo, caseta de selecie a unitilor de disc, a directoarelor, etichete, zona
de imagini, bare de defilare i caseta de editare.
Acest eveniment apare la schimbarea coninutului acestor obiecte
(valorilor unor proprieti ale obiectului respectiv).
Format general:

Sub <obiect>_Change( [index As Integer] )
End Sub

unde index este folosit pentru identificarea obiectului n cazul cnd exist un
tablou de obiecte de acelai tip.

Astfel :
n cadrul casetei combo acest eveniment apare cnd valoare din cadrul
casetei de editare a cutiei este modificat (schimbat) prin intervenia
utilizatorului. Deci valoarea proprietii Text a fost modificat.

n cadrul casetei de selecie a unitilor de disc evenimentul Change este
generat n urmtoarele cazuri :
utilizatorul selecteaz o unitate nou de disc din list;
proprietatea Drive a fost modificat pe parcursul executrii
programului.

n cadrul casetei de selecie a directoarelor acest eveniment este generat
n urmtoarele cazuri:
utilizatorul selecteaz un nou director;
proprietatea Path a fost modificat n cursul executrii programului.

n cazul etichetelor, acest eveniment este generat n urmtoarele cazuri:
se realizeaz un schimb dinamic de date ntre eticheta i elementul
unei alte aplicaii Windows, o legtur DDE;
Visual Basic

140
proprietatea Caption a fost modificat n cursul executrii
programului.

n cazul zonei de imagini, acest eveniment este generat n urmtoarele
cazuri:
zona de imagini are o legtur DDE;
proprietatea Picture a fost modificat n cursul executrii
programului.

n cazul barelor de defilare, acest eveniment este generat n urmtoarele
cazuri :
utilizatorul deplaseaz pointerul pe bara de defilare;
proprietatea Value a fost modificat n cursul executrii
programului.

n cadrul casetei de editare, acest eveniment este generat n urmtoarele
cazuri :
utilizatorul modific coninutul casetei de editare;
proprietatea Text a fost modificat n cursul executrii programului.


Click

Acest eveniment aparine tuturor obiectelor, fr caseta de selecie a
unitilor de disc, chenar (cadru), barele de defilare, caseta de editare,
minutarul i toate obiectele speciale.
Evenimentul Click este generat atunci cnd utilizatorul realizeaz
un click pe butonul stng al mouse-ului n momentul n care cursorul
acestuia este poziionat pe obiectul respectiv.
Acest eveniment poate fi generat n aceeai msur acionnd tasta
<ESC> (la butoanele de comand proprietatea Cancel trebuie sa aib
valoarea True), sau <Space>.
Format general:

Sub Form_Click() - pentru ferestre.
Proprietile, metodele i evenimentele obiectelor
141
End Sub

Sub <obiect>_Click( [index as Integer] ) - pentru celelalte obiecte.
End Sub

Exemplu:
Pentru a schimba textul coninut n cadrul unei etichete, la
executarea unui click mouse pe butonul de comand Command1, se va
utiliza urmtoarea procedur eveniment:


Private Sub Command1_Click()
Label1.Caption = "Test Click mouse"
End Sub

Rezultatul este prezentat n figura 3.21:



Figura 3.21. Efectul procedurii Click asociate butonului de comand
Command1.


DoubleClick (DblClick)

Evenimentul aparine urmtoarelor obiecte : caseta combo, caseta de
selecie a fiierelor, fereastra, eticheta, butonul de opiune, chenar, caseta de
editare, zona de imagini i caseta de listare.
Visual Basic

142
Evenimentul DblClick este generat atunci cnd utilizatorul
realizeaz un dublu click mouse pe obiect.
Formatul general:

Sub Form_DblClick()
End Sub

Sub <obiect>_Dblclick( [index As Integer] )
End Sub


DragDrop

Aparine tuturor obiectelor fr meniu, minutar i obiectele speciale.
Evenimentul DragDrop este generat de operaiunea de glisare (Drag &
Drop) realizat asupra obiectului respectiv. Aceast operaiune se realizeaz
astfel: se poziioneaz pointerul mouse-ului pe obiect; meninnd butonul
stng al acestuia apsat se deplaseaz obiectul respectiv pe suprafaa
ferestrei pn n poziia n care se dorete a fi depus; se elibereaz butonul
mouse-ului.
Evenimentul DragDrop apare numai atunci cnd metoda Drag este
utilizat.
Formatul general:

Sub Form_DragDrop(Source As Control, X As Single, Y As Single)
End Sub

Sub MDIForm_DragDrop(Source As Control, X As Single, Y As Single)
End Sub

Sub <obiect>_DragDrop([Index As Integer,]Source As Control, X As
Single, Y As Single)
End Sub

unde :
Proprietile, metodele i evenimentele obiectelor
143
Source As Control: corespunde obiectului care este deplasat. Se poate
utiliza instruciunea If Type of Source Is... pentru determinarea exact a
tipului de obiect;
X i Y: reprezentnd coordonatele pointerului mouse-ului cnd obiectul
este depus.


DragOver

Aparine tuturor obiectelor, fr meniu, minutar i obiecte speciale.
Evenimentul DragOver apare atunci cnd utilizatorul deplaseaz un
obiect peste alte obiecte din cadrul interfeei. Acest eveniment se produce de
fiecare dat cnd pointerul mouse-ului e deplasat atunci cnd se efectueaz
operaia de "tragere" a obiectului.
Formatul general:

Sub Form_DragOver(Source As Control, X As Single, Y As Single, State
As Integer)
End Sub

Sub MDIForm_DragOver(Source As Control, X As Single, Y As Single,
State As Integer)
End Sub

Sub <obiect>_DragOver([Index As Integer,]Source As Control, X As
Single, Y As Single, State As Integer)
End Sub



unde :
Sursa As Control : corespunde obiectului care este deplasat. Ca i n
cazul evenimentului DragDrop se poate utiliza instruciunea If Type of
Source Is ... pentru a determina exact tipul de obiect;
X i Y : reprezint coordonatele pointerului mouse-ului cnd obiectul
este deplasat (glisat);
Visual Basic

144
State: (stare) permite cunoaterea n care moment obiectul deplasat trece
pe sub alte obiecte ale ferestrei. Parametrul State poate avea una din
urmtoarele valori :
0 : pointerul mouse-ului se gsete sub un alt obiect de unde va
ncepe deplasarea;
1 : pointerul mouse-ului termin deplasarea sa sub un alt obiect;
2 : pointerul mouse-ului se deplaseaz sub un alt obiect.


DropDown

Aparine casetei combo.
Evenimentul DropDown este generat atunci cnd utilizatorul apas
pe butonul de derulare (sgeata) a unei casete combo.
Format general:

Sub <obiect>_DropDown( [Index As Integer] )
End Sub


GotFocus

Aparine tuturor obiectelor, fr cadru, etichete, meniu, minutar i
obiecte speciale.
Evenimentul GotFocus este generat atunci cnd un obiect primete
focus-ul (prin acionarea tastei <TAB>, sau a butonului stnga mouse,
operaii realizate de ctre utilizator). Acest eveniment poate apare i atunci
cnd programatorul folosete n cadrul sursei program a aplicaiei metoda
SetFocus.
Formatul general:

Sub Form_GotFocus( )
End Sub

Sub <obiect>_GotFocus([Index As Integer] )
End Sub
Proprietile, metodele i evenimentele obiectelor
145


KeyDown, KeyUp

Aparine tuturor obiectelor fr cadru, etichete, minutar i obiecte
speciale.
Evenimentele KeyDown si KeyUp sunt generate atunci cnd
utilizatorul a acionat o tast (KeyDown) sau a eliberat tasta (KeyUp).
Formatul general:

Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
End Sub

Sub <obiect>_KeyDown([Index As Integer,]KeyCode As Integer, Shift As
Integer)
End Sub

Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
End Sub

Sub <obiect>_KeyUp([Index As Integer,]KeyCode As Integer, Shift As
Integer)
End Sub

unde :
KeyCode: reprezint codul ASCII corespunztor unei taste apsate sau
eliberate. n fiierul constant.txt sunt declarate constantele aferente
tastelor. De exemplu Key_F1 care corespunde tastei F1 sau Key_Down
care corespunde tastei sgeat n jos;
Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2)
i <Alt> (valoarea 4) sunt apsate n momentul evenimentului.

Observaie:
Evenimentele KeyDown i KeyUp nu sunt generate dac:
n cazul butoanelor de comand proprietile Default sau Cancel sunt
True;
Visual Basic

146
tasta <Tab> este acionat.


KeyPress

Aparine tuturor obiectelor, fr cadru, etichete, meniu, minutar i
obiecte speciale.
Evenimentul KeyPress este generat de acionarea unei taste.
Format general:

Sub Form_KeyPress(KeyAscii As Integer)
End Sub

Sub <obiect>_KeyPress([Index As Integer,]KeyAscii As Integer)
End Sub

unde :
KeyAscii: corespunde codului ASCII al tastei acionate.

Observaie:
Acest eveniment nu este generat dac una dintre tastele <Shift>,
<Ctrl> sau <Alt> este apsat.





LinkClose

Aparine urmtoarelor obiecte : fereastra, etichete, zona de imagine
i zona de editare.
Evenimentul este generat atunci cnd se ntrerupe (termin)
schimbul dinamic de date cu o alta aplicaie Windows (se ntrerupe o
legtur DDE). Procedura eveniment asociat este n general utilizat pentru
a indica (de exemplu prin instruciunea MsgBox) terminarea schimbului
dinamic de date.
Proprietile, metodele i evenimentele obiectelor
147
Formatul general:

Sub {Form|MDIForm}_LinkClose( )
End Sub

Sub <obiect>_LinkClose( [Index As Integer] )
End Sub


LinkError

Aparine obiectelor : fereastra, eticheta, zona de imagini i caseta de
editare.
Evenimentul este generat cnd apare o eroare n timpul legturii
DDE cu o aplicaie Windows.
Formatul general:

Sub {Form|MDIForm}_LinkError(LinkErr As Integer)
End Sub

Sub <obiect>_LinkError([Index As Integer,]LinkErr As Integer)
End Sub

unde parametrul LinkErr poate lua o valoare ntre 1 i 12 i reprezint
eroarea ce poate apare. Valorile 1,6,7,8 sunt declarate ca i constante
globale n fiierul constant.txt care poate fi inclus n aplicaie.


LinkExecute

Aparine ferestrelor.
Evenimentul apare atunci cnd o comand a fost trimis unei ferestre
dintr-o alt aplicaie (care este client ntr-o legtur DDE). Aceast
comand este trimis ca ir de caractere (parametru a procedurii eveniment
asociat).
Format general:
Visual Basic

148

Sub {Form|MDIForm}_LinkExecute(CmdStr As String, Cancel As
Integer)
End Sub

unde :
Cmdstr: reprezint comanda transmis de fereastra aplicaiei client;
Cancel: poate lua valoarea 0, ceea ce semnific faptul c comanda a fost
acceptat de aplicaia client, sau o valoare diferit de 0, ceea ce semnific
faptul c comanda nu a fost acceptat de client.


LinkOpen

Aparine obiectelor : fereastra, eticheta, zona de imagini i caseta de
editare.
Evenimentul LinkOpen apare atunci cnd este iniiat o legtur
DDE.
Format general:

Sub {Form|MDIForm}_LinkOpen(Cancel As Integer)
End Sub

Sub <obiect>_LinkOpen([Index As Integer,]Cancel As Integer)
End Sub

unde parametrul Cancel poate lua valoarea 0, caz n care legtura cu
aplicaia client continu, sau o valoare diferit de 0, caz n care legtura este
abandonat.


Load

Aparine ferestrelor.
Evenimentul Load este generat atunci cnd o fereastra este ncrcat
pe ecran.
Proprietile, metodele i evenimentele obiectelor
149
Format general:

Sub Form_Load( )
End Sub

Sub MDIForm_Load( )
End Sub

Procedura eveniment asociat evenimentului Load corespunztor
ferestrei principale a aplicaiei este executat prima n momentul lansrii n
execuie a aplicaiei.

Exemplu:
Pentru iniierea unei variabile la ncrcarea unei ferestre se va asocia
valoarea variabilei n cadrul procedurii eveniment Load, astfel:

Private Sub Form_Load()
i = 1
End Sub




LostFocus

Aparine tuturor obiectelor fr cadru, eticheta, meniu, minutar i
obiectele speciale.
Evenimentul este generat atunci cnd un obiect este dezactivat
(pierde focus-ul). Acest eveniment se petrece cnd utilizatorul acioneaz
tasta <Tab>, realizeaz un click mouse pe un alt obiect sau metoda
SetFocus este executat trecnd focus-ul obiectului respectiv.
Formatul general:

Sub Form_LostFocus( )
End Sub

Visual Basic

150
Sub <obiect>_LostFocus([Index As Integer])
End Sub


MouseDown, MouseUp

Aparine tuturor obiectelor, fr minutar si obiectele speciale.
Evenimentele sunt generate atunci cnd utilizatorul acioneaz fr
s elibereze butonul mouse-ului (MouseDown) sau elibereaz butonul
acestuia (MouseUp).
Format general:

Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single,
Y As Single)
End Sub

Sub <obiect>_MouseDown([Index As Integer,]Button As Integer, Shift
As Integer, X As Single, Y As Single)
End Sub



Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y
As Single)
End Sub

Sub <obiect>_MouseUp([Index As Integer,]Button As Integer, Shift As
Integer, X As Single, Y As Single)

unde :
Button: indic butonul care a fost apsat sau eliberat ( 1 - buton stnga, 2
- buton dreapta, 4 - buton central);
Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2)
i <Alt> (valoarea 4) sunt acionate n momentul evenimentului. Dac
mai multe taste sunt acionate, Visual Basic returneaz suma valorilor
corespunztoare fiecrei taste acionate;
Proprietile, metodele i evenimentele obiectelor
151
X i Y: corespund coordonatelor poziiei pointerului mouse-ului n
momentul evenimentului.


MouseMove

Aparine tuturor obiectelor, fr minutar i obiectele speciale.
Evenimentul MouseMove este generat atunci cnd utilizatorul
deplaseaz cursorul mouse-ului peste obiectul respectiv.
Format general:

Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single,
Y As Single)
End Sub

Sub <obiect>_MouseMove([Index As Integer,] Button As Integer, Shift
As Integer, X As Single, Y As Single)

unde :
Button: indic dac unul sau mai multe butoane ale mouse-ului sunt
acionate (returneaz: 1 - buton stnga, 2 - buton dreapta, 4 - buton
central ) n timpul evenimentului. Dac mai multe butoane sunt apsate,
Visual Basic returneaz suma valorilor corespunztoare butoanelor
acionate;
Shift: determin dac tastele <Shift> (valoarea 1), <Ctrl> (valoarea 2)
i <Alt> (valoarea 4) sunt apsate n momentul evenimentului. Dac
mai multe butoane sunt apsate, Visual Basic returneaz suma valorilor
corespunztoare fiecrui buton apsat;
X i Y: corespund coordonatelor poziiei pointer-ului mouse-ului n
momentul evenimentului.


Paint

Aparine obiectelor : fereastra i zona de imagini.
Visual Basic

152
Evenimentul Paint apare atunci cnd o parte, toat fereastra, sau
zona de imagini este iniiat pentru a fi ncrcat cu o imagine.
Formatul general:

Sub Form_Paint( )
End Sub

Sub <obiect>_Paint([Index As Integer])
End Sub

Acest eveniment nu se produce atunci cnd proprietatea AutoRedraw
a obiectului are valoarea True.


PathChange

Aparine casetei de selecie a fiierelor.
Evenimentul apare atunci cnd valorile proprietilor Path sau
FileName au fost modificate n cadrul programului a aplicaiei.

Formatul general:

Sub <obiect>_PathChange([Index As Integer])
End Sub

Procedura eveniment asociat este executat cnd utilizatorul
selecteaz un nou fiier din caseta de selecie a fiierelor.


PatternChange

Aparine casetei de selecie a fiierelor.
Evenimentul apare atunci cnd utilizatorul introduce un nou filtru de
selecie a fiierelor n caseta de editare a obiectului.
Aceast procedur este executat cnd valoarea proprietii
FileName sau Pattern sunt modificate.
Proprietile, metodele i evenimentele obiectelor
153
Formatul general:

Sub <obiect>_PatternChange([Index As Integer])
End Sub


Resize

Aparine ferestrelor i zonelor de imagini.
Evenimentul Resize este generat atunci cnd se modific
dimensiunile ferestrei sau a zonei de imagini.
Formatul general:

Sub {Form|MDIForm|picturebox}_Resize( )
End Sub





Timer

Aparine minutarului.
Evenimentul apare de fiecare dat cnd intervalul de timp definit
prin proprietatea Interval sa consumat.
Aceast procedur este executat la intervale regulate. Perioada la
care apare acest eveniment este indicat n proprietatea Interval n
milisecunde.
Formatul general:

Sub <obiect>_Timer([Index As Integer])
End Sub


UnLoad

Visual Basic

154
Aparine ferestrelor.
Evenimentul este generat atunci cnd o fereastr este suprimat de
pe ecran i din memorie. Acest eveniment se produce cnd utilizatorul a
realizat un dublu click mouse pe butonul de nchidere a ferestrei, cnd n
program a fost folosit instruciunea UnLoad sau atunci cnd aplicaia este
nchis forat prin acionarea combinaiei de taste
<Ctrl>+<Alt>+<Delete>.
Formatul general:

Sub {Form|MDIForm}_Unload(Cancel As Integer)
End Sub

unde Cancel anuleaz operaia de suprimare a ferestrei cnd valoarea sa este
diferit de 0.

Observaie:
Procedura eveniment asociat evenimentului UnLoad nu este
executat dac aplicaia este nchis utiliznd instruciunea End.
Limbajul de programare
155










4.1. Linia de program

Un program surs Visual Basic este constituit din una sau mai multe
linii de program; n principiu o linie de program are dou poziii: o
instruciune i un argument.

Exemplu:
PRINT TIME$
Lungimea unei linii nu poate s depeasc 1024 caractere. O
instruciune poate ocupa i dou linii, reunite printr-o linie de subliniere _
plasat la sfritul primei linii.

Exemplu:
D=B^2-4*A_
*C
este echivalent cu:
D=B^2-4*A*C
O linie de program poate conine mai multe instruciuni separate prin
caracterul :, lucru nerecomandabil datorit dificultilor de citire i
nelegere a programului.

Exemplu:
A=25: B=10: PRINT A*B
Liniile de program pot fi scrise cu majuscule i/sau cu minuscule.


Visual Basic
156
4.2. Cuvintele

Prin juxtapunerea caracterelor alfabetice, numerice, italice i chiar
unele caractere speciale se formeaz cuvintele.
Acestea se pot grupa n 2 categorii:
cuvinte rezervate (cheie);
cuvinte utilizator.
Cuvintele rezervate (cheie) au fost create de autorii limbajului, au o
semnificaie predefinit, motiv pentru care pot fi folosite numai n modul n
care sunt specificate n formatele generale (de exemplu: PRINT,
FORNEXT, DOLOOP, etc).
Cuvintele utilizator sunt create de programator att pentru a defini
datele ce se prelucreaz, programele, fiierele, procedurile, ct i pentru a
nscrie comentarii n programe etc. (de exemplu: CANTITATE, PU,
VALOARE etc.).


4.3. Constantele

Constanta reprezint o zon de memorie n care sunt stocate valori
(cifre sau iruri de caractere), care rmn aceleai pe toat durata execuiei
programului.
Utilizarea unei constante prezint dou avantaje:
un nume este adesea mai explicit dect o valoare;
dac constanta este utilizat de mai multe ori n program, modificarea
valorii asociate acesteia implic o singur schimbare la nivelul declaraiei
constantei.
Pentru declararea unei constante este necesar utilizarea instruciunii Const.
Sintaxa instruciunii este urmtoarea:

[Global] Const nume_constant=expresie [, nume_constant=expresie]



unde:
Limbajul de programare
157
Global este un cuvnt rezervat, care precede instruciunea Const, ce
se utilizeaz pentru definirea constantelor globale recunoscute de toate
procedurile, toate formele i modulele;
nume_constant sau identificator reprezint numele atribuit
constantei;
expresie: este valoarea asociat constantei i poate fi un numr, un ir
de caractere sau o expresie aritmetic sau logic cu excepia
operaiilor exponeniale. n cadrul expresiei nu pot fi folosite
variabile, iruri concatenate, funcii utilizator sau funcii intrinseci n
Visual Basic . De asemenea, se pot defini constante ale cror expresii
conin alte constante deja definite.

Exemplu:
Const pi=3,14, Obs=bursieri

Tipul constantei poate fi definit printr-un sufix ce se concateneaz la
numele constantei putnd fi unul din: %, &, !, #, $. Acest caracter nu face
parte din nume.

Exemplu:
Const MAXDIM%=250
Dim Nume$(MAXDIM)

Dac nu se folosete un caracter de definire a tipului constantei,
tipul constantei este dat de tipul datei de baz din expresia coninut de
Const.
Dac expresia este un ir, atunci tipul constantei este ir. Cnd
expresia este de tip numeric, ea este mai nti evaluat, iar tipul constantei
este dat de cel mai simplu tip care poate reprezenta constanta. Deoarece o
constant trebuie s fie de un singur tip predefinit, nu poate fi de tipul
Variant. Prin definiie, tipul Variant poate aprea ca diferite tipuri de date
ce decurg din context. Constantele nu sunt influenate de instruciunea
Deftype (exemplu: Defint). Constantele trebuiesc definite nainte de a fi
referite n program.
Constantele declarate n procedurile Sub sau Function sunt locale n
aceste proceduri. Constantele declarate n afara procedurii (ntr-o seciune
Visual Basic
158
de declaraie sau un modul) sunt definite prin intermediul modulelor n care
sunt declarate. Constantele declarate n afara unei proceduri folosind Global
pot fi folosite n toate procedurile, fiierele i modulele. Nu se poate folosi
Global pentru declararea constantelor ntr-o form, deoarece constantele
formei se pot folosi numai n procedura din forma n care au fost declarate.
Visual Basic conine i un ansamblu de constante predefinite care se
gsesc n fiierul Constant.txt din cadrul meniului File, care afieaz o
fereastr n cadrul creia se poate indica fiierul *.txt ce va fi ncrcat.
Utilizarea butonului de comand Merge determin Visual Basic-ul s
adauge definirile de constante textului eventual prezent, iar butonul Replace
nlocuiete textul cu un nou coninut.


4.4. Variabile

Ca toate limbajele de programare Visual Basic permite utilizarea
memoriei calculatorului pentru stocarea temporar a datelor utilizate de
programele ce se execut. Aceste zone de stocare rezidente n memorie
reprezint variabile de memorie. Variabilele sunt denumiri pe care
programul le asociaz cu locaii specifice de memorie n care sunt stocate
valori ce se pot modifica pe parcursul ntregii durate de via a programului.


4.4.1. Declararea variabilelor

Un program poate utiliza mai multe variabile, fiecare avnd un nume
unic care o identific la nivelul domeniului. Numele de variabile pot avea
maxim 256 de caractere, trebuie s nceap cu un caracter alfanumeric, nu
conin puncte sau spaii i nu pot fi cuvinte rezervate n limbajul Visual
Basic.
Fiecare variabil este de un anumit tip care informeaz calculatorul
ct memorie necesit i operaiile care pot fi realizate cu respectivul tip de
date.
Limbajul de programare
159
Pentru declararea unei variabile se utilizeaz patru instruciuni: DIM,
GLOBAL, STATIC i REDIM. Tipul variabilei poate fi definit cu ajutorul
unui caracter de tip adugat numelui variabilei (#, $, etc).
Instruciunea DIM declar variabilele i aloc spaiul de stocare
pentru acestea.
Sintaxa instruciunii Dim este urmtoarea:

DIM [WithEvents] nume_variabil [([subscripts])] [As [New] type]
[, [WithEvents] nume_variabil [([subscripts])] [As [New] type]] . . .

unde:
WithEvents: specific faptul c nume_variabil este un obiect
pentru a rspunde la evenimente create de un obiect ActiveX. Cu
aceast opiune nu se poate utiliza New. Cu WithEvents se pot
declara oricte variabile dar nu se pot definii vectori;
nume_variabil: este numele variabilei;
subscripts: se folosete pentru definirea vectorilor;
New: permite crearea implicit a unui obiect;
As: permite stabilirea tipului de date pentru variabile (Byte,
Boolean, Integer, Long, Currency, Single, Double, Date, String).
Dac clauza As este omis, tipul variabilei va fi cel implicit
(Variant cu excepia cazurilor cnd este schimbat cu ajutorul
instruciunii Deftip).


Declararea implicit

Variabilele pot s nu fie declarate nainte de prima lor utilizare n
program, pentru ele Visual Basic-ul alocnd n mod automat zone de
memorie.
Aceast manier poart numele de declarare implicit. Ea nu este
recomandat deoarece poate produce erori care impun declararea explicit a
variabilelor folosite n cadrul aplicaiei.


Exemplu:
Visual Basic
160
Canti=10
Pu=25
Valoare_int=Cant*Pu


Declararea explicit

Pentru a evita problemele legate de utilizarea greit a numelor
variabilelor, se poate plasa urmtoarea instruciune la nceputul unei
seciuni de declaraie n toate fiierele i modulele.

Option explicit

Aceast instruciune va genera un mesaj de eroare cnd se ntlnete
o variabil care nu a fost declarat n prealabil.
Instruciunea Option explicit poate fi inserat automat n toate
fiierele i modulele prin selectarea opiunii Reguied Variables Declaration
din caseta de dialog Environment Options a meniului Options (tastndu-se
Yes n caseta Settings), sau prin selectarea lui Yes n caseta list Setting.


4.4.2. Domeniul unei variabile

Toate variabilele Visual Basic au un domeniu n interiorul cruia
sunt recunoscute. Visual Basic permite trei domenii diferite i anume:
Local;
Modul;
Global sau form.


Variabile locale

Variabilele locale sunt declarate ntr-o procedur (cu instruciunile
DIM, STATIC, sau REDIM) fiind recunoscute numai n procedura n care
apar. Variabilele declarate cu DIM sunt active numai pe perioada executrii
Limbajul de programare
161
procedurii, n timp ce variabilele declarate cu STATIC i pstreaz valorile
pe tot timpul execuiei programului.

Exemplu:
Sub .calcul_p()..
Dim N
For N=1 To 10
Print N^2
Next
End Sub


Variabilele limitate la un modul sau form

Aici este vorba de un domeniu puin mai larg, deoarece variabilele
sunt recunoscute de toate procedurile i funciile unui modul sau unei forme.
Ele se declar cu instruciunea Dim n seciunea de declaraie a unei forme
sau a unui modul i i pstreaz valorile pe toat durata aplicaiei.


Variabile globale

Variabilele globale au raza de aciune cea mai larg. Ele sunt
recunoscute n toate procedurile i n toate funciile din cadrul aplicaiei, pe
toat durata de rulare.
Declararea unei astfel de variabile se face cu ajutorul instruciunii
GLOBAL n seciunea de declaraii a unui modul. Instruciunea GLOBAL
nu este admis n proceduri sau n modulul formei.

Exemplu:
Global .n As Double..

ntr-un program pot fi declarate dou variabile cu acelai nume, dar
la dou nivele diferite, ceea ce determin alocarea a dou zone de memorie
diferite. n procedur programul lucreaz cu variabila declarat n
procedur. n rest programul lucreaz cu variabila declarat n modul global.
Visual Basic
162


4.4.3. Durata de via a variabilelor

O alt caracteristic de care se ine seama la declararea variabilelor
este durata de via. Viaa unei variabile ncepe n momentul n care a fost
declarat i se regsete n memorie i se sfrete cnd nu mai este regsit
n memorie. Viaa unei variabile nu trebuie confundat cu domeniul. Exist
dou durate de via posibile pentru o variabil: viaa limitat la procedur
i viaa limitat la aplicaie.

Viaa limitat la procedur

Variabilele locale au o durat de via egal cu a procedurii n care
au fost declarate. Ele vor fi terse din memorie la finele perioadei de
execuie a procedurii n care au fost declarate.

Viaa limitat la aplicaie

Variabilele globale ca i cele de modul sau form au o durat de
via egal cu timpul rulrii aplicaiei. Pentru ca o variabil local s-i
pstreze valoarea pe tot timpul execuiei aplicaiei, ea se declar static.
Declararea uneia sau a mai multor variabile statice se face folosind
cuvntul rezervat Static, astfel:

Static nume_variabil

Exemplu:
Function Total _valoare (VAL As Single, N As Integer)
Static TV
TV=0
For i=1 To N
TV=TV+VAL
Next
Total_valoare = TV
End Function
Limbajul de programare
163

Pentru declararea tuturor variabilelor unei proceduri ca statice se
pune la nceputul procedurii cuvntul Static.

Exemplu:

Static Function
Static Sub


4.4.4. Tipuri de variabile

n Visual Basic pot fi utilizate 12 tipuri de variabile:

Tipul Descriere Sufix Lungim
e
Domeniul
INTEGER ntregi % 2 octei -32.76832.767
LONG ntregi lungi & 4 octei -2.147.483.648
2.147.483.647
CURRENCY Numere
zecima-le
cu virgul
fix
@ 8 octei -922.337.203.685.
477,5808
922.337.203.685.
477,5807

SINGLE Numere
zeci-male
cu virgul
flotant
simpl
precizie
(pentru
aplicaii
tiini-fice)
! 4 octei -3,402.823E38
-1,401.298E-45 si
1,401.298E-45
3,402.823E38
DOUBLE Numere
zecima-le
# 8
octei
-
1,797.693.134.86
Visual Basic
164
cu virgul
flotant
dubl
precizie
(pentru
calcule
tiinifi-ce)
232E308
-
4,940.656.458.41
247E-324
si
4,940.656.458.41
247E-324
1,797.693.134.86
232E308

STRING (ir) ir
caractere
$ lung.
varia-
bil
0 la aproximativ
65.500 caractere
STRING ir
caractere de
lungime
fix
$ lung.
fix
Lungime
predefinit
BYTE Suita de 8
biti
fr 1 octet 0 la 255
BOOLEAN Date de
tipul
adevrat
sau fals
fr 2
octei
True sau False
DATE Poate
conine data
i/sau ora
8
octei

VARIANT Depinde de
con-inutul
variabi-lei:
toate nume-
rele, toate
iru-rile,
toate datele
i orele.
fr lung.
varia-
bil

Limbajul de programare
165
OBJECT Fr 8 octei Stocheaz date
relative la o
instan a unei
clase sau obiect.

La datele de tip Boolean valoarea True este echivalent cu numrul
0, iar valoarea False este echivalent cu numrul -1. Aceast remarc nu
este conform cu logica matematic unde True (Adevarat) este asociat cu 1,
iar False (Fals) este asociat lui 0.

Exemplu:

Dim A As Integer
Dim B As Integer, C As Double
Static Data_calendar As Date
Global Pu AsVariant
Global Nume As Sring
Dim Stoc As Long, Cant As Currency, Pu, Valoare As Long

Dintre tipurile de variabile numerice, cel mai des se utilizeaz tipul
Double deoarece intervalul de valori posibile este maximal. O variabil de
acest tip poate gzdui valoarea oricrui numr imaginabil.
O variabil de tip Integer are cu certitudine un grad mai mare de
restricie n utilizare pentru c restrnge mult domeniul de valori. Cu toate
acestea, trebuie semnalate dou avantaje ale acestui tip. Primul ar fi c
ocup numai doi octei de memorie fa de patru ct ocup tipul Double, iar
datele de tip Integer sunt manipulate mai rapid dect celelalte tipuri.
Tipul Currency se utilizeaz n operaii cu date monetare i calcule de
gestiune unde exactitatea impune patru zecimale. Prezint un raport bun
ntre domeniul de valori i timpul de calcul, dar i un grad mare de ocupare
a memoriei.
Tipul Variant prezint o particularitate foarte interesant n Visual
Basic. Variant poate stoca date numerice cu sau fr virgula, iruri de
caractere, valori calendaristice sau orare. O variabil de tipul Variant este
o variabil a carui tip poate fi modificat liber. La modul intern i nevizibil,
Visual Basic
166
Visual Basic asociaz datei nsi o alt informaie care specific tipul
datei.
Tipul datei unei variabile Variant este accesibil graie funciei
VarType. Aceast funcie se utilizeaz pentru a afia tipul unei date ntr-o
etichet cu instruciunea urmtoare:
Eticheta =VarType (Stoc)

Funcia returneaz urmtoarele:

TIPUL DESCRIERE
0 Empty(=vide)
1 Null
2 Integer
3 Long
4 Single
5 Double
6 Currency
7 Date
8 String
11 Boolean
17 Byte
8192 Tablou

Empty i Null nu reprezint noi tipuri de date, ci coninuturi
particulare de variabile:
Empty: variabila nu a fost iniializat cu o dat;
Null: semnific faptul c informaia nu este cunoscut.
Exemplu: numele de fat pentru un brbat.
Programatorul nu trebuie s se ocupe cu tipul de date a unei variabile
Variant. Visual Basic iniializeaz singur tipul datei cnd se va da o valoare
variabilei. El va alege n mod automat i inteligent, tipul corespunznd cel
mai bine datei introduse. Apoi, chiar atunci cnd coninutul datei se
schimba, Visual Basic este capabil s-i aleag un alt tip de dat mai adecvat.


Limbajul de programare
167
Exemplu:

Dim Nume As Variant
Dim Cant_int As Variant, Cant_ies As Variant, Stoc As Variant
Dim Cod_mat As Variant
Dim Pu As Variant
Dim Data_nasterii As Variant, Varsta As Variant
Nume = Popescu
Cant_int =100000
Cant_ies =50000
Stoc =5
Pu =1500.50
Data_nasterii =#10/10/80#

n urma secvenei:
Varsta va fi de tip 0 (Empty) deoarece nu a fost iniializat;
Nume va fi de tip 8 (String);
Cant_int va fi de tipul 3 (Long) fiind mai mare decat 32767;
Cant_ies va fi de tipul 3 (Long);
Pu va fi de tipul 8 (String), care dac este un numr este pus ntre
semnele ghilimele;
Stocul va fi de tipul 2 (Integer);
Data_nasterii va fi de tipul 7 (Date);

Tipul DATE conine data i ora. Dac data nu este indicat ea este
30/12/1899 (data de natere a bunicului lui Bill Gates), iar dac nu este
indicat ora, este considerat miezul nopii.
Iniializarea datelor se face ntr-una din manierele urmtoare:
Data_1 = #10/10/1997 10:30 pm # data i ora (pm) semnific
22:30
Data_2 = #10/10/1997 10:30 # Data i ora (ora 10:30)
Ora = # 10:30 am # ora 10:30
Data_3 = #31/12/97 # 31.12.1997
Caracterele # sunt obligatorii, dar caracterele am i pm sunt automat
gsite dac sunt omise, de asemenea i secolul.

Visual Basic
168
4.5. Tipuri de date definite de utilizator

Pe lng cele 10 tipuri de date mai exist posibiliti ca
programatorul s-i defineasc propriile tipuri de date (structuri de date).
Acestea sunt ansambluri de date elementare ce se definesc cu ajutorul
instruciunilor Type i End Type n procedura Declaration , ntr-un
modul.BAS.
De exemplu, sistemul Articol conine toate datele aferente unui
articol, ele fiind manipulabile cu o singur variabil:

Type Articol
Cod As Integer
Nume As String
Pu As Currency
Stoc As Integer
End Type

Apoi, se poate declara o variabila de tipul Articol , ca i pentru
unul din tipurile standard, cu ajutorul instruciunii Dim:
Dim Articol_consumat As Articol
Dim Articol_aprovizionat As Articol
Fiecare din aceste doua variabile (Articol_consumat,
Articol_aprovizionat) vor fi compuse din patru cmpuri conform descrierii
din Type.
Exemplu de operatii:
Articolul_consumat. Stoc = 10
Articol_aprovizionat =Articolul_consumat
n primul caz, variabila stoc din articol_consumat ia valoarea 10. n
cel de-al doilea caz toate cmpurile din articol_consumat trec n
articol_aprovizionat.





Limbajul de programare
169
4.6. Operatorii

Un operator este un simbol, un caracter sau un cuvnt care
semnific o relaie ntre dou sau mai multe elemente.


4.6.1. Operatorii aritmetici

n Visual Basic se pot utiliza urmtorii operatori aritmetici:

OPERATORI DESCRIERE
+ Adunare
- Scdere
* nmulire
/ mprire
\ mprire ntreag (rezultatul este ntreg)
MOD Restul la mprire
^ Ridicare la putere

Observaie:
Visual Basic ofer funcia DIV n locul operatorului \ pentru
realizarea operaiunile de mprire ntreag.


4.6.2. Operatori de concatenare

Concatenarea a dou iruri de caractere se poate face cu unul din
operatorii + sau & (care sunt echivaleni).
x=ABC + DE
y=ABC & DE
n ambele cazuri rezultatul este un nou ir ABCDE.



4.6.3. Operatorii relaionali
Visual Basic
170

Operatorii relaionali admii sunt:

OPERATORI DESCRIERE
> Mai mare
< Mai mic
= Egal
> = sau = > Mai mare sau egal
< = sau = < Mai mic sau egal
< > sau > < Diferit de
Like Echivalen, congruen


4.6.4. Operatorii logici

Operatorii logici admii sunt:

OPERATORI DESCRIERE
AND (I) Rezultatul este adevrat cnd cei doi operanzi
sunt adevrai (X And Y)
NOT (NU) Rezultatul este adevrat dac operandul este
fals i invers (Not X)
OR (SAU) Rezultatul este adevrat dac unul din operanzi
este adevrat (X OR Y)
EQV
(ECHIVALENT)
Rezultatul este adevrat dac cei doi operanzi
sunt fie adevrai fie fali (X EQV Y)
IMP (IMPLICARE) Rezultatul este fals dac primul operand este
adevrat i urmtorul fals (X IMP Y)
XOR (EXCLUSIV) Rezultatul este adevrat dac unul din operanzi
este adevrat. Dac ambii operanzi sunt sau
adevrai sau fali rezultatul este fals.

IS Rezultatul este adevrat dac cei doi operanzi
(variabile de tip obiect) descind din acelai
obiect. Dac operanzi descind din obiecte
Limbajul de programare
171
diferite rezultatul este fals.

Execuia operatorilor n cadrul unei expresii se face ntr-o ordine
predeterminat numit precedena operatorilor. Aceast ordine poate fi
modificat prin utilizarea parantezelor n cadrul expresiei ce urmeaz a fi
evaluat.
n cazul n care, o expresie conine operatori de mai multe tipuri,
operatorii aritmetici sunt executai primii, apoi operatorii relaionali i n
final operatorii logici.
Ordinea de preceden (prioritatea n calcule a operaiilor) este
prezentat n urmtorul tabel:

OPERATORI
ARITMETICI
OPERATORI
RELAIONALI
OPERATORI
LOGICI
Exponentul (^) Egalitate (=) NOT
Negaie (-) Inegalitate (< >) AND
nmulire i mprire
(*,/)
Mai mic (<) OR
mprire ntreag (/) Mai mare (>) XOR
Modular (Mod) Mai mic sau egal (< =) EQV
Adunare i scdere (+,-) Mai mare sau egal (> =) IMP
Concatenarea irurilor & LIKE IS


4.7. Funciile integrate n Visual Basic

Exist numeroase funcii predefinite n Visual Basic.






4.7.1. Funcii matematice

Visual Basic
172
FUNCIA DESCRIEREA
Abs Returneaz valoarea absolut a unui numr (Abs
(x)).
Atn Returneaz aria tangent de x (Atn(x)).
Cos Returneaz cosinusul lui x.
Exp Returneaz e
x
la puterea parametrului (Exp(x)).
INT Returneaz poriunea ntreag a unui numr (INT
(x)).
FIX Returneaz partea ntreag a lui x prin trunchierea
lui x (FIX (x)).
LOG Returneaz logaritmul natural dintr-un numr (LOG
(x)).
SIGN Returneaz o valoare n funcie de semnul
parametrului (SIGN (x)) astfel:
1 pentru x>0
-1 pentru x<0
0 pentru x=0.
SIN Returneaz sinusul de x (n radiani).
TAN Returneaz tangenta de x (n radiani).


4.7.2. Funcii pentru gestionarea tipurilor de date

FUNCIA DESCRIEREA
Cbool Convertete n tip Boolean datele furnizate de
parametrii;
Cbyte Convertete n tip Byte datele furnizate de parametrii;
CCur Convertete n tip Currency datele furnizate de
parametrii;
CDate Convertete n tip Date datele furnizate de parametrii;
CDbl Convertete n tip Double datele furnizate de parametrii;
CInt Convertete n tip Integer datele furnizate de parametrii;
CLng Convertete n tip Long datele furnizate de parametrii;
CSng Convertete n tip Single datele furnizate de parametrii;
CStr Convertete n tip String datele furnizate de parametrii;
Limbajul de programare
173
CVar Convertete n tip Variant datele furnizate de parametrii;
IsArray Returneaz o valoare boolean adevrat dac
parametrul furnizat este nume de tablou;
IsDate Returneaz o valoare boolean adevrat dac
parametrul furnizat este o dat de tip Date;
IsEmpty Returneaz o valoare boolean adevrat dac
parametrul furnizat este numele unei variabile care nu a
fost iniializat;
IsNull Returneaz o valoare boolean adevrat dac
parametrul furnizat este numele unei variabile care are
coninutul Null;
IsNumeric Returneaz o valoare boolean adevrat dac
parametrul furnizat este numele unei date de tip
numeric;
Str Convertete un numr n ir de caractere;
Type Name Returneaz sub forma de nume tipul de dat furnizat de
parametru;
Val Convertete un ir n dat numeric;
VarType Returneaz sub forma de numr tipul de variabil
furnizat de parametru.


4.7.3. Funcii pentru iruri de caractere

FUNCII DESCRIEREA
Asc Returneaz valoarea numeric a codului Ascii al
primului caracter al irului furnizat ca parametru;
CHR,
CHR$
Returneaz caracterul al crui cod Ascii este furnizat
(reciproca funciei Asc);
Format Stabilete formatul de afiare a datelor de tip numeric,
sau date de tip ir;
Instr Caut un ir de caractere ntr-un alt ir de caractere
ncepnd cu un anumit caracter i returneaz 0 dac nu
gasete irul sau o valoare egal cu caracterul din al
doilea ir de la care cele dou iruri coincid (n%, A$,
Visual Basic
174
B$);
LCase Convertete n minuscule caracterul furnizat;
Left Returneaz caracterul cel mai de la stnga al irului
furnizat;
Len Returneaz lungimea, n octei, a irului furnizat;
LTrim Suprim spaiile de la stnga irului furnizat;
Mid Extrage un subir de caractere din cmpul de caractere
furnizat ca parametru;
Right Returneaz caracterul cel mai din dreapta al irului
furnizat ca parametru;
RTrim Suprim spaiile din dreapta irului furnizat;
Space Returneaz un ir de spaii cu lungimea egal cu
parametrul furnizat;
StrCnv Permite convertirea n majuscule a primei litere a
fiecrui cuvnt din irul furnizat;
String Returneaz un ir constituit din N caractere identice;
UCase Convertete n caracter majuscul parametrul furnizat.


4.7.4. Funcii pentru gestionarea datei i orei

FUNCIA DESCRIERE
Date Returneaz data calendaristic;
DateAdd Adaug o durat (la alegere: n ani, trimestre, luni,
sptmni, zile, ore, minute, secunde) la data furnizat;
DateDiff Returneaz diferena ntre dou date furnizate (la
alegere: n ani, trimestre, luni, sptmni, zile, ore,
minute, secunde);
DatePart Returneaz o parte a datei furnizate (la alegere: anul,
trimestrul, luna, sptmna, ora, minutul, secunda);
DateSerial Returneaz o dat de tip Date (anul, luna, ziua);
DateValue Returneaz o dat de tip Date sub forma:
15 mai 1997 sau 15/08.1997 sau 15-NOV-1997;
Day Returneaz ziua din lun (1 la 31) a datei furnizate;
Hour Returneaz un numr cuprins ntre 0 i 23 egal cu ora
Limbajul de programare
175
parametrului furnizat;
Minute Returneaz un numr cuprins ntre 0 i 59 egal cu
numrul de minute al parametrului furnizat;
Month Returneaz un numr cuprins ntre 1 i 12 egal cu
numrul de luni a parametrului furnizat;
Now Returneaz data i ora din sistem;
Second Returneaz un numr cuprins ntre 0 i 59 egal cu
numrul de secunde a parametrului furnizat;
Time Returneaz ora sistemului;

Timer Returneaz numrul de secunde care sunt trecute dintr-
un minut;
WeekDay Returneaz ziua din sptmna sub forma de numr (1
la 7);
Year Returneaz un numr egal cu anii din parametrul
furnizat.


4.7.5. Funcii matematice derivate

n tabelul urmtor sunt prezentate funciile matematice nonintrinseci
derivate din funcii matematice intrinseci livrate cu Visual Basic i modul
de obinere.

FUNCIE MOD DE OBINERE
Secant Sec(x)=1/Cos(x)
Cosecant Cosec(x)=1/Sin(x)
Cotangent Cotan(x)=1/Tan(x)
Sinus invers Arcsin(x)=Atn(x/Sqr(-x*x+1))
Cosinus invers Arccos(x)=Atn(-x/Sqr(-x*x+1))+1.5708
Secanta
invers
Arcsec(x)=Atn(x/Sqr(x*x+1))+Sgn(Sgn(x)-
1)*1.5708
Cosecanta
invers
Arccosec(x)=Atn(x/Sqr(x*x+1))+Sgn(Sgn(x)-
1)*1.5708
Cotangenta Arcotan(x)=Atn(x)+1.5708
Visual Basic
176
invers
Sinus
hiperbolic
HSin(x)=(Exp(x)-Exp(-x))/2
Cosinus
hiperbolic
HCos(x)=(Exp(x)-Exp(-x))/2
Tangenta
hiperbolic
HTan(x)=(Exp(x)-Exp(-x))/(Exp(x)+Exp(-x))
Secanta
hiperbolic
HSec(x)=2/(Exp(x)+Exp(-x))
Cosecanta
hiperbolic
HCosec(x)=2/(Exp(x)-Exp(-x))
Cotangenta
hiperbolic
HCotan(x)=(Exp(x)+Exp(-x))/(Exp(x)-Exp(-x))
Sinus
hiperbolic
invers
HArcsin(x)=Log(x+Sqr(x*x+1))
Cosinus
hiperbolic
invers
HArccos(x)=Log(x+Sqr(x*x-1))
Tangenta
hiperbolica
inversa
HArctan(x)=Log((1+x)/(1-x))/2
Secanta
hiperbolica
inversa
HArcsec(x)=Log((Sqr(-x*x+1)+1)/x)
Cosecanta
hiperbolica
inversa

HArccosec(x)=Log((Sgn(x)*Sqr(x*x+1)+1)/x)
Cotangenta
hiperbolica
inversa
HArccotan(x)=Log((x+1)/(x-1))/2
Limbajul de programare
177


4.7.6. Funcii de conversie a datelor

Realizeaz conversia expresiilor dintr-un tip de dat n altul.
Expresia poate s fie de tip ir sau numeric.

FUNCIA DIN IN
Ccur Orice expresie valid Currency
CDbl Orice expresie valid Double
Cint Orice expresie valid Integer
CLng Orice expresie valid Long
CSng Orice expresie valid Single
CStr Orice expresie valid String
Cvar Orice expresie valid Variant


4.8. Instruciuni

4.8.1. Instruciunea REM

Cu ajutorul acestei instruciuni se introduc comentarii n program.
Formatul general:

{REM} [comentariu]

Comentariul reprezint un ir de caractere alfanumerice care face posibil
nelegerea i utilizarea mai uoar a programului de catre utilizatori.
Folosind comentarii n program, acesta poate fi mai uor depanat, modificat
i adaptat cerinelor utilizatorului.
Toate liniile de comentariu sunt ignorate de ctre compilator n
momentul execuiei programului.
O linie de comentariu se caracterizeaza prin cuvntul rezervat REM
sau printr-un semn apostrof.

Visual Basic
178
Exemplu:
REM Calculul stocurilor de materiale
A=R^2*3.14 Calculul ariei cercului


4.8.2. Instruciunea LET

Instruciunea Let atribuie unei variabile valoarea unei expresii.
Formatul general:

[LET] variabil=expresie

Cuvntul cheie Let este opional.
Simbolul = nu are sensul de egalitate matematic, ci de atribuire.
Este obligatoriu ca tipul expresiei s coincid cu tipul variabilei.
Instruciunea de atribuire este foarte important deoarece ea permite,
pe de o parte, pstrarea rezultatului operaiunilor, iar pe de alt parte, de a
defini o variabil (dac aceasta nu este deja fcut cu o instruciune
declarativ) atribuindu-i o valoare i un tip.
Execuia instruciunii Let const n evaluarea expresiei din dreapta
semnului egal i atribuirea valorii determinate variabilei din stnga
semnului egal.
De fiecare dat cnd se atribuie o valoare unei variabile, aceasta este
stocat n zona de memorie corespunztoare pn n momentul n care
variabila este suprimat (lucru care se produce atunci cnd procedura n
care variabila este definit se termin), sau pn n momentul n care o alt
valoare i este atribuit (caz n care prima valoare este nlocuit prin cea
nou).

Exemplu:
LET A=10 Variabilei A i se atribuie valoarea 10
B=C Varibilei B i se atribuie valoarea variabilei C
A=R^2*3,14 Variabilei A i se atribuie valoarea ariei cercului
A$ =POPESCU
B$ =ION
C$ =A$+B$
Limbajul de programare
179


4.8.3. Instruciunea PRINT

Instruciunea Print realizeaz afiarea pe ecranul monitorului a
datelor, rezultatelor intermediare sau finale a prelucrrii datelor.
Formatul general:

[obiect] {PRINT | ?} [list_expresii] [,] [;] [SPC (n)] [TAB (n)]

Obiect este caseta de imagine, obiectul Debug sau Printer pe care
expresia se afieaz.
Cuvntul cheie Print poate fi nlocuit cu caracterul ?
List_expresii conine elemente admise de limbaj (variabile, iruri
de caractere, expresii) separate ntre ele prin , ; sau spaiu. Dac
list_expresii lipsete se va edita o linie vid.
n cazul utilizrii separatorului ; ntre elementele list_expresii,
atunci acestea se vor tiprii una dup alta (cursorul de text este poziionat
dup ultimul caracter afiat).
n cazul n care elementele din list_expresii sunt separate prin ,
elementele acestei liste vor fi tiprite n cmpurile standard ale liniei
(cursorul este poziionat la nceputul urmtoarei zone de afiare; zona
ncepe la fiecare 14 coloane).
Dac la sfritul list_expresii apare unul din separatorii , sau ;,
atunci nu se realizeaz returul i saltul la o nou linie, cursorul rmnnd
poziionat pe aceeai linie. n acest fel urmtoarea instruciune Print va
tipri date pe aceeai linie.
Funcia SPC(n) realizeaz spaierea orizontal. n cadrul acestei
opiuni "n" reprezint numrul de spaii de pe linia curent peste care se
face un salt (SKIP) n vederea afirii urmtorului element din list_expresii
(numrul de spaii inserate ntre dou elemente afiate).
Funcia TAB(n) servete la execuia tabulrii orizontale. Ea precede
mesajul sau variabila ce urmeaz a fi afiat n coloana precizat de n.
Dac valoarea transmis de funcia Tab este mai mare dect
lungimea unei linii, atunci se extrage linia curent i poziionarea se face pe
linia urmtoare.
Visual Basic
180

Exemplu:
A=20
DEBUG.PRINT A
B=20: C=30
DEBUG.PRINT A, B, C
DEBUG.PRINT A; B,
DEBUG.PRINT C
DEBUG.PRINT"REZULTATE=;(A+
B)*C
D=POPESCU
DEBUG.PRINT D
PRINT
A=10
PRINT A
B=20: C=30
PRINT A, B, C
PRINT A; B,
PRINT C
PRINT 'REZULTAT=';
(A=B)*C
A$="POPESCU"
PRINT A$


4.8.4. Instruciuni pentru controlul programului


4.8.4.1. Instruciunile condiionale

Instruciunile condiionale determin modificarea ordinii de execuie
din cadrul programelor. n mod normal ntr-un program instruciunile sunt
executate unele dup altele n ordinea scrierii.
Graie instruciunilor condiionale aceast ordine se poate realiza
impunnd execuia anumitor instruciuni n mod unic, n funcie de valoarea
unei condiii specificate mai nainte.
Execuia instruciunilor n acest caz nu mai este neaprat secvenial.
n Visual Basic sunt dou instruciuni condiionale: IFTHEN i
SELECT CASE.


4.8.4.1.1. Instruciunea IF THEN

Instruciunea realizeaz un transfer al coninutului, sau execuia
uneia sau mai multor instruciuni, n funcie de valoarea logic a unei
expresii.
Limbajul de programare
181
Sintaxa instruciunii cuprinde dou formate:

a) IF condiie THEN instruciune_1

[ELSE instruciune_2 ]

Acest format poate fi folosit n doua moduri:
Fr opiunea ELSE
n acest caz, execuia instruciunii IF ncepe prin evaluarea condiiei.
Dac condiia este adevrat se execut instruciune_1, dup care se trece la
urmtoarea instruciune din program. Dac condiia nu este adevrat se
ignor instruciune_1 i execuia programului continu cu prima instruciune
dup IF (pe condiie fals nu se execut nici o instruciune).
Aceast sintax poate fi reprezentat grafic astfel:






Cu opiunea ELSE
Cnd se ntlnete o astfel de opiune, executarea ncepe prin
evaluarea expresiei i dac aceasta este True se execut instruciune_1 iar
dac este False se va executa instruciune_2.
Grafic acest lucru se reprezint astfel:










Instructiune_1
T
C
C Instructiune_2 Instructiune_1
T F
Visual Basic
182


Exemplu:
Pentru dou numere care se introduc de la tastatur s se calculeze
i s se afieze diferena dintre cel mai mare (eventual egal) i cel mai mic.


DIM A, B, C AS SINGLE
A=VAL(TEXT1.TEXT)
B=VAL(TEXT2.TEXT)
IF A>=B THEN
C=A-B
ELSE
C=B-A
END IF
LABEL1.CAPTION=A
LABEL2.CAPTION=B
LABEL3.CAPTION=C














b). IF/ELSEIF/ELSE/END IF
IF condiie_1 THEN
instruciune_1
[ELSEIF condiie_2 THEN
instruciune_2]
C-1 Instruciune_1
C-2 Instruciune_2
.T.
.F.
.T.
.F.
Limbajul de programare
183

[ELSEIF condiie_n THEN
instruciune_n]
[ELSE
instruciune]
END IF







Fiecare din condiiile construciilor If/ElseIf sunt testate n ordinea n
care apar. Dac una din condiii este adevrat sunt executate instruciunile
corespunztoare acesteia i execuia programului continu cu instruciunea
ce se afl dup EndIf. Dac nici o condiie nu este adevrat se execut
instruciunea ce urmeaz clauzei Else.
Dac nu este specificat clauza Else execuia programului este
continuat cu instruciunea de dup EndIf. ntr-un program pot exista mai
multe IF-uri imbricate.

Exemplu:
Calculul rdcinilor unei ecuaii de grad II
n urmtorul exemplu este prezentat un program cu ajutorul cruia se
rezolv ecuaia de gradul doi:
se proiecteaz fereastra aplicaiei asemntor cu cea din figura
de mai jos:

Visual Basic
184


se introduce urmtorul program:
n zona de declaraii globale ale ferestrei
(GENERAL):

Public a As Single, b As Single, c As Single
Public delta As Single
Public x1 As Single, x2 As Single

n cadrul procedurii (subrutinei) eveniment Click a
butonului de comand:

Private Sub Command1_Click()
a = Val(Text1.Text)
If a = 0 Then
MsgBox"NU ESTE ECUATIE DE GRADUL DOI !", 0," Mesaj"
GoTo 5
End If
b = Val(Text2.Text)
c = Val(Text3.Text)
delta = b ^ 2 - 4 * a * c
Label5.Caption = delta
If delta = 0 Then
Limbajul de programare
185
MsgBox"Ecuatia are doua radacini egale !", 0," Mesaj"
Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c)
+") = 0"
Label7.Caption = (-(b) / (2 * a))
Label9.Caption = (-(b) / (2 * a))
ElseIf delta < 0 Then
MsgBox"Ecuatia are doua radacini numere complexe !", 0," Mesaj"
Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c)
+") = 0"
Label7.Caption ="(-(" + Str(b) +") + i" + Str(Sqr(-(delta))) +") / (" +
Str(2 * a) +")"
Label9.Caption ="(-(" + Str(b) +") - i" + Str(Sqr(-(delta))) +") / (" + Str(2
* a) +")"
Else
x1 = (-(b) - (Sqr(delta))) / (2 * a)
x2 = (-(b) + (Sqr(delta))) / (2 * a)
Label10.Caption ="(" + Str(a) +")X*X + (" + Str(b) +")X + (" + Str(c)
+") = 0"
Label7.Caption = x1
Label9.Caption = x2
End If
5
End Sub

n cadrul programului de mai sus variabila a reprezint coeficientul
lui x ptrat, b coeficientul lui x, c termenul liber, delta reprezint
discriminantul ecuaiei, iar x1 i x2 sunt rdcinile acesteia.

4.8.4.1.2. Instruciunea SELECT CASE

Instruciunea Select Case compar valorile unei expresii cu una sau
mai multe valori dirijnd execuia programului n funcie de rezultatele
comparaiei.
Formatul general:

SELECT CASE expresie
Visual Basic
186
CASE lista_test_1
instruciuni_1
[CASE lista_test_2
instruciuni_2]

[CASE lista_test_n
instruciuni_n]
[CASE ELSE
instruciuni]
[ EXIT SELECT ]
END SELECT

Unde:
expresie: reprezint o expresie de orice tip;
lista_test: este o list de expresii separate prin virgule cu care se
compar valoarea expresiei. Elementele unei lista_test sunt implicit
legate ntre ele printr-un operator Or. Din aceasta cauz
instruciunile ce urmeaz dup clauza Case lista_text sunt executate
dac cel puin unul din membrii listei_test este adevrat. Dup
executarea acestei instruciuni controlul este trimis primei
instruciuni ce urmeaz dup End Select. Structura Select trebuie s
conin cel puin o clauz Case lista_test.
Case Else: determin execuia instruciunii care o urmeaz n situaia
n care toate testele realizate de Case sunt false.
Exit Select: reprezint o alternativ de ieire forat din structura
Case;
End Select: marcheaz sfritul structurii select.

Exemplu:
Urmtorul exemplu prezint avantajele utilizrii instruciunii
SELECT CASE n cadrul unui program de calcul a impozitului pe salar:
se construiete o fereastr asemntoare cu cea din figura de mai
jos:

Limbajul de programare
187


se introduce urmtorul program n cadrul procedurii eveniment
Click asociat butonului Calcul:

Private Sub Command1_Click()
Dim SalarBrut As Single
Dim Impozit As Single
SalarBrut = Val(Text2.Text) * Val(Text3.Text)
Label5.Caption = SalarBrut
Select Case SalarBrut
Case Is <= 917000
Impozit = SalarBrut*(18/100)
Case 917001 To 2250000
Impozit =165060+ SalarBrut * (23 / 100)
Case 2250001 To 3583000
Impozit = 471650 + SalarBrut * (28 / 100)
Case 3583001 To 5000000
Impozit = 844890 + SalarBrut * (34 / 100)
Case Is >5000000
Impozit = 1326670+ SalarBrut * (40 / 100)
End Select
Label7.Caption = Impozit
End Sub

4.8.4.2. Instruciuni repetitive

Visual Basic
188
ntr-un program, cnd mai multe instruciuni se apeleaz, acestea pot
fi scrise o singur dat i executate de mai multe ori.
Ansamblul instruciunilor care se execut de un numr de ori poart
numele de ciclu.

4.8.4.2.1. Instruciunile DO LOOP

Instruciunea realizeaz execuia repetat a unui grup de instruciuni
n funcie de valoarea unei condiii i de modul de testare.
Formatul general:

DO [WHILE/ UNTIL condiie]

[instruciuni]

[EXIT DO]

LOOP [WHILE/UNTIL condiie]

Unde:
While: determin repetarea ciclului atta timp ct expresia este
adevarat. Cnd condiia este fals execuia programului continu cu
prima instruciune dup Loop;
Until: determin repetarea ciclului atta timp ct expresia este fals;
Exit Do: determin ieirea forat din ciclu;
Loop: delimitator care marcheaz sfritul instruciunii Do.
Verificarea expresiei se poate face la intrarea n ciclu sau la ieire
din ciclu.
Ca i n cazul instruciunii IfThen, ciclurile pot fi suprapuse
(imbricate).


Exemplu:
I=0
DO
I=I+1
Limbajul de programare
189
LABEL1.CAPTION=I
UNTIL I=20000

O structura ciclic echivalent lui Do WhileLoop este urmtoarea:

WHILE condiie
instruciuni
WEND

Visual Basic interpreteaz aceast instruciune ca Do WhileLoop,
repetnd instruciunile atta timp ct condiia este adevrat.

4.8.4.2.2. Instruciunea FOR NEXT

Instruciunea ForNext realizeaz executarea repetat a unui set de
instruciuni de un numr prestabilit de ori.
Formatul general:

FOR variabila=val_init TO val_fin [STEP increment]

instruciuni

[EXIT FOR]

NEXT [variabila]

variabila: este de tip numeric i este folosit ca un contor (variabila
de control);
val_init: reprezint valoarea iniial a variabilei la prima iteraie;
val_fin: este valoarea de sfrit a variabilei. Cnd contorul este mai
mare ca val_fin, Visual Basic ntrerupe iteraia plasndu-se dup
Next.
Incrementul: este o expresie numeric ce reprezint valoarea cu care
este incrementat sau decrementat variabila la fiecare iteraie.
Implicit incrementul este +1;
Instruciuni: reprezint corpul ciclului;
Visual Basic
190
Exit For: permite ieirea forat din ciclu, nainte ca variabila de
control s depeasc condiia final. n acest caz Visual Basic nu va
mai executa seciunea de incrementare i de verificare a variabilei de
control, iar executarea programului continu de la instruciunea
urmtoare cuvntului rezervat Next;
Next: indic programului s revin la instruciunea For, s
incrementeze variabila, s testeze val_fin i s execute n mod
repetat ciclul atunci cnd val_fin nu este ndeplinit.
La intrarea n ciclu variabila se iniializeaz cu val_init i se testeaz
condiia variabila>val_fin. Dac nu este ndeplinit condiia se execut
instruciunile aflate ntre For i Next. La a doua iteraie Visual Basic
incrementeaz sau decrementeaz variabila cu incrementul, testeaz din nou
condiia i ncepe procesul descris mai sus. Cnd condiia este adevrat,
execuia programului continu cu instruciunea dup Next.
Deci instruciunea For ... Next presupune parcurgerea a cinci etape i
anume:
iniializarea variabilei de control a ciclului;
testarea variabilei de control sau a condiiei cliclului;
executarea instruciunilor din ciclu;
modificarea valorii variabilei de control;
repetarea ciclului.

Exemplu:

Private Sub Command1_Click()
Dim A As Integer
Debug.Print Afisarea numerelor de la 1 la 10
For A=1 To 10
Debug.Print A;
Next
Debug.Print
Debug.Print Afisarea numerelor de la 100 la 0 din 5 in 5
For A=100 To 0 Step -5
Debug.Print A;
Next
End Sub
Limbajul de programare
191

i n cadrul instruciunii For pot exista cicluri imbricate. De
exemplu:

FOR I=1 TO 20

FOR K=1 TO 5

FOR Y=1 TO 10

NEXT Y

NEXT K

NEXT I


Exemplu:

Private Sub Command1_Click()
Dim i,k,j As Integer
For i=1 To 3
For k=1 To 5
For j=1 To 3
Debug.Print i+k+j
Next j
Next k
Next i
End Sub

Exist i noiunea de ciclu Null. Acesta permite programatorului s
fac o pauz pentru efectuarea unor anumite operaii cum ar fi:
afiarea/primirea unui mesaj, pornirea imprimatei, verificarea/introducerea
unei dischete, etc.
Exemplu:

Visual Basic
192
For A=1 To 10000
Nu face nimic
Next

Acest exemplu va genera o pauz pe timpul executrii celor 10000
de operaii.
Dac un program trebuie s utilizeze astfel de ntrzieri se poate
folosi i funcia API Sleep, sau funcia MessageBox.


4.8.4.3. Instruciuni pentru tratarea fiierelor

4.8.4.3.1. Instruciunea OPEN

Pentru ca un program s poat efectua operaii de intrare/ieire cu un
fiier, respectivul fiier trebuie mai nti s fie deschis. Instruciunea Open
aloca o memorie tampon (buffer) pentru operaiile de intrare/ieire i
determin modul de acces la fiier.
Formatul general:

OPEN nume_cale [For mode] [Access access] [lock]
As [#] numr_fiier [Len = lungime_articol]




unde:
nume_cale: este o expresie necesar de tip String care specific
numele fiierului. Expresia poate include directorul i unitatea de
disc n care se afl fiierul;
mode: acest argument specific modul de deschidere a fiierului:
adugare (Append), binar (Binary), citire (Input), scriere (Output),
sau aleator (Random). Dac modul nu este specificat, implicit, Open
deschide fiierul pentru acces n mod Random. Deschiderea unui
fiier n mod Append plaseaz cursorul fiierului imediat nainte de
Limbajul de programare
193
eticheta de sfrit de fiier (EOF). Deschiderea unui fiier in mod
Binary permite scrierea/citirea n valori numerice. Deschiderea unui
fiier n mod Input permite citirea secvenial din acesta, fiierul
fiind parcurs de la nceput spre final. Deschiderea unui fiier n mod
Output permite scrierea secvenial n acesta. Dac fiierul exist
deja, apelarea Open n mod Output va determina scrierea peste
fiierul existent. n acest caz se recomand utilizarea modului
Append. Deschiderea unui fiier n mod Random permite accesul
aleator att pentru citirea, ct i pentru scrierea fiierului;
access: este un cuvnt rezervat necesar care specific operaiile
permise asupra fiierului deschis: citire (Read), scriere (Write), sau
citire/scriere (Read-Write);
lock: este o opiune care specific operaiile permise asupra fiierului
deschis, din partea altor procese: partajat (Shared), citire interzis
(Lock-Read), scriere interzis (Lock-Write), sau citire/scriere
interzise (Lock-Read-Write);
numr_fiier :este o expresie ntreag (ntre 1 i 511 inclusiv) care
specific numrul ce va fi utilizat pentru a putea referi fiierul.
Pentru a putea obine urmtorul numr de fiier disponibil se
utilizeaz funcia predefinit Free File;
lungime_articol: este o expresie ntreag din intervalul [1,32767].
Seteaz lungimea articolului pentru fiierele cu acces direct
(Random) i capacitatea memoriei tampon pentru fiierele
secveniale;
Dac fiierul specificat de nume_cale nu exist, Visual Basic l va
crea dac argumentul mode primete valoarea Append, Binary, Output sau
Random. Dac se deschide un fiier n mod Binary, Input sau Random,
acelai fiier poate fi deschis utilizndu-se un alt numr de fiier, fr a fi
necesar nchiderea acestuia n prealabil. Dac fiierul a fost deschis n mod
Append sau Output, el trebuie nchis nainte de a fi deschis un alt fiier.
Dac fiierul a fost deja deschis de ctre un alt proces i dac sistemul de
operare interzice tipul de acces specificat, instruciunea Open determin
generarea unei erori de rulare.


4.8.4.3.2. Instruciunea CLOSE
Visual Basic
194

Dup terminarea accesului la fiiere, un program trebuie s nchid
toate fiierele deschise cu Open. n acest scop, n Visual Basic este utilizat
instruciunea Close.
Formatul general:

CLOSE [#numr_fiier],[#numr_fiier],.....

Instruciunea Close far argumentele opionale asigur nchiderea
tuturor fiierelor deschise cu Open care sunt active n mod curent. Dac se
nchid fiierele ce au fost deschise n mod Append sau Output, Visual Basic
va scrie coninutul memoriei tampon pentru datele de ieire ale respectivului
fiier n memoria tampon a sistemului de operare, iar Windows elibereaz
tot spaiul memoriei tampon asociat cu fiierul nchis.

4.8.4.3.3. Instruciunea INPUT#

Instruciunea Input# citete datele din fiierul specificat prin
numr_fiier i le atribuie variabilelor din lista de variabile.
Format general:

INPUT# numr_fiier, variabila1 [, variabila2, variabila3,....]

Instruciunea Input# utilizeaz doar fiierele deschise n mod Input
sau Binary. Nici una din variabile nu poate fi un vector sau variabil obiect.
Variabilele trebuie sa fie de acelai tip ca datele din fiier.

4.8.4.3.4. Instruciunea INPUT

Instruciunea Input returneaz un numr specificat de caractere (n)
dintr-un fiier deschis n mod Input sau Binary ntr-o variabil de tip String.
Formatul general:

INPUT (numr_caractere, [#]numr_fisier)

unde:
Limbajul de programare
195

numr_caractere: expresie numeric ce specific numrul de
caractere ce trebuie returnate. Dac numr_caractere depete
numrul de caractere rmase n fiier, instruciunea Input returneaz
doar caracterele rmase n fiier;
numr_fiier: este numrul specificat pentru a referii fiierul.


4.8.4.3.5. Instruciunea LINE INPUT#

Pentru citirea datelor dintr-un fiier accesat n mod secvenial se
utilizeaz cel mai des instruciunea Line Input #.
Formatul general:

LINE INPUT# numr_fiier , variabil_ir

numr_fiier: este numrul specificat pentru a referii fiierul deschis
n mod Input;
variabil_ir: este numele unei variabile de tip Variant sau String
care va memora linia citit din fiier.
Citirea din fiierul specificat prin numr_fiier se realizeaz,
caracter cu caracter, pn cnd se ntlnete marcatorul de sfrit de rnd
sau marcatorul de linie nou.

4.8.4.3.6. Funcia EOF

Funcia Eof testeaz condiia de sfrit de fiier, astfel nct
programul sa poat aciona corespunztor.
Formatul general:

EOF (numr_fiier)

numr_fiier: este numrul specificat pentru a referii fiierul deschis
n oricare din modurile Input, Binary, sau Random.

Visual Basic
196
Funcia Eof returneaz ca rezultat False pn cnd se atinge sfritul
fiierului. n cazul fiierelor deschise n mod Random sau Binary , funcia
Eof returneaz ca rezultat False pn cnd ultima comand Get executat nu
mai poate citi nici o nregistrare ntreag.
Visual Basic genereaz o eroare de rulare atunci cnd se ncearc
citirea/scrierea dincolo de sfritul unui fiier. Tot o eroare de rulare va fi
generat i in cazul n care se ncearc citirea dintr-un fiier deschis n mod
Binary folosind instruciunea Input mpreun cu funcia Eof. Pentru citirea
fiierelor binare cu instruciunea Input trebuie folosite funciile Lof si Loc,
sau se poate folosii Get cu funcia Eof.

4.8.4.3.7. Funciile LOF i LOC

Aceste funcii trebuie utilizate mpreun la citirea/scrierea n
fiierele deschise n mod Binary, pentru determinarea sfritului de fiier.
Formatul general:

LOF (numr_fiier)
LOC (numr_fiier)

Funcia Lof returneaz lungimea fiierului deschis (un numr de tip
Long).
Funcia Loc returneaz poziia curent a cursorului fiierului n
interiorul acestuia.
Atunci cnd funciile se utilizeaz mpreun, ciclul trebuie s se
termine cnd Lof=Loc.


4.8.4.3.8. Instruciunea PRINT#

Instruciunea Print# permite transferul de date ntre memoria intern
alocat programului i un suport orientat pe articol (fiier sau periferic).
Deci, se folosete pentru scrierea datelor ntr-un fiier secvenial.
Formatul general:

PRINT# numr_fiier , [list_de_expresii][;]
Limbajul de programare
197

numr_fiier: este numrul fiierului deschis fie n mod Append, fie
n mod Output;
list_de_expresii : este o expresie sau o list de expresii ce trebuie
scrise pe linia respectiv al crei format este identic cu cel prezentat
la instruciunea Print (argumentele opionale SPC(n) si TAB(n)).
Expresiile din list_de_expresii pot fi separate ntre ele fie printr-un
spaiu, fie printr-un punct i virgul (;) ambele caractere avnd
acelai efect.
Dac list_de_expresii lipsete i se pune virgul dup numr_fiier
programul va introduce n fiier o linie vid.
Instruciunea Print# scrie ntr-un fiier datele n formatul de pe
ecran. Deoarece Print# scrie n fiier o copie a datelor, acestea trebuie bine
delimitate pentru a putea fi scrise corect.
Dac se dorete citirea datelor dintr-un fiier cu ajutorul instruciunii
Input# (nu cu Input sau LineInput#), se recomand scrierea n fiier cu
ajutorul instruciunii Write# n locul instruciunii Print#. Utilizarea
instruciunii Write# asigur integritatea fiecrui cmp de date separat, prin
delimitarea corect a acestuia, astfel nct programul s poat citi datele cu
instruciunea Input#.

4.8.4.3.9. Instruciunea WRITE#

Instruciunea Write# este utilizat pentru scrierea datelor delimitate
ntr-un fiier text.
Formatul general:

WRITE# numr_fiier,[list_expresii][,][;]

numr_fiier: numrul fiierului deschis n mod Output;
list_expresii: conine una sau mai multe expresii numerice sau de
tip ir ce vor fi scrise intr-un fiier. Expresiile din list pot fi separate
ntre ele printr-un spaiu, punct (.), sau printr-un punct i virgula (;).

Visual Basic
198
Spre deosebire de instruciunea Print#, instruciunea Write# insereaz
n mod automat virgule ntre elementele listei de expresii i ncadreaz
irurile ntre ghilimele ( ) pe msur ce acestea sunt scrise in fiier.
Programatorul nu trebuie s introduc n list delimitatori explicii. Write#
introduce dup ultimul caracter din lista de variabile un marcator de sfrit
de linie i un marcator de salt la o linie nou. Datele numerice sunt scrise
ntotdeauna folosind ca separator punctul (.) fr a fi precedate de spaiu. n
cazul datelor de tip Boolean programul va scrie #TRUE# sau #FALSE#.
Dac data referit de o variabil din list_expresii este Empty, instruciunea
Write# nu scrie nimic n fiier; iar dac este de tip Null, Write# va scrie
#NULL#.

4.8.4.3.10. Instruciunea PUT

Instruciunea Put este utilizat pentru a scrie date ntr-un fiier
accesat n mod aleator.
Formatul general:

PUT [ # ] numr_fiier, [ numr_nregistrare ], nume_variabil


unde:

numr_fisier: orice numr valid de fiier deschis n mod Binary sau
Random;
numr_nregistrare: este un parametru opional de tip Variant sau
Long care corespunde numrului nregistrrii (n modul Random),
sau numrului octetului (n modul Binary) de la care ncepe scrierea.
Prima nregistrare sau primul octet din fiier se afl pe poziia 1, a
doua nregistrare sau al doilea octet se afl n poziia 2 etc. , ceea ce
nseamn c numr_nregistrare are valoarea iniial 1. Dac acest
parametru lipsete, programul va scrie urmtoarea nregistrare sau
urmtorul octet dup ultima instruciune Get sau Put, sau din poziia
indicat de ultima funcie Seek. n acest caz, n instruciunea Put
trebuie incluse virgule de separare;
Limbajul de programare
199
nume-variabil: numele variabilei care conine datele ce trebuie
scrise.

Lungimea datelor ce trebuie scrise trebuie s corespund cu lungimea
specificat n clauza Len din instruciunea Open. Dac lungimea datelor ce
trebuie scrise este mai mare dect lungimea specificat n clauza Len,
programul va genera o eroare. Dac lungimea datelor ce trebuie scrise este
mai mic dect lungimea specificat n clauza Len, programul va umple
spaiul diferen dintre lungimea nregistrrii i lungimea structurii cu
informaii existente n memoria tampon a fiierului.
Dac variabila care se scrie este un ir de lungime variabil, lungimea
nregistrrii specificat de clauza Len trebuie s fie cu cel puin 2 octei mai
mare dect lungimea irului, deoarece instruciunea Put introduce mai nti
2 octei pentru descrierea lungimii irului i apoi variabila. Lungimea
nregistrrii specificat de clauza Len din instruciunea Open trebuie s fie
cu cel puin 2 octei mai mare dect numrul de octei necesari pentru
stocarea variabilei i n cazul n care aceast variabil este un Variant de tip
Numeric. Dac variabila este un Variant de tip String, lungimea nregistrrii
specificat de clauza Len trebuie s fie cu cel puin 4 octei mai mare dect
lungimea irului, deoarece instruciunea Put introduce nti 2 octei pentru
identificarea tipului de Variant, 2 octei care indic lungimea irului i apoi
scrie irul. Dac variabila ce trebuie scris este un vector de lungime fix,
instruciunea scrie doar vectorul fr nici un identificator. Dac variabila
care trebuie scris este un vector dinamic, instruciunea Put scrie nti
descrierea pe o lungime de 2 octei + 8 * numrul de dimensiuni, iar
lungimea nregistrrii specificat de clauza Len trebuie s fie mai mare sau
cel puin egal cu suma tuturor octeilor pentru scrierea vectorului i a
identificatorului acestuia.
Pentru tipurile definite de utilizator, instruciunea Put scrie elementele
individual, fr a introduce ns elemente de completare ntre ele.

4.8.4.3.11. Instruciunea GET

Instruciunea Get se utilizeaz pentru citirea nregistrrilor dintr-un
fiier accesat n mod aleator.
Formatul general:
Visual Basic
200

GET [ # ] numr_fiier, [ numr_nregistrare ], nume_variabil

unde:

numr_fiier: numrul fiierului deschis de program n modul
Random sau Binary;
numr_nregistrare: parametru opional care reflect numrul
nregistrrii (modul Random) sau numrul octetului (modul Binary)
de la care ncepe citirea;
nume_variabil: numele variabilei n care programul va plasa datele
citite din fiier.

Observaie:
Toate regulile care se aplic instruciunii Put sunt valabile i pentru
instruciunea Get.




4.8.4.3.12. Instruciunea SEEK

Instruciunea Seek seteaz pointer-ul de fiier care indic unde trebuie
s se produc urmtoarea operaie de citire/scriere.
Formatul general:

SEEK [ # ] numr_fiier, poziie

unde:
numr_fiier: numrul fiierului deschis n mod Random sau Binary;
poziie: un numr cuprins ntre 1 i 2.147.483.647, care specific
numrul nregistrrii (modul Random) sau un numr de octet (modul
Binary) i indic unde va avea loc urmtoarea operaiune de
citire/scriere.


Limbajul de programare
201








































Visual Basic
202





















Gestionarea bazelor de date
203










5.1. Gestionarea bazelor de date n Visual Basic

Mediul de dezvoltare Visual Basic dispune (ncepnd cu versiunea
3.0) de un sistem foarte puternic de gestiune a bazelor de date. Acest sistem
poart denumirea de Microsoft JET Database Engine (motorul bazelor de
date) i reprezint o colecie de obiecte prin intermediul crora se
gestioneaz bazele de date. Aceast colecie de obiecte este cunoscut sub
denumirea de Data Access Objects (DAO). Obiectul de baz i de la care
deriv celelalte obiecte, este DBEngine. Tipul standard de baze de date ce
pot fi gestionate cu ajutorul acestui sistem sunt bazele de date ale sistemului
de gestiune a bazelor de date Access (.MDB). Pe lng standardul DAO
exist i standardul ODBC (Open DataBase Connectivity) ce permite, prin
intermediul coleciei sale de obiecte, gestionarea bazelor de date sub orice
platform de operare. Standardul ODBC este un standard general care
permite gestionarea oricrui tip de baz de date (Access, dBase, FoxPro,
Paradox, Oracle etc.). Ansamblul de instruciuni, care permite gestiunea
bazelor de date din ambele standarde, este format pe baza limbajul de
gestiune a bazelor de date SQL (Structured Query Language).
n cadrul mediului de dezvoltare Visual Basic bazele de date pot fi
create i gestionate cu ajutorul aplicaiei Visual Data Manager. n cadrul
limbajului de programare Visual Basic, gestionarea bazelor de date n
aplicaii poate fi realizat utiliznd obiectele DBEngine, Database, Recordset
i controalele Data, DBCombo, DBList i DBGrid.


Visual Basic
204


5.2. Aplicaia Visual Data Manager

Visual Data Manager reprezint o aplicaie din cadrul mediului de
dezvoltare Visual Basic, prin intermediul creia se pot construii i gestiona
rapid bazele de date.
Formatul de baze de date recunoscut de Visual Data Manager i
operaiile care pot fi efectuate cu acestea sunt prezentate n tabelul de mai
jos:

FORMAT BAZA DE DATE ACIUNE
Microsoft Access
Paradox 3.X i 4.X
dBASE III i IV
FoxPro 2.0 i 2.5
Btrieve
ODBC
Creare, Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare

Aplicaia Visual Data Manager, poate fi lansat in execuie
selectnd opiunea cu acelai nume din cadrul meniului Add-Ins. Fereastra
aplicaiei este prezentat n figura 5.1.











Fig. 5.1. Fereastra Visual Data Manager.

Gestionarea bazelor de date
205
Operaiile care pot fi realizate asupra unei baze de date cu ajutorul
acestei aplicaii, pot fi urmtoarele :

Crearea unei noi baze de date

Pentru crearea unei baze de date noi, din meniul File se selecteaz
opiunea New,iar din submeniul afiat se selecteaz tipul bazei de date.
Alegerea opiunii Microsoft Access, subopiunea Version 7.0 MDB, duce la
apariia pe ecran a unei ferestre de dialog n cadrul crei se va introduce
numele fiierului baz de date Access (.MDB) ce va putea fi folosit de ctre
Access si Visual Basic. Dup denumirea bazei de date i validarea ei prin
acionarea butonului Save, va apare fereastra DataBase Window (figura
5.2).

















Fig. 5.2. Fereastra DataBase Window.

Aceast fereastr conine i gestioneaz toate tabelele de cmpuri ce
compun baza de date. Pe lng tabelele de cmpuri fereastra mai conine i
proprietile aferente bazei de date, proprieti recunoscute n momentul n
care baza de date este folosit n aplicaie mpreun cu controlul Data.
Visual Basic
206
Pentru crearea unei tabele de cmpuri se poziioneaz cursorul
mouse-ului n interiorul ferestrei DataBase Window, se execut un click
buton dreapta mouse, iar din meniul contextual afiat se selecteaz opiunea
New Table. Rezultatul este apariia pe ecran a ferestrei Table Structure
(figura 5.3).




















Fig. 5.3. Fereastra Table Structure.

Numele tabelei de cmpuri se definete n cadrul casetei de editare
Table Name. Pentru crearea i adugarea unui cmp nou se acioneaz
butonul Add Field. Rezultatul este apariia ferestrei Add Field (figura 5.4).






Gestionarea bazelor de date
207













Fig. 5.4. Fereastra Add Field.

Fereastra Add Field conine urmtoarele elemente importante:
Caseta de editare Name: permite introducerea numelui cmpului;
Caseta combo Type: permite selectarea tipului de dat pentru
cmpul introdus n caseta Name;
Caseta de editare Size: permite introducerea mrimii cmpului
definit.
Dup ce se introduc valorile corespunztoare n elementele ferestrei
Add Table, pentru validare se acioneaz butonul Ok din fereastr.
Pentru definirea cheilor de indexare se acioneaz butonul Add
Index. Rezultatul este afiarea ferestrei Add Index to (figura 5.5), care
conine urmtoarele elemente:







Visual Basic
208

Fig. 5.5. Fereastra de definire a cheilor de indexare.

Caseta Name: permite introducerea identificatorului cheii de
indexare (denumirea cheii);
Caseta Indexed Fields: permite introducerea cmpului sau a
cmpurilor dup care se va face indexarea;
Caseta Available Fields: conine lista cmpurilor tabelei, care pot
fi incluse n definirea cheii de indexare;
Caseta de opiune Primary: activarea acesteia face ca cheia de
indexare definit s fie o cheie primar n relaiile cu alte tabele;
Caseta de opiune Unique: activarea acesteia face ca cheia de
indexare s reprezinte n mod unic nregistrrile din tabel. Dac
de exemplu, ntr-o tabel, exist dou nregistrri care au date
identice n acelai cmp (cod_produs=1000), n urma indexrii
cu condiia Unique activ, va fi afiat doar una din acele
nregistrri;
Caseta IgnoreNulls: dac este activat permite afiarea
cmpurilor vide din cadrul cheii de indexare.
Dup completarea acestor casete se valideaz cheia de indexare
definit, prin acionarea butonului Ok din fereastr.

Problem:
Gestionarea bazelor de date
209
S se creeze baza de date prestserv.mdb, necesar calculului i
stocrii informaiilor privind prestatorii de servicii, parcurgnd etapele
prezentate anterior, care s aib ca i component tabela de cmpuri cu
urmtoarea structur:

Pserv tabela de calcul a salariilor la prestatorii de servicii.

SIMBOL
CMP
DENUMIRE
CMP
TIP LUNGIME
Index Index salariat INTEGER 2
Nume_A Nume (i prenume)
angajat
TEXT 100
Salar_O Salar orar SINGLE 4
Ore_L Ore lucrate SINGLE 4
Salar_B Salar brut DOUBLE 8

S se indexe aceast tabel dup cmpurile Index, Nume_A. Cheile
de indexare s aib numele cmpurilor pe care le reprezint.

Deschiderea unei baze de date existente pe disc

Din meniul File al aplicaiei se selecteaz opiunea Open
Database, iar din cadrul ferestrei de dialog ce apare pe monitor se
selecteaz baza de date (.MDB) ce se dorete a fi deschis.

Compactarea (compresarea) unei baze de date

Din meniul File se selecteaz opiunea Compact MDB , operaiune
ce duce la afiarea unei ferestre de dialog in cadrul creia se va alege baza
de date ce se dorete a fi compactat, iar apoi se va tasta numele bazei de
date compactate n caseta File Name.




Visual Basic
210
5.3. Obiectul DBEngine

Acest obiect (DAO) este foarte important n lucrul cu bazele de date.
Din el deriv toate celelalte obiecte. El permite crearea i gestionarea, prin
intermediul celorlalte obiecte, a bazelor de date.

Observaie:
Pentru a putea utiliza obiectele DBEngine i DataBase, trebuie
inclus n proiect o referin spre Microsoft DAO 3.x Object Library astfel:
din meniul Project, se selecteaz opiunea References;
din fereastra afiat se marcheaz, n cadrul listei Available
References, caseta corespunztoare elementului Microsoft DAO
3.x Object Library unde 3.x poate fi 3.5, 3.52, 3.6, etc (figura
5.6).


Fig. 5.6. Fereastra de ncrcare a referinei
necesare utilizrii obiectului DataBase.

Gestionarea bazelor de date
211
Cele mai importante proprieti ale obiectului DBEngine sunt
urmtoarele:

DefaultType: returneaz sau seteaz tipul de baz de date ce va
fi prelucrat (Microsoft JET sau ODBC). Este o constant care
poate lua dou valori, astfel:
dbUseJet: legtura i prelucrarea se va face la o baz de
date de tip Microsoft JET;
dbUseODBC: legtura i prelucrarea se va face la o baz
de date de tip ODBC;

Exemplu:
DBEngine.DefaultType=dbUseODBC

DefaultUser, DefaultPassword: seteaz numele utilizatorului
care are dreptul de utilizare a bazei de date curente
(DefaultUser), respectiv parola de acces a utilizatorului la baza
de date (DefaultPassword). DefaultUser este de tip String i
poate avea lungimea de maxim 20 de caractere, cnd se
utilizeaz baze de date de tip Microsoft JET, sau poate avea orice
lungime dac se utilizeaz baze de date de tip ODBC;

Exemplu:
Dac se dorete accesarea unei baze de date ca utilizator Guest, cu
parola guest, se va utiliza urmtorul program:

DBEngine.DefaultUser=Guest
DBEngine.DefaultPassword=guest

Workspaces: returneaz sau seteaz zona de lucru pentru
sesiunea curent a bazei de date. naintea utilizrii oricrui tip de
baz de date, acesteia i trebuie creat n prealabil o zon de
lucru;


Exemplu:
Visual Basic
212
Pentru a face zona de lucru curent, disponibil pentru o baz de
date ce va fi creat sau deschis, se va utiliza urmtoarele linii program:
Dim sesiune As Workspace
Set sesiune=DBEngine.Workspaces(0)

Cele mai importante metode ale obiectului DBEngine sunt
urmtoarele:

CreateDatabase: permite crearea unei noi baze de date. Are
urmtorul format general:

Set baz_de_date = sesiune.CreateDatabase (nume, regiune, opiuni)

unde:
baz_de_date: reprezint numele variabilei obiect
(declarat n prealabil cu ajutorul instruciunii Dim) de
tip Database, care va reprezenta baza de date n cadrul
aplicaiei;
sesiune: reprezint sesiunea de lucru reprezentat de
obiectul WorkSpace;
nume: reprezint numele sau calea spre fiierul baz de
date. Acest parametru este de tip String i poate avea
lungimea de maxim 255 de caractere;
regiune: reprezint o constant care determin limbajul
unei ri n care sa fcut, sau se va face gestiunea bazei
de date. Acest parametru poate fi utilizat i pentru
stabilirea unei parole de acces la baza de date, cu ajutorul
expresiei ;pwd=parola;
opiuni: reprezint o constant sau o combinaie de
constante care permit determinarea versiunii bazei de
date (dbVersion10, dbVersion11, dbVersion20,
dbVersion30), sau criptarea bazei de date (dbEncrypt).
Acest parametru este opional;

Exemplu:
Gestionarea bazelor de date
213
Pentru a crea n cadrul directorului My Documents din discul
rdcin fiierul baz de date bd2.mdb, se va utiliza urmtorul program
asociat procedurii Click() ce aparine butonului de comand Command1(),
astfel:

Private Sub Command1_Click()
Dim baza_de_date As Database
Dim sesiune As Workspace
Set sesiune=DBEngine.Workspaces(0)
Set baza_de_date=sesiune.CreateDatabase("c:\My Documents\bd2.mdb", _
dbLangGeneral)
End Sub

CreateWorkspace: permite crearea unui nou spaiu de lucru
(obiect Workspace). Aceast metod are urmtorul format
general:

Set spaiu = CreateWorkspace(nume, utilizator, parol, tip)

unde:
spaiu: reprezint variabila de tip obiect, care va fi
instana la obiectul de tip Workspace creat. Ea va
reprezenta spaiul de lucru nou creat n cadrul aplicaiei;
nume: reprezint numele spaiului de lucru. Poate avea
maxim 255 de caractere;
utilizator: permite definirea unui nume de utilizator al
spaiului de lucru creat;
parola: permite definirea unei parole de acces a
utilizatorului la spaiul de lucru nou creat;
tip: permite definirea tipului spaiului de lucru nou creat.
Acest parametru este o constant care poate lua valorile
dbUseJet, sau dbUseODBC;


Exemplu:
Visual Basic
214
Pentru a crea un nou spaiu de lucru cu denumirea SP1, utilizator
Guest, parola guest i tipul ODBC, se va utiliza urmtorul program:

Private Sub Command2_Click()
Dim sesiune As Workspace
Set sesiune = CreateWorkspace("SP1", _
"Guest", "guest", dbUseODBC)
End Sub

OpenDatabase: permite deschiderea unui fiier baz de date n
spaiul de lucru curent. Aceast funcie returneaz un obiect de
tip Database ntr-o variabil de acest tip care va putea fi utilizat
pe parcursul execuiei programului. Formatul general al acestei
metode este urmtorul:

Set baz_de_date = spaiu.OpenDatabase (nume, opiuni, read-only,
conexiune)

unde:
baz_de_date: reprezint variabila obiect de tip
Database, care va conine baza de date deschis;
spaiu: reprezint spaiul de lucru;
nume: este un ir de caractere ce reprezint numele sau
calea fiierului baz de date care va fi deschis;
opiuni: reprezint un parametru care determin tipul de
acces la baza de date. Poate avea valoarea True, caz n
care accesul va fi exclusive (exclusiv), sau valoarea
False, caz n care accesul va fi shared (partajat);
read-only: poate avea valoarea True caz n care baza de
date este deschis doar pentru citire fr a putea fi stocate
informaii, sau valoarea False, caz n care este permis
att citirea ct i scrierea n baza de date;
conexiune: permite introducerea diferitelor informaii
despre conexiune, inclusiv parola de acces sub forma
expresiei ;pwd=parola. Partea cu diferitele informaii
despre tipul bazei de date este delimitat de partea cu
Gestionarea bazelor de date
215
parol prin punct i virgula. De exemplu: "FoxPro 2.6;
pwd=parola";

Exemplu:
Pentru a deschide baza de date bd2.mdb creat anterior, se va utiliza
urmtoarea secven de program:

Private Sub Command3_Click()
Dim baza_de_date As Database
Dim sesiune As Workspace
Set sesiune = DBEngine.Workspaces(0)
Set baza_de_date = sesiune.OpenDatabase("c:\My Documents\bd2.mdb",
_
False)
End Sub


5.4. Obiectul Database

Acest obiect descinde din colecia de obiecte Databases integrate n
cadrul tehnologiei DAO. Poate fi utilizat pentru deschiderea unei baze de
date i gestionarea acesteia.
Principalele proprieti ale obiectului Database sunt urmtoarele:

Connect: seteaz sau returneaz, sub forma unui ir de caractere,
informaii despre baza de date (surs) deschis. Format general:

Connect = [tip_baz_date][;parametri;]

Unde:
tip_baz_date: reprezint tipul bazei de date. Acest
parametru poate fi ODBC, dBASE IV, FoxPro 2.6 etc.;
parametri: reprezint un set de parametrii, desprii prin
punct i virgul, referitori la caracteristicile fiecrui tip de
baz de date definit prin tip_baz_date;
Visual Basic
216

Exemplu:
Pentru a obine informaii, sub forma unei ferestre pentru mesaje,
despre tipul unei baze de date deschise (n acest caz bd1.mdb) se va
introduce urmtorul program n cadrul procedurii eveniment Click() asociat
unui buton de comand, astfel:

Private Sub Command1_Click()
Dim bd As Database
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
msg = MsgBox(bd.Connect, vbOKOnly, Utilizare Connect)
End Sub

La acionarea butonului rezultatul execuiei este prezentat n figura
5.7.

Fig. 5.7. Rezultatul proprietii Connect.

Transactions: aceast proprietate returneaz sub form boolean
posibilitatea unui obiect DAO de a realiza tranzacii cu alte
obiecte.

Exemplu:
Pentru a observa dac tabela de cmpuri tab1 din cadrul fiierului
baz de date bd1.mdb, suport tranzacii de date, n cadrul evenimentului
Click() asociat unui buton de comand, se va scrie urmtorul program:

Dim bd As Database
Dim t1 As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Gestionarea bazelor de date
217
Set t1 = bd.OpenRecordset("tab1")
msg = MsgBox(t1.Transactions, vbOKOnly, "Utilizare Transactions")

Rezultatul execuiei este prezentat n figura 5.8.


Fig. 5.8. Rezultatul proprietii Transactions.

Dintre metodele obiectului Database, cele mai importante sunt
urmtoarele:

Close: permite dezactivarea i nchiderea unui obiect DAO;
Execute: permite executarea unei comenzi SQL n legtur cu
baza de date deschis. Formatul general este urmtorul:

Execute surs[, opiune]

Unde:
Surs: reprezint un ir de caractere ce va conine o comand
SQL;
Opiune: reprezint una sau mai multe constante care
determin efectul executrii comenzii SQL. Constantele care
pot fi utilizate n cadrul acestui parametru sunt:
DbDenyWrite, dbInconsistent, dbConsistent,
dbSQLPassThrough, dbFailOnError Rolls, dbSeeChanges
dbRunAsync, dbExecDirect;

Visual Basic
218
NewPassword: permite definirea sau modificarea parolei de
acces a utilizatorului curent la baza de date deschis. Format
general:

NewPassword parola_veche, parola_nou

Unde:
Parola_veche: reprezint un ir de caractere care conine
parola veche;
Parola_nou: reprezint un ir de caractere care conine
parola nou;

OpenRecordset: permite crearea unui obiect de tip Recordset ce
va conine o tabel de cmpuri din baza de date deschis sau o
comand SQL. Format general:

Set recordset = obiect.OpenRecordset (surs, tiptb, opiuni, blocaj)

Unde:
surs: reprezint numele tabelei de cmpuri din baza de
date ce va fi deschis;
tiptb: returneaz sau seteaz tipul tabelei de cmpuri.
Poate lua urmtoarele valori: dbOpenTable,
dbOpenDynamic, dbOpenDynaset, dbOpenSnapshot,
dbOpenForwardOnly;
opiuni: reprezint o constant sau un set de constante
care determin caracteristicile obiectului recordset nou
creat. Constantele ce pot fi utilizate la acest parametru
sunt urmtoarele: dbAppendOnly, dbSQLPassThrough,
dbSeeChanges, dbDenyWrite, dbDenyRead,
dbForwardOnly, dbReadOnly, dbRunAsync,
dbExecDirect, dbInconsistent, dbConsistent;
blocaj: permite specificarea modului de blocaj a
operaiilor cu baza de date.

Gestionarea bazelor de date
219

5.5. Utilizarea comenzilor SQL n Visual Basic

Limbajul de interogare i gestiune a bazelor de date SQL
(Structured Query Language) a fost realizat pentru prima dat de firma
IBM (International Bussines Machine) n anul 1970. Acest limbaj a fost
proiectat iniial pentru asigurarea suportului de gestiune i asisten a
sistemului de baze de date relaionale (RDBMS Relationals DataBase
Management System) deinut de companie.
n prezent exist dou standarde SQL utilizate pe plan mondial i
anume: standardul ANSI (American National Standards Institute),
respectiv standardul ISO (International Standrds Organization). Aceste
standarde impun utilizarea SQL n cadrul oricrui sistem de baze de date
relaionale (RDBMS).
Limbajul SQL conine un a ansamblu de instruciuni prin intermediul
crora sunt create bazele de date, sunt stabilite relaii ntre acestea, sunt
filtrate, pot fi sortate etc.

Instruciunile SQL au urmtorul format:

[Declaraii de parametri] Instruciuni [Opiuni]

Declaraii de parametri: permit introducerea unor parametri n
care vor fi ncrcate anumite valori, ce vor putea fi utilizai n
program;
Instruciuni: cuvinte cheie SQL care determin anumite aciuni
asupra bazei de date. De exemplu: SELECT, DELETE etc.;
Opiuni: reprezint anumite cuvinte (clauze) SQL de filtrare sau
de condiionare a nregistrrilor. De exemplu ca opiuni pot fi
amintite urmtoarele cuvinte: WHERE, GROUP BY, ORDER BY
etc.

Execuia n Visual Basic a liniilor program SQL se realizeaz cu
ajutorul metodei Execute, care aparine obiectului DataBase, sau cu ajutorul
proprietii RecordSource, care aparine obiectului Data.
Visual Basic
220
Cele mai utilizate instruciuni SQL sunt urmtoarele:


CREATE TABLE

Permite crearea unei tabele noi de date n cadrul unei baze de date
deschise.
Formatul general:

CREATE TABLE nume_tabel (cmp1 tip [(mrime)] [NOT NULL]
[index1] [, cmp2 tip [(mrime)] [NOT NULL] [index2] [, ...]] [,
CONSTRAINT index_multi_cmp [, ...]])

Unde:
nume_tabel: reprezint numele tabelei de cmpuri care va fi
creat;
cmp1, cmp2: reprezint numele cmpului;
tip: reprezint tipul cmpului (Integer, Long, Single, Double,
Text, Boolean etc.);
mrime: reprezint mrimea cmpului;
NOT NULL: specific faptul c nregistrarea din cadrul
cmpului la care se refer nu poate fi vid;
CONSTRAINT: permite definirea cheilor de indexare simple
sau compuse (din mai multe cmpuri);
index1, index2: reprezint denumirea cheilor de indexare simple;
index_multi_cmp: reprezint denumirea cheii de indexare
compus.

Exemplu:
Dac exist creat pe disc baza de date (Access) bd1.mdb (n
directorul My Documents de pe discul rdcin), pentru crearea unei noi
tabele de cmpuri n cadrul acesteia se va utiliza urmtorul program (poate
fi asociat procedurii eveniment Click() corespunztoare unui buton de
comand):

Gestionarea bazelor de date
221
Private Sub Command1_Click()
Dim bd As Database
Set bd = OpenDataBase("c:\my documents\bd1.mdb")
bd.Execute "CREATE TABLE tab1 (numep Text, datan DateTime, " _
& " CONSTRAINT dtn UNIQUE (datan))"
bd.Close
End Sub

n urma execuiei acestui program va fi creat tabela tab1 care va
conine cmpurile numep de tip Text (ir de caractere) i datan de tip
DateTime, precum i cheia de indexare, unic, dtn pe baza cmpului datan.


ALTER TABLE

Aceast instruciune permite modificarea structurii cmpurilor unei
tabele existente n cadrul unei baze de date. Aceast modificare presupune
fie adugarea unui cmp nou, fie tergerea unuia deja existent.
Formatul general:

ALTER TABLE nume_tabel {ADD {COLUMN cmp tip[(mrime)]
[NOT NULL] [CONSTRAINT index] |
CONSTRAINT index_multi_cmp} |
DROP {COLUMN cmp | CONSTRAINT index} }

Unde:
nume_tabel: reprezint numele tabelei ce va fi modificat;
ADD COLUMN: specific faptul c se va aduga un cmp n
structura tabelei;
cmp: reprezint numele cmpului ce va fi adugat, respectiv
modificat;
tip, mrime: reprezint tipul, respectiv mrimea cmpului ce va
fi adugat;
DROP COLUMN: specific faptul c se va terge cmpul
indicat prin cmp, sau cheia de indexare indicat prin index.

Visual Basic
222
Exemplu:
Pentru adugarea unui cmp nou (sal_o de tip Single) n cadrul
tabelei create n exemplul de la CREATE TABLE, se va utiliza urmtorul
program asociat procedurii Click() corespunztoare unui buton de comand:

Private Sub Command2_Click()
Dim bd As Database
Set bd = OpenDataBase("c:\my documents\bd1.mdb")
bd.Execute "ALTER TABLE tab1 ADD COLUMN sal_o Single"
bd.Close
End Sub

Pentru tergerea cmpului creat n exemplul de mai sus i a cheii de
indexare creat la exemplul instruciunii CREATE TABLE, se va utiliza
urmtorul program:

Private Sub Command3_Click()
Dim bd As Database
Set bd = OpenDataBase("c:\my documents\bd1.mdb")
bd.Execute "ALTER TABLE tab1 DROP COLUMN sal_o "
bd.Execute "ALTER TABLE tab1 DROP CONSTRAINT dtn"
bd.Close
End Sub


SELECT

Returneaz coninutul bazei de date sub forma unui set de
nregistrri, sau returneaz coninutul cmpurilor dintr-o baz de date n
cadrul unui obiect Recordset.
Formatul general:

SELECT [predicate] { * | nume_tabel.* | [nume_tabel.]cmp1 [AS
alias1] [, [nume_tabel.]cmp2 [AS alias2] [, ...]]}
FROM expresie_tabel [, ...] [IN baza_de_date_extern]
[WHERE... ]
Gestionarea bazelor de date
223
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]

Unde:
Predicate: pot fi una din urmtoarele comenzi: ALL,
DISTINCT, DISTINCTROW, i TOP. Aceste comenzi
sunt utilizate sub forma unor condiii de citire a
cmpurilor bazei de date;
alias: reprezint o denumire ce poate fi asociat
cmpului unei tabele, denumire care va reprezenta acel
cmp n cadrul altor instruciuni;
expresie_tabel: reprezint numele tabelei sau tabelelor
de unde vor fi extrase datele reprezentate prin cmp1,
cmp2,;
baz_de_date_extern: reprezint numele unei baze de
date extern din care fac parte tabelele din
expresie_tabel. Acest parametru este utilizat doar dac
tabelele din expresie_tabel nu sunt din baza de date
deschis n momentul utilizrii instruciunii SELECT;
WHERE: aceast clauz permite specificarea unui
criteriu de citire i afiare a nregistrrilor din cmpurile
bazei de date n funcie de o anumit expresie. De
exemplu dac se dorete citirea tuturor angajailor care au
salariul orar mai mare de 50.000 se va utiliza: WHERE
sal_o > 50000;
GROUP BY: permite gruparea sub forma unei sigure
nregistrri mai multor nregistrri compatibile ca tip (de
acelai fel). De exemplu, pentru a grupa toi angajaii cu
acelai nume ntr-o list se va utiliza GROUP BY numep;
HAVING: permite introducerea unui criteriu de
ncrcare a listei pentru clauza GROUP BY. De exemplu
pentru ncrcarea n cadrul listei create cu GROUP BY a
tuturor salariailor la care numele ncepe cu litera B se va
scrie: GROUP BY numep HAVING numep LIKE B*;
Visual Basic
224
ORDER BY: permite stabilirea unor criterii de sortare a
nregistrrilor citite, n ordine cresctoare sau
descresctoare. De exemplu pentru citirea n ordine
cresctoare a numelui angajailor se va utiliza: ORDER
BY numep ASC; iar pentru citirea n ordine
descresctoare: ORDER BY numep DESC.

Exemplu:
Pentru a citi din cadrul tabelei tab1, a bazei de date bd1.mdb, toate
nregistrrile al crui numep ncepe cu grupul de litere POP se va utiliza
urmtorul program:

Private Sub Command4_Click()
Data1.RecordSource = "SELECT numep FROM tab1 WHERE numep _
& LIKE 'POP*'"
Data1.Refresh
End Sub

n acest exemplu s-a utilizat un control de tip DATA i un obiect de
tip DBGRID. Tabela nainte de selectarea condiionat este prezentat n
figura 5.9, iar dup selectarea cu condiie este prezentat n figura 5.10:








Gestionarea bazelor de date
225

Fig. 5.9. Coninutul tabelei tab1 nainte de selectarea cu condiie













Fig. 5.10. Afiarea nregistrrilor tabelei tab1 dup utilizarea
condiiei WHERE din cadrul butonului Command4 (Conditie).


SELECT INTO

Aceast instruciune permite crearea unei noi tabele de cmpuri prin
copierea cmpurilor dintr-o tabel deja existent.
Formatul general:

Visual Basic
226
SELECT cmp1[,cmp2[, ...]] INTO tabela_nou
[IN baz_de_date_extern] FROM tabela_surs

Unde:
cmp1, cmp2: cmpurile tabelei tabela_surs care vor fi
copiate n tabela_nou;
tabela_nou: numele tabelei care va fi creat;
baz_de_date_extern: numele sau calea spre o baz de
date, alta dect cea deschis, n care se va crea noua
tabel;
tabela_surs: numele tabelei din care se vor copia
cmpurile.

Exemplu:
Pentru generarea n cadrul bazei de date bd1.mdb a unei noi tabele
tab2 prin copierea structurii tabelei tab2 se utilizeaz urmtorul program:

Private Sub Command5_Click()
Dim bd As Database
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
bd.Execute "SELECT numep, datan INTO tab2 FROM tab1"
bd.Close
End Sub


INSERT INTO

Permite adugarea unei sau a mai multor nregistrri la o tabel a
bazei de date.
Formatul general:

n cazul adugrii unei singure nregistrri:


INSERT INTO destinaie [(cmp1[,cmp2 [, ...]])]
VALUES (valoare1[, valoare2[, ...])
Gestionarea bazelor de date
227

Unde:
destinaie: numele tabelei destinaie;
cmp1, cmp2, : numele cmpurilor n care se va face
adugarea;
VALUES: specific faptul c n cadrul tabelei vor fi
ncrcate valorile unor variabile;
valoare1, valoare2, : valorile care vor fi ncrcate n
baza de date;

n cazul ncrcrii mai multor nregistrri:


INSERT INTO destinaie
[IN baz_de_date_extern] [(cmp1[,cmp2[, ...]])]
SELECT [surs.] cmp1[,cmp2[, ...]
FROM expresie_tabel

Unde:
baz_de_date_extern: numele unei baze de date extern,
pe disc, n care se va face adugarea;
SELECT: permite selectarea unor cmpuri dintr-o tabel
surs din care se va face adugarea;
FROM: permite specificarea prin parametrul
expresie_tabel a tabelei sau tabelelor din care se vor
aduga nregistrrile.


DELETE

Aceast instruciune permite tergerea unei tabele sau a
nregistrrilor dintr-o tabel de cmpuri.

Formatul general:

Visual Basic
228
DELETE [nume_tabel.*]
FROM nume_tabel
WHERE criteriu

Unde:
nume_tabel: reprezint numele tabelei care va fi tears
sau din care vor fi terse unele nregistrri;
criteriu: reprezint criteriul dup care se va face tergerea
nregistrrilor.

Exemplu:
Pentru a terge toate nregistrrile din cadrul tabelei tab1, ale cror
cmp numep ncepe cu grupul de litere POP* se va utiliza urmtorul
program:

Private Sub Command7_Click()
Dim bd As Database
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
bd.Execute "DELETE * FROM tab1 WHERE numep LIKE 'POP*'"
bd.Close
End Sub


UPDATE

Aceast instruciune permite actualizarea cu valori a nregistrrilor
din cadrul unei tabele de cmpuri a bazei de date.

Formatul general:

UPDATE nume_tabel
SET valoare_nou
WHERE criteriu;

Exemplu:
Gestionarea bazelor de date
229
Pentru majorarea nregistrrilor din cmpul sal_o, din tabela tab1, cu
40% se va utiliza urmtorul program:

Private Sub Command8_Click()
Dim bd As Database
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
bd.Execute "UPDATE tab1 SET sal_o=sal_o*1.4;"
bd.Close
End Sub


CREATE INDEX

Permite crearea unei chei de indexare la o tabel de cmpuri.
Format general:

CREATE [ UNIQUE ] INDEX cheie_indexare
ON nume_tabel (cmp [ASC|DESC][, cmp [ASC|DESC], ...])
[WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]

Unde:
UNIQUE: specific faptul c cheia de indexare este
unic, adic nu va filtra nregistrrile dublate;
cheie_indexare: reprezint numele cheii de indexare;
nume_tabel: reprezint numele tabelei de cmpuri care
va fi indexat;
cmp: reprezint numele cmpurilor tabelei dup care se
va face indexarea;
ASC|DESC: specific faptul c indexarea va fi fcut n
ordine cresctoare (ASC) sau n ordine descresctoare
(DESC);
PRIMARY: permite crearea unei chei primare de
indexare;
DISALLOW NULL: respinge nregistrrile vide;
IGNORE NULL: ignor nregistrrile vide.
Visual Basic
230

Exemplu:
Pentru crearea unei chei de indexare cu numele ndtn, dup cmpurile
numep i datan, pentru tabela tab1, se va utiliza urmtorul program:

Private Sub Command8_Click()
Dim bd As Database
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
bd.Execute "CREATE INDEX ndtn ON tab1 (numep ASC, " _
& "datan ASC) WITH IGNORE NULL;"
bd.Close
End Sub


5.6. Obiectul Recordset

Acest obiect conine nregistrrile dintr-o baz de date. Prin
intermediul su se pot accesa i modifica nregistrrile din baza de date.
Principalele proprieti ale acestui obiect sunt :

BOF, EOF: sunt utilizate la testarea poziiei pointer-ului de
fiier (poziia nregistrrii curente) n cadrul unei tabele de
cmpuri. Simbolul BOF provine de la Begin Of File (nceput de
fiier), iar simbolul EOF provine de le End Of File (sfrit de
fiier). Sunt de tip Boolean i returneaz valoarea True dac
poziia pointer-ului se gsete naintea primei nregistrri (BOF),
respectiv dac este poziionat dup ultima nregistrare (EOF) din
baza de date, iar valoarea False arat faptul ca poziia pointer-
ului se gsete dup prima nregistrare din tabela (BOF),
respectiv naintea ultimei nregistrri (EOF).



Exemplu:
Dac se dorete afiarea unui mesaj n momentul n care pointer-ul
de fiier a ajuns la nceputul sau la sfritul tabelei de cmpuri (reprezentat
Gestionarea bazelor de date
231
prin obiectul Recordset) tab1 din cadrul fiierului baz de date bd1.mdb, se
va introduce n cadrul unei proceduri eveniment, sau definit de ctre
utilizator, urmtoarele linii program:

Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("C:\My Documents\bd1.mdb", False)
Set rs = bd.OpenRecordset("tab1")
If rs.BOF = True Then
msg = MsgBox("Pozitie la inceput de fisier", vbOKOnly, _
"Utilizare BOF")
End If
If rs.EOF = True Then
msg = MsgBox("Pozitie la sfarsit de fisier", vbOKOnly, _
"Utilizare BOF")
End If
bd.Close

Dac baza de date a fost deschis printr-o alt operaie din cadrul
programului de mai sus se vor utiliza doar liniile:
If rs.BOF = True Then
msg = MsgBox("Pozitie la inceput de fisier", vbOKOnly, _
"Utilizare BOF")
End If
If rs.EOF = True Then
msg = MsgBox("Pozitie la sfarsit de fisier", vbOKOnly, _
"Utilizare BOF")
End If

RecordCount: returneaz numrul nregistrrilor dintr-o tabela
de cmpuri a unei baze de date i are urmtorul format general :

obiect.RecordCount

unde obiect este o variabil de tip Recordset.

Exemplu :
Visual Basic
232
Pentru a ncrca ntr-o variabil de memorie n, de tip numeric Long
i afia ntr-o fereastr mesaj numrul nregistrrilor din tabela tab1 a
fiierului baz de date bd1.mdb, deja deschise, se va utiliza urmtoarele linii
program:

Dim n As Long
n = rs.RecordCount
msg = MsgBox("Numar nregistrari: " & n, vbOKOnly, _
"Utilizare RecordCount")

Sort: ordoneaz nregistrrile unei baza de date, cresctor sau
descresctor (implicit cresctor), dup valorile unui anumit cmp
din aceasta. Formatul general este :

obiect.Sort [= criteriu]

unde:
obiect: este o variabil de tip Recordset;
criteriu: este opional i reprezint un ir de caractere ce poate
conine clauza parametrului Order By dint-o instruciune SQL.

Exemplu:
Avnd n vedere faptul c tabela de cmpuri tab1, creat ntr-un
exemplu din seciunea 5.5 (SQL), conine cmpurile numep, datan, pentru a
face ordonarea cresctor i descresctor a nregistrrilor dup cmpul numep
se va utiliza urmtoarele linii program:

- ordonare cresctoare

Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenSnapshot)
rs.Sort = "numep ASC"
bd.Close

- ordonare descrescatoare
Gestionarea bazelor de date
233

Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenSnapshot)
rs.Sort = "numep DESC"
bd.Close

Index: returneaz sau seteaz o cheie de indexare pentru tabela
de cmpuri dintr-un obiect Recordset. Format general:

obiect.Index [ = nume_cheie_de_indexare ]

unde:
nume_cheie_de_indexare este un parametru opional care
reprezint un ir de caractere ce conine numele cheii de
indexare dup care este fcut sau se va face indexarea
tabelei de cmpuri.

Exemplu:
Avnd vedere c la comanda Create Index din paragraful 5.5 a fost
creat, pentru tabela tab1, cheia de indexare ndtn, pentru ca aceasta s fie
activat se va utiliza urmtorul program:

Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenTable)
rs.Index = "ndtn"

NoMatch: returneaz valoarea True dac nregistrarea cutat cu
ajutorul metodei Seek a fost gsit, respectiv valoarea False n
caz contrar.

Dintre metodele obiectului Recordset cele mai utilizate sunt :

AddNew: adaug o noua nregistrare la sfritul tabelei de
cmpuri. Format general :
Visual Basic
234

obiect.AddNew

Update - se foloseste impreuna cu metodele AddNew si Edit
pentru a salva in baza de date noua inregistrare sau modificarile
facute inregistrarii curente. Format general :

obiect.Update

Close: nchide tabela de cmpuri curenta. Format general:

obiect.Update

Exemplu:
Pentru adugarea n tabela tab1 a unei noi nregistrri, dup care
tabela va fi nchis, se va utiliza urmtoarea procedur eveniment asociat
unui buton de comand, astfel:
Private Sub Command1_Click()
Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenDynaset)
rs.AddNew
rs.Fields("numep").Value = "Marin Sorin"
rs.Fields("datan").Value = "04/02/1980"
rs.Update
rs.Close
End Sub

Delete: permite tergerea nregistrrii curente din cadrul unei
tabele deschise. Format general :

obiect.Delete

Edit: permite editarea (modificarea) nregistrrii curente dintr-o
tabel de cmpuri deschisa. Format general :

Gestionarea bazelor de date
235
obiect.Edit

FindFirst, FindLast, FindNext, FindPrevious: caut prima,
ultima, urmtoarea sau precedenta nregistrare care satisface un
anumit criteriu de cutare, fcnd-o nregistrare curenta. Format
general :

obiect.{FindFirst | FindLast | FindNext | FindPrevious} criteriu

Exemplu:
Pentru localizarea i modificarea datei de natere a nregistrrii cu
numele i prenumele Dumbrava Liviu din 18.04.1980 n 20.04.1980,
precum i localizarea i tergerea nregistrrii cu numele i prenumele
Marin Sorin, se va utiliza urmtoarea procedur eveniment:
Private Sub Command1_Click()
Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenDynaset)
rs.FindFirst "numep='Dumbrava Liviu'"
rs.Edit
rs!Datan = "20/04/1980"
rs.Update
rs.FindFirst "numep='Marin Sorin'"
rs.Delete
rs.Close
End Sub

MoveFirst, MoveLast, MoveNext, MovePrevious: mut poziia
curent din fiier la prima, ultima, urmtoarea sau precedenta
nregistrare din tabel. Format general :

obiect.{MoveFirst | MoveLast | MoveNext | MovePrevious}

Seek: permite localizarea rapid a unei nregistrri ntr-o tabel
de cmpuri prin intermediul cheii de indexare. Aceast metod
poate fi utilizat doar la tabelele de cmpuri care au fost indexate
Visual Basic
236
dup cmpul n funcie de care se va face localizarea. Format
general:

obiect.Seek comparaie, cheie1, cheie2...cheie13

unde:
comparaie: reprezint un ir de caractere ce conine unul
sau doi operatori de comparaie dintre cheia de indexare
i valoarea cutat. Operatorii pot fi <, <=, =, >=, sau >;
cheie1, cheie2, , cheie13: reprezint poziia
corespunztoare cmpului indexat n care se va scrie
valoarea cutat.

Exemplu:
Avnd n vedere c tabela tab1 mai are i cheia de indexare numep
dup cmpul numep (cu ajutorul comenzii Create Index din SQL), s se
localizeze nregistrarea cu valoarea cmpului numep egal cu Nica Maria i
s se modifice data naterii din 10.11.1981 n 20.11.1981. Pentru a realiza
aceast operaie se va utiliza urmtorul program:

Private Sub Command3_Click()
Dim bd As Database, rs As Recordset
Set bd = OpenDatabase("c:\my documents\bd1.mdb")
Set rs = bd.OpenRecordset("tab1", dbOpenTable)
rs.Index = "numep"
rs.Seek "<=", "Nica Maria"
If rs.NoMatch <> True Then
msg = MsgBox("Inregistrare gasita", vbOKOnly, _
"Utilizare Seek")
rs.Edit
rs("datan") = "20/11/1981"
rs.Update
Else
msg = MsgBox("Inregistrarea nu a fost gasita", vbOKOnly, _
"Utilizare Seek")
End If
Gestionarea bazelor de date
237
End Sub


6.7. Controlul Data ( )

Acest control poate fi folosit pentru crearea rapid a unei aplicaii de
gestionare a bazelor de date. Controlul Data, pentru gestiunea bazei de date,
acceseaz obiectele Database i Recordset. ncrcarea acestui control pe
fereastra aplicaiei se va face la fel ca i n cazul celorlalte controale din
Toolbox. n cadrul unei forme pot fi ncrcate mai multe controale Data,
primul avnd numele de Data1, al doilea Data2 etc, fiind afiate ca n figura
5.11.


Fig. 5.11. Controlul Data n cadrul unei ferestre.


Proprietile cele mai importante ale acestui control sunt :

Connect: prin intermediul acestei proprieti se stabilete tipul
bazei de date ce va fi folosit. Formatul general este :

obiect.Connect = [TipBazaDate;[Parametrii;]]

unde :
TipBazaDate: reprezint tipul bazei de date ce va fi
folosit i care poate fi o baza de date in: Access, dBase
III, dBase IV, dBase 5.0, Paradox 3.x, Paradox 4.x,
Paradox 5.x, FoxPro 2.0, FoxPro 2.5, FoxPro 2.6,
Visual Basic
238
FoxPro 3.0, Excel 3.0, Excel 4.0, Excel 5.0, Excel 7.0,
Lotus WK1, Lotus WK2, Text.
Parametrii: poate fi :
DATABASE=calea spre baza de date;
UID = utilizator;
PWD = parola;
DSN = numele sursei bazei de date;
LOGINTIMEOUT= secunde "
Valoarea acestei proprieti se poate seta fie din cadrul ferestrei de
proprieti prin apsarea butonului din cadrul casetei corespunztoare
acesteia i alegerea tipului de baza de date dorit, fie in cadrul programului
aplicaiei.

Exemplu:
Pentru a conecta controlul Data1 la o tabela FoxPro, cu numele
bdfox.dbf, se va introduce urmtoarea linie de program:

Data1.Connect=FoxPro 2.6; DATABASE=C:\My Documents\bdfox.dbf

DatabaseName: are ca valoare calea spre baza de date ce se
dorete a fi folosit, avnd urmtorul format general :

obiect.DatabaseName [ = cale ]

unde:
cale: reprezint calea spre baza de date care poate fi un
fiier cu extensia .MDB (Access), .DBF (FoxPro si
dBase), .PDX (Paradox), .XLS (Excel), .WK1, .WK2,
.WK3 (Lotus), n funcie de tipul ales ca valoare a
proprietii Connect.

Exemplu :
Avnd n vedere faptul c baza de date deschis este de tip FoxPro,
aceast proprietate va avea urmtoarea valoare:

Data1.DatabaseName=C:\xxx.dbf
Gestionarea bazelor de date
239

BOFAction, EOFAction: valorile acestor proprieti reprezint
aciunile care au loc atunci cnd apare BOF (Begin Of File) i
EOF (End Of File). Astfel :
BOFAction poate avea valoarea : 0 - Move First
1 - BOF
unde:
- Move First: poziioneaz pointer-ul de fiier pe prima
nregistrare din cadrul bazei de date;
- BOF: poziioneaz pointer-ul de fiier la nceputul acestuia.

EOFAction poate avea valoarea : 0 - Move Last
1 - EOF
2 - Add New
unde:
- Move Last: poziioneaz pointer-ul de fiier pe ultima
nregistrare din cadrul bazei de date;
- EOF poziioneaz pointer-ul de fiier la sfritul acestuia;
- Add New pregtete baza de date pentru adugarea unei noi
nregistrri la sfritul acesteia.

Recordset: returneaz o valoare ce face referire la un obiect
Recordset cu ajutorul cruia sunt accesate i prelucrate
nregistrrile dintr-o baza de date.

RecordsetType: reprezint caracteristica nregistrrilor din
cadrul bazei de date i poate lua una din urmatoarele valori :
0 - Table
1 - Dynaset
2 - SnapShot
unde:
- Table: este un set de nregistrri ce reprezint o singura baza de
date (bdfox.dbf);
- Dynaset este un set dinamic de nregistrri ce reprezint o tabel
de cmpuri sau o baza de date query formata din cmpurile mai
multor tabele;
Visual Basic
240
- SnapShot este o copie statica (neactualizabil) a unui set de
nregistrri ce poate fi folosit in generarea unor rapoarte.

RecordSource: reprezint o tabel de cmpuri, o baz de date
query sau SQL query, stabilit n cadrul proprietii
DatabaseName.

Modul de funcionare a controlului Data este ilustrat n cadrul
aplicaiei 15



Dezvoltarea aplicaiilor n Visual Basic
241










6.1. Gestionarea unei aplicaii Visual Basic

Proiectul unei aplicaii Visual Basic, sau proiectul unei aplicaii
vizuale n general, este alctuit din totalitatea modulelor sau fiierelor care
vor interaciona ntre ele n vederea realizrii obiectivelor pentru care a fost
realizat aplicaia. Modulele ce pot intra n componena unui proiect pot fi:
Ferestre (Forms): sunt reprezentate i stocate n fiiere cu
extensia .FRM, sau .FRX;
Module de program externe (Modules): sunt fiiere care conin
declaraii de variabile, proceduri (subrutine), sau funcii care vor
putea fi utilizate de ctre celelalte module ale proiectului. Ele
sunt reprezentate prin fiiere cu extensia .BAS;
Module de definire a claselor pentru obiecte (Class Modules):
sunt fiiere n care se definesc clasele pentru obiectele nou
create. Ele conin variabile, proceduri sau funcii ce vor
constituii proprietile i metodele viitoarelor obiecte. Acestea
sunt reprezentate prin fiiere cu extensia .CLS;
Module de definire a unor controale noi (User Controls): sunt
fiiere care conin controale definite de ctre utilizator prin
folosind tehnologia AciveX. Sunt reprezentate prin fiiere cu
extensia .CTL;
Module de definire a proprietilor unor obiecte sau controale
(Property Pages): sunt fiiere care conin definiiile proprietilor
unor obiecte sau controale generate conform tehnologiei ActiveX.
Aceste module sunt reprezentate de fiiere cu extensia .PAG;
Visual Basic
242
Module de definire a relaiilor dintre un obiect AciveX i o baz
de date (Designers);
Alte module cum ar fi: fiiere text (.TXT), fiiere resurs (RES),
fiiere grafice (.BMP, .ICO, .JPG, .WMF) .a.

Modelul de dezvoltare a aplicaiilor sub forma unor proiecte, are
originea n principiile clasice de proiectare a sistemelor informatice. Astfel
orice aplicaie informatic trebuie, conform unor standarde internaionale, s
aib la baz un proiect elaborat de echipa de analiz i proiectare.
Dispunnd de un astfel de element n cadrul unui mediu de programare, este
mai uor pentru programatori s implementeze n acel limbaj proiectul care
st la baza oricrei aplicaii informatice.
Toate modulele componente ale unui proiect n Visual Basic sunt
stocate n fereastra Project (figura 2.53).
Pentru gestiunea acestor module se utilizeaz meniul Project (figura
2.17). Funciunea opiunilor acestui meniu a fost tratat n cadrul capitolului
doi, paragraful 2.3.1.1, Bara de meniu.
Modul de execuie a proiectului i componentelor sale poate fi
gestionat prin intermediul opiunii Project Properties ... din meniul Project.
Selectarea acestei opiuni are ca rezultat afiarea ferestrei Project Properties
(figura 6.1).


Fig. 6.1. Fereastra Project Properties
Dezvoltarea aplicaiilor n Visual Basic
243
Aceast fereastr conine patru tabele astfel:
General: permite setarea unor caracteristici generale legate de
proiect. Cele mai importante elemente ale acestei tabele sunt:
Project Type: permite selectarea din caseta combo, tipul
proiectului, care poate fi Standard EXE, ActiveX EXE,
ActiveX DLL, ActiveX Control;
Startup Object: permite alegerea din caseta combo a
obiectului care se dorete a fi lansat primul n execuie n
momentul rulrii proiectului (aplicaiei). De exemplu dac se
dorete ca fereastra Form2 s fie afiat prima n momentul
execuiei aplicaiei, se va selecta din caseta combo elementul
Form2;
Project Name: permite definirea (introducerea) unei
denumiri pentru proiect respectiv aplicaie;
Help File Name: permite introducerea numelui sau calea spre
un fiier de asisten (help) care va fi asociat proiectului;
Make: permite setarea unor parametri n legtur cu identificarea
aplicaei astfel:
Version Number: permite definirea unui numr care s
reprezinte versiunea aplicaiei care are la baz proiectul;
Application: permite atribuirea unei denumiri (Title) i a unui
icon (Icon) pentru aplicaie;
Version Information: permite determinarea unor caracteristici
de identificare a aplicaiei i autorului acesteia prin
intermediul celor dou casete: Type pentru tipul informaiei
i Value pentru valoarea fiecrui tip de informaie selectat;
Compile: permite setarea unor parametri de optimizare la
compilare a proiectului referitor la optimizarea codului
executabil, optimizare n funcie de procesor etc;
Component: permite setarea unor caracteristici atunci cnd se
utilizeaz n cadrul proiectului unul sau mai multe obiecte
ActiveX.

Visual Basic
244
Compilarea proiectului i transformarea lui n cod executabil direct
de sub sistemul de operare se realizeaz selectnd opiune Make
Project.exe... din cadrul meniului File.


6.2. Etapele elaborrii unei aplicaii
Visual Basic

Realizarea unei aplicaii (proiect) n mediile de programare RAD
(Rapid Application Development) n general, respectiv Visual Basic,
presupune parcurgerea urmtoarelor etape:
Definirea enunului general al aplicaiei (formularea problemei). n
aceast etap sunt definite datele de intrare, rezultatele care trebuie s se
obin, precum i transformrile i prelucrrile care se aplic asupra
datelor de intrare pentru a le transforma n rezultate. Formularea clar,
complet i corect a problemei reprezint o cerin important n
finalizarea cu rezultate bune a activitii de proiectare i realizare a
problemelor. n cazul aplicaiilor de mari dimensiuni, a cror rezolvare
se abordeaz de ctre o echip de analiz proiectare, programare,
formularea problemei poate fi primit de programator de la analist, sub
forma unor specificaii de programare.
Elaborarea (proiectarea) algoritmilor. Este o etap complex n care
are loc formularea matematic a probleme i i se stabilete ordinea de
efectuare a prelucrrilor. Aceast etap se finalizeaz cu reprezentarea
algoritmului ntr-o anumit form (schema de sistem, organigrama,
schema logic de program, pseudocod etc.) simplificnd foarte mult
eforturile depuse n etapele de scriere, testare i definitivare a
programelor.
Proiectarea interfeei utilizator a aplicaiei. n cadrul acestei etape
programatorul concepe i implementeaz n mod vizual i interactiv
elementele interfeei dintre aplicaie i utilizatorul acesteia. Elementul
care st la baza realizrii interfeei l constituie forma (macheta de lucru
sau fereastra aplicaiei) n cadrul creia vor fi implementate toate
controalele, bara de meniu, meniurile popup, corespunztoare aplicaiei
proiectate. Forma poate fi conceput att ca i fereastr principal a
Dezvoltarea aplicaiilor n Visual Basic
245
aplicaiei ct si ca fereastr de dialog afiabil n anumite momente
(stabilite de programator) pe parcursul execuiei aplicaiei. La intrarea n
mediul de programare Visual Basic este afiat, n mod implicit, o form
avnd denumirea de Form1. Pe aceasta vor fi implementate celelalte
elemente ale interfeei aplicaiei astfel:
controalele din cadrul toolbox-ului (figura 2.30);
bara de meniu pentru aplicaie. Poate fi creat prin
intermediul ferestrei de proiectare a meniului Menu
Editor ce este afiat la apelarea opiunii Menu Editor din
cadrul meniului Tools, sau prin apsarea butonului
din cadrul toolbar-ului;
alte obiecte necesare realizrii i utilizrii aplicaiei dar
care nu sunt de natura controalelor (Common, Internet
etc).

Setarea proprietilor. innd cont de faptul ca proprietile unui obiect
determin comportamentul acestuia n cadrul aplicaiei, aceast etap
presupune modificarea valorilor proprietilor obiectelor implementate
n cadrul etapei descrise mai sus. Pentru aceasta se parcurg urmtorii
pai:
se selecteaz cu ajutorul mouse-ului obiectul (forma,
control) ale crui proprieti se doresc a fi modificate;
n cadrul ferestrei cu proprieti, Properties (figura 2.54)
se seteaz valorile proprietilor (nume, aliniere .a)
obiectului respectiv.
Scrierea (editarea) programului corespunztor aplicaiei. Programul
corespunztor aplicaiei reprezint ansamblul de constante, variabile,
proceduri (subrutine), funcii i instruciuni definite n vederea
prelucrrii datelor aplicaiei. Programul se editeaz n cadrul ferestrei de
editare a programului cunoscut sub numele de fereastra Code (figura
3.18). Aceast fereastr este afiat fie prin apelarea opiunii Code
(<F7>) din cadrul meniului View, fie printr-un dublu click mouse pe
obiectul din cadrul interfeei aplicaiei. Declaraiile de variabile generale
se vor introduce n cadrul seciunii (General), iar programul asociat
Visual Basic
246
fiecrei proceduri eveniment se va introduce n corpul procedurii. Pe
lng procedurile eveniment n cadrul acestei ferestre pot fi editate i
proceduri sau funcii definite de ctre utilizator. O parte a programului
asociat aplicaiei poate fi scris i n cadrul modulelor program externe
(fiiere cu extensia .BAS). Modulele de program externe pot conine
doar proceduri sau funcii definite de ctre utilizator. Apelarea
procedurilor definite de ctre utilizator se realizeaz fie prin simpla
scriere a numelui procedurii i/sau parametrilor acesteia, fie cu ajutorul
instruciunii Call, astfel:

Call nume_procedur

Exemplu:
s se proiecteze o fereastr care s conin o etichet i
un buton de comand (figura 6.2);



Fig. 6.2. Macheta aplicaiei.

se asociaz aplicaiei un modul extern (.BAS) selectnd
opiunea Add Module din cadrul meniului Project, iar din
fereastra de dialog afiat se selecteaz icon-ul Module;
n fereastra de scriere a programului, afiat se vor edita
urmtoarele linii program, reprezentnd o declaraie
global de variabil (c) i o procedur de calcul a
variabilei c pe baza a doi parametri a i b, astfel:



Dezvoltarea aplicaiilor n Visual Basic
247
Public c As Double

Sub calcul(a As Single, b As Single)
c = a * b
End Sub

Variabila c este declarat global (public) pentru a fi recunoscut n cadrul
tuturor modulelor aplicaiei.
Se va scrie n cadrul procedurii eveniment Click()
asociat butonului de comand Command1 urmtorul
program:

Call calcul(100, 5)
Label1.Caption = c

Acest program apeleaz procedura utilizator, definit n cadrul
modulului extern, ce va calcula variabila c n funcie de cei doi parametri
(100 i 5). Rezultatul din variabila c, adic 500, este afiat n cadrul
etichetei din fereastr.
Execuia aplicaia este prezentat n figura 6.3.



Fig. 6.3. Execuia aplicaiei.

Testarea i definirea programelor. n aceast etap programele sunt
testate sintactic (n timpul compilrii), iar n procesul consolidrii
(editrii de legturi) se verific modul n care au fost concepute
opiunile de intrare / ieire, cum sunt gestiunile de intrare ieire, modul
n care au fost apelate, implicit sau explicit, procedurile utilizatorului
Visual Basic
248
sau ale sistemului etc.. n aceast faz programul se consider corect
dac rezultatele obinute sunt cele scontate n conformitate cu cerinele
utilizatorului.
Elaborarea documentaiei aplicaiei care trebuie s cuprind descrierea
aplicaiei, organigrama, schema logic a programului, programul surs,
instruciuni de utilizare i eventual o list a execuiei cu date reale.
Exploatarea curent i actualizarea ulterioar a aplicaiei. n timpul
exploatrii se pot aduce o serie de mbuntiri pentru creterea
performanelor acesteia sau pentru adaptarea programului la eventualele
modificri n cerinele utilizatorului.


6.3. Aplicaii Visual Basic

Aplicaia 1

n cadrul acestei aplicaii este ilustrat modul de lucru cu etichete,
zone (casete de editare) de editare i butoane de comand. Pentru realizarea
aplicaiei trebuie parcuri urmtorii pai:
modificarea unor proprieti ale foii de lucru astfel:
BorderStyle = 1 - Fixed single
Caption = Calcul valoare produs
ControlBox = False
Height = 4425
Left = 720
MaxButton = False
Name = Fereastra1
Scaleheight = 4020
Scalewidth = 8670
Top = 1185
Width = 8790
ncrcarea pe foaia de lucru a controalelor: etichete, butoane de
comanda, zone de editare si poziionarea lor ca n figura
urmtoare:

Dezvoltarea aplicaiilor n Visual Basic
249



setarea proprietii Caption a etichetelor i butoanelor de
comand, astfel:
- pentru Label1
Caption = Denumire produs:

Label2
Caption = Cantitate:

Label3
Caption = Pret:

Label4
Caption = Valoare:

Command1
Caption = &Calcul

Command2
Caption = &Iesire

setarea proprietii Autosize a etichetelor de la 1 la 4 cu valoarea
True;

setarea proprietii BorderStyle a etichetei 5 (Label5) cu valoarea
1 - Fixed Single;
Visual Basic
250

n urma setrii proprietilor obiectelor, fereastra aplicaiei va fi
asemntoare celei din figura urmtoare:



editarea programului corespunztor procedurii
Command1_Click() i Command2_Click() astfel:

Private Sub Command1_Click ()
cant = Val(text2.Text)
pret = Val(text3.Text)
valoare = cant * pret
label5.Caption = valoare
text1.SetFocus
End Sub

Private Sub Command2_Click()
End
End Sub

n cadrul programului au fost utilizate urmtoarele variabile
numerice:
cant: reprezint variabila ce conine valoarea introdus de
utilizator n cadrul casetei de editare Text2, corespunztor
cantitii achiziionat din produs;
pret:
Execuia aplicaiei se prezint astfel:
Dezvoltarea aplicaiilor n Visual Basic
251




Aplicaia 2

n aceast aplicaie se va utiliza o caseta de tip list, n cadrul creia
se va introduce numele unei persoane, suma depus de aceasta la o banc,
rata dobnzii i se calculeaz i afieaz dobnda.
Pentru introducerea n caseta de tip list a unor elemente (item-uri)
se va folosi proprietatea AddItem.
Interfaa aplicaiei este prezentat n figura urmtoare:







Visual Basic
252


Programul asociat formei aplicaiei (coninut fiier form1.frm) este
urmtorul:

VERSION 5.00
Begin VB.Form Form1
Caption = "Calcularea fondului de dobinzi"
ClientHeight = 5910
ClientLeft = 1080
ClientTop = 1485
ClientWidth = 7935
BeginProperty Font
Name = "MS Sans Serif"
Size = 8.25
Charset = 238
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H80000008&
LinkTopic = "Form1"
PaletteMode = 1 'UseZOrder
Dezvoltarea aplicaiilor n Visual Basic
253
ScaleHeight = 5910
ScaleWidth = 7935
Begin VB.ListBox List1
Height = 1620
Left = 360
TabIndex = 10
Top = 3000
Width = 7215
End
Begin VB.CommandButton Command2
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "&Exit"
Height = 495
Left = 5280
TabIndex = 9
Top = 5160
Width = 1215
End
Begin VB.CommandButton Command1
Appearance = 0 'Flat
BackColor = &H80000005&
Caption = "&Calcul"
Height = 495
Left = 960
TabIndex = 8
Top = 5160
Width = 1215
End
Begin VB.TextBox Text3
Alignment = 1 'Right Justify
Height = 375
Left = 2040
TabIndex = 7
Top = 1320
Width = 4095
Visual Basic
254
End
Begin VB.TextBox Text2
Alignment = 1 'Right Justify
Height = 375
Left = 2040
TabIndex = 4
Top = 840
Width = 4095
End
Begin VB.TextBox Text1
Alignment = 1 'Right Justify
Height = 375
Left = 2040
TabIndex = 3
Top = 360
Width = 4095
End
Begin VB.Label Label6
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "NUME SUMA DEPUSA RATA
DOBINZII DOBINDA"
ForeColor = &H00000080&
Height = 195
Left = 360
TabIndex = 11
Top = 2640
Width = 7050
End
Begin VB.Label Label5
Alignment = 1 'Right Justify
BorderStyle = 1 'Fixed Single
Height = 375
Left = 2040
TabIndex = 5
Top = 2040
Dezvoltarea aplicaiilor n Visual Basic
255
Width = 4095
End
Begin VB.Label Label4
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "Dobinda :"
ForeColor = &H00FF0000&
Height = 195
Left = 600
TabIndex = 6
Top = 2160
Width = 1320
End
Begin VB.Label Label3
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "Rata dobinzii : "
ForeColor = &H00FF0000&
Height = 195
Left = 600
TabIndex = 2
Top = 1320
Width = 1365
End
Begin VB.Label Label2
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "Suma depusa : "
ForeColor = &H00FF0000&
Height = 195
Left = 600
TabIndex = 1
Top = 840
Width = 1335
End
Begin VB.Label Label1
Visual Basic
256
Appearance = 0 'Flat
AutoSize = -1 'True
Caption = "Nume : "
ForeColor = &H00FF0000&
Height = 195
Left = 600
TabIndex = 0
Top = 360
Width = 1335
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Private Sub Command1_Click()
'Calculul dobinzii prin apasarea butonului Calcul
If text1.Text = "" Then GoTo 5
nume = text1.Text
sumadepusa = Val(text2.Text)
ratadobinzii = (Val(text3.Text)) / 100
dobinda = sumadepusa * ratadobinzii
label5.Caption = dobinda
List1.AddItem nume + " " + text2.Text + " " + text3.Text + " " +
label5.Caption
text1.SetFocus
5
End Sub

Private Sub Command2_Click()
Inchidere program prin actionarea butonului Exit
End
End Sub

Dezvoltarea aplicaiilor n Visual Basic
257
n cadrul acestei aplicaii procedura eveniment Command1_Click()
aparine butonului de comand Calcul, iar procedura eveniment
Command2_Click() aparine butonului Exit.

Execuia aplicaiei este prezentat n figura urmtoare:













Aplicaia 3

S se calculeze i s se afieze maximul, minimul, suma i media
unui ir de n elemente care se introduc de la tastatur. Termenii irului vor fi
afiai ntr-o list.

Visual Basic
258
Rezolvare:

Cele n elemente care se citesc de la tastatur se vor memora ntr-un
ir (variabil de tip tablou). Pentru a putea folosi un ir acesta trebuie mai
nainte dimensionat printr-o instruciune Dim a() n seciunea de declaraii
generale, ale modulului, (GENERAL). Alocarea numrului curent de
elemente se face n procedura eveniment Command1_Click(). Elementele
irului vor fi parcurse utiliznd o variabil contor i, iar pentru suma irului
se va utiliza variabila suma declarat global pentru c va fi utilizat n dou
proceduri eveniment diferite (Command5_Click() i Command6_Click()) .
Forma conine ase controale de tip etichet (Label), 2 casete de text
(Text Box), o list (Listbox) i ase butoane de comand (Command button).
Fereastra machet a aplicaiei este urmtoarea:


Proprietatea Enabled a butoanelor Command2 Command6 este
setat False la ncrcarea aplicaiei pentru a nu se utiliza pn cnd se
introduce dimensiunea irului.


Programul corespunztor aplicaiei este urmtorul:
Dezvoltarea aplicaiilor n Visual Basic
259
n seciunea (GENERAL) se introduc urmtoarele declaraii de
variabile:

'Declaratii generale de variabile
Public n As Integer
Public i As Integer
Public suma As Double
Dim a()

n cadrul procedurii eveniment Form_Load(), executat la
ncrcarea ferestrei aplicaiei pe ecran, se introduce programul
corespunztor dezactivrii butoanelor Command2 Command6,
astfel:

'Dezactivare butoane la incarcare aplicatie
i = 0
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
Command6.Enabled = False

n cadrul procedurii eveniment Command1_Click() asociat
butonului Validare dimensiune se introduce urmtorul program:

'Validare dimensiune sir
n = Val(Text1.Text)
ReDim a(n)

Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
Command6.Enabled = True
Command1.Enabled = False

Visual Basic
260
n cadrul procedurii eveniment Command2_Click() asociat
butonului Validare termen se introduce urmtorul program:

'Validare termen sir
i = i + 1
a(i) = Val(Text2.Text)
List1.AddItem (Text2.Text)
Text2.Text = ""
If i >= n Then
Command2.Enabled = False
End If

n cadrul procedurii eveniment Command3_Click() asociat
butonului Maxim se introduce urmtorul program:

'Calcul si afisare maxim sir
maxim = a(1)
For i = 2 To n
If a(i) > maxim Then maxim = a(i)
Next
Label3.Caption = "= " & maxim

n cadrul procedurii eveniment Command4_Click() asociat
butonului Minim se introduce urmtorul program:

'Calcul si afisare minim sir
minim = a(1)
For i = 2 To n
If a(i) < minim Then minim = a(i)
Next
Label4.Caption = "= " & minim

n cadrul procedurii eveniment Command5_Click() asociat
butonului Suma se introduce urmtorul program:

'Calcul si afisare suma sir
Dezvoltarea aplicaiilor n Visual Basic
261
suma = 0
For i = 1 To n
suma = suma + a(i)
Next
Label5.Caption = "= " & suma

n cadrul procedurii eveniment Command6_Click() asociat
butonului Media se introduce urmtorul program:

'Calcul si afisare medie sir
If n <> 0 Then
media = suma / n
End If
Label6.Caption = "= " & media
Execuia aplicaiei este urmtoarea:


Aplicaia 4

Pentru studenii, dintr-o grup, s se introduc nume i prenume,
numr matricol i notele de la trei examene. S se afieze ntr-o list numele
i prenumele, numrul matricol, notele i media fiecrui student. Se va
calcula i afia general a grupei.

Visual Basic
262
Rezolvare:

Fereastra machet proiectat este urmtoarea:



n cadrul programului se vor utiliza urmtoarele variabile:
n: reprezint numrul studenilor din grup;
i: reprezint variabila contor cu ajutorul creia se va
parcurge coninutul variabilelor de tip tablou (masive);
numep$(): reprezint o variabil ir de caractere de tip
tablou care va conine numele i prenumele fiecrui
student din grup;
matric(): reprezint o variabil de tip tablou care va
conine numrul matricol al fiecrui student din grup;
nota1(), nota2(), nota3(), media(): reprezint variabilele
care vor conine notele la cele trei examene i media
fiecrui student din grup;
s: reprezint variabila ce va conine suma mediilor
studenilor din grup fiind utilizat la calculul mediei
generale a grupei;
Dezvoltarea aplicaiilor n Visual Basic
263
MedieGrupa: reprezint variabila ce va conine media
general a grupei.

Programul aferent aplicaiei este urmtorul:

'Declaratii de variabile generale (globale)
Dim n As Integer
Dim i As Integer
Dim numep$(), matric(), nota1()
Dim nota2(), nota3(), media()

Private Sub Form_Load()
'Dezactivarea butoanelor Command2 si Command3
'la lansarea in executie a aplicatiei
Command1.Enabled = True
Command2.Enabled = False
Command3.Enabled = False
End Sub

Private Sub Command1_Click()
'Validare numar studenti, respectiv, redimensionare
'variabile tablou in functie de n
n = Val(Text1.Text)
ReDim numep$(n), matric(n), nota1(n)
ReDim nota2(n), nota3(n), media(n)
Command1.Enabled = False
Command2.Enabled = True
Command3.Enabled = True
End Sub

Private Sub Command2_Click()
'Calcul si afisare medie student
i = i + 1
If i <= n Then
numep$(i) = (Text2.Text)
matric(i) = Val(Text3.Text)
Visual Basic
264
nota1(i) = Val(Text4.Text)
nota2(i) = Val(Text5.Text)
nota3(i) = Val(Text6.Text)
media(i) = (nota1(i) + nota2(i) + nota3(i)) / 3
Label8.Caption = media(i)
List1.AddItem (numep$(i) + "/" + Str(matric(i)) + "/" + _
Str(nota1(i)) + "/" + Str(nota2(i)) + "/" + Str(nota3(i)) + _
"/" + Str(media(i)))
Else
Command2.Enabled = False
End If
End Sub

Private Sub Command3_Click()
'Calcul si afisare medie generala grupa
s = 0
If n <> 0 Then
For i = 1 To n
s = s + media(i)
Next
MedieGrupa = s / n
End If
Label10.Caption = MedieGrupa
End Sub

n cadrul programului aplicaiei s-a utilizat funcia Str() care
transform o variabil numeric n ir de caractere. Aceast funcie are ca
argument doar valori numerice. De exemplu Str(100) va returna irul
100.

Execuia aplicaiei este prezentat n figura urmtoare:

Dezvoltarea aplicaiilor n Visual Basic
265




Aplicaia 5

S se calculeze i s se afieze suma tuturor elementelor unei matrici
ptratice de dimensiune 5, suma elementelor de pe diagonala principal,
respectiv secundar i maximul elementelor de pe fiecare linie.

Rezolvare:

n funcie de cerinele problemei se proiecteaz urmtoarea fereastr
machet a aplicaiei:



Visual Basic
266


Pentru etichetele Label1, Label2 i Label3 se seteaz proprietile
Backcolor cu valoarea &H00FFFFFF& i Borderstyle cu valoarea 1-Fixed
Single, dup care se redimensioneaz ca n figura de mai sus.
Variabilele utilizate n program sunt urmtoarele:
i, j: reprezint variabilele contor ce parcurg dimensiunile
matricei, astfel: i pentru linii i j pentru coloane;
a(n,n): reprezint variabila de tip tablou bidimensional care va
conine termenii matricei;
Max: variabila local utilizat pentru determinarea celui mai
mare termen (maximul) de pe fiecare linie;
s: variabila local utilizat pentru calculul sumei elementelor
matricei. Ea va conine suma termenilor;
sprinc: reprezint variabila ce va conine suma termenilor de pe
diagonala principal;
ssec: reprezint variabila ce va conine suma termenilor de pe
diagonala secundar.
Pentru dimensiunea matricii se utilizeaz constanta n.
Introducerea termenilor n variabila de memorie a(n,n) se realizeaz
prin intermediul funciei InputBox. Funcia InputBox permite afiarea unei
ferestre de dialog ce conine o caset de editare (TextBox) n cadrul creia
utilizatorul poate introduce att valori numerice ct i valori alfanumerice.
Pentru validarea valorii introduse se acioneaz butonul Ok din cadrul
Dezvoltarea aplicaiilor n Visual Basic
267
ferestrei, iar pentru anularea valorii se acioneaz butonul Cancel.
Rezultatul returnat de InputBox este valoarea introdus n caseta de editare.
Formatul general al acestei funcii este urmtorul:

InputBox(afiaj [, titlu][, val_implicit][, xpos][, ypos][, helpfile, context])

Unde:
afiaj: reprezint irul de caractere care va fi afiat ca
explicaie deasupra casetei de editare din fereastr;
titlu: reprezint irul de caractere ce va conine titlul
ferestrei;
val_implicit: reprezint valoarea ce va fi afiat n caseta de
editare, ca valoare implicit la ncrcarea pe ecran a ferestrei;
xpos, ypos: reprezint valorile coordonatelor pe orizontal
(xpos) i pe vertical (ypos) a colului din stnga sus a
ferestrei;
helpfile: reprezint un ir de caractere care conine numele
fiierului de asisten (help) care poate fi apelat din fereastr;
context: reprezint o variabil numeric ce conine referina
din fiierul de asisten n funcie de contextul n care acesta
este apelat.

Programul aferent aplicaiei este urmtorul:

Dim i, j As Integer
Const n = 3
Dim a(n, n) As Integer

Private Sub Form_Load()
Command2.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = False
End Sub

Private Sub Command1_Click()
Visual Basic
268
For i = 1 To n
For j = 1 To n
a(i, j) = InputBox("a(" + Str(i) + "," + Str(j) + ")", "Introduceti
termenii")
Print " a(" + Str(i) + "," + Str(j) + ") = "; a(i, j);
Next
Print
Next
Command2.Enabled = True
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = True
End Sub

Private Sub Command2_Click()
For i = 1 To n
Max = a(i, 1)
For j = 1 To n
If Max < a(i, j) Then Max = a(i, j)
Next j
List1.AddItem ("Maximul pe linia " & " " & i & " " & "este: " & " "
& Max)
Next i
End Sub

Private Sub Command3_Click()
s = 0
For i = 1 To n
For j = 1 To n
s = s + a(i, j)
Next j
Next i
Label1.Caption = s
End Sub

Private Sub Command4_Click()
Dezvoltarea aplicaiilor n Visual Basic
269
sprinc = 0
For i = 1 To n
sprinc = sprinc + a(i, i)
Next i
Label2.Caption = sprinc
End Sub

Private Sub Command5_Click()
ssec = 0
For i = 1 To n
ssec = ssec + a(i, n + 1 - i)
Next i
Label3.Caption = ssec
End Sub

Execuia aplicaiei:

n faza de introducere a elementelor matricei:


n faza de afiare:

Visual Basic
270



Aplicaia 6

S se realizeze un program care s permit introducerea vnzrilor
zilnice de produse de la trei magazine i s afieze urmtoarele informaii:
totalul i media vnzrilor pe zi la toate magazinele;
totalul i media vnzrilor sptmnale la fiecare magazin;
totalul vnzrilor sptmnale la toate magazinele;
vnzarea maxim i magazinul respectiv ziua n care a avut loc.

Rezolvare:

Interfaa aplicaiei n faza de proiectare este urmtoarea:




Dezvoltarea aplicaiilor n Visual Basic
271

Aceast aplicaie presupune utilizarea unei variabile numerice de tip
tablou bidimensional care va conine cantitatea din produsul respectiv
vndut ntr-o zi la un magazin. Aceast variabil este vzm(5,3), iar tabloul
de date va avea urmtoarea structur:

vzm(n,m) mag1 mag2 mag3
ziua(1) vzm(1,1) vzm(1,2) vzm(1,3)
ziua(2) vzm(2,1) vzm(2,2) vzm(2,3)
ziua(3) vzm(3,1) vzm(3,2) vzm(3,3)
ziua(4) vzm(4,1) vzm(4,2) vzm(4,3)
ziua(5) vzm(5,1) vzm(5,2) vzm(5,3)

Pentru parcurgerea tabloului de se vor utiliza urmtoarele variabile
contor:
i: pentru parcurgerea zilelor (pe coloan);
j: pentru parcurgerea magazinelor (pe linie).
n program se vor utiliza variabilele zi(i) care va conine numrul
fiecrei zile a sptmnii, mvz(i) care va conine media vnzrilor din
Visual Basic
272
fiecare zi, mvsm(j) care va conine media vnzrilor sptmnale de la
fiecare magazin, total care va conine totalul vnzrilor sptmnale de la
toate magazinele i max care va conine vnzarea maxim.
Programul aplicaiei este urmtorul:

Option Base 1
Const m = 3
Const n = 5
Dim i, j As Integer
Dim vzm(n, m), mvz(n), mvsm(m), zi$(n)

Private Sub Form_Load()
i = 1
j = 1
End Sub

Private Sub Command1_Click()
If i <= n Then
zi(i) = Text1.Text
Label1.Caption = "Ziua (" & Val(i) & ") ="
Else
Command1.Enabled = False
End If
End Sub

Private Sub Command2_Click()
If i <= n Then
If j <= m Then
vzm(i, j) = Val(Text2.Text)
Text2.Text = " "
j = j + 1
End If
If j > m Then
i = i + 1
Text1.Text = " "
j = 1
Dezvoltarea aplicaiilor n Visual Basic
273
End If
Label2.Caption = "Magazinul (" & Val(i) & "," & Val(j) & ") ="
End If
If i > n Then Text2.Enabled = False
End Sub

Private Sub Command3_Click()
Print "ziua" & Space(14) & "mag1" & Space(14) & "mag2" _
& Space(14) & "mag3"
For i = 1 To n
Print zi(i),
For j = 1 To m
Print vzm(i, j),
Next j
Print
Next i
End Sub

Private Sub Command4_Click()
List1.AddItem " "
For i = 1 To 5
s1 = 0
For j = 1 To 3
s1 = s1 + vzm(i, j)
Next j
mvz(i) = s1 / 3
List1.AddItem "Totalul vanzarilor din ziua " + zi(i) + _
" este: " + Str(s1)
List1.AddItem "Media vanzarilor din ziua " + zi(i) + _
" este: " + Str(mvz(i))
Next i
End Sub

Private Sub Command5_Click()
List1.AddItem " "
For j = 1 To 3
Visual Basic
274
s2 = 0
For i = 1 To 5
s2 = s2 + vzm(i, j)
Next i
mvsm(j) = s2 / 5
List1.AddItem "Totalul vanzarilor saptamanale " + "este: " + Str(s2)
List1.AddItem "Media vanzarilor saptamanale " + "este: " + Str(mvsm(j))
Next j
End Sub

Private Sub Command6_Click()
total = 0
For i = 1 To 5
s3 = 0
For j = 1 To 3
s3 = s3 + vzm(i, j)
Next j
total = total + s3
Next i
Label3.Caption = total
End Sub

Private Sub Command7_Click()
Max = vzm(1, 1)
ziua = 1
mag = 1
For i = 1 To 5
For j = 1 To 3
If Max < vzm(i, j) Then
Max = vzm(i, j)
ziua = i
mag = j
End If
Next j
Next i
Label4.Caption = Max
Dezvoltarea aplicaiilor n Visual Basic
275
Print "Livrarea maxima este: "; Max
Print "La magazinul "; mag; " in ziua de "; zi(ziua)
End Sub

n cadrul programului linia Option Base 1 are rolul de a stabilii
ncrcarea variabilei tablou ncepnd cu indexul 1, adic de la vzm(1,1).
Funcia Str() are rolul de transforma n iruri de caractere variabilele
numerice care sunt introduse ca argument a acestei funcii.
Execuia aplicaiei este urmtoarea:






Aplicaia 7

Visual Basic
276
n cadrul acestei aplicaii este prezentat modul de realizare a
meniului de tip bar de meniu i ataarea acestuia unei ferestre. Linia de
meniu ce se va ataa ferestrei va conine urmtoarele opiuni i subopiuni:

Introducere date - Nume si prenume
Adresa
Telefon
SEPARATOR
Parasire program
Vizualizare date

Modificare date - Nume si prenume
Adresa
Telefon
SEPARATOR
Stergere date - Nume si prenume
Adresa
Telefon

Rezolvare:

Pentru realizarea liniei de meniu se procedeaz astfel:

se selecteaz subopiunea Menu Design din cadrul opiunii Tools a liniei
de meniu principal, sau se execut un clic mouse pe pictograma situat
pe bara de lucru (toolbar). Ambele aciuni au ca efect deschiderea pe
ecran a unei ferestre de dialog cu urmtorul coninut:






Dezvoltarea aplicaiilor n Visual Basic
277


se tasteaz numele primei opiuni n interiorul casetei Caption astfel:
&Introducere date, (& - are acelai rol ca i n cazul butoanelor de
comand), iar n interiorul casetei Name se tasteaz numele de
identificare (identificatorul) a opiunii respective n cadrul meniului, aici
intr_d, urmat de apsarea tastei <ENTER>; opiunea Introducere date va
apare in mod automat n zona de listare situat n partea de jos a ferestrei
Menu Design Window i care are rolul de a prezenta ierarhia opiunilor
din cadrul meniului;
se creeaz submeniul opiunii Introducere date printr-un clic mouse pe
sgeata orientat spre dreapta (programatorului) i introducerea n
caseta Caption a numelui subopiunii &Nume i prenume, iar n caseta
Name se introduce identificatorul n_p urmat de apsarea tastei <Enter>,
numele subopiunii aprnd n zona de listare precedat de ---- , ceea
ce semnific faptul c ea aparine ierarhic opiunii Introducere date. La
fel se va proceda i cu celelalte subopiuni care vor avea urmtorii
identificatori:
adrs pentru &Adresa
Visual Basic
278
tlf pentru &Telefon
prs_p pentru &Parasire program
SEPARATOR reprezint linia din cadrul unui submeniu care desparte
anumite subopiuni sau grup de subopiuni. El poate fi realizat prin
introducerea n caseta Caption a semnului - (minus), iar ca identificator
in acest exemplu se folosete s1. Numele unui identificator trebuie dat astfel
nct el sa fie ct mai sugestiv.
pentru realizarea opiunii Vizualizare date se selecteaz printr-un click
mouse sgeata orientat spre stnga (dupa terminarea introducerii
subopiunilor opiunii Introducere date) avnd ca efect revenirea
(ierarhic) la nivelul opiunilor principale din meniu, apoi se tasteaz
numele opiunii la &Vizualizare date i identificatorul acesteia viz_d;
crearea opiunii &Modificare date (identificator mod_d) i a
submeniului aferent acesteia astfel:
----&Nume si prenume ( m_n_p)
----&Adresa (m_adrs)
----&Telefon (m_tlf)
----_ (s2)
----&Stergere date (s_date)
--------&Nume si prenume (s_n_p)
--------&Adresa (s_adrs)
--------&Telefon (s_tlf)

Dup terminarea introducerii tuturor opiunilor i subopiunilor
aferente acestora, Menu Design Window trebuie s arate ca n figura
urmatoare:









Dezvoltarea aplicaiilor n Visual Basic
279


n cadrul ferestrei de concepere a meniului mai exist urmatoarele
opiuni ce reprezint proprietaile opiunilor i subopiunilor din meniu:
Index - care se prezint sub forma unei zone de editare ce va fi
folosit daca n cadrul submeniului unei optiuni au fost definite
suboptiuni care au acelai nume cu al identificatorului. De aceea,
n aceasta zona se va introduce un numr corespunzator
identificatorului subopiunii, pentru a le diferenia;
Shortcut - are ca efect atribuirea unei combinaii de taste
subopiunii respective astfel ca apelnd combinaia de taste
respectiv suboptiunea sa fie selectata in mod automat. Aceasta
combinaie este afiata in partea stnga a submeniului in dreptul
suboptiunii careia ia fost atribuit;
WindowList - aceast opiune se folosete atunci cnd aplicaia
are o fereastra "mama" (MDI form). In acest caz meniul ferestre
"fiu" va apare ca meniu al ferestrei "mama". Prin setarea acestei
opiuni se specifica faptul c opiunile sau subopiunile
respective aparin ferestrei "fiu" pentru care au fost definite;
Visual Basic
280
HelpContextId - n cadrul acestei casete se va introduce
identificatorul de asisten, n cazul n care aplicaiei i se
ataeaz un sistem de asisten (help);
Checked - dac este selectat permite afiarea naintea unei
subopiuni a meniului vertical semnificnd faptul ca suboptiunea
respectiva este activ;
Enabled - dac este deselectat permite afiarea unei subopiuni
n gri. Acest lucru face ca suboptiunea sa nu poata fi selectata;
Visible - dac este deselectat face ca opiunea (subopiunea)
respectiv s nu fie afiat n meniu;
butonul Next - permite afiarea pe rnd a tuturor proprietilor
opiunilor si suboptiunilor meniului spre a putea fi modificate;
butonul Insert - permite introducerea unei noi opiuni sau
suboptiuni in cadrul meniului. n vederea inserrii unui nou
element: - se poziioneaz selectorul din cadrul cutiei de listare
pe optiunea sau suboptiunea deasupra careia se doreste
introducerea uneia noi si se apasa butonul Insert, aparind o linie
goala in care poate fi introdusa noua optiune sau subopiune cu
proprietatile aferente acesteia;
butonul Delete - permite tergerea unei opiuni sau subopiuni
din cadrul meniului prin poziionarea pe aceasta n cadrul listei si
apsarea butonului Delete;
Cnd toate proprietile opiunilor si subopiunilor meniului au fost
introduse, se va apsa butonul OK. Visual Basic-ul va ncarca in mod
automat meniul in cadrul foii de lucru curente.
Fiecrei opiuni sau suboptiuni a meniului ii corespunde o singur
procedur eveniment i anume:
Sub nume_i_Click()

End Sub
unde
nume_i: reprezint numele identificatorului opiunii sau subopiunii
respective.
Ea poate fi apelat selectnd printr-un clic mouse numele opiunii
sau suboptiunii din meniul situat pe foaia de lucru aparind astfel corpul
Dezvoltarea aplicaiilor n Visual Basic
281
procedurii in zona de editare a codului program a aplicatiei. In cadrul
acesteia pot fi introduse instructiunile ce se doresc a fi executate in
momentul apelrii la optiunea sau suboptiunea respectiva. De exemplu, n
cadrul procedurii eveniment aferente suboptiunii Parasire program se va
tasta instructiunea End astfel:
Sub prs_p_Click()
End
End Sub
Proprietatile aferente optiunilor si suboptiunilor meniului aplicatiei pot fi
modificate si in cadrul codului program al acestuia la fel ca si proprietatile
controalelor.

Execuia aplicaiei este urmtoarea:







Aplicaia 8
Visual Basic
282

Aceast aplicaie ilustreaz modul de creare a meniurilor contextuale
de tip popup. Meniurile contextuale sunt acele meniuri care se afieaz la
acionarea butonului din dreapta al mouse-ului. De exemplu, se cere s se
creeze un meniu contextual de tip popup cu denumirea de Operatii, care s
conin urmtoarele opiuni:
Intrare mijloc fix;
Iesire mijloc fix;
Calcul amortizare;
Iesire.

Rezolvare:

Meniul se proiecteaz i realizeaz la fel ca n exemplul aplicaiei 7,
utiliznd generatorul de meniuri Menu Editor, astfel:



Opiunile Intrare mijloc fix, Iesire mijloc fix, Calcul amortizare i
Iesire, se introduc ca subopiuni ale opiunii Operatii.
Proprietatea Name a opiunilor din meniu are valoarea prezentat n
tabelul de mai jos:

Dezvoltarea aplicaiilor n Visual Basic
283
DENUMIRE
OPIUNE
VALOAREA
PROPRIETII NAME
Operatii meniu
Intrare mijloc fix intrmf
Iesire mijloc fix iesmf
Calcul amortizare calcamo
Iesire ies

Pentru a fi utilizat ca meniu contextual de tip popup, dup
introducerea opiunilor, naintea validrii meniului prin acionarea butonului
Ok din fereastr, se selecteaz opiunea Operatii i se deselecteaz printr-un
click caseta de opiune corespunztoare proprietii Visible. Opiunea
Operatii trebuie s aib proprietatea Visible ncrcat cu valoarea False.
Dup validarea meniului se deschide i se ncarc procedura eveniment
MouseDown corespunztoare ferestrei, astfel:

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
If Button = 2 Then
PopupMenu meniu
End If
End Sub

n cadrul acestei proceduri parametrul Button returneaz codul
butonului de la mouse care a fost acionat. n acest caz button = 2,
reprezint testul pentru butonul din dreapta al mouse-ului. Procedura
MouseDown este tratat n cadrul seciunii 3.3 din capitolul 3.
Pentru afiarea meniului se utilizeaz metoda PopupMenu (tratat n
paragraful 3.2 din capitolul 3) avnd ca parametru valoarea proprietii
Name a opiunii principale Operatii i anume meniu.
ncrcarea procedurilor eveniment ce aparin opiunilor meniului se
va face la fel ca n aplicaia 7. Astfel procedura eveniment Click, a opiunii
Iesire va fi ncrcat cu instruciunea End permind nchiderea aplicaiei,
astfel:

Private Sub ies_Click()
Visual Basic
284
End
End Sub

n cadrul execuiei aplicaiei la acionarea butonului din dreapta
mouse printr-un click atunci cnd cursorul acestuia se gsete pe suprafaa
ferestrei, meniul contextual de tip popup va fi afiat conform figurii
urmtoare:




Aplicaia 9

S se prelucreze toate comenzile unei firme, pentru toate materialele
de pe o comand introducndu-se denumire produs, unitate de msur,
cantitate i pre unitar. S se calculeze valoarea brut a fiecrei (pre unitar
nmulit cu cantitatea la care se adaug TVA-ul aferent) comenzi i s se
extrag TVA-ul aferent valorii brute.




Rezolvare:

Dezvoltarea aplicaiilor n Visual Basic
285
Pentru proiectarea interfeei utilizator a aplicaiei se folosesc 9
etichete (Label), 4 casete de text (TextBox), 2 butoane de opiune
(OptionButton), 2 butoane de comand (CommandButton), 1 chenar
(Frame), 1 caseta de tip list (ListBox) i linii pentru trasarea tabelului
(Line). Interfaa proiectat este urmtoarea:



Proprietile Borserstyle i Backcolor aferente etichetelor Label7 i
Label8 sunt setate ca n aplicaia 5.
Variabilele utilizate sunt urmtoarele:
Valoare: este de tip numeric i va conine valoarea brut a
comenzii calculat ca produs ntre pre i cantitate, la valoarea
astfel calculat se adaug TVA-ul;
TVA: este de tip numeric i va conine coeficientul de TVA (0
sau 19) n funcie de opiunea utilizatorului;
ValoareTVA: este de tip numeric i va conine valoarea TVA
extras din valoarea brut.

n cadrul programului testarea opiunii utilizatorului pentru TVA se
realizeaz cu ajutorul instruciunii If ... End If. Aceast instruciune testeaz
valoarea opiunii Value a butoanelor de opiune. Dac utilizatorul execut
un click mouse pe unul din butoanele de opiune acestea se activeaz (cercul
Visual Basic
286
butonului este plin), proprietatea Value fiind ncrcat cu valoarea True,
altfel va avea valoarea False.
Programul asociat aplicaiei este urmtorul:

Private Sub Command1_Click()
Dim TVA As Single, Valoare As Double
Dim ValoareTVA As Single
If Option1.Value = True Then
TVA = 0
End If
If Option2.Value = True Then
TVA = 19
End If
Valoare = Val(Text3.Text) * Val(Text4.Text)
Label7.Caption = Valoare + (Valoare * TVA / 100)
ValoareTVA = (Valoare * TVA) / (100 + TVA)
Label8.Caption = ValoareTVA
List1.AddItem Text1.Text + " / " + Text2.Text + " / " + _
Text3.Text + " / " + Text4.Text + " / " + Label7.Caption + " / " + _
Label8.Caption
End Sub

Private Sub Command2_Click()
End
End Sub







Execuia aplicaiei este prezentat n figura urmtoare:

Dezvoltarea aplicaiilor n Visual Basic
287



Aplicaia 10

S se realizeze un program care s permit introducerea de ctre
utilizator a urmtoarelor date:
Nume i prenume;
Sex;
Vrsta;
Ocupaia.
Programul s ncarce aceste date ntr-o list, dup care s poat face
afiarea n ferestre diferite dup sex, vrst i ocupaie.

Rezolvare:

Interfaa aplicaiei este structurat n patru ferestre astfel:
Fereastra Form1 este fereastra de baz, cea n care se va face
introducerea i validarea datelor. Ea este proiectat ca n figura
urmtoare:

Visual Basic
288



Fereastra Form2 este fereastra care va conine situaia
persoanelor selectate dup sex. Ea este proiectat astfel:




Fereastra Form3 este fereastra care va conine situaia
persoanelor selectate dup vrst. Ea va fi proiectat ca n figura
urmtoare:
Dezvoltarea aplicaiilor n Visual Basic
289



Fereastra Form4 este fereastra care va conine situaia
persoanelor clasificate dup ocupaie. Ea va fi proiectat ca n
figura urmtoare:



Pentru a introduce o nou fereastr n proiect se apeleaz opiunea
Add form din meniul Project, iar din fereastra afiat se selecteaz icon-ul
Form.
n cadrul interfeei la toate controalele de tip ComboBox se va seta
proprietatea Style cu valoarea 2 Dropdown List.
n cadrul programului aplicaiei se vor utiliza urmtoarele variabile:
i: reprezint contorul de parcurgere a listei cu persoane
introduse;
np(n), sex(n), verst(n), ocup(n): reprezint variabilele de
tip tablou unidimensional ce vor conine numele i
prenumele, sexul, vrsta i ocupaia persoanei.
Visual Basic
290
Datorit faptului c aceste variabile vor fi utilizate n mai multe
module ale programului (modulele n care sunt definite ferestrele), vor
trebuii declarate publice n cadrul unui modul extern (.BAS). Pentru crearea
unui modul extern i ataarea lui la proiectul aplicaiei se selecteaz
opiunea Add Module din meniul Project, iar din fereastra afiat se
selecteaz icon-ul Module. n cazul acestei aplicaii modulul va conine
urmtoarele linii program:

Public i As Integer
Option Base 0
Public Const n = 100
Public np(n), sex(n), vrst(n), ocup(n)

Programul corespunztor primei ferestre (Form1) este urmtorul:

Private Sub Form_Load()
Combo1.AddItem "Barbatesc"
Combo1.AddItem "Femeiesc"

Combo2.AddItem "Economist"
Combo2.AddItem "Inginer"
Combo2.AddItem "Mecanic"

Combo3.AddItem "Sex"
Combo3.AddItem "Varsta"
Combo3.AddItem "Ocupatia"
End Sub

Private Sub Command1_Click()
If i <= n Then
np(i) = Text1.Text
sex(i) = Combo1.Text
vrst(i) = Text2.Text
ocup(i) = Combo2.Text
List1.AddItem Text1.Text + " / " + Combo1.Text + _
" / " + Text2.Text + " / " + Combo2.Text
Dezvoltarea aplicaiilor n Visual Basic
291
End If
i = i + 1
End Sub

Private Sub Command2_Click()
List1.RemoveItem List1.ListIndex
End Sub

Private Sub Command3_Click()
End
End Sub

Private Sub Combo3_Click()
Select Case Combo3.ListIndex
Case Is = 0
Form2.Caption = "Criteriu de afisare - Sex"
Form2.Show
Case Is = 1
Form3.Caption = "Criteriu de afisare - Varsta"
Form3.Show
Case Is = 2
Form4.Caption = "Criteriu de afisare - Ocupatia"
Form4.Show
End Select
End Sub

Programul aferent modulului ferestrei de afiare a persoanelor n
funcie de sex (Form2) este urmtorul:

Private Sub Form_Activate()
List1.Clear
List2.Clear
For i = 0 To Form1.List1.ListCount - 1
If sex(i) = "Barbatesc" Then
List1.AddItem np(i) + " / " + vrst(i) + " / " + ocup(i)
Else
Visual Basic
292
List2.AddItem np(i) + " / " + vrst(i) + " / " + ocup(i)
End If
Next
End Sub

Programul aferent modulului ferestrei de afiare a persoanelor n
funcie de vrst (Form3) este urmtorul:

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
List1.Clear
List2.Clear
v = Val(Text1.Text)
Label2.Caption = "Mai mic de: " & v & " ani"
Label3.Caption = "Mai mare de: " & v & " ani"
For i = 0 To Form1.List1.ListCount - 1
If Val(vrst(i)) <= v Then
List1.AddItem np(i) + " / " + sex(i) + " / " + ocup(i)
End If
If Val(vrst(i)) > v Then
List2.AddItem np(i) + " / " + sex(i) + " / " + ocup(i)
End If
Next
End If
End Sub

n cadrul acestui program evenimentul KeyPress, corespunztor controlului
Text1, cu parametrul KeyAscii egal cu 13 apare la acionarea tastei
<ENTER>.

Programul aferent modulului ferestrei de afiare a persoanelor n
funcie de ocupaie (Form3) este urmtorul:

Private Sub Form_Load()
Combo1.AddItem "Economist"
Combo1.AddItem "Inginer"
Dezvoltarea aplicaiilor n Visual Basic
293
Combo1.AddItem "Mecanic"
End Sub

Private Sub Combo1_Click()
List1.Clear
For i = 0 To Form1.List1.ListCount - 1
If ocup(i) = Combo1.Text Then
List1.AddItem np(i) + " / " + sex(i) + "/" + vrst(i)
End If
Next
End Sub

Proprietile, metodele i evenimentele obiectelor utilizate n acest
program au fost tratate n capitolul 3.

Execuia aplicaiei este urmtoarea:
Fereastra principal a aplicaiei (Form1), dup validarea
datelor introduse prin acionarea butonului Validare date
persoana, este prezentat n figura urmtoare:







Visual Basic
294



n cazul selectrii din caseta combo Combo3 a criteriului de
afiare dup sex fereastra Form2 va fi afiat conform figurii
urmtoare:


Dezvoltarea aplicaiilor n Visual Basic
295
n cazul selectrii din caseta combo Combo3, a criteriului de
afiare dup vrst, va fi afiat fereastra Form3. Aceast
fereastr, dac se introduce n caseta Vrsta numrul 30,
dup acionarea tastei <ENTER>, va fi afiat conform
figurii urmtoare:



n cazul selectrii din caseta combo Combo3, a criteriului de
afiare dup ocupaie, va fi afiat fereastra Form4. Aceast
fereastr, dac se selecteaz din lista casetei combo Ocupatia
elementul Economist, se prezint conform figurii urmtoare:








Visual Basic
296



Aplicaia 11

S se realizeze un program care s permit calculul stocului unui
produs dintr-o magazie, afiarea acestor date att ntr-o list ct i ntr-un
fiier cu acces secvenial. Utilizatorul s poat citii prin program datele din
fiier i s poat terge oricnd fiierul.

Rezolvare:

Macheta proiectat a aplicaiei este urmtoarea:







Dezvoltarea aplicaiilor n Visual Basic
297


Pentru afiarea unor explicaii atunci cnd utilizatorul se
poziioneaz cu poiter-ul mouse-ului pe un buton de comand, se va seta
proprietatea ToolTipText a fiecrui buton cu irul de caractere care
reprezint explicaia, astfel:

Buton de comand Valoarea proprietii
ToolTipText
Command1 Introducere date in fisier
Command2 Citire date din fisier
Command3 Adaugare material in fisier
Command4 Parasire program
Command5 Calcul stoc final si introducere
material in lista
Command6 Stergere fisier

Datele introduse i calculate vor fi introduse n cadrul unui fiier cu
acces secvenial stoc.txt. Pentru salvarea i localizarea acestui fiier se
utilizeaz funcia CurDir care returneaz un ir de caractere ce conine calea
spre directorul curent al aplicaiei.
Programul aplicaiei este urmtorul:
Visual Basic
298

'Declaratii generale variabile de tip sir de caractere
'pentru a putea fi introduse in lista
Dim cod(100) As String * 6
Dim denumire(100) As String * 30
Dim stoci(100) As String * 10
Dim intrari(100) As String * 10
Dim iesiri(100) As String * 10
Dim stocf(100) As String * 10

'Declararea contorului de parcurgere a tabloului
Public i As Integer

Private Sub Command1_Click()
'Introducere date din lista in fisier si stergerea lor din lista
Open CurDir + "\stoc.txt" For Output As #1
For j = 1 To i
Print #1, cod(j); ","; denumire(j); ","; stoci(j); ",";
Print #1, intrari(j); ","; iesiri(j); ","; stocf(j)
Next
Close #1
List1.Clear
End Sub

Private Sub Command2_Click()
'Citire date din fisier si afisarea lor in lista
Open CurDir + "\stoc.txt" For Input As #1
nri% = LOF(1) / 76
For j = 1 To nri%
Input #1, cod(j), denumire(j), stoci(j), intrari(j), iesiri(j), stocf(j)
List1.AddItem cod(j) + Space(7) + denumire(j) + Space(11) + stoci(j) +
Space(11) + intrari(j) + _
Space(11) + iesiri(j) + Space(11) + stocf(j)
Next
Close #1
End Sub
Dezvoltarea aplicaiilor n Visual Basic
299

Private Sub Command3_Click()
'Adaugare date in fisier
'Acest buton se apasa la fiecare material ce se doreste a fi adaugat
Open CurDir + "\stoc.txt" For Append As #1
Print #1, cod(i); ","; denumire(i); ","; stoci(i); ",";
Print #1, intrari(i); ","; iesiri(i); ","; stocf(i)
Close #1
List1.Clear
End Sub

Private Sub Command4_Click()
'Terminare program
End
End Sub


Private Sub Command5_Click()
'Calcul stoc final si afisarea materialului in lista
If Len(Text1.Text) <> 0 Then
i = i + 1
cod(i) = Text1.Text
denumire(i) = Text2.Text
stoci(i) = Text3.Text
intrari(i) = Text4.Text
iesiri(i) = Text5.Text
Label11.Caption = Val(stoci(i)) + Val(intrari(i)) - Val(iesiri(i))
stocf(i) = Label11.Caption
List1.AddItem cod(i) + Space(7) + denumire(i) + Space(11) + stoci(i) +
Space(11) + intrari(i) + _
Space(11) + iesiri(i) + Space(11) + stocf(i)
Text1.SetFocus
End If
End Sub

Private Sub Command6_Click()
Visual Basic
300
'Stergere fisier cu date
Kill CurDir + "\stoc.txt"
End Sub

Instruciunile de tratare a fiierelor au fost explicate n capitolul 4.
Execuia aplicaiei este prezentat n figura urmtoare:



Fiierul stoc.txt are urmtorul coninut:









Aplicaia 12

Dezvoltarea aplicaiilor n Visual Basic
301
S se realizeze un program care s permit afiarea ntr-o fereastr a
orei i datei curente a sistemului precum i a structurii de directoare i
fiiere de pe un anumit disc. S se afieze numele fiierului din lista cu
fiiere ntr-o caset text atunci cnd utilizatorul execut un click mouse pe
acesta.

Rezolvare:

Pentru realizarea acestei aplicaii se vor ncrca pe form
urmtoarele controale:
Dir1 instan a obiectului DirListBox;
Drive1 instan a obiectului DriveListBox;
File1 instan a obiectului FileListBox;
Label1, Label2;
Text1;
Timer1 instan a obiectului Timer.
Aceste obiecte au fost tratate n capitolul 2, iar proprietile,
metodele i evenimentele lor au fost tratate n capitolul 3.
Fereastra machet a aplicaiei este urmtoarea:
n cadrul programului pentru afiarea datei se utilizeaz funcia
Date, iar pentru afiarea orei curente funcia Time.
Visual Basic
302
Pentru a prelua i afia ora curent la fiecare secund se va introduce
linia program de afiare a orei n cadrul evenimentului Timer a obiectului
Timer i se seteaz proprietatea Interval cu valoarea 1000. Valoarea 1000
corespunde unei secunde.
Pentru afiarea n cadrul casetei text Text1 a numelui fiierului, pe
care utilizatorul execut un click mouse n lista cu fiiere (File1), se va
utiliza evenimentul Click corespunztor listei cu fiiere.
Programul aplicaiei este urmtorul:

Private Sub Form_Load()
Label1.Caption = "Data este: " & Date
End Sub

Private Sub Timer1_Timer()
Label2.Caption = "Ora: " & Time
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub

Private Sub File1_Click()
Text1.Text = File1.FileName
End Sub





Execuia aplicaiei este urmtoarea:
Dezvoltarea aplicaiilor n Visual Basic
303


Aplicaia 13

Pentru realizarea unor figuri grafice, n Visual Basic, exist un
obiect special destinat acestui scop. Acest obiect este PictureBox-ul
(zona de prezentare a obiectelor grafice). n cadrul acestei aplicaii este
exemplificat proprietatea Circle a PictureBox-ului. Pe lng obiectele
grafice mai apare exemplificat aici i funciunea butoanelor de opiune
.
Aplicaia const n posibilitatea alegerii de ctre utilizator a unitii
de msura pentru scara desenului i a culori de desenare.
Interfaa aplicaiei este prezentat n figura urmtoare:







Visual Basic
304


Programul asociat ferestrei aplicaiei este urmtorul:

Dim culoare
Const Pi = 3.14159265359

Private Sub Combo1_Click()
'Incarcarea variabilei culoare in functie de elementul
'ales din lista dat de proprietatea Listindex
Select Case Combo1.ListIndex
Case Is = 0
culoare = RGB(0, 0, 0) 'Negru
Case Is = 1
culoare = RGB(0, 0, 100) 'Albastru
Case Is = 2
culoare = RGB(0, 100, 0) 'Verde
Case Is = 3
culoare = RGB(0, 100, 200) 'Cyan
Dezvoltarea aplicaiilor n Visual Basic
305
Case Is = 4
culoare = RGB(100, 0, 0) 'Rosu
Case Is = 5
culoare = RGB(100, 20, 80) 'Magenta
End Select
End Sub

Private Sub Command1_Click()
' Desenare cerc
Picture1.Circle (100, 100), 50, culoare
End Sub

Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label1.Visible = False
End Sub

Private Sub Command2_Click()
' Desenare arc de cerc
Picture1.Circle (150, 80), 50, culoare, 0, Pi
End Sub

Private Sub Command3_Click()
'Desenare elipsa
Picture1.Circle (150, 80), 50, culoare, 0, 2 * Pi, 3
End Sub

Private Sub Command4_Click()
' Desenare linie
Picture1.Line (120, 100)-(170, 150), culoare
End Sub

Private Sub Command5_Click()
End
End Sub
Visual Basic
306
Private Sub Command5_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
Label1.Visible = False
End Sub

Private Sub Form_Load()
Label1.Visible = False
'Introducere date in lista cutiei combo Culori
Combo1.AddItem "Negru"
Combo1.AddItem "Albastru"
Combo1.AddItem "Verde"
Combo1.AddItem "Cyan"
Combo1.AddItem "Rosu"
Combo1.AddItem "Magenta (mov)"
End Sub

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Label1.Visible = False
End Sub

Private Sub Frame1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Label1.Visible = False
End Sub

Private Sub Option1_Click()
Value = True
Picture1.ScaleMode = 1
End Sub

Private Sub Option2_Click()
Value = True
Picture1.ScaleMode = 2
End Sub

Dezvoltarea aplicaiilor n Visual Basic
307
Private Sub Option3_Click()
Value = True
Picture1.ScaleMode = 3
End Sub

Private Sub Picture1_Click()
Picture1.Cls 'Stergere zona desen
End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, X As
Single, Y As Single)
Label1.Visible = True
End Sub

Execuia aplicaiei este prezentat n figura urmtoare:





Visual Basic
308
Aplicaia 14

Aceast aplicaie ilustreaz programarea tehnicii Drag & Drop.
Tehnica Drag & Drop const n posibilitatea utilizatorului de a muta
diferitele obiecte, din cadrul interfeei aplicaiei, prin inerea apsat a
butonului stnga mouse, deplasarea obiectului pe ecran pn ajunge n
poziia dorit de utilizator dup care se elibereaz butonul mouse-ului.
Aceast operaie mai este cunoscut i sub denumirea de glisare:
n cadrul aplicaiei textul introdus n caseta de editare Text1, va
putea fi glisat n lista List1.
Interfaa aplicaiei este cea din figura:




Programul aferent ferestrei aplicaiei este urmtorul:

Private Sub Command1_Click()
End
End Sub

Private Sub List1_DragDrop(Source As Control, X As Single, Y As Single)
'Includerea textului tras in lista si transferarea focus-ului casetei
List1.AddItem Text1.Text
Text1.Text = ""
Dezvoltarea aplicaiilor n Visual Basic
309
Text1.SetFocus
End Sub

Private Sub List1_DragOver(Source As Control, X As Single, Y As Single, _
state As Integer)
'Setarea modelului de pointer pentru mouse
'cand se efectueaza operatiunea drag & drop
Select Case state
Case Is = 0
Text1.DragIcon = LoadPicture("")
Case Is = 1
Text1.DragIcon = LoadPicture("")
End Select
End Sub

Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, _
X As Single, Y As Single)
'Deplasarea textului se face atunci cand butonul mouse-ului
este tinut apasat
Text1.Drag
End Sub

n cadrul metodei LoadPicture se poate introduce sub forma unui ir
de caractere (ntre ghilimele) calea spre un fiier .ico care reprezint
imaginea afiat n locul cursorului mouse-ului pe parcursul operaiunii
Drag&Drop.
Execuia aplicaiei este urmtoarea:

n momentul glisrii:






Visual Basic
310



dup glisare:




Aplicaia 15

S se realizeze o aplicaie care s permit introducerea i calculul
datelor despre salariaii cu prestri servicii i stocarea sau preluarea acestor
date dintr-un fiier baz de date. Pentru o mai bun nelegere a lucrului cu
bazele de date, se va calcula i stoca numai salariul brut n funcie de tariful
orar i orele lucrate.
Dezvoltarea aplicaiilor n Visual Basic
311

Rezolvare:

Fiierul de stocare este un fiier baz de date dBASE IV compatibil
FoxPro 2.6 cu denumirea de pserv.dbf avnd urmtoarea structur:

Denumire cmp Simbol Tip Lungime
Marca salariatului INDEX Integer 2
Numele i prenumele NUME_A Text 100
Tarif orar SALAR_O Single 4
Ore lucrate ORE_L Single 4
Salar brut SALAR_B Double 8

Acest fiier va fi creat n aplicaia Visual Data Manager explicat n
cadrul capitolului 5. Fiierul va avea dou chei de indexare, INDX dup
cmpul INDEX i NUMEA dup cmpul NUME_A. Fiierul index ataat
fiierului pserv.dbf este fiierul pserv.mdx.
Proiectul aplicaiei conine cinci ferestre astfel:

Fereastra Form1 este fereastra principal i conine meniul
aplicaiei. Proiectarea meniului este explicat n cadrul aplicaiei 7.
Meniul aplicaiei este urmtorul:



Variabilele corespunztoare fiecrei opiuni sunt prezentate n
tabelul de mai jos:


Opiune Variabil
Optiuni opt
Visual Basic
312
Introducere date intrd
Modificare date modd
Vizualizare date vizd
- l1
Exit ext

Programul asociat acestei ferestre este urmtorul:

Private Sub intrd_Click()
'Afisare fereastra de introducere date
Form2.Show
End Sub

Private Sub modd_Click()
'Afisare fereastra de modificare date
Form3.Show
End Sub

Private Sub vizd_Click()
'Afisare fereastra de vizualizare date
Form4.Show
End Sub

Private Sub ext_Click()
'Inchidere aplicatie
End
End Sub

Fereastra Form2 permite introducerea unor date n cmpurile
corespunztoare din fiierul baz de date. Macheta acestei ferestre
este urmtoarea:


Dezvoltarea aplicaiilor n Visual Basic
313


Pentru controlul Data1 se seteaz urmtoarele proprieti astfel:
Connect = FoxPro 2.6;
DatabaseName = C:\Api14\pserv.dbf Calea i
numele fiierului
baz de date
utilizat
EOFAction=2 Add New
ReadOnly=0 False
RecordsetType=0 Dynaset
RecordSource=PSERV

n timpul execuiei acestei ferestre la acionarea butonului de
comand Validare se vor introduce datele din casetele de editare n
cmpurile corespunztoare din fiierul pserv.dbf.
Programul corespunztor acestei ferestre este urmtorul:

Private Sub Form_Load()
'Ascundere obiect Data1
Data1.Visible = False
End Sub

Private Sub Command1_Click()
Visual Basic
314
'Introducere date din casetele de editare
'in fisierul baza de date
Label6.Caption = Val(Text3.Text) * Val(Text4.Text)
Data1.Recordset.AddNew
Data1.Recordset("Index") = Val(Text1.Text)
Data1.Recordset("Nume_A") = Text2.Text
Data1.Recordset("Salar_O") = Val(Text3.Text)
Data1.Recordset("Ore_L") = Val(Text4.Text)
Data1.Recordset("Salar_B") = Val(Label6.Caption)
Data1.Recordset.Update
End Sub

Private Sub Command2_Click()
'Inchidere fereastra
Unload Form2
End Sub

Fereastra Form3 este fereastra prin intermediul creia se poate face
cutarea, modificarea i tergerea articolelor din fiierul baz de
date. Macheta ferestrei este urmtoarea:



n cadrul acestei ferestre pentru controlul Data1 se vor seta aceleai
proprieti cu aceleai valori ca n fereastra form2. Pentru
vizualizarea n timp real a nregistrrilor din fiier spre a putea fi
Dezvoltarea aplicaiilor n Visual Basic
315
modificate, se leag fiecare caset de editare i etichet de cmpul
corespunztor. Aceast legtur se realizeaz astfel:
Se seteaz proprietatea DataSource =Data1 pentru
obiectele Text1, Text2, Text3, Text4 i Label6;
Se seteaz proprietatea DataField = INDEX pentru
obiectul Text1;
Se seteaz proprietatea DataField = NUME_A
pentru obiectul Text2;
Se seteaz proprietatea DataField = SALAR_O
pentru obiectul Text3;
Se seteaz proprietatea DataField = ORE_L pentru
obiectul Text4;
Se seteaz proprietatea DataField = SALAR_B
pentru obiectul Label6;
n fereastr chenarul Frame1 cu denumirea de Cautare
conine dou butoane de opiune (Option1 i Option2) care permit
selectarea variabilei de cutare (dup cmpul INDEX, respectiv dup
cmpul NUME_A). Textul cutat se va introduce de ctre utilizator,
la execuie, n caseta de editare Text5. Cutarea i localizarea se face
la acionarea butonului de comand Command5 cu denumirea de Ok,
utiliznd metoda FindFirst.
Butonul de comand Command1, cu denumirea Validare,
permite nregistrarea n fiierul pserv.dbf a datelor modificate n
casetele de editare.
Butoanele de comand Command3, Command6, Command7,
Command8, permit, la acionarea lor, deplasarea prin nregistrri
utiliznd metodele MoveFirst, MoveLast, MovePrevious, MoveNext.
Butonul de comand Command2, cu denumirea de Exit,
permite nchiderea ferestrei.
Butonul de comand Command4, cu denumirea de Stergere,
permite afiarea ferestrei Form5.
Programul aferent acestei ferestre este urmtorul:

Private Sub Form_Load()
'Ascundere obiect Data1
Data1.Visible = False
Visual Basic
316
End Sub

Private Sub Command1_Click()
'Inregistrare in fisier a modificarilor din
'casetele de editare
Label6.Caption = Val(Text3.Text) * Val(Text4.Text)
Data1.Recordset.Edit
Data1.Recordset("Index") = Val(Text1.Text)
Data1.Recordset("Nume_A") = Val(Text2.Text)
Data1.Recordset("Salar_O") = Val(Text3.Text)
Data1.Recordset("Ore_L") = Val(Text4.Text)
Data1.Recordset("Salar_B") = Val(Label6.Caption)
Data1.Recordset.Update
End Sub

Private Sub Command2_Click()
'Inchidere fereastra
Unload Form3
End Sub

Private Sub Command3_Click()
'Deplasare pe ultima inregistrare
Data1.Recordset.MoveLast
End Sub

Private Sub Command4_Click()
'Afisare fereastra Form5 pentru stergerea
'articolelor
Form5.Show
End Sub

Private Sub Command5_Click()
'Cautarea unui articol dupa INDEX
'sau dupa NUME_A
Dim CautIndex As String
Dim CautNume As String
Dezvoltarea aplicaiilor n Visual Basic
317
If Option1.Value = True Then
CautIndex = "Index=" & Text5.Text & ""
Data1.Recordset.FindFirst (CautIndex)
End If

If Option2.Value = True Then
CautNume = "nume_a='" + Text5.Text + "'"
Data1.Recordset.FindFirst (CautNume)
End If
End Sub

Private Sub Command6_Click()
'Deplasare cu o inregistare spre sfarsitul fisierului
If Not Data1.Recordset.EOF Then
Data1.Recordset.MoveNext
End If
End Sub

Private Sub Command7_Click()
'Deplasare cu o inregistare spre inceputul fisierului
If Not Data1.Recordset.BOF Then
Data1.Recordset.MovePrevious
End If
End Sub

Private Sub Command8_Click()
'Deplasare pe prima inregistrare din fisier
Data1.Recordset.MoveFirst
End Sub


Fereastra Form5 permite selectarea modului de tergere a articolelor.
Macheta aplicaiei este urmtoarea:

Visual Basic
318



Butonul de comand Command1 permite tergerea
nregistrrii curente, iar Command2 tergerea tuturor nregistrrilor
din fiierul pserv.dbf.
Programul asociat acestei ferestre este urmtorul:

Private Sub Command1_Click()
'Stergere inregistrare curenta
Form3.Data1.Recordset.Delete
Form3.Data1.Recordset.MoveNext
Unload Form5
End Sub

Private Sub Command2_Click()
'Stergere toate inregistrarile
If Form3.Data1.Recordset.RecordCount <> 0 Then
Form3.Data1.Recordset.MoveFirst
For i = 1 To Form3.Data1.Recordset.RecordCount
Form3.Data1.Recordset.Delete
Form3.Data1.Recordset.MoveNext
Next
End If
Unload Form5
End Sub

Fereastra Form4 permite afiarea nregistrrilor i deplasarea printre
acestea. Macheta acestei ferestre este urmtoarea:

Dezvoltarea aplicaiilor n Visual Basic
319


Obiectul n care se face afiarea este un obiect special pentru
lucrul cu bazele de date avnd denumirea de DBGrid. ncrcarea
acestui obiect pe fereastr se face astfel:
din meniul Project se selecteaz opiunea
Components ...;
n fereastra afiat se selecteaz din tabela Controls
pachetul Microsoft Data Bound Grid Control 5.0
(SP3), dup care se acioneaz butonul Ok din
fereastr;
se ncarc obiectul nou aprut n Toolbox ( ), pe
form.
Pentru obiectul DBGrid1 ncrcat pe form se seteaz
proprietatea DataSource=Data1.
Pentru controlul Data1 se ncarc aceleai proprieti cu
aceleai valori ca n fereastra Form2 excepie fcnd proprietatea
ReadOnly care va fi ncrcat cu valoarea True (protejat la scriere).
Butoanele de navigare prin tabela de cmpuri
pserv.dbf sunt la fel cu cele din cadrul ferestrei Form3.



Programul asociat acestei ferestre este urmtorul:

Private Sub Form_Load()
'Ascundere obiect Data1
Data1.Visible = False
Visual Basic
320
End Sub

Private Sub Command1_Click()
'Deplasare pe prima inregistrare din fisier
Data1.Recordset.MoveFirst
End Sub

Private Sub Command2_Click()
'Inchidere fereastra
Unload Form4
End Sub

Private Sub Command3_Click()
'Deplasare cu o inregistare spre inceputul fisierului
If Not Data1.Recordset.BOF Then
Data1.Recordset.MovePrevious
End If
End Sub

Private Sub Command4_Click()
'Deplasare cu o inregistare spre sfarsitul fisierului
If Not Data1.Recordset.EOF Then
Data1.Recordset.MoveNext
End If
End Sub

Private Sub Command5_Click()
'Deplasare pe ultima inregistrare din fisier
Data1.Recordset.MoveLast
End Sub
Execuia aplicaiei este urmtoarea:

Meniul aplicaiei:

Dezvoltarea aplicaiilor n Visual Basic
321


Fereastra de introducere a datelor afiat la apelarea opiunii
Introducere date:



Fereastra pentru modificarea datelor afiat la apelarea opiunii
Modificare date:




Visual Basic
322


Fereastra de tergere a nregistrrilor afiat la acionarea butonului
Stergere din fereastra Modificare date:



Fereastra pentru vizualizarea datelor afiat la apelarea opiunii
Vizualizare date din meniul principal Optiuni:

323

BIBLIOGRAFIE


1. BOLDEA Ioan, BENA Monica, Turbo Basic, Editura Mirton, Timioara
1994

2. BOLDEA Ioan, BOLDEA Maria, BRNDA Claudiu, NEGRU Viorel,
Visual Basic. Programarea aplicaiilor Windows, Editura Mirton, Timioara
1998

3. GROUP QUE, Using Visual Basic 6, Macmillan Computer Publishing,
1998

4. HEYMAN Mark Steven, Bazele Visual Basic 4, Editura Teora, Bucureti
1996

5. JAMSA Kris, KLANDER Lars, Visual Basic.1001 Sugestii pentru
programatori, Editura ALL Educational S.A., Bucureti 1998

6. MICROSOFT, Visual Basic, Language Reference, Professional, Features,
1995

7. VASIU Lucian, Visual Basic 3.0 Editura Tehnic, Bucureti 1996












324

Anda mungkin juga menyukai