Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Controale Visual Basic standard

Controale Visual Basic standard

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.

Introducere

Caseta instrumentelor Visual Basic (vezi figura 1). contine instrumentele pe care le folositi pentru trasarea controalelor pe formulare.

Figura 1. Caseta instrumentelor Visual Basic.

 


Categorii de controale

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.

Controale intrinsici

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.

Controale ActiveX standard

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. 

Adaugarea si eliminarea controalelor ActiveX

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:

  1. Se selecteaza optiunea Components din meniul Project.
  2. Se selecteaza caseta de validare de langa numele fisierului .ocx al controlului si apoi se executa clic pe OK. De indata ce controlul este plasat in caseta instrumentelor, el poate fi utilizat ca orice control intrinsec.

b) Pentru a elimina un control ActiveX din caseta instrumentelor:

  1. Se elimina toate instantierile (referirile) la control din formularele proiectului. Se sterg toate referintele la control din codul proiectului. Daca lasati in cod o referinta la control, se va afisa un mesaj de eroare pe timpul comiplarii aplicatiei.
  2. Se selecteaza optiunea Components din meniul Project.
  3. Se deselecteaza caseta de validare de langa numele fisierului .ocx al controlului si apoi se executa clic pe OK. Daca in proiect au ramas instantieri ale controlului, se va afisa un mesaj de eroare.

Conventii pentru denumirea controalelor

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

Valoarea unui control

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 Label

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 TextBox

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 CommandButton

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 Frame

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).

Controlul OptionButton

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 CheckBox

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 ListBox si ComboBox

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.

Controlul ListBox

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:

  1. Se selecteaza controlul, daca nu este deja selectat.
  2. Se afiseaza fereastra Properties, daca nu este afisata si se selecteaza proprietatea List.
  3. Se executa clic pe butonul cu sageata jos din dreapta proprietatii List.
  4. Se tasteaza elementele listei. Dupa fiecare element se foloseste combinatia de taste Ctrl+Enter pentru a trece la o noua linie.
  5. La terminare, se inchide lista derulanta a proprietatii fie prin selectarea unei alte proprietati, fie prin executarea unui nou clic pe numele proprietatii.

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 ComboBox

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 PictureBox

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 Image

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.

 


Controlul Timer

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.

Controalele ScrollBar

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 UpDown

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.

Exemple de utilizare a controalelor

Etichete, casete de text, butoane de comanda

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

Cadru (frame), butoane de optiuni si cadru

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

Liste si casete combinate

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

Caseta de imagini (PictureBox)

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

Controale Timer

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

Bare de derulare si controale UpDown

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