Documente Academic
Documente Profesional
Documente Cultură
Visual Basic
Visual Basic
MARIA BOLDEA
CLAUDIU BRNDA
VISUAL BASIC
VISUAL BASIC
CUPRINS
CAPITOLUL I. INTRODUCERE
1.1. Evoluia limbajului BASIC ....
1.2. Limbajul Visual Basic ....
1.3. Specificitatea limbajului Visual Basic
sub Windows ......
9
11
15
17
18
22
22
22
51
53
53
74
76
78
79
81
82
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
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
241
244
248
248
251
258
262
265
270
276
282
284
287
296
301
303
308
310
BIBLIOGRAFIE ...........................................................................
323
Introducere
Visual Basic
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 PCBasic. 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).
10
Introducere
Visual Basic
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;
12
Introducere
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
13
Visual Basic
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.
14
Introducere
Visual Basic
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.
16
Visual Basic
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.
Visual Basic
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.
Linia de meniu
Fereastra Project
Toolbar
Toolbar
Fereastra Properties
Forma
Toolbox
Fereastra de afiaj a
formei n execuie
Visual Basic
Visual Basic
2.3.1. Fereastra principal
Fereastra principal (fig. 2.3) conine: linia de meniu i bara de
instrumente.
22
Visual Basic
(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;
24
25
Visual Basic
Visual Basic
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.
28
Visual Basic
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).
30
Visual Basic
(reper) dintr-o procedur la o alt linie program mult mai ndeprtat.
Aceast opiune are urmtoarele subopiuni (figura 2.14):
32
Visual Basic
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;
34
Explorer
(<Ctrl>+<R>):
afieaz
fereastra
Project
Visual Basic
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
37
Visual Basic
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;
38
39
Visual Basic
41
Visual Basic
42
Meniul DEBUG
Visual Basic
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
44
Visual Basic
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
47
Visual Basic
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 AddIns 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
48
49
Visual Basic
Cascade: permite reordonarea ferestrelor deschise sub form
suprapus asemntor unei cascade.
Meniul HELP
Aciune
Creeaz un nou
proiect (sau un grup
de proiecte)
Creeaz o noua form
Add Form din cadrul
(fereastra)
meniului Project
Deschide (ncarc) un Open Project din cadrul
proiect existent pe
meniului File
disc
Salveaz proiectul
Save Project din cadrul
curent
meniului File
Afieaz fereastra de
Menu Editor din cadrul
creare a meniurilor
meniului Tools
Copierea n zona de
Cut
din
cadrul
memorie a textului sau
meniului Edit
obiectului selectat cu
tergerea lui la surs
(mutare)
Copierea n zona de
Copy din cadrul meniului
memorie a textului sau
Edit
obiectului selectat
Preluarea i repunerea Paste din cadrul meniului
la destinaie a
Edit
51
Visual Basic
coninutului zonei de
memorie (clipboard)
Cutarea unui ir de
caractere (text) n
cadrul programului
surs a proiectului
Anuleaz ultima
(ultimele) operaie
executat de utilizator
Reface ultima
(ultimele) operaie de
anulare (Undo)
Lanseaz n execuie
aplicaia (proiectul)
curent
ntrerupe temporar
execuia aplicaiei
ncheie execuia
aplicaiei
Afieaz fereastra
Proiect
Afieaz fereastra
Properties
Afieaz fereastra
Form Layout
Afieaz fereastra
Object Browser
Afieaz fereastra
Toolbox
Pointer
Picture Box
Label
Text Box
Frame
Command Button
Check
Option Button
Combo
List Box
Horizontal
Vertical
Scroll
Timer
Directory
Shape
Line
Image
Data
OLE
DBList
Common Dialog
DBCombo
Visual Basic
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):
Frame (cadru,chenar)
54
55
Visual Basic
unde:
<index> - reprezint poziia elementului din list care va fi ters (pentru
primul element din list acesta este 0).
57
Visual Basic
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)
Visual Basic
False proprietii Enabled. Pentru reluare apelurile repetate trebuie atribuit
valoarea True proprietii Enable;
DirListBox (caseta de listare a directoarelor)
60
61
Visual Basic
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
62
63
Visual Basic
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;
64
Visual Basic
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)
Visual Basic
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)
68
Visual Basic
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)
Visual Basic
Visual Basic
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.:
74
75
Visual Basic
Visual Basic
Buton pentru
vizualizarea
codului program
Buton
pentru
vizualizarea
obiectelor
Buton pentru
activare/deactivare a
modului de afiare
sub form de foldere
a claselor
Numele
proiectului
Modulele
(fiierele)
componente
ale
proiectului
Lista cu
proprieti
Caseta cu
explicaii
Visual Basic
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.
Visual Basic
82
83
Visual Basic
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:
84
Visual Basic
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.
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
86
Visual Basic
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 ]
89
Visual Basic
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:
90
91
Visual Basic
92
93
Visual Basic
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).
94
Fig. 3.7. Marcajul casetei de opiune Checked din fereastra Menu Editor.
Rezultatul selectrii casetei Checked este prezentat n figura 3.8.
95
Visual Basic
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.
96
Visual Basic
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.
98
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
99
Visual Basic
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).
Enabled=True
Enabled=False
FileName
100
Visual Basic
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.
hDc
103
Visual Basic
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.
104
Visual Basic
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.
106
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.
107
Visual Basic
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.
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.
109
Visual Basic
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.
Visual Basic
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
112
Visual Basic
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 ]
114
Visual Basic
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
116
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
117
Visual Basic
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.
118
119
Visual Basic
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.
Visual Basic
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.
122
Visual Basic
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.
124
Visual Basic
<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
126
Visual Basic
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
128
Refresh
Aparine tuturor obiectelor exceptnd ferestrele "mam" (MDIform),
meniurile, minutarul i obiectele speciale.
129
Visual Basic
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
130
Visual Basic
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.
132
3.3. Evenimentele
133
Visual Basic
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
134
135
Visual Basic
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.
Caseta combo
Object
Caseta combo
Procedure
Caseta de
editare a
programului
Butonul de
vizualizare
doar a
procedurilor
Butonul de
vizualizare a
ntregului
program
Visual Basic
(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
138
Visual Basic
proprietatea Caption a fost modificat n cursul executrii
programului.
- pentru ferestre.
140
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:
Visual Basic
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 :
142
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);
143
Visual Basic
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
144
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;
145
Visual Basic
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.
146
Visual Basic
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.
148
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
149
Visual Basic
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
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.
151
Visual Basic
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.
152
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
153
Visual Basic
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.
154
Limbajul de programare
Visual Basic
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:
156
Limbajul de programare
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
157
Visual Basic
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.
158
Limbajul de programare
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:
159
Visual Basic
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.
Limbajul de programare
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.
161
Visual Basic
Limbajul de programare
Pentru declararea tuturor variabilelor unei proceduri ca statice se
pune la nceputul procedurii cuvntul Static.
Exemplu:
Static Function
Static Sub
Descriere
Sufix
INTEGER
LONG
ntregi
ntregi lungi
%
&
Lungim
e
2 octei
4 octei
CURRENCY
Numere
zecima-le
cu virgul
fix
8 octei
SINGLE
Numere
zeci-male
cu virgul
flotant
simpl
precizie
(pentru
aplicaii
tiini-fice)
Numere
zecima-le
4 octei
-3,402.823E38
-1,401.298E-45 si
1,401.298E-45
3,402.823E38
8
octei
1,797.693.134.86
DOUBLE
#
163
Domeniul
-32.76832.767
-2.147.483.648
2.147.483.647
-922.337.203.685.
477,5808
922.337.203.685.
477,5807
Visual Basic
232E308
4,940.656.458.41
247E-324
si
4,940.656.458.41
247E-324
1,797.693.134.86
232E308
cu virgul
flotant
dubl
precizie
(pentru
calcule
tiinifi-ce)
STRING (ir)
ir
caractere
STRING
ir
$
caractere de
lungime
fix
Suita de 8 fr
biti
Date
de fr
tipul
adevrat
sau fals
Poate
conine data
i/sau ora
Depinde de fr
con-inutul
variabi-lei:
toate numerele, toate
iru-rile,
toate datele
i orele.
BYTE
BOOLEAN
DATE
VARIANT
164
lung.
variabil
lung.
fix
Lungime
predefinit
1 octet
0 la 255
2
octei
8
octei
lung.
variabil
0 la aproximativ
65.500 caractere
OBJECT
Fr
8 octei
Limbajul de programare
Stocheaz
date
relative
la
o
instan a unei
clase sau obiect.
Visual Basic
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
0
1
2
3
4
5
6
7
8
11
17
8192
DESCRIERE
Empty(=vide)
Null
Integer
Long
Single
Double
Currency
Date
String
Boolean
Byte
Tablou
166
Limbajul de programare
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.
167
Visual Basic
168
Limbajul de programare
4.6. Operatorii
Un operator este un simbol, un caracter sau un cuvnt care
semnific o relaie ntre dou sau mai multe elemente.
DESCRIERE
Adunare
Scdere
nmulire
mprire
mprire ntreag (rezultatul este ntreg)
Restul la mprire
Ridicare la putere
Observaie:
Visual Basic ofer funcia DIV n locul operatorului \ pentru
realizarea operaiunile de mprire ntreag.
Visual Basic
Operatorii relaionali admii sunt:
OPERATORI
>
<
=
> = sau = >
< = sau = <
< > sau > <
Like
DESCRIERE
Mai mare
Mai mic
Egal
Mai mare sau egal
Mai mic sau egal
Diferit de
Echivalen, congruen
IS
DESCRIERE
Rezultatul este adevrat cnd cei doi operanzi
sunt adevrai (X And Y)
Rezultatul este adevrat dac operandul este
fals i invers (Not X)
Rezultatul este adevrat dac unul din operanzi
este adevrat (X OR Y)
Rezultatul este adevrat dac cei doi operanzi
sunt fie adevrai fie fali (X EQV Y)
Rezultatul este fals dac primul operand este
adevrat i urmtorul fals (X IMP Y)
Rezultatul este adevrat dac unul din operanzi
este adevrat. Dac ambii operanzi sunt sau
adevrai sau fali rezultatul este fals.
Rezultatul este adevrat dac cei doi operanzi
(variabile de tip obiect) descind din acelai
obiect. Dac operanzi descind din obiecte
170
Limbajul de programare
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
Exponentul (^)
Negaie (-)
nmulire i mprire
(*,/)
mprire ntreag (/)
Modular (Mod)
Adunare i scdere (+,-)
Concatenarea irurilor &
OPERATORI
RELAIONALI
Egalitate (=)
Inegalitate (< >)
Mai mic (<)
OPERATORI
LOGICI
NOT
AND
OR
XOR
EQV
IMP
IS
Visual Basic
FUNCIA
Abs
Atn
Cos
Exp
INT
FIX
LOG
SIGN
SIN
TAN
DESCRIEREA
Returneaz valoarea absolut a unui numr (Abs
(x)).
Returneaz aria tangent de x (Atn(x)).
Returneaz cosinusul lui x.
Returneaz ex la puterea parametrului (Exp(x)).
Returneaz poriunea ntreag a unui numr (INT
(x)).
Returneaz partea ntreag a lui x prin trunchierea
lui x (FIX (x)).
Returneaz logaritmul natural dintr-un numr (LOG
(x)).
Returneaz o valoare n funcie de semnul
parametrului (SIGN (x)) astfel:
1 pentru x>0
-1 pentru x<0
0 pentru x=0.
Returneaz sinusul de x (n radiani).
Returneaz tangenta de x (n radiani).
DESCRIEREA
Convertete n tip Boolean datele furnizate de
parametrii;
Convertete n tip Byte datele furnizate de parametrii;
Convertete n tip Currency datele furnizate de
parametrii;
Convertete n tip Date datele furnizate de parametrii;
Convertete n tip Double datele furnizate de parametrii;
Convertete n tip Integer datele furnizate de parametrii;
Convertete n tip Long datele furnizate de parametrii;
Convertete n tip Single datele furnizate de parametrii;
Convertete n tip String datele furnizate de parametrii;
172
CVar
IsArray
IsDate
IsEmpty
IsNull
IsNumeric
Str
Type Name
Val
VarType
Limbajul de programare
Convertete n tip Variant datele furnizate de parametrii;
Returneaz o valoare boolean adevrat dac
parametrul furnizat este nume de tablou;
Returneaz o valoare boolean adevrat dac
parametrul furnizat este o dat de tip Date;
Returneaz o valoare boolean adevrat dac
parametrul furnizat este numele unei variabile care nu a
fost iniializat;
Returneaz o valoare boolean adevrat dac
parametrul furnizat este numele unei variabile care are
coninutul Null;
Returneaz o valoare boolean
adevrat dac
parametrul furnizat este numele unei date de tip
numeric;
Convertete un numr n ir de caractere;
Returneaz sub forma de nume tipul de dat furnizat de
parametru;
Convertete un ir n dat numeric;
Returneaz sub forma de numr tipul de variabil
furnizat de parametru.
DESCRIEREA
Returneaz valoarea numeric a codului Ascii al
primului caracter al irului furnizat ca parametru;
Returneaz caracterul al crui cod Ascii este furnizat
(reciproca funciei Asc);
Stabilete formatul de afiare a datelor de tip numeric,
sau date de tip ir;
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$,
173
Visual Basic
LCase
Left
Len
LTrim
Mid
Right
RTrim
Space
StrCnv
String
UCase
B$);
Convertete n minuscule caracterul furnizat;
Returneaz caracterul cel mai de la stnga al irului
furnizat;
Returneaz lungimea, n octei, a irului furnizat;
Suprim spaiile de la stnga irului furnizat;
Extrage un subir de caractere din cmpul de caractere
furnizat ca parametru;
Returneaz caracterul cel mai din dreapta al irului
furnizat ca parametru;
Suprim spaiile din dreapta irului furnizat;
Returneaz un ir de spaii cu lungimea egal cu
parametrul furnizat;
Permite convertirea n majuscule a primei litere a
fiecrui cuvnt din irul furnizat;
Returneaz un ir constituit din N caractere identice;
Convertete n caracter majuscul parametrul furnizat.
DESCRIERE
Returneaz data calendaristic;
Adaug o durat (la alegere: n ani, trimestre, luni,
sptmni, zile, ore, minute, secunde) la data furnizat;
Returneaz diferena ntre dou date furnizate (la
alegere: n ani, trimestre, luni, sptmni, zile, ore,
minute, secunde);
Returneaz o parte a datei furnizate (la alegere: anul,
trimestrul, luna, sptmna, ora, minutul, secunda);
Returneaz o dat de tip Date (anul, luna, ziua);
Returneaz o dat de tip Date sub forma:
15 mai 1997 sau 15/08.1997 sau 15-NOV-1997;
Returneaz ziua din lun (1 la 31) a datei furnizate;
Returneaz un numr cuprins ntre 0 i 23 egal cu ora
174
Limbajul de programare
Minute
Month
Now
Second
Time
Timer
WeekDay
Year
parametrului furnizat;
Returneaz un numr cuprins ntre 0 i 59 egal cu
numrul de minute al parametrului furnizat;
Returneaz un numr cuprins ntre 1 i 12 egal cu
numrul de luni a parametrului furnizat;
Returneaz data i ora din sistem;
Returneaz un numr cuprins ntre 0 i 59 egal cu
numrul de secunde a parametrului furnizat;
Returneaz ora sistemului;
Returneaz numrul de secunde care sunt trecute dintrun minut;
Returneaz ziua din sptmna sub forma de numr (1
la 7);
Returneaz un numr egal cu anii din parametrul
furnizat.
MOD DE OBINERE
Sec(x)=1/Cos(x)
Cosec(x)=1/Sin(x)
Cotan(x)=1/Tan(x)
Arcsin(x)=Atn(x/Sqr(-x*x+1))
Arccos(x)=Atn(-x/Sqr(-x*x+1))+1.5708
Arcsec(x)=Atn(x/Sqr(x*x+1))+Sgn(Sgn(x)1)*1.5708
Arccosec(x)=Atn(x/Sqr(x*x+1))+Sgn(Sgn(x)1)*1.5708
Arcotan(x)=Atn(x)+1.5708
175
Visual Basic
invers
Sinus
hiperbolic
Cosinus
hiperbolic
Tangenta
hiperbolic
Secanta
hiperbolic
Cosecanta
hiperbolic
Cotangenta
hiperbolic
Sinus
hiperbolic
invers
Cosinus
hiperbolic
invers
Tangenta
hiperbolica
inversa
Secanta
hiperbolica
inversa
Cosecanta
hiperbolica
inversa
Cotangenta
hiperbolica
inversa
HSin(x)=(Exp(x)-Exp(-x))/2
HCos(x)=(Exp(x)-Exp(-x))/2
HTan(x)=(Exp(x)-Exp(-x))/(Exp(x)+Exp(-x))
HSec(x)=2/(Exp(x)+Exp(-x))
HCosec(x)=2/(Exp(x)-Exp(-x))
HCotan(x)=(Exp(x)+Exp(-x))/(Exp(x)-Exp(-x))
HArcsin(x)=Log(x+Sqr(x*x+1))
HArccos(x)=Log(x+Sqr(x*x-1))
HArctan(x)=Log((1+x)/(1-x))/2
HArcsec(x)=Log((Sqr(-x*x+1)+1)/x)
HArccosec(x)=Log((Sgn(x)*Sqr(x*x+1)+1)/x)
HArccotan(x)=Log((x+1)/(x-1))/2
176
Limbajul de programare
DIN
Orice expresie valid
Orice expresie valid
Orice expresie valid
Orice expresie valid
Orice expresie valid
Orice expresie valid
Orice expresie valid
IN
Currency
Double
Integer
Long
Single
String
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.
177
Visual Basic
Exemplu:
REM Calculul stocurilor de materiale
A=R^2*3.14 Calculul ariei cercului
Limbajul de programare
Visual Basic
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$
Limbajul de programare
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:
C
Instructiune_1
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_2
181
Instructiune_1
Visual Basic
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
.T.
Instruciune_1
.F.
182
C-2
.F.
.T.
Instruciune_2
Limbajul de programare
183
Visual Basic
n zona de declaraii
(GENERAL):
globale
ale
ferestrei
Limbajul de programare
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
185
Visual Basic
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:
186
Limbajul de programare
Visual Basic
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]
Limbajul de programare
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]
Visual Basic
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
190
Limbajul de programare
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:
191
Visual Basic
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.
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
192
Limbajul de programare
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
193
Visual Basic
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,....]
Limbajul de programare
195
Visual Basic
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][;]
196
Limbajul de programare
197
Visual Basic
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
accesat n mod aleator.
Formatul general:
Limbajul de programare
nume-variabil: numele variabilei care conine datele ce trebuie
scrise.
Visual Basic
GET [ # ] numr_fiier, [ numr_nregistrare ], nume_variabil
unde:
Observaie:
Toate regulile care se aplic instruciunii Put sunt valabile i pentru
instruciunea Get.
200
Limbajul de programare
201
Visual Basic
202
203
Visual Basic
ACIUNE
Creare, Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Adugare, Vizualizare
Visual Basic
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).
206
207
Visual Basic
DENUMIRE
CMP
Index salariat
Nume (i prenume)
angajat
Salar orar
Ore lucrate
Salar brut
TIP
LUNGIME
INTEGER
TEXT
2
100
SINGLE
SINGLE
DOUBLE
4
4
8
209
Visual Basic
210
Exemplu:
DBEngine.DefaultType=dbUseODBC
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
Exemplu:
211
Visual Basic
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:
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:
213
Visual Basic
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
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;
215
Visual Basic
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.
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")
216
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;
217
Visual Basic
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;
Visual Basic
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:
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):
220
Visual Basic
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... ]
222
Visual Basic
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:
224
Visual Basic
SELECT cmp1[,cmp2[, ...]] INTO tabela_nou
[IN baz_de_date_extern] FROM tabela_surs
Unde:
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:
unei
tabele
sau
Visual Basic
DELETE [nume_tabel.*]
FROM nume_tabel
WHERE criteriu
Unde:
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:
228
Visual Basic
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
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
230
Visual Basic
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")
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
232
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"
Visual Basic
obiect.AddNew
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
Visual Basic
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
236
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,
237
Visual Basic
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
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
238
Visual Basic
- SnapShot este o copie statica (neactualizabil) a unui set de
nregistrri ce poate fi folosit in generarea unor rapoarte.
240
Visual Basic
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).
243
Visual Basic
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.
Visual Basic
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);
246
Visual Basic
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.
Visual Basic
n urma setrii proprietilor obiectelor, fereastra aplicaiei va fi
asemntoare celei din figura urmtoare:
editarea
programului
corespunztor
Command1_Click() i Command2_Click() astfel:
procedurii
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:
251
Visual Basic
Visual Basic
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
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
254
SUMA DEPUSA
RATA
Visual Basic
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
256
"+
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.
257
Visual Basic
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:
Visual Basic
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
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.
261
Visual Basic
Rezolvare:
Fereastra machet proiectat este urmtoarea:
Visual Basic
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:
264
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:
265
Visual Basic
Visual Basic
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()
268
n faza de afiare:
269
Visual Basic
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:
270
mag1
vzm(1,1)
vzm(2,1)
vzm(3,1)
vzm(4,1)
vzm(5,1)
mag2
vzm(1,2)
vzm(2,2)
vzm(3,2)
vzm(4,2)
vzm(5,2)
mag3
vzm(1,3)
vzm(2,3)
vzm(3,3)
vzm(4,3)
vzm(5,3)
Visual Basic
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
272
Visual Basic
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
274
Aplicaia 7
275
Visual Basic
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:
276
Visual Basic
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:
278
Visual Basic
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
280
Aplicaia 8
281
Visual Basic
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:
DENUMIRE
OPIUNE
Operatii
Intrare mijloc fix
Iesire mijloc fix
Calcul amortizare
Iesire
Visual Basic
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:
284
Visual Basic
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
286
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:
287
Visual Basic
Visual Basic
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
290
Visual Basic
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"
292
293
Visual Basic
294
295
Visual Basic
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:
296
Valoarea proprietii
ToolTipText
Introducere date in fisier
Citire date din fisier
Adaugare material in fisier
Parasire program
Calcul stoc final si introducere
material in lista
Stergere fisier
Visual Basic
'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
298
Visual Basic
'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:
Aplicaia 12
300
Visual Basic
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
302
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:
303
Visual Basic
Visual Basic
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
306
307
Visual Basic
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:
n momentul glisrii:
309
Visual Basic
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.
310
Simbol
INDEX
NUME_A
SALAR_O
ORE_L
SALAR_B
Tip
Integer
Text
Single
Single
Double
Lungime
2
100
4
4
8
Variabil
opt
311
Visual Basic
Introducere date
Modificare date
Vizualizare date
Exit
intrd
modd
vizd
l1
ext
312
Visual Basic
'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
Visual Basic
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
316
317
Visual Basic
318
Visual Basic
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:
320
321
Visual Basic
322
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
323
324