|
Intr-o aplicatie Visual Basic controalele sunt folosite pentru a introducere informatii si a afisa rezultate. Fiecare control are propriul sau set de proprietati, metode si evenimente.
Caseta instrumentelor Visual Basic (vezi figura 1). contine instrumentele pe care le folositi pentru trasarea controalelor pe formulare.
Figura 1. Caseta instrumentelor Visual
Basic.
In Visual Basic exista trei categorii generale de controale:
Controale intrinseci, cum ar fi butonul de comanda si controalele de tip cadru. Aceste controale sunt incluse in fisierul .exe al aplicatiei Visual Basic. Controalele intrinseci sunt incluse intotdeauna in caseta instrumentelor, spre deosebire de celelalte doua categorii de controale, care pot fi adaugate sau eliminate din caseta instrumentelor.
Controale ActiveX, care exista ca fisiere separate, avand extensia .ocx. Din aceasta categorie fac parte controalele DataCombo, DataList, Listview, Toolbar etc.
Obiecte inserabile, cum ar fi un obiect Microsoft Excel Worksheet ce contine o lista a angajatilor unei companii sau un obiect Microsoft Project Calendar care contine informatiile de planificare ale unui proiect. Aceste controale nu fac obiectul prezentarii.
In tabelul urmator sunt prezentat in rezumat controalele intrinseci care se gasesc in caseta instrumentelor Visual Basic.
Pictograma
Control
Clasa
Descriere
Caseta de
validare
CheckBox
Afiseaza o optiune True/False sau Yes/No. La un moment dat puteti avea selectate oricate casete de validare pe un formular.
Caseta
combinata
ComboBox
O combinatie intre o caseta de text si o lista. Permite utilizatorului sa tasteze o optiune sau sa selecteze un element din lista derulanta.
Buton de
comanda
CommandButton
Lanseaza in executie o comanda sau o actiune atunci cand este selectat de catre un utilizator.
Data
Data
Va permite conectarea la o baza de date existenta si afiseaza pe formulare informatiile din baza de date respectiva.
Caseta cu lista dosarelor
DirListBox
Afiseaza si permite unui utilizator sa selecteze dosare si cai.
Caseta cu lista unitatilor
DriveListBox
Afiseaza si permite unui utilizator sa selecteze unitate de disc valida.
Caseta cu lista fisierelor
FileListBox
Afiseaza si permite unui utilizator sa selecteze dintr-o lista a fisierelor.
Cadru (Frame)
Frame
Asigura un container visual si functional pentru controale.
Bare de derulare orizontala si
verticala
HScrollBar si VScrollBar
Permadaugarea barelor de derulare pentru controalele care nu le asigura automat (nu sunt identice cu barele de derulare interne de care dispun multe controale).
Imagine
Image
Afiseaza imagini din diferite tipuri de fisiere cu imagini si actioneaza ca un buton de comanda atunci cand se executa clic pe aceasta.
Eticheta
Label
Afiseaza un text pe care utilizatorul nu-l poate modifica si cu care nu poate interactiona.
Linie
Line
Adauga un segment de linie dreapta pe un formular.
Caseta lista
(Lista)
ListBox
Afiseaza lista de elemente din care utilizatorul poate selecta.
Container
OLE
OLE
Incapsuleaza datele unei Visual Basic.
Buton de
optiune
OptionButton
Face parte dintr-un grup de optiuni. Se foloseste pentru a afisa un grup de optiuni din care utilizatorul poate selecta doar una singura.
Caseta de
imagine
PictureBox
Afiseaza imagini din fisiere. Poate afisa text sau poate actiona drept container pentru alte controale.
Forma
Shape
Adauga un dreptunghi, patrat, elipsa sau cerc pe un formular, cadru sau caseta de imagine.
Caseta de text
TextBox
Asigura o zona pentru introducerea si afisarea textului.
Timer
Timer
Executa evenimentele timer la intervalele de timp specificate.
Nota Instrumentul Indicator (pointer) - primul instrument din caseta - nu se foloseste pentru a crea un control; el asigura o metoda de selectare a controalelor.
Editia Learning a aplicatiei Visual Basic contine un numar de controale ActiveX (referite drept ActiveX standard) care va permit adaugarea unor facilitati avansate in aplicatiile dumneavoastra. Controalele ActiveX se gasesc in fisiere cu extensia .ocx si pot fi adaugate in caseta instrumentelor prin intermediul caseteti de dialog Components, care se afiseaza selectand optiunea Components din meniul Project..
In tabelul urmator sunt prezentate in rezumat controalele ActiveX standard disponibile in editia Visual Basic Learning.
Pictograma
Control
Clasa
Descriere
Control de date
ADO
ADODC
Creaza o conexiune la baza de date folosind ADO. Se poate atribui proprietatii DataSource a altor controale, cum ar fi DataGrid.
Caseta de
dialog
standard
CommonDialog
Asigura un set de casete standard de dialog pentru operatiuni cum ar fi deschiderea si salvarea fisierelor, stabilirea optiunilor de imprimare, selectarea culorilor si a fonturilor.
DataCombo
DataCombo
Asigura cele majoritatea facilitatilor unei casete combinate standard, in plus mareste posibilitatile de accesare a datelor.
DataGrid
DataGrid
Un control de tip retea care poate fi legata la o sursa de date cum ar fi ADO Data Control. Este posibila citirea si editarea seturilor de articole.
DataList
DataList
Asigura majoritatea facilitatilor unei liste standard, in plus mareste posibilitatile de acces la date.
Microsoft Hierarchical FlexGrid
MSHFlexGrid
Un control de tip retea numai pentru citire care poate fi legat la Data Environment pentru a vizualiza seturile de articole ierarhizate.
Pentru a adauga si elimina controale ActiveX in si din caseta instrumentelor Visual Basic se executa urmatoarele operatii:
a) Pentru a adauga un control ActiveX la caseta instrumentelor:
b) Pentru a elimina un control ActiveX din caseta instrumentelor:
Atunci cand creati pentru prima data un obiect (formular sau control), Visual Basic seteaza proprietatea Name a acestuia la o valoare prestabilita. Spre exemplu, toate butoanele de comanda au proprietatea Name setata initial pe valoarea Commandn, unde n este 1, 2, 3 etc. Primul buton de comanda plasat pe un formular este denumit de Visual Basic Command1, al doilea este Command2, s.a.m.d..
Tinand cont de faptul ca aceste obiecte sunt referite foarte des in codul aplicatiei, este indicat ca numele acestora sa fie mult mai sugestive. In numele obiectelor puteti utiliza un prefix, format din trei caractere, care sa indice clasa de care apartine obiectul respectiv. Spre exemplu, puteti denumi o caseta de validare (control CheckBox) chkReadOnly.
Regulile pe care trebuie sa le respectati atunci cand denumiti formularele si controalele sunt urmatoarele:
Numele obiectului trebuie sa inceapa cu o litera;
Numele obiectului trebuie sa contina numai litere, cifre si liniuta de subliniere. Nu sunt permise semnele de punctuatie si spatiile:
Numele obiectelor trebuie sa aiba cel mult 40 caractere.
Prefixele recomandate pentru a fi asociate principalelor controale intrinseci.din Visual Basic sunt prezentate in urmatorul tabel.
Control
Prefix
Exemple
Bara de derulare orizontala
hsb
hsbViteza, hsbDurata
Bara de derulare verticala
vsb
vsbTimp, vsbLuni
Buton de comanda
cmd
cmdExit, cmdOK, cmdCancel
Buton de optiune
opt
optAppend, optDelete
Cadru
fra
fraGrup, fraOperatii
Caseta combinata
cbo
cboClient, cboUsers
Caseta cu imagine
pic
picTablou. picShow
Caseta de text
txt
txNume, txtPrenume
Caseta de validare
chk
chkTipareste, chkEpuizat
Eticheta
lbl
lblTitlu, lblNume
Formular
frm
frmStartUp, frmInput
Imagine
img
ImgBec
Lista
lst
lstDrepturi, lstFunctie
Meniu
mnu
mnuFisier
Timer
tmr
tmrInterval
UpDown
upd
updRata, updDurata
Toate controalele au o proprietate care poate fi utilizata pentru stocarea sau citirea valorilor doar prin referirea la control, fara a folosi si numele proprietatii. Aceasta proprietate este numita valoarea unui control si este una dintre cele mai importante si mai folosite proprietati. Proprietatea valoare, in functie de tipul controlului, are diferite denumiri. Spre exemplu, la caseta de validare ea se numeste Value, la caseta de text se numeste Text etc. In tabelul urmator sunt prezentate denumirile proprietatile care sunt considerate ca fiind valoare pentru controalele respective.
Control
Nume proprietate
Bara de derulare orizontala
Value
Bara de derulare verticala
Value
Buton comanda
Value
Buton optiune
Value
Caseta combinata
Text
Caseta de imagine
Picture
Caseta de text
Text
Caseta de validare
Value
Caseta lista de dosare
Path
Caseta lista de fisiere
FileName
Caseta lista de unitati
Drive
Caseta standard de dialog
Action
Data
Caption
DataCombo
Text
DataGrid
Text
DataList
Text
Eticheta
Caption
FlexGrid
Text
Forma
Shape
Frame
Caption
Imagine
Picture
Linie
Visible
Lista
Text
Timer
Enabled
Ori de cate ori in cod vreti sa referiti la proprietatea care reprezinta valoarea acelui control, puteti s-o faceti fara a mai specifica si numele proprietatii. Spre exemplu, urmatoarea linie de cod stabileste valoarea proprietatii Text a unei casete de text:
Text1 = 'Acest text este atribuit proprietatii Text a controlului Text1'
In urmatorul exemplu, proprietatea Caption a controlului Label1 este setata pe proprietatea FileName a controlului File1, daca utilizatorul selecteaza un fisier din caseta listei de fisiere:
Private Sub File1_Click ()
Label1 = File1
End Sub
Nota Deoarece utilizarea valorii unui control face codul ceva mai greu de inteles, in continuare vom referi explicit aceasta proprietate.
Controlul de tip Label (eticheta) este folosit pentru a afisa text, care nu poate fi editat de catre utilizator. De regula, eticheta este utilizata in urmatoarele situatii:
Identificarea (descrierea) controalelor care nu au proprietate Caption (casete de text, liste, casete combinate etc.).
Adaugarea unui text descriptiv pe formular;
Afisarea unor informatii, pe timpul executiei ca raspuns la evenimente.
Crearea tastelor de acces pentru controalelor ce nu au proprietatea Caption.
Principalele proprietati ale controlului sunt:
Caption
Contine sirul de caractere ce va fi afisat de eticheta. Lungimea maxima a sirului este de 1024 caractere.
AutoSize
Daca este setata pe True, asigura modificarea autoamata a dimensiunii controlului in functie de marimea textului .
WordWrap
Daca este setata pe True, asigura extinderea pe verticala a controlului atunci cand textul nu incape pe latimea stabilita a controlului.
Font
Permite stabilirea setului de caractere si a altor atribute ale caracterelor textului afisat.
UseMnemonic
Daca este setat pe True, puteti defini un caracter (prin plasarea in fata acestuia a caracterului ampersand - &) din textul proprietatii Caption al etichetei ca o tasta de acces. Folosirea combinatiei de taste Alt + tasta acces determina mutarea focus-ului pe urmatorul control din ordinea tab.
Controlul de tip TextBox (caseta de text) permite introducerea si afisarea informatiilor. De regula, o caseta de text se utilizeaza pentru:
a afisa informatia introdusa de utilizator pe timpul executiei;
a afisa textul atribuit proprietatii Text a controlului pe timpul executiei sau pe timpul proiectarii;
Principalele proprietati ale controlului sunt:
Text
Contine textul introdus in caseta de text. In mod prestabilit, intr- caseta de text se pot introduce pana la 2048 caractere. Daca proprietatea MultiLine este setata pe True, se pot introduce pana la 32K de text.
MultiLine
Daca este setata pe True, puteti permite controlul automat al aranjarii textului prin extinderea pe verticala a controlului, obtinandu-se astfel o zona de editare text.
ScrollBars
Indica adaugarea barelor de derulare pe verticala si/sau orizontala atunci cand proprietatea MultiLine este setata pe True.
Locked
Daca este setat pe True, nu permite editarea textului afisat.
PasswordChar
Specifica simbolul ce va fi afisat in caseta de text, indiferent de ce va tasta utilizatorul.
MaxLength
Stabileste numarul maxim de caractere ce se pot introduce in caseta de text.
SelStart
Stabileste pozitia de inceput a selectiei textului. Disponibila numai la executie.
SelLength
Stabileste lungimea textului selectat. Disponibila numai la executie.
Tag
Permite stocarea unei date suplimentare necesare aplicatiei; spre exemplu, o parola.
Controlul de tip CommandButton (buton de comanda) este utilizat pentru a lansa, intrerupe sau termina o actiune.
Majoritatea aplicatiilor folosesc butoanele de comanda pentru a permite utilizatorului ca printr-un simplu clic pe ele sa execute actiunile asociate acestora. Cateva dintre utilizarile de baza ale butoanelor de comanda sunt:
Afisarea sau inchiderea unui formular.
Anularea informatiilor introduse.
Afisarea rezultatelor unor calcule complexe.
Realizarea unui panou de comanda care sa asigure functionalitatea aplicatiei.
Principalele proprietati ale butonului de comanda sunt:
Caption
Textul ce se afiseaza in control.
Visible
Daca este setat pe True (valoare prestabilita), butonul de comanda este vizibil.
Cancel
Daca este setat pe True, apasarea tastei Esc are acelasi efect ca si executarea unui clic pe control. Valoarea prestabilita este False.
Default
Daca este setat pe True, apasarea tastei Enter are acelasi efect ca si executarea unui clic pe control. Valoarea prestabilita este False.
Picture
Permite stabilirea imaginii ce se va afisa in control in locul textului.
Value
Indica daca butonul este selectat (valoarea True) sau neselectat (valoarea False). Se poate utiliza in cod pentru a comanda evenimentul Click al controlului. Este disponibila numai la executie.
Cele mai utilizate evenimente ale butonului de comanda sunt:
Click
Se produce atunci cand utilizatorul executa clic pe control.
GotFocus
Se produce atunci cand controlul primeste focus-ul.
LostFocus
Se produce atunci cand controlul pierde focus-ul.
Controlul de tip Frame (cadru) este o zona dreptunghiulara ce se foloseste pentru a grupa alte controale, cum ar fi butoanele de optiuni si casetele de validare. In marea majoritate a cazurilor cadrul este utilizat drept control pasiv - pentru a grupa alte controale - si nu veti avea nevoie de evenimentele acestuia. In princioiu, un control de tip Frame se foloseste pentru:
Gruparea altor controale fie pentru a le identifica mai usor fie pentru a imparti din punct de vedere functional un formular in mai multe zone distincte.
Afisarea sau ascunderea mai usoara a unui grup de controale pe timpul executiei.
Principalele proprietati ale controlului sunt:
Caption
Textul descriptiv ce se va afisa pe marginea superioara a controlului.
Visible
Stabileste daca controlul si controalele continute este vizbil (valoarea True) sau nu (valoarea False).
Atunci cand vreti sa folositi controlul Frame pentru a grupa alte controale este necesar ca mai intai sa plasati controlul pe formular si apoi sa trasati in interiorul cadrului controalele ce se vor grupa. Aceasta va permite ca in continuare sa manevrati cadrul impreuna cu controalele incluse in el.
Daca pe formular ati plasat deja controalele pe care vreti sa le grupati, selectati controalele respective, decupati-le cu comanda Cut din meniul Edit (sau cu butonul Cut), plasati cadrul in formular in locul dorit sau selectati-l daca este deja trasat si apoi lipiti controalele cu comanda Paste din meniul Edit (sau cu butonul Paste).
Controalele de tip OptionButton (buton de optiune) sunt folosite pentru a afisa diferite optiuni, de regula organizate in grupuri de cel putin doua optiuni, din care utilizatorulva putea alege doar una singura, la fel cum se face si in meniuri.
Observatie Gruparea butoanelor de optiuni se poate realiza prin plasarea lor intr-un container, cum ar fi un control de tip Frame, un control de tip PictureBox sau un formular. Toate butoanele care sunt plasate direct pe un formular formeaza un singur grup.
Cele mai utilizate proprietati ale butoanelor de optiune sunt:
Caption
Textul care apare in dreapta simbolului grafic al butonului de optiune.
Enabled
Determina daca butonul de optiune va raspunde (valoarea True) sau nu (valoarea False) la evenimentele generate de utilizator. In mod prestabilit proprietatea are valoarea True.
Visible
Determina daca butonul de optiune este vizibil (valoarea True) sau nu (valoarea False). In mod prestabilit proprietatea are valoarea True.
Value
Stabileste daca butonul de optiune este selectat (valoarea True) sau nu (valoarea False). In mod prestabilit proprietatea are valoarea False.
Cand un buton de optiune este selectat se declanseaza evenimentul Click al acestuia. Puteti asocia cod acestui eveniment pentru a fi executat atunci cand utilizatorul selecteaza optiunea respectiva.
Controlul de tip CheckBox (caseta de validare) se foloseste pentru a afisa o optiune de forma Da/Nu sau Adevarat/Fals. Casetele de validare se pot grupa la fel ca si butoanele de optiuni, cu deosebirea ca intr-un grup de casete de validare pot fi selectate (afiseaza un smbol de marcare, de regula o bifa) mai multe controale in acelasi timp.
Cele mai utilizate proprietati ale casetei de validare sunt urmatoarele:
Caption
Textul care apare in dreapta simbolului grafic al casetei de validare.
Enabled
Determina daca caseta de validare va raspunde (valoarea True) sau nu (valoarea False) la evenimentele generate de utilizator. In mod prestabilit proprietatea are valoarea True.
Visible
Determina daca caseta de validare este vizibila (valoarea True) sau nu (valoarea False). In mod prestabilit proprietatea are valoarea True.
Value
Stabileste/indica starea controlului. In mod prestabilit valoarea proprietatii este Unchecked (neselectat). Valorile si constantele Visual Basic care pot fi folosite pentru a seta proprietatea Value a unei casete de validare sunt:
Stare Valoare Constanta Semnificatie
Unchecked 0 vbUnchecked Neselectat
Checked 1 vbChecked Selectat
Unavailable 2 vbGrayed Inaccesibil
Principalul eveniment utilizat la o caseta de validare este evenimentul Click, care se declanseaza atunci cand utilizatorul executa clic pe control si ca urmare starea casetei de validare se modifica. Puteti asocia cod acestui eveniment pentru a executa unele actiuni in functie de starea casetei de validare.
ObservatieDaca utilizatorul executa dublu clic pe o caseta de validare, fiecare clic va fi prelucrat in mod independent; deci caseta de validare nu recunoaste dublul clic.
Controalele de tip ListBox (casete cu lista sau pe scurt liste) si ComboBox (casete combinate sau liste derulante) se folosesc pentru a prezenta o lista de elemente, din care utilizatorul sa poata selecta unul sau mai multe. In mod prestabilit, lista cu elemente este afisata pe verticala intr-o singura coloana, dar ea poate fi afisata si pe mai multe coloane. Daca numarul elementelor este mai mare de cat poate afisa o lista sau o lista derulanta, pe control apar automat barele de derulare.
Utilizarea casetelor cu lista si casetelor combinate reprezinta metode eficiente de a pune la dispozitia utilizatorului un numar foarte mare de optiuni intr-un spatiu limitat.
In general, caseta combinata (ComboBox) se foloseste atunci cand exista o lista de optiuni sugestionate, iar caseta cu lista (ListBox) se utilizeaza cand se doreste limitarea introducerilor la ceea ce este in lista. In plus, caseta combinata se va folosi in locul casetei cu lista ori de cate ori spatiul de pe formular nu este suficient pentru a utilza caseta cu lista.
O caseta cu lista (ListBox) afiseaza o lista de elemente din care utilizatorul sa poata selecta unul sau mai multe elemente. In mod prestabilit, elementele sunt afisate vertical pe o coloana, dar puteti stabili si mai multe coloane de afisare.
Figura 2. Stiluri de casete cu lista.
Daca
numarul de elemente depaseste posibilitatile de afisare ale controlului, barele
de derulare apar automat pe control si astfel utilizatorul poate derula lista
in sus si in jos sau la stanga si la dreapta. In figura 2 sunt prezentate doua
variante de liste cu o singura coloana. Lista din stanga este o lista standard,
iar lista din dreapta este o lista cu casete de validare. Ambele au bara de
derulare pe verticala.
Cele mai utilizate proprietati ale controlului de tip ListBox sunt:
Sorted
Indica daca elementele din lista sunt automat sortate alfabetic (valoarea True) sau nu (valoarea False). In mod prestabilit valoarea proprietatii este False.
List
Returneaza sau seteaza elementele existente in lista.
Columns
Determina numarul de coloane dintr-o lista. Valorile pe care le poate lua proprietatea sunt urmatoarele:
0 Lista cu o singura coloana cu derulare pe verticala.
1 Lista cu o singura coloana cu derulare pe orizontala.
>1 Lista cu mai multe coloane cu derulare orizontala.
MultiSelect
Determina daca utilizatorul poate realiza sau nu multiselectie in lista. Valorile posibile sunt:
Valoare
Tip selectie
Descriere
0
Fara (None)
Caseta cu lista standard.
1
Multipla simpla (Simple)
Executarea clicului sau apasarea barei de spatiu selecteaza sau deselecteaza elemente suplimentare in lista.
2
Multipla extinsa (Extended)
SHIFT+ clic sau SHIFT+ o tasta sageata extinde selectia pentru a include toate elementele dintre selectia curenta si selectiile anterioare. CTRL+ clic selecteaza/deselecteaza un element din lista.
Text
Disponibila numai pe timpul executiei. Contine elementul curent selectat in lista.
ListIndex
Seteaza sau returneaza, numai pe timpul executiei, indexul elementului selectat in mod curent in lista.
ListCount
Returneaza, pe timpul executiei, numarul elementelor din lista.
Selected
Proprietatea Selected este un tablou de tip Boolean care contine starea elementelor din lista (selectat sau neselectat). Fiecare element din tablou corespunde unei intrari din lista si este setat pe True daca intrarea este selectata sau pe False daca aceasta nu este selectata. Proprietatea este accesibila numai la executie.
Style
Stabileste modul de afisare al elementelor in lista. Daca proprietatea are valoarea 0 (Standard) se obtine o lista standard. Daca proprietatea are valoarea 1 (CheckBox), in stanga fiecarui element din lista se plaseaza o caseta de validare, care se va folosi pentru selectarea elementului. In figura 2 de la pag. 8 sunt prezentate cele doua stiluri de liste. Valoarea prestabilita este 1.
Cele mai utilizate evenimente ale listei sunt Click si DoubleClick. Evenimentele se vor folosi atunci cand selectiile facute de utilizator in lista trebuie sa fie utilizate in continuare pentru pregatirea declansarii unor actiuni (evenimentul Click) sau pentru a lansa in executie anumite operatii (evenimentul DoubleClick).
Adaugarea si eliminarea elementelor in/din lista
Pe timpul rularii eplicatiei, intr-un control de tip ListBox pot fi adaugate noi elemente folosind metoda AddItem a carei sintaxa este:
<nume_Lista>.AddItem <element> < index>
unde:
<nume_lista>
Numele controlului (valoarea proprietatii Name).
<element>
Expresia de tip String a carei valoare se va adauga in lista. Daca <element> este o constanta literal, se include intre ghilimele.
<index>
Specifica unde se va insera in lista noul element. O valoare <index> egala cu 0 indica prima pozitie. Daca se omite <index>, elementul se va adauga la sfarsitul listei (sau in ordinea de sortare corespunzatoare)
Spre exemplu, pentru a obtine lista prezentata in figura 2, in procedura evenimentului Load a formularului frmTest ce contine controlul lstOrase se va plasa urmatorul cod:
Private Sub frmTest_Load()
lstOrase.AddItem "Paris"
lstOrase.AddItem "New Orleans"
lstOrase.AddItem "San Francisco"
lstOrase.AddItem "Chicago"
lstOrase.AddItem "Seatle"
lstOrase.AddItem "Toronto"
End Sub
Pentru a adauga pe timpul executiei un element in lista intr-o anumita pozitie, trebuie sa specificati valoarea elementului si pozitia in care va fi inserat. Spre exemplu, pentru a adauga elementul "Bucuresti" in prima pozitie din lista se va folosi urmatoarea linie de cod:
lstOrase.AddItem "Bucuresti", 0
Remarcati ca 0 si nu 1 indica prima pozitie din lista.
Pentru a crea o lista pe timpul proiectarii se foloseste proprietatea List din fereastra Properties a controlului executand urmatoarele operatii:
Observatie: Pe timpul proiectarii puteti adauga noi elemente in lista numai la sfarsitul acesteia.
Pe timpul rularii unei aplicatii, un element al controlului ListBox poate fi eliminat folosind metoda RemoveItem, care are urmatoarea sintaxa:
<nume_lista>.RemoveItem <index>
unde <nume_lista> si <index> au aceeasi semnificatie ca si in cazul metodei AddItem. Spre exemplu, pentru a elimina al doilea element din lista lstOrase se poate utiliza urmatoarea linie de cod:
List1.RemoveItem 1
Daca pe timpul rularii unei aplicatii este necesar sa se elimine toate elementele unui control ListBox, se foloseste metoda Clear. Spre exemplu, urmatoarea linie de cod elimina toate elementele listei lstOrase:
lstOrase.Clear
Accesarea elementelor listei
Cea mai usoara metoda de a obtine valoarea elementului selectat in mod curent este folosirea proprietatii Text a controlului. Spre exemplu, urmatoarea linie de cod
strLoco = lstOrase.Text
atribuie variabilei strLoco valoarea elementului selectat in mod curent in lista lstOrase.
Proprietatea List asigura accesul la toate elementele din lista. Aceasta proprietate este de fapt un tablou in care fiecare intrare a listei este stocata intr-un element de tablou. Fiecare element este reprezentat sub forma de sir. In aceste conditii referirea unui element din lista se face folosind urmatoarea sintaxa:
<nume_lista>.List(<index>)
unde <nume_lista> si <index> au aceeasi semnificatie ca si in cazul metodei AddItem. Spre exemplu, pentru a afisa in fereastra Immediate toate elementele listei lstOrase se poate utiliza urmatoarea secventa de cod:
For i = 0 To lstOrase.ListCount
Debug.Print lstOrase.List(i)
Next
Controlul de tip ComboBox (caseta combinata) imbina facilitatile unei casete de text (TextBox) cu o caseta cu lista (ListBox). Acest control permite utilizatorului sa selecteze un element al controlului fie prin tastarea textului in caseta de text fie prin executarea unui clic pe elementul dorit din lista derulanta, care se afiseaza cand se executa clic pe butonul cu sageata a controlului. Caseta combinata contine un camp de editare, astfel incat optiunile care nu sunt in lista pot fi tastate in acest camp.
Caseta combinata are cam aceleasi proprietati ca si caseta cu lista. Caseta combinata nu are proprietatile Columns si MultiSelect; deci nu se pot realiza casete combinate cu mai multe coloane si nici nu se poate realiza o selectie multipla.
Proprietatea Style a casetei combinate care este diferita fata de cea a casetei cu lista. Ea are trei valori cu ajutorul carora se pot crea trei tipuri diferite de casete combinate (vezi figura 3) si anume:
Caseta combinata derulanta (Drop-down Combo) Valoarea proprietatii Style este 0 (valoare prestabilita). Utilizatorul poate introduce textul direct (ca intr-o caseta de text) sau sa execute clic pe butonul cu sageata a controlului pentru a deschide lista de optiuni si sa selecteze optiunea dorita. Optiunea selectata se insereaza in caseta de text de la partea superioara a casetei combinate. Lista se poate deschide si prin utilizarea combinatiei de taste Alt + sageata jos, atunci cand controlul are focus-ul.
Caseta combinata simpla (Simple Combo) Valoarea proprietatii Style este 1. Lista casetei combinate este afisata tot timpul. Utilizatorul poate tasta direct optiunea dorita sau o poate selecta din lista. Numarul intrarilor afisate permanent depinde de dimensiunea controlului data la proiectare.
Caseta cu lista derulanta (Drop-down List) Valoarea proprietatii Style este 3. Se obtine o caseta cu lista derulanta. Spre deosebire de o lista normala, la caseta cu lista derulanta trebuie sa se execute clic pe butonul cu sageata din dreapta controlului pentru a se afisa lista de optiuni.
Figura 3. Stiluri de casete combinate.
Principala diferenta intre aceste trei stiluri ale controlului ComboBox consta in faptul ca intr-o caseta cu lista derulanta nu se poate tasta direct in caseta; se poate doar selecta o optiune din lista. La casetele combinate derulante si la casetele combinate simple se poate tasta direct optiunea dorita sau chiar una care nu exista in lista.
Controlul de tip PictureBox (caseta de imagine) se foloseste pentru afisarea imaginilor, pentru a actiona drept container pentru alte controale si pentru a afisa iesirile metodelor grafice sau a textului utilizand metoda Print. Este similar controlului de tip Image (imagine), insa contine functionalitati pe care nu le are acest control, spre exemplu, posibilitatea de actiona drept container si de a suporta metodele grafice.
Formatele grafice admise de control sunt.
Format
Extensie
Descriere
Bitmap
.BMP
sau
.DIB
Un bitmap defineste o imagine ca un model de puncte (pixeli). Imaginile de tip bitmap sunt numite si grafice "tip pictura".
Puteti folosi bitmap-uri cu diferite profunzimi de culori, 2, 4, 8, 16, 24 si 32 biti, dar imaginea se va afisa corect numai daca dispozitivul de afisare suporta profunzimea de culoare utilizata de catre bitmap. Spre exemplu, un bitmap de 8 biti/pixel (256 culori) afiseaza numai 16 culori atunci cand este prezentat pe un dispozitiv de 4 biti/pixel (16 culori).
Icon
.ICO
Pictograma este un tip special de bitmap. Pictograma are o dimensiune maxima de 32 x 32 pixeli.
Cursor
.CUR
Cursoarele, la fel ca si pictogramele, sunt in esenta bitmap-uri. Totusi ele contin un "hot spot", adica un pixel care prin coordonatele sale x si y urmareste locul cursorului.
Metafile
.wmf
sau
.emf
Un metafile defineste o imagine prin codificare liniilor si formelor ce o compun. Ele mai sunt denumite si grafice "de tip desen". Intr-un caseta de imagine se pot incarca numai fisiere metafile compatibile cu Microsoft Windows.
JPEG
.JPG
JPEG (Joint Photographic Experts Group) este un format bitmap comprimat care admite culori de 8 si 24 biti. Este un format de fisier foarte popular pe Internet.
GIF
.GIF
GIF (Graphic Interchange Format) este un format bitmap comprimat special realizat de CompuServe. Suporta pana la 256 culori si este un format de fisier popular pe Internet.
Principalele proprietati ale controlului PictureBox sunt:
AutoRedeaw
Stabileste daca in control se vor afisa (valoarea True) sau nu (valoarea False) iesirile metodelor grafice (Line, Circle, Point etc.). Valoarea prestabilita este False.
AutoSize
Determina daca dimensiunea controlului se modifica automat (valoarea True) pentru a afisa intregul sau continut sau nu (valoarea False). Valoarea prestabilita este False.
Picture
Stabileste sau returneaza imaginea care va fi sau este incarcata in control.
Incarcarea si stergerea unei imagini
Pe timpul proiectarii, imaginile se pot incarca intr-un control de imagine prin selectarea proprietatii Picture din fereastra Properties a controlului, care va determina afisarea unei casete de dialog de tip Open cu ajutorul careia se va localiza si se selecta fisierul ce contine imaginea dorita. Pe timpul executiei, imaginea se incarca apeland functia LoadPicture, ca in exemplul urmator:
Set picShow.Picture = LoadPicture('c:WindowsWinlogo.cur')
Pe timpul rularii aplicatiei, stergerea imaginii dintr-un control PictureBox se realizeaza folosind tot functia LoadPicture, fara insa a specifica un nume de fisier, ca in linia de cod urmatoare:
Set picShow.Picture = LoadPicture()
Utilizarea metodei Print
Pentru a folosi caseta de imagine la afisarea textului cu ajutorul metodei Print, trebuie sa setati valoarea proprietatii AutoDraw pe True, fie pe timpul proiectarii fie pe timpul executiei aplicatiei. Spre exemplu, pentru ca in caseta de imagine picShow sa se afiseze textul "Acesta este un text afisat intr-o caseta de imagine" se va folosi urmatoarea linie de cod:
picShow.Print "Acesta este un text afisat intr-o caseta de imagine"
Pe timpul utilizarii metodei Print pentru afisarea unui text, puteti modifica stilul si marimea fontului, iar prin folosirea proprietatilor CurrentX, CurrentY, Height si Width puteti stabili pozitia si alinierea textului in caseta de imagine.
Controlul de tip Image (imagine) se foloseste pentru a afisa imagini grafice, admitand aceleasi formate ca si controlul PictureBox (caseta de imagine). In plus imaginile controlului Image raspund la evenimentul Click si deci ele pot fi folosite in locul butoanelor de comanda, ca elemente in barele cu instrumente sau pentru a crea animatii simple.
Controlul de tip Image foloseste mai putine resurse ale sistemului si se redeseneaza mai rapid decat casetele de imagine, dar ele admit numai un subset al proprietatilor, evenimentelor si metodelor casetei de imagine. Controlul de tip Image are si avantajul ca permite extinderea graficului pentru a se incadra complet in dimensiunea controlului.
Proprietatea Stretch
Proprietatea Stretch determina daca o imagine se va extinde atunci cand controlul este redimensionat pe timpul proiectarii. Daca proprietatea este setata pe True, imaginea incarcata in control prin intermediul proprietatii Picture este extinsa. Extinderea unei imagini, in special a celor de format bitmap, poate determina o pierdere a calitatii imaginii, asa dupa cum se poate obsera din figura 4. Imaginile de tip metafile sunt cele mai potrivite pentru extindere.
Figura 4. Imagine bitmap extinsa.
Controalele de tip Timer raspund la scurgerea timpului. Ele sunt independente de utilizator si cu ajutorul lor puteti realiza actiuni care sa se produca la intervale regulate de timp.
Proprietatea Interval a fiecarui control Timer specifica numarul de milisecunde care se scurg intre un eveniment Timer si urmatorul. In afara cazului cand controlul este dezactivat, un control Timer receptioneze evenimentul Timer la intervale egale de timp.
Toate controalele Timer trebuie sa fie asociate cu un formular, insa ele nu sunt vizibile pe timpul executiei.
Proprietatea Interval a controlului Timer are cateva limitari de care trebuie sa tineti cont pe timpul programarii, si anume:
Daca aplicatia dumneavoastra sau o alta aplicatie solicta mult timp sistem - cum ar fi ciclari lungi, calcule intensive sau accesarea unei unitati, retea sau port - este posibil ca aplicatia dumneavoastra sa nu obtina evenimentele de ceas asa de des cum le specifica proprietatea Interval.
Valoarea specificata a intervalului trebuie sa fie cuprinsa intre 0 si 64767 milisecunde, ceea ce inseamna 64,8 secunde.
Nu este garantata exactitatea intervalului. Pentru a asigura exactitatea, controlul trebuie sa verifice ceasul sistemului in loc sa acumuleze intern timpul.
Sistemul genereaza 18 cicluri de ceas pe secunda si cu toate ca valoarea proprietatii Interval se masoara in milisecunde, precizia reala a unui interval nu este mai mare de 1/18 dintr-o secunda.
Controlul Timer are doua proprietati principale:
Enabled
Daca vreti ca un control Timer sa inceapa lucrul odata cu incarcarea formularului, setati aceasta proprietate pe True la proiectare. In caz contrar, lasati aceasta proprietate setata pe False; in aceasta situatie pornirea controlului se va realiza la executie prin intermediul unui eveniment extern (cum ar fi executarea unui clic pe un buton de comanda).
Interval
Numara milisecundele dintre doua evenimente timer.
Remarcati faptul ca rolul proprietatii Enabled a controlului Timer difera fata de cea a celorlalte obiecte. La controlul Timer proprietatea Enabled declanseaza/suspenda operatia de contorizare a timpului, in timp ce la celelalte obiecte proprietatea Enabled determina daca obiectul poate raspunde la un eveniment provocat de utilizator.
Retineti faptul ca evenimentul Timer este periodic. Proprietatea Interval nu determina "cat de lung" este acesta, ci "cat de des" se produce.
Barele de derulare orizontala (control de tip HScrollBar) si barele de derulare pe verticala (control de tip VScrollBar) asigura o metoda usoara de navigare a listelor lungi de elemente sau a altor cantitati mari de informatii, cum ar fi un document text. Barele de derulare sunt elemente obisnuite ale interfetelor Windows. Datorita asemanarii lor cu o scala de masura, barele de derulare sunt folosite ca indicatoare analogice de pozitie sau de stadiu. Ele pot fi intrebuintate si ca dispozitive de intrare cu ajutorul carorara utilizatorul poate ajusta vizula valoarea unei marimi cum ar fi, de exemplu, viteza, temperatura sau volumul.
Ambele bare de derulare au in compunere trei zone distincte pe care se poate executa clic sau care poate fi deplasat cu mouse-ul, pentru a modifica valoarea proprietatii Value a barei de derulare. Aceste zone (vezi fig. 5) sunt: sagetile de la capetele barelor de derulare, caseta de derulare (sau cursor) si corpul barei (cele doua zone dintre cursor si sageti).
Controalele de tip bara orizontala si verticala nu sunt aceleasi cu barele de derulare atasate casetelor de text, listelor, casetelor combinate sau formularelor MDI din Visual Basic. Aceste bare apar automat cand controlul respectiv contin mai multa informatie decat poate afisa in dimensiunea curenta a controlului (sau in cazul casetelor de text si formularelor MDI, cand proprietatea ScrollBars a acestora este setata pe True).
Principalele proprietati ale barelor de derulare sunt:
Value
Contine o valoare intreaga (implicit 0) corespunzatoare pozitiei cursorului in bara de derulare. Cand cursorul este pe valoarea minima, el este plasat in pozitia cea mai din stanga (pentru barele de derulare orizontale) sau in pozitia cea mai de sus (pentru barele de derulare verticale). Cand cursorul este pe valoarea maxima, el este plasat in pozitia cea mai din dreapta (pentru barele de derulare orizontale) sau in pozitia cea mai de jos (pentru barele de derulare verticale).
Max si Min
Proprietatea Max specifica valoarea maxima a proprietatii Value (cursorul se va gasi in pozitia sa cea mai din dreapta sau cea mai de jos). Proprietatea Min indica valoarea minima a proprietatii Value (cursorul se va gasi in pozitia sa cea mai din stanga sau cea mai de sus).
Proprietatile pot avea valori intregi cuprinse intre -32768 si 32767, inclusiv. Valoarea prestabilita a proprietatii Max este 32767, iar a proprietatii Min este 0.
LargeChange
si
SmallChange
Proprietatea LargeChange specifica cu cat se va modifica valoarea proprietatii Value cand se executa clic pe bara propriu-zisa (pe una din zonele dintre cursor si butoane).
Proprietatea SmallChange indica cu cat se va schimba valoarea proprietatii Value cand se executa clic pe butoanele cu sageti de la extremitatile barei de derulare.
Pentru ambele proprietati puteti specifica o valoare intreaga cuprinsa intre 1 si 32767.
In mod prestabilit, fiecare proprietate este stabilita la valoarea 1.
Cele mai utilizate evenimente ale barelor de derualre sunt:
Change
Se produce atunci cand se executa clic pe bara de derulare sau se modifica prin codul programului valoarea proprietatii Value. Procedura evenimentului Change se poate folosi pentru a sincroniza sau coordona datele afisate in alte controale. Spre exemplu, puteti folosi procedura acestui eveniment pentru a seta proprietatea Text a unei casete de text.
Scroll
Se produce atunci cand este tras cursorul barei de derulare. La eliberarea butonului mouse-ului dupa tragerea cursorului se va produce si evenimentul Change.
Nota Este indicat ca in aceste doua evenimente sa nu se apeleze functia MsgBox.
Controlul de tip UpDown este un control de tip ActiveX si apare sub forma unei perechi de butoane cu sageti, care pot fi folosite de catre utilizator pentru a incrementa/decrementa o valoare, cum ar fi pozitia de derulare sau un numar afisat intr-un control "buddy". Controlul "buddy" poate fi orice alt tip de control (cel mai folosit fiind caseta de text).care dispune de o proprietate ce poate fi actualizata prin controlul UpDown
De cele mai multe ori, pentru utilizator, controlul UpDown impreuna cu controlul sau "buddy" apare ca un singur control. In figura de mai jos este prezentat un control UpDown avand o castea de text drept control "buddy", combinatie care de foarte multe ori este referita drept control spinner (caseta de modificare valorica).
Nota Controlul UpDown se gaseste in fisierul MSCOMCT2.OCX din subdosarul System al dosarului Windows (cel care a fost specificat la instalarea sistemului de operare). Acest control se poate folosi doar daca s-a adaugat componenta ce contine respectivul control (Microsoft Windows Common Controls - 2 6.0).
Principalele proprietati ale controlului UpDown sunt urmatoarele:
AutoBuddy
Seteaza/returneaza o valoare care indica daca se foloseste (True) sau nu (False) controlul anterior, din ordinea Tab, drept control "buddy" al sau.
Valoarea implicita este False; adica, controlul UpDown isi foloseste valoarea din proprietatea BuddyControl a sa drept control "buddy".
Setarea proprietati AutoBuddy pe True determina si valoarea din proprietatea BuddyControl.
BuddyControl
Stabileste/returneaza controlul folosit drept control "buddy".
Valoarea proprietatii poate fi numele controlului ce se foloseste drept control "buddy" sau Nothing daca nu se foloseste un control "buddy".
BuddyProperty
Seteaza/returneaza proprietatea folosita pentru sincronizarea controlului UpDown cu controlul sau "buddy".
Valoarea proprietatii este un Variant care specifica o proprietate a controlului indicat de catre proprietatea BuddyControl. Daca nu se specifica nimic si controlul UpDown are un control "buddy", se foloseste proprietatea implicita a controlului.
Valoarea proprietatii BuddyControl trebuie sa se precizeze inainte de stabilirea valorii proprietatii BuddyProperty.
Daca proprietatea SyncBuddy este True, controlul va sinctoniza proprietatea sa Value cu proprietatea specificata de catre proprietatea BuddyProperty.
Increment
Proprietatea Increment determina cantitatea cu care se modifica proprietatea Value cand se executa clic pe sagetile controlului UpDown. Un clic pe sageata sus sau dreapta (respectiv sageata jos sau stanga), determina ca valoarea din proprietatea Value sa se apropie de valoarea din proprietatea Max (respectiv Min) prin cantitatea specificata de valoarea Increment.
Valoarea Increment trebuie sa fie un intreg pozitiv. Valoarea implicita este 1.
Max
Seteaza/returneaza valoarea maxima a intervalului pentru controlul UpDown. Valoarea proprietatii trebuie sa fie un intreg pozitiv sau negativ.
Min
Seteaza/returneaza valoarea minima a intervalului pentru controlul UpDown. Valoarea proprietatii trebuie sa fie un intreg pozitiv sau negativ.
Orientation
Stablieste/returneaza modul de plasare a butoanelor cu sageti pe controlul UpDown. Proprietatea poate fi numai citita pe timpul rularii aplicatiei. Valorile proprietatii sunt:
Constanta Valoare Descriere
cc2orientationVertical 0 Butoanele sunt plasate pe verticala (implicit).
cc2orientationHorizontal 1 Butoanele sunt dispuse pe orizontala.
SyncBuddy
Seteaza/returneaza o valoare care indica daca controlul UpDown se sincronizeaza sau nu cu un control "buddy". Valorile proprietatii sunt urmatoarele:
True Controlul UpDown isi sincronizeaza proprietatea Value cu o proprietate a controlului "buddy", specificata in proprietatea BuddyProperty. Daca in proprietatea BuddyProperty nu este indicata o proprietate, se foloseste proprietatea implicita a controlului "buddy".
False Controlul UpDown nu isi sincronizeaza proprietatea Value cu o proprietate a controlului "buddy". Este valoarea implicita.
Value
Seteaza/returneaza pozitia curenta a valorii controlului, in intevalul definit de Min si Max. Atunci cand se executa clicuri pe butoanele cu sageti ale controlului, valoarea acestei proprietati este incrementata/decrementata.
Wrap
Stabileste daca proprietatea Value a controlului UpDown se schimba circular cand se depasesc valorile Max si Min. Proprietatea are doua valori:
True Proprietatea Value a controlului UpDown se cicleaza daca se depasesc valorile specificate in proprietatile Max sau Min.
False Proprietatea Value nu se modifica circular la depasirea valorilor din Min sau Max. Este valoarea prestabilita.
Principalele evenimente ale controlului UpDown sunt urmatoarele:
Change
Se produce atunci cand se modifica proprietatea Value. Proprietatea Value poate fi modificata prin cod, prin executarea de clicuri pe butoanele cu sageti sau prin schimbarea valorii din controlul "buddy" (daca proprietatea SyncBuddy este True).
DownClick
Se produce atunci cand se executa clic pe butonul cu sageata jos sau stanga.
Evenimentul DownClick se produce dupa evenimentul Change.
UpClick
Se produce atunci cand se executa clic pe butonul cu sageata sus sau dreapta.
Evenimentul UpClick se produce dupa evenimentul Change.
Aplicatia urmatoare permite introducerea unei parole si verificarea acesteia. Daca parola introdusa este corecta, se afiseaza formularul, denumit frmStart, pentru a simula continuarea executiei. Daca parola introdusa nu este corecta, se permite reintroducerea parolei. Dupa 3 incercari nereusite se inchide aplicatia. Valorile proprietatilor obiectelor aplicatiei aplicatiei sunt:
Codul modulul formularului frmParola este:
Const bytStyle As Byte = vbOKOnly + vbExclamation + vbApplicationModal
Private Sub cmdAccept_Click()
Static bytIncerc As Byte
If txtParola = txtParola.Tag Then
MsgBox 'Acces permis', bytStyle, 'Succes!'
Else
bytIncerc = bytIncerc + 1
If bytIncerc = 3 Then
MsgBox 'Regret! Prea multe incercari.', bytStyle, 'Esec!'
End
Else
MsgBox 'Gresit! Mai incercati odata.', bytStyle, 'Rateu!'
txtParola.SelStart = 0
txtParola.SelLength = Len(txtPassword)
txtParola.SetFocus
End If
End If
frmStart.Show
frmParola.Unload
End Sub
Private Sub cmdCancel_Click()
End
End Sub
Codul modulului formularului frmStart este:
Private Sub cmdQuit_Click()
End
End Sub
Folosind butoane de optiuni grupate intr-un cadru, aplicatia urmatoare asigura introducerea a doua valori si afisarea rezultatului operatiei aritmetice selectate. Proprietatile obiectelor aplicatiei sunt urmatoarele:
Codul modulului formularului frmOptiuni este:
Const bytStyle As Byte = vbOKOnly + vbExclamation + vbApplicationModal
Private Sub cmdQuit_Click()
End
End Sub
Private Sub optAdd_Click()
txtC = Val(txtA) + Val(txtB)
End Sub
Private Sub optAdd_GotFocus()
If optAdd Then
txtC = Val(txtA) + Val(txtB)
End If
End Sub
Private Sub optDivide_Click()
If IsEmpty(txtB) Or (Val(txtB.Text) = 0) Then
MsgBox 'Nu se poate imparti prin zero!', bytStyle, 'ATENTIE!'
optDivide.Value = False
txtB.SelStart = 0
txtB.SelLength = Len(txtB)
txtB.SetFocus
Exit Sub
End If
txtC = Val(txtA) / Val(txtB)
End Sub
Private Sub optMultiply_Click()
txtC = Val(txtA) * Val(txtB)
End Sub
Private Sub optSubtr_Click()
txtC = Val(txtA) - Val(txtB)
End Sub
Folosind listele si casetele combinate, aplicatia urmatoare gestioneaza asignarea drepturilor de acces unor utilizatori. Proprietatile obiectelor aplicatiei sunt:
Codul modulului formularului frmLista este:
Dim sUsers() As String, sDrepturi(6) As String
Dim bDrUsers() As Boolean' Matrice pentru drepturi
Dim bUsPrel() As Boolean ' Daca s-a prelucrat un utilizator
Dim nrUsers As Byte' Numarul de utilizatori
Dim iSelectat As Byte ' Indexul utilizatorului selectat
Dim i As Byte, j As Byte, sDrept As String
Private Sub cboUsers_Click()
iSelectat = Me.cboUsers.ListIndex
IncarcaDrepturi
End Sub
Private Sub cmdElimina_Click()
Me.lstDisp.AddItem sDrept
CautaDreptAcces
bDrUsers(iSelectat, j) = False
Me.lstAcces.RemoveItem Me.lstAcces.ListIndex
End Sub
Private Sub cmdEliminaTot_Click()
Me.lstDisp.Clear
For i = 0 To 6
Me.lstDisp.AddItem sDrepturi(i)
bDrUsers(iSelectat, i) = False
Next
Me.lstAcces.Clear
End Sub
Private Sub cmdMuta_Click()
Me.lstAcces.AddItem sDrept
CautaDreptAcces
bDrUsers(iSelectat, j) = True
Me.lstDisp.RemoveItem Me.lstDisp.ListIndex
End Sub
Private Sub cmdMutaTot_Click()
Me.lstAcces.Clear
For i = 0 To 6
Me.lstAcces.AddItem sDrepturi(i)
bDrUsers(iSelectat, i) = True
Next
Me.lstDisp.Clear
End Sub
Private Sub cmdQuit_Click()
Unload Me
End Sub
Private Sub Form_Load()
nrUsers = Me.cboUsers.ListCount
ReDim sUsers(nrUsers - 1) As String
ReDim bUsPrel(nrUsers - 1) As Boolean
For i = 0 To Me.cboUsers.ListCount - 1
sUsers(i) = Me.cboUsers.List(i)
bUsPrel(i) = False
Next
For i = 0 To 6
sDrepturi(0) = 'Adaugare'
sDrepturi(1) = 'Citire'
sDrepturi(2) = 'Criptare'
sDrepturi(3) = 'Decriptare'
sDrepturi(4) = 'Modificare'
sDrepturi(5) = 'Scriere'
sDrepturi(6) = 'Stergere'
Next
ReDim bDrUsers(nrUsers - 1, 6) As Boolean
Me.cboUsers.Text = Me.cboUsers.List(0)
For i = 1 To nrUsers - 1
For j = 1 To 6
bDrUsers(i, j) = False
Next
Next
IncarcaDrepturi
End Sub
Private Sub IncarcaDrepturi()
Me.lstAcces.Clear
Me.lstDisp.Clear
For i = 0 To 6
If bDrUsers(iSelectat, i) Then
Me.lstAcces.AddItem sDrepturi(i)
Else
Me.lstDisp.AddItem sDrepturi(i)
End If
Next
Me.cmdElimina.Enabled = False
Me.cmdEliminaTot.Enabled = False
Me.cmdMuta.Enabled = False
Me.cmdMutaTot.Enabled = False
End Sub
Private Sub lstAcces_Click()
sDrept = Me.lstAcces.Text
Me.cmdMuta.Enabled = False
Me.cmdMutaTot.Enabled = False
Me.cmdElimina.Enabled = True
Me.cmdEliminaTot.Enabled = True
End Sub
Private Sub lstAcces_DblClick()
sDrept = Me.lstAcces.Text
Me.cmdElimina.Value = True
End Sub
Private Sub lstDisp_Click()
sDrept = Me.lstDisp.Text
Me.cmdMuta.Enabled = True
Me.cmdMutaTot.Enabled = True
Me.cmdElimina.Enabled = False
Me.cmdEliminaTot.Enabled = False
End Sub
Private Sub CautaDreptAcces()
For i = 0 To 6
If sDrept = sDrepturi(i) Then
j = i
Exit For
End If
Next
End Sub
Private Sub lstDisp_DblClick()
sDrept = Me.lstDisp.Text
Me.cmdMuta.Value = True
End Sub
Aplicatia prezentata in continuare demonstreaza incarcarea pe timpul executiei a unor imagini intr-un control PictureBox, folosind un grup de butoane de optiuni. Principalele proprietati ale obiectelor aplicatiei sunt:
Tip obiect
Proprietate
Valoare
Tip obiect
Proprietate
Valoare
Form
Name
Caption
frmPict
Incarcarea imaginilor
Option
Button
Name
Caption
opt4
Avion
Frame
Name
Caption
fraImag
Imagini:
Name
Caption
opt5
Iepure
Option
Button
Name
Caption
opt1
Examinator
Command
Button
Name
Caption
Default
cmdQuit
&Terminat
True
Name
Caption
opt2
Trandafir
PictureBox
Name
picShow
Macheta formularului frmPict.
Codul modulului formularului frmPict este:
Const path As String = 'C:ClipartPopular'
Private Sub cmdQuit_Click()
Unload Me
End Sub
Private Sub opt1_Click()
Set picShow.Picture = LoadPicture(path & 'Examine.wmf')
End Sub
Private Sub opt2_Click()
Set picShow.Picture = LoadPicture(path & 'Flower.wmf')
End Sub
Private Sub opt3_Click()
Set picShow.Picture = LoadPicture(path & 'Lion.wmf')
End Sub
Private Sub opt4_Click()
Set picShow.Picture = LoadPicture(path & 'Jetplane.wmf')
End Sub
Private Sub opt5_Click()
Set picShow.Picture = LoadPicture(path & 'Rabbit.wmf')
End Sub
Aplicatia urmatoare afiseaza un ceas electronic folosind un control de tip Timer. Principalele proprietati ale obiectelor aplicatiei sunt:
Codul modulului formularului frmCeas este:
Private Sub timCeas_Timer()
If lblCeas.Caption <> CStr(Time) Then
lblCeas.Caption = Time
End If
End Sub
Aplicatia calculeaza ratele (platile) aferente unui imprumut. Pentru introducerea duratei imprumutului se foloseste o bara de derulare pe orizontala, iar pentru indicarea dobanzii anuale se utilizeaza un control UpDown sincronizat cu o caseta de text. Proprietatile obiectelor interfetei grafice a aplicatiei sunt urmatoarele:
Codul modulului formularului frmRate este:
Private Sub cmdQuit_Click()
Unload Me
End Sub
Private Sub hsbDurata_Change()
Me.txtDurata.Text = Me.hsbDurata.Value
Me.txtValRata.Text = Round(Me.txtImprumut.Text / Me.hsbDurata.Value, 0)
End Sub
Private Sub txtDobanda_Change()
Me.updDobanda.Value = Me.txtDobanda.Text
End Sub
Private Sub updDobanda_Change()
Me.txtDobanda.Text = Me.updDobanda.Value
Me.txtLunar.Text = Round(Pmt(Me.txtDobanda.Text / 100 / 12, _
Me.hsbDurata.Value, -Me.txtImprumut), 0)
End Sub