Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateC
C sharpCalculatoareCorel drawDot netExcelFox pro
FrontpageHardwareHtmlInternetJavaLinux
MatlabMs dosPascalPhpPower pointRetele calculatoare
SqlTutorialsWebdesignWindowsWordXml

BAZELE PROGRAMARII PE OBIECTE

calculatoare



+ Font mai mare | - Font mai mic





 

Partea 1. Teorie

I. Programarea pe Obiecte.Notiuni Generale

I.1. Obiecte.Clase.Caracteristici.

I.1.1. Introducere.

Limbajele de programare, tehnicile si metodele de programare au evoluat in mod spectaculos de la aparitia calculatorului si pana astazi, ca urmare a necesitatii de a raspunde la cresterea continua a complexitatii problemelor de rezolvat si deci, implicit a programelor corespunzatoare.

Atunci cand limbajele de asamblare n-au mai facut fata complexitatii crescande a programelor, a fost necesara utilizarea unor limbaje de nivel mai inalt, cunoscute sub numele de limbaje de programare de generatia I-a si a II-a, ca instrumente care sa faciliteze gestionarea acelui nivel de complexitate. Reprezentante de seama ale acestei perioade sunt limbajele FORTRAN, COBOL, ALGOL.

Odata cu cresterea dimensiunii si complexitatii proiectelor software, a devenit tot mai clar ca pentru a le putea controla este absolut necesara abstractizarea datelor si ca in acest scop programarea structurata nu mai este eficienta.

S-a impus gasirea unui nou model de prrogramare capabil sa depaseasca limitarile programarii structurate si care sa fie capabila sa realizeze abstractizarea adecvata a datelor. Asa s-au nascut limbajele bazate pe obiecte si apoi cele orientate pe obiecte. Dintre acestea cele mai raspandite sunt Ada si CLOS si mai de curand JAVA (bazate pe obiecte), respectiv Smalltalk, C++, Eiffel (orientate pe obiecte).

I.1.2. Conceptul de Obiecte.

Prin obiect intelegem o entitate din lumea reala asupra careia se poate intreprinde o actiune, sau care poate intreprinde o actiune.

Obiectul este deci un concept, o abstractiune sau un lucru, o entitate din lumea reala avand limite precise si un sens precis in contextul problemei studiate.

Un obiect este caracterizat prin 3 elemente:

o       identitate;

o       stare;

o       comportament.

Spunem despre un obiect ca are doua componente:

o       structura infirmationala;

o       comportamentul sau operatiile care actioneaza asupra structurii

Analizand mai atent obiectele, constatam ca acestea pot fi:

o       obiecte concrete, care exista in mod fizic;

o       obiecte conceptuale (o idee, o lege, etc.).

Comportamentul obiectelor poate fi declansat de stimuli externi sau evenimente (de exemplu: primeste o comanda, elibereaza o chitanta, repara automobilul, etc.).

Singura parte vizibila a unui obiect este constituita din operatiile (functiile) obiectului si este denumita interfata.

Orice obiect are atribute si operatii.

Atributele descriu un obiect si sunt valori ale dtelor, in timp ce operatiile (functiile) deinesc comportamentul obiectelor. Anumite metode orientate obiect propun, pentru acelasi scop, utilizarea a trei tipuri de obiecte, definite in contextul problemei si anume:

obiecte entitate;

obiecte de interfata;

obiecte de control.

Arhitectura sistemelor cu obiecte se bazeaza pe clase, obiecte si interactiunea dintre ele.

Un obiect dispune de proprietati, metode si evenimente.

Proprietatile unui obiect descriu caracteristicile fizice ale acestuia. Proprietatile reprezinta atribute ale obiectelor. Obiectul este caracterizat prin proprietatile (atributele) sale: nume, dimensiune, culoare, eticheta si ale proprietatii care fac unic un obiect.

Din punct de vedere al programatorilor, un obiect reprezinta o multime de date si o serie de operatii, numite metode, care manipuleaza datele.

Obiectul se caracterizeaza prin:

Identitate - cea care individualizeaza obiectul (spre exemplu numele lui pentru a-l distinge fata de alte obiecte);

Exemple de obiecte particulare pot fi:

bicicleta lui Radu;

o fereastra de la o statie de benzina;

un triunghi desenat pe hartie.

Metodele obiectului - reprezinta elementele comportamentale ale obiectului atunci cand acesta este accesat prin mesaje diverse din exteriorul sau.

O operatie este o actiune pe care o efectueaza un obiect. Implementarea specifica a unei operatii de catre o anumita clasa se numeste metoda.

Starea obiectului - este caracterizata de atributele care descriu obiectul. Fiecare atribut are un nume si o valoare asociata ca variabila de instanta. Variabila de instanta este o anumita compozitie a caracteristicilor obiectului la un moment dat (variabilele de instanta definesc proprietatile obiectului).

Clsificarea - presupune ca obiectele care au aceeasi structura (aceleasi atribute) si acelasi comportament (aceleasi operatii) sunt regrupate in clase.

Obiectul cu stari comportamentale asemanatoare formeaza o clasa de obiecte.

I.1.3. Conceptul de Clasa de obiecte.

O clasa de obiecte este o abstractie care descrie toate caracteristicile comune ale unui grup de obiecte si care permite crearea de noi obiecte.

Exemple de clase: Bicicleta, Fereastra, Triunghi,etc.

Clasa reprezinta un ansamblu de obiecte cu stari comportamentale asemanatoare, sau, altfel spus, o anumita categorie de obiecte ale carei proprietati si metode pot fi mostenite intr-o subclasa.

O clasa stocheaza si manipuleaza date si poate returna valori catre codul de program care utilizeaza un obiect al acelei clase.

o clasa are un identificator (un nume) si campuri membre. Se pot crea clase in cadrul unor module specifice fiecarei clase, anumite module de clasa.

Clasa este de fapt o entitate statica, avand interfata si proprietati bine determinate. Ea poate fi definita intr-un limbaj declarativ sau in mod grafic.

Ø      Subclasa defineste comportamentul modului de realizare a obiectului derivat dintr-o clasa de baza;

Ø      Tipul este o descriere abstracta a unui grup de entitati asemanatoare;

Ø      Subtipul este o parte a comportamentului.

In aceasta abordare deosebit de importante sunt conceptele de identitate, polimorfism, mostenire si incapsulare.

Identitatea semnifica faptul ca obiectele sunt entitati discrete si distincte.Fiecare obiect poseda propria sa identitate.

Polimorfismul reprezinta capacitatea unui obiect de a-si modifica forma. Polimorfismul se manifesta prin reactii diferite ale diverselor obiecte la un acelasi mesaj.

Existenta unor operatii (sau metode) diferite, cu acelasi nume, dar cu comportament diferit, se numeste polimorfism.

Exemple:

a muta o bicicleta;

a muta o fereastra;

a muta un triunghi.

Mostenirea permite partajarea atributelor si operatiilor comune intre clase pastrand, in acelasi timp, diferentele. O clasa poate fi rafinata in subclase din ce in ce mai fine. Fiecare subclasa mosteneste toate proprietatile superclasei sale si aduga propriile sale proprietati.

Mostenirea reprezinta transmiterea de proprietati si metode. Msostenirea este marcata de o definire suplimentara si transmite proprietatile si metodele clasei.

Mostenirea poate fi:

o       simpla, cand o subclasa are o singura clasa parinte;

o       multipla, cand o subclasa mosteneste proprietatile si metode ale mai multor clase parinte.

Incapsularea reprezinta combinarea datelor si metodelor intr-o singura structura de date, definind totodata modul in care obiectul si restul programului pot referi date din obiect. In obiecte/clase de obiecte sunt ascunse atat structura cat si implementarea operatiilor prin procesul de incapsulare.

Incapsularea - reprezinta conceptul care defineste apartenenta unor proprietati si metode fata de un obiect. Incapsularea protejeaza obiectele de manevre eronate din afara.

I.2. Modele Utilizate In Dezvoltarea de Produse Software.

I.2.1. Generalitati privind activitatea de programare.

Programarea este practic activitatea prin care se concepe si se realizeaza programul pentru rezolvarea unei probleme, cu ajutorul calculatorului electronic.

Un program reprezinta o succesiune de instructiuni si comenzi apartinand unui/unor limbaje de programare (Pascal, Basic, C, Visual Basic, Java etc.) care conduc la solutionarea problemei formulate.

Daca ne referim la activitatea de programare, vom identifica in cadrul acesteia, urmatoarele etape:

o       Formularea problemei - etapa in care se formuleaza efectiv problema de rezolvat, se definesc obiectivele acesteia, datele de iesire si forma lor de prezentare, se determina datele de intrare necesare si cerintele de prelucrare.

o       Eliberarea, identificarea si descrierea algoritmului de rezolvare a problemei date (sub forma de pseudocod sau schema logica). Ea presupune analiza corecta, exacta si completa a problemei formulate, pentru gasirea si apoi descrierea algoritmului ei corect de rezolvare.

o       Scrierea programului - etapa in care are loc scrierea propriu-zisa a programului, intr-un limbaj de programare ales de programator. Se obtine astfel asa numitul program sursa.

o       Testarea programului - activitate prin care se verifica sintactic si logic corectitudinea programului.

o       Realizarea, completarea si definitivarea documentatiei programului, care trebuie sa fie accesibila atat utilizatorilor, cat si specialistilor (programatori sau operatori) care vor dezvolta, completa sau intretine programul in viitor.

o       Exploatarea curenta, utilizarea si intretinerea programului, are ca obiectiv intretinerea si dezvoltarea programului, daca este necesar.

Modele utilizate in dezvoltarea programelor.

Un model este o notiune abstracta si este construit pentru a intelege problema inainte de a implementa solutia.

Cele mai utilizate modele in dezvoltarea programelor sunt:

Modelul orientat procedural care se bazeaza pe proceduri si algoritmi;

Modelul orientat pe obiecte, care consta intr-o colectie de obiecte ce apartin unor clase;

Modelul orientat pe reguli (de tip If-Then);

Modelul orientat logic in care anumite scopuri se exprima prin calcule cu predicate;

Modelul orientat pe constrangeri (relaModelul orientat pe constrangeri (relatii de invarianta);

Cea mai mare raspandire o are modelul procedural si cel mai mare interes il reprezinta in ultimul timp modelul orientat pe obiecte.

I.2.2. Scurta prezentare a modelului procedural.

Modelul procedural reprezinta, prin intermediul algoritmilor de prelucrare, succesiunea operatiilor elementare, in numar finit, care trebuie parcurse pentru rezolvarea unei probleme.

Modelul procedural are la baza abstractia procedurala si principiul substitutiei conform careia, la apelul unei proceduri, fiecare pozite de parametru formal din corpul acesteia, poate fi ocupata de o valoare de parametru identica din punct de vedere al tipului, sau de un nou apel la o procedura, inclusiv a procedurii in cauza (recursivitate), care reintoarce tipul corespunzator parametrului substituit.

Din limbajele de tip procedural amintim: Pascal, Cobol, Basic, C++, FoxPro.

Modulul program reprezinta o parte a unui program, compusa din mai multe instructiuni, care are un nume propriu si care rezolva o anumita functie a programului respectiv. Orice modul se caracterizeaza prin urmatoarele elemente:

nume, necesar pentru apelare;

o functie concreta;

un algoritm de rezolvare;

o interfata cu programul.

Algoritmii, odata ce au fost identificati, sunt reprezentati prin:

sceme logice care pot fi de program sau de sistam;

pseudocod, un limbaj formalizat, care contine enunturi standard si nestandard si care nu are reguli atat de stricte precum limbajele de programare;

tabelele de decizii;

diagrame de tip arbore, daca avem de a face cu o proiectare modularizata;

limbaje de programare.

I.2.3. Modularitatea.

Clasele si obiectele obtinute in urma abstractizarii si incapsularii trebuie grupate si apoi stocate intr-o forma fizica, denumita modul.

Modulele pot fi privite xa si containere fizice in care declaram clasele si obiectele rezultate in urma proiectarii la nivel logic. Modulele formeaza asadar arhitectura fizica a programului.

Modularizarea consta in divizarea programului intr-un numar de module care pot fi compilate separat, dar acre sunt conectate (cuplate) intre ele.

Reguli Generale de Modularizare.

a)      Structura fiecarui modul trebuie sa fie suficient de simpla pentru a putea fi complet inteleasa.

b)      Implementarea unui modul trebuie sa depinda doar de interfetele altor module, adica trebuie sa fie posibila modificarea implementarii unui modul fara a avea cunostiinte despre implementarea altor module si fara a afecta comportarea celorlalte module.

c)      Detaliile sistemului care se presupune ca se vor modifica independent vor fi plasate in module diferite.

d)      Singurele legaturi intre module vor fi acelea a caror modificare este improbabila.

e)      Orice structura de date este incapsulata intr-un modul; ea poate fi adresata direct din interiorul modulului dar nu poate fi accesata din afara modulului decat prin intermediul obiectelor si claselor continute in acel modul.

Elementul fizic de constructie in limbajele bazate/orientate pe obiecte este modulul care contine o colectie de clase si obiecte.

Un program orientat pe obiecte are putine date globale, intrucat datele si operatiile sunt unite intr-un mod nou care face ca blocurile logice fundamentale ale sistemului sa nu mai fie algoritmii, ci clasele si obiectele

I.2.4. Programarea Orientata pr Obiecte. Concepte de Baza.

Proiectarea orientata pe obiecte este o metoda de implementare in care programele sunt organizate ca si colectii de obiecte ce coopereaza intre ele, fiecare obiect reprezentand instanta unei clase; fiecare clasa apartine unei ierarhii de clase, clasele fiind unite prin relatii de mostenire.

Aceasta definitie cuprinde trei parti importante, si anume:

Ø      obiectele si nu algoritmii sunt blocurile logice fundamentale;

Ø      fiecare obiect este o instanta a unei clase;

Ø      clasele sunt legate intre ele prin relatii de mostenire.

Limbaj de Programare Bazat pe Obiecte. Programare cu Tipuri de Dtae Abstracte.

Un limbaj de programare care ofera suport pentru utilizarea calselor si a obiectelor, dar care nu are implementat mecanismul relatiilor de mostenire intre clase este un limbaj de programare bazat pe obiecte.

Concepte Fundamentale in Programarea pe Obiecte.

Programarea orientata spre obiecte reprezinta un stil de programare nou, care utilizeaza concepte si constructii noi, modalitati noi de structurare a datelor, de tratare a colectiilor de date si chiar de programare. Ea pune in centrul atentiei obictele, care se definesc ca unitati de program independente, care cuprind laolalta datele si procedurile ce actioneaza asupra obiectelor.

Principalele concepte care stau la baza programarii orientate pe obiecte sunt:

      Abstractizarea;

      Incapsularea;

      Modularizarea;

      Ierarhizarea.

Abstractizarea este una din caile fundamentale prin care noi, oamenii, ajungem sa intelegem si sa cuprindem complexitatea. In contextul programarii pe obiecte, Booch ne ofera urmatoarea definitie a abstractiunii:

O abstractiune exprima toate caracteristicile esentiale ale unui obiect, care fac ca acesta sa se distinga de alte obiecte; abstractiunea ofera o definire precisa a granitelor conceptuale ale obiectului, din perspectiva unui privitor extern.

In procesul de abstractizare atentia este indreptata exclusiv spre aspectul exterior al obiectului, adica spre comportarea lui, ignorand implementarea acestei comportari.

Se poate spune ca abstractizarea consta in focalizarea pe aspectele esentiale ale unei entitati.

Incapsularea consta in separarea aspectelor externe ale unui obiect, care sunt accesibile altor obiecte, de aspectele interne ale obiectului, care sunt ascunse celorlalte obiecte. Utilizatorul obiectului poate accesa doar anumite atribute si operatii, numite publice, in timp ce alte atribute si operatii ii raman inaccesibile (acestea se numesc private).

Incapsularea este un concept complementar abstractizarii. Daca rezultatul operatiei de abstractizare pentru un anumit obiect este identificarea protocolului sau, atunci incapsularea are de a face cu selectarea unei implementari si tratarea acesteia ca pe un secret al respectivei abstractizari. Prin urmare, incapsularea este procesul in care are loc ascunderea implementarii fata de majoritatea obiectelor-client.

Ierarhizarea reprezinta o ordonare a abstractiunilor.

Cele mai importante ierarhii de clase in paradigma obiectuala sunt:

      Ierarhia de clase (relatie de tip 'is a');

      Ierarhia de obiecte (relatie de tip 'part of');

      Mostenirea (ierarhia de clase).

Mostenirea defineste o relatie intre clase in care o clasa impartaseste structura si comportarea definita in una sau mai multe clase (dupa caz vorbim de mostenire simpla sau multipla).

Agregarea (ierarhia de obiecte).

Majoritatea metodelor orientate obiect utilizeaza reguli sau operatii semantice cum sunt :

generalizarea / specializarea;

agregarea / descompunerea

combinate cu mostenirea si incapsularea.

Agregarea este relatia intre doua obiecte in care unul dintre obiecte apartine celuilalt obiect. Agregarea reda apartenta unui obiect la un alt obiect.

Evenimentul - este actiunea savarsita de sistem atunci cand operatorul solicita executarea unei comenzi. Evenimentele pot fi declansate interactiv sau programat.

1.2.5. Modele ale proiectarii si programarii pe obiecte.

Modelul obiectual - este descrierea structurii statice a obiectelor, claselor de obiecte, a operatiilor si atributelor precum si a legarturilor si a relatiilor dintre ele. O diagrama de obiecte este un graf ale carui noduri sunt obiectele si ale carui arce sunt relatiile dintre obiecte.

Modelul dinamic - descrie interactiunea dintre obiecte si este focalizat pe aspecte ce se schimba in timp, deoarece orice obiect are un ciclu de viata cu un punct de pornire si unul de sfarsit. O diagrama de stare este un graf ale carui noduri sunt starile si ale carui arce sunt tranzactiile intre stari, cauzatre de evenimente externe.

Modelul functional - descrie transformarile valorilor datelor precizand sursa, transformarile si destinatia lor. O diagrama de flux de date este un graf ale carui noduri sunt procesele si ale carui arce sunt fluxurile de date.

Modalitatea de coordonare si interactiune intre obiecte este transmiterea mesajelor. Trimiterea unui mesaj are ca scop activarea unei metode (operatii asociate cu sablonul uni mesaj) a obiectului receptor cu argumentele continute in mesaj.

II. Limbajul VISUAL BASIC

2.1. Prezentare generala.

Visual Basic reprezinta o varianta si totodata o dezvoltare a vechiului limbaj de programare Basic (Begginer's All-Purpose Symbolic Instructions Code-codul instructiunilor simbolice de uz general pentru incepatori) si a fost lansat pe piata de firma MicroSoft in anul 1991. MicroSoft specifica termenul 'Visual' deoarece limbajul permite proiectarea unei interfete grafice intre program si utilizator (Grafic User Interfaces - GUI) cu ajutorul unor formulare (forme). Acestea contin elemente visuale numite obiecte sau controale, cum ar fi butoane de comanda, casete de validare, casete de dialog, casete text, etc., care prmit utilizatorilor sa obtina, sa afiseze, sa inscrie date, imagini, etc.

Visual Basic este un mediu integrat de dezvoltare, deoarece integhreaza functii de proiectare, editare de text, compilare si depanare in cadrul unui mediu comun.

Visual Basic este un limbaj interactiv, adica implementeaza fiecare instructiune pe masura ce e introdusa de la tastatura, compiland partial codul si semnaland orice eroare sintactica, daca instructiunea este corecta, executand-o.

Visual Basic stocheaza fisierele sursa ca fisiere ASCII ale caror nume de fisier contin una din urmatoarele patru tipuri de extensie:

      .frm pentru forme - O forma asigura programului mijloacele visuale de prezentare a datelor;

      .bas pentru module cod sursa - Un modul stocheaza secvente de cod care nu necesita o forma;

      .cls pentru module clase - Un modul clasa este un tip special de modul cod care contine o singura clasa si obiectele asociate acesteia;

      .res pentru resurse - Un fisier de resurse contine imaginile si textele necesare programului, precum si alte informatii orientate pe prezentare.

Visual Basic lucreaza cu mai multe tipuri de proiecte (standard.exe, ActiveX.exe, ActiveX.DLL, ActiveX Control etc) fiecare avand particularitatile sale.

Incercand o prezentare succinta a limbajului de programare Visual Basic, acesta se poate caracteriza astfel:

Ø      Cel mai rapid si cel mai simplu limbaj de dezvoltare a unei aplicatii sub Windows;

Ø      Poate realiza tot ce poate fi realizat cu oricare alt limbaj de programare sub Windows;

Ø      Este un mediu integrat de dezvoltare deoarece integreaza functiile de proiectare, editare de text, compilare si depanare in cadrul unui mediu comun;

Ø      Visual Basic abordeaza interactiv dezvoltarea codului nefacand distinctie intre scrierea, compilarea si testarea codului;

Ø      Combina elemente de programare orientata pe obiecte cu elemente de programare orientata pe evenimente;

Ø      Poate crea baze de date pentru cele mai raspandite tipuri de date: Microsof Access, Microsoft FoxPro, dBase, Paradox, Microsoft SQL Server, etc.;

Ø      Permite integrarea functiilor furnizate de catre alte aplicatii (de ex.:Microsoft Word, Excel, etc.);

Ø      Permite accesul la documente si aplicatii din internet sau intranet sau crearea unor aplicatii de tip Internet Server;

Ø      Detine toate documentele necesare crearii unor aplicatii de uz personal sau pentru grupuri de lucru.

2.2. Mediul integrat de dezvoltare Visual Basic (IDE)

2.2.1. Lansarea in executie.

Lansarea in executie a programului Visual Basic se poate face in mai multe moduri:

Se activeaza butonul START de pe bara de task-uri;

Se activeaza optiunea PROGRAMS si, in lista de optiuni se executa click pe Microsoft Visual Studio 6.0 si de acolo Microsoft Visual Basic 6.0

Mediul de programare Visual Basic (IDE - Integrated Development Environment) este un ansamblu de meniuri, bare de instrumente si ferestre cu ajutorul carora programatorul poate proiecta si crea aplicatii in Visual Basic.

2.2.2. Mediul de lucru Visual Basic.

Mediul de lucru Visual Basic poate contine:

Bara de meniuri contine maniurile standard ale uni meniu Windows: File, Edit, View, Windows si Help, precum si meniuri care cuprind comenzi specifice programarii in Visual Basic, precum: Project, Format, Debug.

Toolbar (bara de instrumente) permitre accesul rapid la comenzile cele mai des folosite in mediul Windows: deschidere fisier, salvare, tiparire, copiere, mutare, etc. La acestea se pot adauga (sau elimina) si alte bare cu instrumente cu ajutorul comenzii Toolbar din meniul View.

Toolbox (cutia de instrumente) situatx de regula in partea din stanga a ecranului, contine un set de pictograme corespnzatoare obiectelor care pot fi folosite in timpul proiectarii aplicatiilor cum ar fi: Label, TextBox, CommandButton, ComboBox, etc., si introduse in formular (forma). Unii programatori clasifica aceste controale in trei grupe:

o       Intrinseci (care apar in Toolbox atuci cand se porneste prima data Visual Basic);

o       Externe (controale ActiveX, care pot fi adaugate de la ToolBox);

o       Inserabile (controale facute din aplicatii externe, precum MS Excel).

Meniuri contextuale contin comenzi rapide pentru actiuni efectuate in mod frecvent. Meniurile contextuale se deschid executand click dreapta pe obiectul respectiv. Ele contin comenzi ce pot fi utilizate la locul si in momentul respectiv.

Fereastra Project Properties serveste la stabilirea unor informatii despre proiect.

In sectiunea General se pot stabili:

Project Type, deci tipul proiectului (.exe, .dll, .ocx, etc.);

Startup Object, deci care este 'forma' cu care incepe aplicatia;

Project Name, defineste numele fisierului help aferent proiectului;

Project Description pentru o scurta descriere a proiectului.

In sectiunea Make se pot stabili informatii cu privire la versiunea aplicatiei, numarul versiunii, titlul, pictograma asociata acesteia.

Sectiunea Compile stabileste optiunile de compilare ale proiectului: p-Code sau Native Code.

Fereastra 'Project Explorer' faciliteaza lucrul cu diferitele componente ale proiectului, afisate sub forma unei liste arborescente. Fiecare componenta are un nume si un nume de fisier(acestea apar intre paranteze). Exista sapte tipuri de componente ce pot aparea aici:

Projects (.VBP)

Forms (.FRM)

Modules (.BAS)

Class Modules (.CLS)

User Controls (.OCX)

User Documents (.DOB)

Property Pages (.PAG)

Fereastra Project Browser afiseaza informatii despre prototipurile tuturor functiilor, procedurilor, care se afla in fisierele biblioteca (dll, olb, ocx) legate la proiect. In fereastra Classes se poate vedea ce contine biblioteca: clase, module, enumerari, tipuri definite de utilizator, iar in fereastra din partea dreapta continutul fiecarei dintre acestea.

Fereastra 'Properties Window' (fereastra de proprietati) afiseaza toate proprietatile formei/controlului selectat si valorile acestora. Fiecare proprietate are un nume si o valoare setata fie de Visual Basic, fie de programator. In denumirea obiectelor se foloseste un prefix din trei litere mici, reprezentand tipul obiectului:

Prefix

Tipul obiectului

cbo

Combo box

chk

Check box

cmd

Command button

frm

Form

img

Image

lbl

Label

lst

List box

mnu

Menu

pic

Picture box

txt

Text box

O serie de proprietati sunt comune mai multor controale Visual Basic, cum sunt:

Proprietatea

Explicatia

Alignment

textul de pe control poate fi aliniat la stanga, la centru sau la dreapta

Backcolor

culoarea fundalului

Borderstyle

tipul bordurii din jurul controlului

Caption

textul afisat de pe control

Enabled

Daca are valoarea logica 'true', utilizatorul poate interactiona cu controlul; daca are valoarea 'false', controlul nu raspunde la actiunea utilizatorului

Font

determinx fontul, marimea lui si stilul textului afisat pe control

Forecolor

Determina culoarea textului de pe un control

Height

inaltimea controlului (in twips)

Left

distanta de la marginea din stanga a formei (ecranului)

MousePointer

determina forma cursorului mouse-ului cand acesta trece peste controlul respectiv

(Name)

numele controlului

ToolTipText

textul care apare cand utilizatorul tine cursorul mouse-ului peste controlul respectiv

Top

distanta de la marginea de sus a formei (ecranului)

Visible

determinx daca controlul este vizibil sau nu

Width

latimea controlului

Fereastra Form Designer afiseaza un formular pe care programatorul in poate personaliza inserand controale, grafica si imagini, proiectand astfel intefata aplicatiei cu utilizatorul. Fiecare formular (forma) din cadrul proiectului are propria fereastra de tip Designer, aceasta fiind practic fereastra de proiectare a fiecarui formular.

Fereastra 'Form-Layout' afiseaza o schita in miniatura a formei, reprezentand locatia de pe un ecran unde aceasta va aparea in timpul executiei programului. Din aceasta fereastra se poate stabili, de asemenea, locatia initiala a formei, prin mutarea schitei.

Fereasra Code Editor este folosita ca un editor de texte pentru a introduce codul procedurilor aplicatiei. Pentru fiecare forma se poate deschide o fereastra de cod (code window). Fereastra ne pune la dispozitie un procesor de texte specializat, cu numeroase facilitati pentru scrierea de cod in Visual Basic.

Fereastra References afiseaza diferitele legaturi ce se pot stabili cu alte componente soft inregistrate in sistem. Pentru a se putea folosi in cadrul aplicatiei proceduri sau obiecte ce se gasesc in diferite fisiere DLL sau OCX trebuie sa se stabileasca o legatura cu acestea.

In fereastra References sunt afisate toate legaturile spre bibliotecile de prototipuri care au fost inregistrate in sistem. Daca dorim sa legam la proiect un fisier care nu este in lista, vom folosi butonul Browse.

Fereastra Components, cu ajutorul ei se pot introduce in proiect legaturi cu diferite controale (fisiere .OCX). Se aseamana cu fereastra References numai ca se pot stabili legaturi doar cu controalele ActivX inregistrate in sistem.

Ferestrele Immediate, Locals si Watch sunt utilizate de regula in faza de testare si corectare a programului de erori. Sunt disponibile numai in timpul executiei programului.

Fereastra Options este importanta pentru a stabili diverse optiuni ale IDE. Cele mai utilizate optiuni sunt:

Optiunea Auto Syntax Check cere compilatorului V.B. sa verifice corectitudinea sintaxei comenzilor in timp ce se scrie codul si sa atentioneze asupra eventualelor greseli;

Optiunea Require Variable Declaration stabileste daca trebuie sa se declare explicit variabilele;

Optiunea Prompt for project din sectiunea Environment permite alegerea unui sablon de proiect care se foloseste pentru un proiect nou;

Optiunea Create default stabileste un sablon de proiect care se va incarca automat de cate ori se doreste sa se creeze un proiect nou;

In sectiunea Advanced se poate alege unul din cele doua stiluri ale IDE: SDI-single document interface si MDI-multiple document interface. Alegand SDI toate ferestrele din IDE pot fi mutate oriunde pe ecran; alegand MDI toate ferestrele sunt continute intr-o singura fereastra parinte.

2.3. Concepte de baza in Visual Basic.

2.3.1. Obiecte. Proprietati.

Obiectul se poate defini astfel, din punct de vedere al proiectantului, ca un ansamblu de date si operatii, numite metode, care manipuleaza datele.

Obiectele stau in centrul programarii in Visual Basic. Fiecare obiect are o identitate a sa, proprie si este caracterizat printr-o serie de proprietati sau atribute.

Proprietatile unui obiect descriu caracteristicile fizice ale acestuia: dimensiunea, culoarea, pozitia acestuia, inaltimea, latimea, numele obiectului, etc.

Avem doua posibilitati de a modifica proprietatile unui obiect:

in momentul proiectarii, folosind fereastra de proprietati;

in timpul executiei, prin codul programului.

Modificarea valorilor proprietatilor unui obiect in faza de executie a programului se face prin cod, referirea acestuia realizandu-se printr-o expresie cu sintaxa:

NumeObiect.Proprietate = Valoare

2.3.2. Metode.

O metoda este o actiune pe care programul o poate efectua asupra obiectului. O metoda este o procedura din program care poate fi invocata pentru a asocia o anumita actiune unui obiect. Sintaxa apelului unei metode este urmatoarea:

[NumeObiect].Metoda [lista-parametri]

Metoda Move presupune utilizarea cuvantului cheie Move si patru parametrii: Left, Top, Width si Height.

Pe langa proprietati si metode, majoritatea obiectelor din Visual Basic dispun si de un eveniment, cel putin.

Un eveniment este raspunsul unui obiect la o actiune a utilizatorului sau la o actiune a programului.

Codul din aplicatiile Visual Basic se imparte in blocuri de dimensiuni mai mici numite proceduri. O procedura - eveniment contine cod care este executat atunci cand se produce un anumit eveniment.

2.3.3. Aplicatii Visual Basic. Caracteristici.

Modulele formelor constitue baza pentru majoritatea aplicatiilor create in Visual Basic. Ele contin declaratii de variabile, constante, tipuri definite de utilizator, enumerari, proceduri ce gestioneaza evenimentele, proceduri si functii globale sau locale.

Modulele standard (fisiere c extensia .bas)contin proceduri si declaratii care pot fi accesate din orice alt modul al aplicatiei. Putem adauga module standard la aplicatiile noastre cu ajutorul comenzii AddModule din meniul Project.

Modulele claselor constitue baza programarii orientate pe obiecte in Visual Basic. Astfel, putem scrie cod in modulele claselor pentru a crea obiecte noi, cu proprietati si module proprii. Putem adauga un modul clasa la aplicatie cu ajutorul comenzii Add Class Module.

Etapele proiectarii unei aplicatii in Visual Basic.

Crearea unei aplicatii in Visual Basic parcurge, in mod normal urmatoarele etape:

Formularea problemei si deci definirea aplicatiei de rezolvat cu calculatorul;

Proiectarea interfetei grafice cu utilizatorul (forme, obiecte, evenimente);

Stabilirea proprietatilor pentru obiectele identificate;

Scrierea codului (asociat diferitelor evenimente);

Rularea (executia) aplicatiei si corectarea erorilor;

Salvarea Proiectului.

2.3.4. Formulare Visual Basic.

Un formular reprezinta o zona rectangulara, asemanatoare unei ferestre. Pe ecran pot aparea la un moment dat unul sau mai multe formulare. Toate proiectele Visual Basic au cel putin cate un formular.

Avem doua tipuri de interfete:

Interfata de tip SDI - Singular Document Interface, ceea ce inseamna ca se poate deschide un singur document odata;

Interfata de tip MDI - Multiple Document Interface, ceea ce inseamna ca este permisa afisarea mai multor documente in acelasi timp.

Proprietatile unui formular definesc caracteristicile fizice ale acestuia:

v     Caption stabileste textul care va fi afisat in bara de titlu a formularului;

v     Icon stabileste pictograma care va fi afisata cand se va minimiza formularul;

v     MaxButton si MinButton arata daca formularul poate fi maximizat sau minimizat;

v     BorderStyle controleaza comportamentul formularului la redimensionare;

v     Height si Width caracterizeaza dimensiunile initiale ale formularului;

v     Left si Top determina dispunerea formularului relativ relativ la coltul din stanga sus a ecranului;

v     WindowStyle stabileste starea ferestrei astfel incat la pornire formularul sta sa apara in forma Maximed, Minimized sau Normal;

v     Name - atribuie un nume formularului, prin care acesta va fi apelat in cadrul codului Visual Basic.

2.3.5. Controale Visual Basic.

In Visual Basic obiectele se mai numesc si controale si acestea pot fi: butoane de comanda, butoane de optiune, casete de dialog, casete de validare, bare de derulare, etc.

Un control dispune de proprietati, metode si evenimente.

In Visual Basic controalele pot fi grupate in mai multe categorii, astfel:

1. Controale de tip buton

Acestea sunt de doua tipuri:

      Buton de comanda - Command Button;

      Buton imagine - Image Button.

2. Controale care afiseaza imagini si grafica. Acestea sunt:

      Controlul imagine - folosit pentru a afisa imagini de tipul: pictograme, bitmap, JPEG sau GIF;

      Controlul forma grafica (shape) - foloseste la desenarea unor forme grafice predefinite pe suprafata unui formular ca: patrat, oval, cerc, dreptunghi, etc.;

      Controlul linie - este folosit pentru a genera segmente de linie pe un formular;

      Controlul caseta cu imagini - este folosit pentru afisarea graficii, ca un container pentru alte controale.

3. Controale eticheta (Label)

Acest control afiseaza text care poate fi doar citit, nu si modificat in mod direct de utilizator. Controalele etichete pot afisa diferite mesaje, care se pot schimba in functie de context.

4. Controale caseta cu text (text Box)

Acest control permite introducerea unui text de la tastatura si/sau afiseaza un text introdus de utilizator sau rezultat din evaluarea unei expresii. Acest text este controlat de proprietatea Text si poate fi modificat doar in cazul in care proprietatea Locked nu are valoarea True.

5. Controale cu optiuni pentru utilizator.

Visual Basic pune la dispozitia utilizatorilor sai mai multe controale standard oferindu-le posibilitati de alegere:

      Caseta de validare - Check Box;

      Butoane de optiune - (Butoane radio) - Option Button;

      Caseta cu lista - List Box si Combo Box.

Controlul caseta de validare (Check Box) permite utilizatorului sa aleaga una sau mai multe optiuni si afiseaza un marcaj de validare cand este selectat. Aspectul acestei casete se stabileste cu proprietatile: Style, Picture, DownPicture si Disable Picture.

Controlul butoane de optiune (Option Button) se folosesste pentru a afisa o lista de optiuni dintre care utilizatorul poate alege una singura la un moment dat. Starea controlului este controlata de proprietatea Value, care are valoarea True daca butonul este selectat si Falsein caz contrar.

Controlul de tip Caseta cu lista prezinta doua posibilitati:

Ø      Caseta cu lista - List Box;

Ø      Caseta combinata - Combo Box.

Controlul Casetx cu listx (List Box) afiseaza pe verticala o lista de optiuni din care utilizatorul poate alege una sau mai multe elemente.

Sintaxa controlului este:

NumeCaseta.AddItem element [,index], in care

Nume Caseta - numele casetei cu lista;

Element - sirul de caractere care trebuie adaugat in lista;

index - pozitia in care va fi inserat elementul in lista. Daca acesta are valoarea zero, elementul va fi adaugat la inceputul listei, iar daca liseste elementul va fi adaugat la sfarsitul listei.

Stergerea unui anumit element din lista se face cu metoda RemoveItem, putand specifica pozitia din lista a elementului sters.

Stergerea tuturor elementelor din lista se face cu metoda Clear, cu sintaxa:

NumeCAseta.Clear

Crearea casetelor cu lista multicoloana si multiselectie se face atribuind valori corespunzatoare proprietatilor Columns si MultiSelect.

Controlul Caseta Combinata (Combo Box) oferx utilizatorului o lista de optiuni reunind caracteristicile unei casete cu text cu cele ale unei casete cu lista.

Caseta combinata are trei stiluri gestionate de proprietatea Style:

o       Derulanta - DropDown Combo este stilul implicit cand proprietatea Style are valoarea zero;

o       Simpla - Simple Combo este o caseta in care lista de optiuni este intotdeauna vizibila, proprietatea Style avand valoarea1;

o       Lista derulanta - DropDown List afiseaza o lista de optiuni cand utilizatorul executa click pe sageata din dreapta a casetei, proprietatea Style avand valoarea 2.

6.Controale de acces la date:

      ADO Data creaza rapid legaturi intre controalele asociate datelor(oricare poseda proprietatea DataSource) si o baza de date;

      Data List si Data Combo asemanatoare cu controalele standard caseta cu lista si caseta combinata;

      Data Grid afiseaza datele asemanator unei foi de calcul tabelar sub forma de randuri si coloane;

      Microsoft Hiperarchical Flex Grid (MSHFlexGrid) si Microsoft FlexGrid (MSFlexGrid) vizualizeaza sub formx de grila datele dintr-un set de inregistrari care provin din una sau mai multe tabele;

      Data si Remote Data (date de la distanta) sunt incluse in Visual Basic pentru compatibilitate cu versiunile mai vechi.

Controale pentru sistemul de fisiere.

      DriveListBox - casetx cu listx a unitatilor de disc - ofera o lista derulanta a unitatilor de disc din care utilizatorul poate alege;

      DirListBox - caseta cu lista a directoarelor;

      FileListBox - casetx cu listx a fisierelor- afiseaza o lista cu numele fisierelor din cadrul directorului curent selectat.

8. Alte controale

Controlul de timp - Timer - masoara trecerea timpului si poate fi folosit pentru a crea un eveniment la intervale de timp regulate;

Controlul Container OLE - permite legarea sau incapsularea intr-o aplicatie Visual Basic a unor obiecte din cadrul unor aplicatii, precum si accesul la facilitatile oricarei aplicatii ce permite OLE;

Controlul dialog uzual - Common Dialog - acesta adauga intr-o aplicatie Visual Basic un set de casete de dialog pentru:

a)      Deschiderea si salvarea fisierelor;

b)      Selectarea culorilor;

c)      Selectarea fonturilor;

d)      Selectarea functiilor de tiparire la imprimanta.

III. VISUAL BASIC PRIN EXEMPLE PRACTICE.

GENERALITATI

Formele si controalele Visual Basic sunt obiecte ce au propriile proprietati, metode si evenimente.

Proprietatile sunt atribute pe care le poseda obiectul si care ii descriu modul de prezentare. Name, top, left, height, width, visible sunt doar cateva din proprietatile ce se intalnesc la marea majoritate a obiectelor.

Metodele stabilesc comportamentul obiectelor, indicand ce pot face ele efectiv. Ele sunt de fapt niste proceduri, adica blocuri de cod, care determina obiectul sa faca un anumit lucru.

Evenimentele definesc interactiunea cu mediul extern proiectului (utilizatorul face parte din mediul extern proiectului).

Pentru fiecare eveniment se poate scrie o procedura, denumita 'numeobiect.eveniment' care se va executa in momentul producerii acelui eveniment.

3.1. Proiectarea unei forme (formular)

Formele (formularele) constitue elementul de la care se incepe construirea unei interfete in Visual Basic, constituind practic ferestrele prin intermediul carora utilizatorul va interactiona cu aplicatia.

Formele poseda propriile proprietati, evenimente si metode cu ajutorul carora putem controla modul de afisare si comportamentul.

Proprietatea Caption stabileste titlul care va fi afisat in bara de titlu a formei; Icon stabileste iconita pentru forma; MaxButton si MinButton stabilesc daca forma poate sa fie maximizata sau minimizata; BorderStyle controlam modul de redimensionare al formei; Height si Width stabilesc dimensiunile initiale ale formei; Left si Top stabilesc locatia formei fata de coltul stanga sus al ecranului; WindowState stabileste modul in care se va afisa forma la inceput: minimizata, maximizata sau normala; Name stabileste un identificator cu ajutorul caruia putem referi forma respectiva.

Pentru a afisa o forma pe ecran se va utiliza metoda Show.

Form1.Show(Form1 reprezinta numele formei)

Pentru a inlatura o forma de pe ecran (a o ascunde) vom folosi metoda Hide sau functia Unload:

Form1.Hide sau Unload Form1

3.2. Buton de Comanda (Command Button).

Un buton de comanda este un control care are o anumita forma, afiseaza o eticheta si permite utilizatorului sa comande executia unor actiuni prin activarea lui.

Proprietatea Caption ne permite sa afisam un anumit text pe buton, de exemplu :OK, Cancel, Adauga, etc.

Cel mai frecvent eveniment intalnit la acest control si pentru care vom scrie cel mai mult cod este evenimentul click. De cate ori utilizatorul va face click de mouse pe acest buton evenimentul se va produce si va determina executarea codului scris in procedura numita :

NumeButton_Click().

La click de mouse pe butonul EXIT se doreste terminarea programului. Procedura va arata astfel:

Private Sub EXIT_Click ()

end

End Sub

3.3. Controale care manipuleaza texte.

Principalele controale utilizate pentru manipularea textelor sunt:

Eticheta (Label) - este un control grafic folosit pentru afisarea de text pe care utilizatorul nu il poate modifica. Textul care va fi afisat se stabileste prin intermediul proprietatii Caption. Acesta poate fi stabilit din faza de proiectare, dar se poate modifica in timpul executiei prin intermediul unei proceduri asociate.

Caseta de text (TextBox) - este folosit pentru a afisa textul specificat de dumneavoastrx din faza de proiectare (la proprietatea Text), sau introdus de la utilizator la executie sau asociat controlului prin program. Daca textul trebuie afisat pe mai multe linii, proprietatea MultiLine trebuie sa aiba valoarea True.

3.4. Controale care permit alegerea unor optiuni.

3.4.1. Caseta de validare (CheckBox) - ofera utilizatorilor posibilitatea de a alege sau nu o anumitx optiune.

Proprietatea Value este utilizatx pentru a determina starea controlului: 1=bifat, 0=nebifat, 2=indisponibil.

Cu ajutorul proprietatii Caption putem adauga textul explicativ dorit in dreptul casetei.

3.4.2. Butonul de optiune (Option Button) - pun la dispozitia utilizatorului un set de optiuni, dintre care acesta are posibilitatea sa marcheze una singura la un moment dat. Selectarea unui buotn implicx automat deselectarea celorlalte.

Butonul de optiune care este mercat are proprietatea Value=True, iar celelalte butoane din grup au proprietatea Value=False.

Un buton de optiune poate fi dezactivat atribuind proprietatii Enabled valoarea False. Daca este dezactivat, butonul de optiune apare in timpul executiei estompat.

Aspectul unui buotn de optiune poate fi schimbat prin intermediul proprietatilor Picture, Style, DownPicture si DisablePicture.

3.5. Caseta cu Lista (ListBox).

Caseta cu lista este un control care permite afisarea pe verticala a unei serii de articole din care utilizatorul poate alege unul sau mai multe. Daca numarul de articole depaseste capacitatea de afisare a casetei cu lista proiectata, atunci ei i se vor asocia automat bare de derulare verticala, respectiv orizontala.

In mod implicit articolele sunt afisate pe o singura coloana. Acest lucru poate fi schimbat prin modificare proprietatii Columns care poate avea atribuite urmatoarele semnificatii:

0 - caseta de tip lista are o singura coloana, cu derulare pe verticala;

1 - casetx de tip lista are o singura coloana, cu derulare pe orizontala;

>1 - caseta de tip lista multicoloana cu derulare pe orizontala.

Daca dorim ca utilizatorul sa poata selecta mai multe articole din lista, atunci trebuie stabilita corespunzator valoarea proprietatii MultiSelect:

0 - nu permite nici o selectie;

1 - permite selectie multipla simpla;

2 - permite selectie multipla extinsa.

Proprietatea ListCount a unei liste returneaza numarul de articole din lista.

Proprietatea ListIndex este utilizata pentru a determina numarul articolului selectat. Numerotarea articolelor incepe de la zero.

Adaugarea unui nou articol in lista se face cu metoda AddIttem, care are sintaxa:

Nume caseta. AddIttem element[,index]

unde:

- nume caseta - este numele obiectului de tip lista;

- element - este sirul de caractere care trebuie adaugat in lista si care poate fi specificat ca atare, intre '' sau continut intr-o variabila al carei nume trebuie specificat;

- index - precizeaza pozitia din lista unde va fi inserat noul articol.

NewIndex permite determinarea indexului ultimului articol din lista.

RemoveItem permite stergerea unui articol din lista, avand sintaxa:

Nume caseta.RemoveItem index

Pentru stergerea tuturor articolelor din lista se utilizeaza metoda Clear :

Nume caseta.Clear

3.6. Caseta Combinata (ComboBox)

CAseta combinata este un control care combina caracteristicile controlului caseta cu lista cu cele ale controlului casetx text.

Existx trei tipuri de casetx combinata, in functie de valoarea proprietatii Style:

caseta derulanta combinata - contine o listx derulanta si o caseta de text. Utilizatorul are posibilitatea sa selecteze din lista una sau sa scrie in caseta de text;

caseta combinata simpla - contine o caseta de text si o lista nederulanta. Dimensiunea unui asemenea control este suma dimensiunilor portiunii de editare si a listei;

caseta cu lista derulanta - permite doar selectarea din lista derulanta, portiunea de text fiin neaccesibila.

Proprietatea Text controleaza selectia articolelor din lista ComboBox. Aceasta inseamna ca aici vom gasi continutul articolelor selectat la un moment dat.

3.7. Controale care afiseaza imagini si grafica.

Visual Basic ofera programatorilor patru controale cu ajutorul carora se pot afisa imagini grafice:

Caseta cu poze (PictureBox);

Imagine (Image);

Figura (Shape);

Linie (Line).

3.7.1. Caseta cu poze (PictureBox)

Este un control utilizat pentru a afisa poze si imagini grafice. In timpul executiei programului, pentru a afisa o poza sau pentru a o schimba se foloseste functia LoadPicture pentru a stabili proprietatea Picture:

Picture1.Picture=LoadPicture('Poza.gif')

Daca poza care va fi afisata nu are aceeasi dimensiune cu a controlului, se poate seta proprietatea AutoSize=True si astfel controlul va avea aceeasi dimensiune cu poza.

Pot fi utilizate, de asemenea, metodele Circle, Line sau Pset pentru a afisa imagini grafice in caseta de poze.

3.7.2. Controlul Imagine (Image)

Daca dorim sa afisam o poza este recomandat sa folosim controlul Imagine. Acest contro incarca poza dar nu va permite nici o prelucrare a acesteia. Stretch=True este o proprietate pe care o folosim atunci cand dorim ca poza sa aiba aceeasi dimensiune cu controlul imagine. Se poate stabili poza care se va afisa cu ajutorul proprietatii Picture.

3.7.3. Figura (Shape) si Linie (Line)

Controalele figura si linie sunt folosite pentru a desena imagini grafice pe suprafata formei. Ele nu poseda nici un eveniment. modificand proprietatea Shape a controlului, acesta poate sa ia forma de cerc, oval, patrat, dreptunghi, patrat cu colturi rotunjite sau dreptunghi cu colturi rotunjite.

Controlul linie este asemanator cu cel figura, permitand trasarea unei linii.

3.8. Controale care permit manipularea fisierelor.

3.8.1. Controlul DriveListBox (caseta cu lista unitatilor de disc) - acest control se aseamana cu o caseta combinata care contine toate unitatile de disc pe care le recunoaste sistemul. Selectarea unei unitati de disc din lista nu inseamna insa schimbarea automata a unitatii de disc curente. Pentru a schimba efectiv unitatea de disc se utilizeaza proprietatea Drive ca argument a instructiunii ChDrive cu sintaxa:

ChDrive Drive.Drive

Proprietatea Drive permite aflarea unitatii de disc curente.

3.8.2. Controlul DirListBox (caseta cu lista a directoarelor) - in aceasta lista directorul (folderul) curent apare evidentiat si identat fata de cele de nivel ierarhic superior, iar subdirectoarele sale apar identate fata de el. Proprietatea Path stabileste sau returneaza calea si directorul curent.

Selectand cu click mouse un director, acesta devine evidentiat, iar daca se selecteaza cu dublu click mouse, atunci el devine director curent, astfel ca apare in proprietatea Path iar ListIndex ia valoarea -1.

O comanda ChDir de forma:

ChDir Dir1.Path

stabileste directorul curent de lucru. Proprietatea ListCount returneaza, in acest caz, numarul de subdirectoare ale directorului curent.

3.8.3. Controlul FileListBox (caseta cu lista a fisierelor) - se aseamana cu o caseta tip lista ce contine fisierele din directorul curent selectat si specificat de proprietatea Path in momentul executiei. Proprietatea FileName stabileste sau returneaza in timpul executiei numele fisierului selectat.

Pentru a afisa toate fisierele directorului curent se poate utiliza instructiunea:

File1.Path=dir1.Path

unde File1 este numele implicit dat controlului utilizat.

Daca se cere in proprietatea Pattern afisarea fisierelor cu extensia .bas, atunci se da comanda:

File1.Pattern='*.bas'

3.9. Casete de dialog predefinite

Un mod simplu de a adauga o caseta de dialog aplicatiei noastre este sa folosim casetele de dialog predefinite. Pentru aceasta Visual Basic ne pune la dispozitie doua functii:

InputBox care afiseaza o caseta de dialog ca permite prelucrarea datelor de la utilizator;

MsgBox care permite afisarea diferitelor informatii, mesaje.

Functia InputBox afiseaza o caseta de dialog modala care cere utilizatorului sx introduca date. Sintaxa:

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

unde:

- prompt - este un sir de caractere afisat ca mesaj in caseta de dialog. Numarul maxim este de caractere este de 1024;

- title - este un sir de caractere care va fi afisat ca titlu in bara de titlu a casetei de dialog;

- default - este un sir de caractere ce va fi afisat in caseta cu text si care va fi returnat de functie in caz ca utilizatorul nu introduce alte date;

- xpos, ypos - expresii numerice care specifica coordonatele coltului stanga sus al casetei de dialog fata de coltul stanga sus al ecranului;

- helpfile - un sir de caractere ce specifica numele fisierului Help ce va fi folosit pentru a oferi asistenta in lucrul cu caseta de dialog.

Functia MsgBox - se poate utiliza pentru a obtine raspunsuri de tipul Da/Nu de la utilizatori sau pentru a afisa diferitemesaje de avertizare, erori, atentionari. Sintaxa functiei este:

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

unde:

- prompt - este un sir de caractere afisat ca mesaj in caseta de dialog. Numarul maxim de caractere este de 1024;

- buttons - este o expresie numerica ce reprezinta suma valorilor care specifica numarul si tipul butoanelor afisate, iconita;

- title - un sir de caractere ce va fi afisat ca titlu in bara de titlu a casetei de dialog;

- helpfile - un sir de caractere ce specifica numele fisierului Help ce va fi folosit pentru a oferi asistenta in lucrul cu caseta de dialog.

3.10. Alte controale

1. Controlul de timp (TIMER)

Este un control care masoara timpul si ca urmare poate fi folosit pentru a crea un anumit eveniment la intervale de timp regulate.

Controlul Timer functioneaza independent de celelalte evenimente.

Proprietatea Enabled controleaza modul de actiune al controlului in sensul de a raspunde sau nu la actiuni ale utilizatorului. Ea poate lua valoarea True, caz in care intra in functiune imediat dupa incarcarea formularului, sau False pentru a suspenda functionarea controlului.

Proprietatea Interval defineste intervalul de timp care se scurge intre doua evenimente, exprimat in milisecunde. El poate lua valori intre 0 si 64767.

2. Controlul container OLE

Acest control permite legarea sau incapsularea intr-o aplicatie Visual Basic a unor obiecte din cadrul altor aplicatii, precum si accesul la aplicatii care permite OLE, cum sunt: MS Word, MS Excel, etc.

3. Controlul dialog uzual (Common Dialog)

Este un control care pune la dispozitia utilizatorului o metoda usoara pentru lucrul cu fisierele. Astfel, el ofera un set de casete de dialog pentru operatii cum sunt:

deschiderea fisierelor;

salvarea fisierelor;

selectarea culorilor;

selectarea fonturilor;

stabilirea functiilor de imprimare.

3.11. Editarea de meniuri

Visual Basic pune la dispozitia programatorilor un editor de meniuri cu ajutorul caruia se pot crea meniuri oricat de complexe intr-un mod relativ simplu.

Activarea editorului se face activand meniul TOOLS si de caolo optiunea Menu Editor (Ctrl/E).

Caption stabileste un sir de caractere care va fi afisat pe ecran, permitand utilizatorului sa selecteze o anumita optiune din meniu.

Caseta Shortcut permite precizarea tastelor de acces rapide

Checked este o optiune care poate lua valoarea logica de adevar sau fals. Daca are valoarea True va afisa un semn de bifare inaintea textului stabilit din proprietatea Caption.

Enabled stabileste daca meniul va fi activ sau nu. Daca nu este activ, textul de la Caption va fi afisat cu gri.

Name stabileste numele obiectului cu ajutorul caruia acesta poate fi identificat atunci cand scriem cod.

Shortcut stabileste o combinatie de taste prin apasarea careia se poate alege o anumita optiune din meniu.

Fiecare meniu poate contine submeniunri care la randul lor pot contine alte submeniuri. Exista cinci nivele de submeniuri.

Pe langa aceste meniuri prezentate care se gasesc in bara de meniuri a aplicatiei, mai exista si meniurile Defilante (Pop-up). Acestea 'defileaza' pe ecran in momentul cand se apasa butonul dreapta al mouse-ului.

Pentru a realiza un astfel de meniu trebuie sa creem un meniu ivizibil cu ajutorul editorului de meniuri care sa contina cel putin un meniu invizibil. Il putem afisa pe ecran folosind metoda PopupMenu a formei.

3.12. Structuri de control

Structura liniara.

Poate contine o succesiune de instructiuni de tipul:

- instructiune de atribuire;

- instructiune de apel de procedura.

Instructiunea cea mai importanta si cea mai frecventa a limbajului este instructiunea de atribuire, avand forma:

variabila=expresie

sau

Set variabila=obiect

sau

Nume_de_functie=expresie

Instructiunea specifica faptul ca unei variabile sau unei functii (cea din stanga semnului '=') ii este atribuita o noua valoare, care este specificata printr-o expresie sau printr-un obiect. O expresie consta dintr-o secventa formata din operanzi (variabile, constante, etc.) si operatori (simboluri operationale).

Instructiunea de apel de procedura specifica activarea (apelul) procedurii al carui nume apare in instructiune si are forma:

nume_de_procedura lista_parametri_actuali

sau

Call nume_de_procedura(lista_parametrii_actuali)

Structura alternativa

Este descrisa cu ajutorul instructiunilor If Then, If Then Else si Select Case.

Structura repetitiva

Permite repetarea in anumite conditii a unei instructiuni sau a unei secvente de instructiuni sau a unei secvente de instructiuni. Avem doux tipuri de structuri repetitive:

Structuri repetitive cu contor - descrise de instructiunile For Next si For Each Next care executa acelasi lucru de un numar stabilit de ori;

Structuri repetitive cu conditie - descrise de diferitele variante ale instructiunii Do Loop ce indeplinesc aceeasi sarcina atata timp cat o conditie existx sau pana cand nu mai exista o conditie.

Exemplu:

Do While i<=9

MsgBox 'Este repetarea numarului: '+str(i)

Loop

IV. Limbajul de Programare Visual Basic

4.1. Generalitati privind limbajele de programare.

Un limbaj de programare este un ansamblu de simboluri, cuvinte, instructiuni si semnificatii atribuite acestora, utilizat pentru descrierea algoritmilor. Limbajul de programare este un mijloc de comunicare intre calculator si programator.

Orice limbaj de programare presupune definirea urmatoarelor elemente componente:

o       Alfabetul;

o       Vocabularul;

o       Gramatica;

o       Punctuatia;

o       Semantica.

Program sursa - reprezinta programul scris ca text intr-un limbaj de programare, el fiind scris prin intermediul unui editor de texte al limbajului de programare sau acceptat de limbajul de programare respectiv (ex.: Notepad).

Compilatorul - este componenta software care realizeaza traducerea programului sursa in cod intern, rezultand asa numitul program cod obiect.

4.2. Elemente ale limbajului de programare Visual Basic

Setul de caractere

Pentru a scrie instructiuni pe care calculatorul sa le interpreteze si sa le execute in cadrul programului folosim cuvintele.

In cadrul limbajului de programare Visual Basic se pot folosi urmatoarele caractere:

- Litere mari si mici ala alfabetului limbii romane :A-Z, a-z;

- Cifrele sistemului de numerotatie zecimal: 0-9;

- Caractere speciale: + - / ^ () [] . , ; : _ ! # $ % etc.;

- Caractere speciale perechi, care definesc operatori de comparare: <=, >=, =, <>;

- Separatori: spatiu, tab si caracterul Enter.

Identificatori

Un identificator este numele dat de programator unui element dintr-un program, care poate fi o variabila, o constanta, un tip definit de utilizator, o enumerare, o procedura, o functie, un obiect, o metoda, o proprietate, un control, o forma sau chiar proiectul insusi. Un proiect Visual Basic poate sa contina maxim 32000 identificatori.

Comentarii, separatori, impartirea liniei

Comentariile sunt siruri de caractere care au in fata caracterul apostrof ( ' ) si servesc pentru a face textul programului mai lizibil, pentru a documenta programul.

Daca se doreste se pot scrie mai multe instructiuni pe o singura linie despxrtindu-le cu ajutorul separatorului de instructiuni si declaratii care este caracterul doua puncte ( : ).

Daca o declaratie sau o instructiune este prea mare, atunci ea se poate scrie pe mai multe linii folosind caracterul continuatorul de linie, un spatiu urmat de o linie jos ( _).

4.3. Tipuri de date

Tipul unei date defineste multimea de valori pe care le poate lua o variabila si multimea de operatii care pot fi efectuate cu elementele multimii respective

Fiecare tip de data permite o serie de operatii.

4.3.1. Constante

In Visual Basic exista doua tipuri de constante:

o       Intrinseci sau definite de sistem;

o       Simbolice sau definite de utilizator (se declarx prin instructiunea Const).

Formatul general al declaratiei de constante este:

[Public|Private] Const Nume constanta[As type] = expresie

4.3.2. Variabile Visual Basic

Tipul variabilelor din Visual BAsic sunt: Variable, Byte, Boolean, String, Integer, Long, Single, Double, Currency, Date si Object.

Tipul Variant (nedefinit) este un tip special de date care poate contine date numerice, siruri de caractere si date calendaristice, precum si valorile Null (indica faptul ca o variabila nu contine nici o data vlida in mod deliberat) si Empty (indica faptul ca o variabila nu a fost initializata si este egala cu zero).

Declararea unei variabile inseamna practic a defini de la inceput informatiile necesare programului de variabila respectiva, astfel incat programul sa stie cum se numeste, ce tip de date poate stoca, ce zona de memorie trebuie sa-i aloce si unde.

Declararea unei variabile se face astfel:

[Public|Private|Dim] NumeVariabila As TipVariabila

In Visual Basic principalele tipuri de date sunt:

Tipul Byte poate lua valori de la 0 la 255;

Tipul Integer are sufixul procent %, ocupa doi octeti si poate lua valori intregi cuprinse in intervalul de la -32768 la 32767;

Tipul Long are sugixul &, ocupa 4 octeti si poate lua valori intregi cuprinse in intervalul-2.147.483.648 si 2.147.483.647;

Tipul Single poate memora valori reale in simpla precizie;

Tipul Double poate memora valori reale in dubla precizie;

Tipul Curency are ca sufix semnul @, ocupa 8 octeti si poate lua valori reale cuprinse intre -9.22*E la puterea 14 si 9.22*E la puterea 14;

Tipul Date nu are suffix, ocupa 8 octeti si poate lua valori cuprinse intre 1 ianuarie 1000 si 31 decembrie 9999;

Tipul String are sufixul $ si ocupa numarul de octeti precizat prin declaratia de tip;

Tipul Boolean memoreaza valori logice de tip adevarat sau fals, da, nu, pornit sau oprit si ocupa doi octeti;

Tipul de date Obiect reprezinta o variabila care poate stoca o valoare sau poate apela obiecte din cadrul aplicatiei sau din alte aplicatii;

Tipul Variant este tipul implicit pentru orice variabila Visual Basic care nu a fost declarata in mod explicit.

4.3.3. Tipuri de date definite de utilizator.

Aceste tipuri de date sunt compuse dintr-un numar de componente numite campuri. Spre deosebire de tablouri, campurile pot contine tipuri de date diferite. Sintaxa unui tip definit de utilizatori este urmatoarea:

Private|Public Type NumeTip

Nume_camp1 As TipData

Nume_camp2 As TipData

Nume_camp3 As TipData

End Type

4.3.4. Date de tipul Enumerare.

Tipul de date enumerare defineste o multime ordonata de valori: se enumera un sir de identificatori care desemneaza valorile posibile.

Sintaxa instructiunilor de declarare a unui tip enumerare este:

Private|Public Enum NumeEnumerare

Element1[=valoare]

Element2[=valoare]

Elementn[=valoare]

End Enum

4.4. Operatori

Operatorii reprezinta comenzi speciale pentru operatiile ce pot fi executate cu datele din program. Visual Basic pune la dispozitie 4 tipuri de operatori:

a) Operatori Aritmetici: +(adunare), -(scadere), *(inmultire), /(impartire), (impartire intreaga) si MOD (modulo);

b) Operatori Logici - manipuleaza valorile True si False - : AND(conjunctia logica), OR(disjunctia logica), XOR(disjunctia exclusiva), NOT(negatia logica), EQV(echivalenta logica), IMP(implicatia logica);

c) Operatori de comparare: <(mai mic), <=(mai mic sau egal), >(mai mare), >=(mai mare sau egal), =(egal), <>(diferit, neegal);

d) Operatori de concatenare: +, & realizeaza concatenarea (alipirea) a doua siruri de caractere.

4.5. Operatiuni de Intrare-Iesire

4.5.1. Dialogul standard cu utilizatorul

Functia InputBox - afiseaza o caseta de dialog care contine un mesaj, doua butoane (OK si Cancel) si o zona de text in care se poata tasta un raspuns.

Sintaxa functiei este:

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Functia MsgBox - afiseaza un mesaj intr-o caseta de dialog si se asteapta ca utilizatorul sa actioneze unul dintre butoanele existente. Functia returneaza o valoare intreaga, indicand astfel care buton a fost actionat. Sintaxa este:

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

4.5.2. Comanda Print

Puteti afisa text in interiorul formelor sau al casetelor cu poza cu ajutorul metodei Print. Sintaxa:

[obiect.] Print [lista iesiri] [ ]

4.6. Functii incorporate in Visual Basic.

Acestea pot fi grupate in mai multe categorii, astfel:

a). Functii matematice si statice: ABS( ),EXP( ), INT( ), LOG( ), RND( ), SQR( ), ATN( ), SIN( ), COS( ) si TAN( );

b). Functii pentru siruri de caractere: LCASE(sir), UCASE(sir), LTRIM(sir), RTRIM(sir), TRIM(sir), CHR(sir), ASC(sir), LEN(sir), VAL(sir), StrREVERSE(sir), LEFT(sir,Nrc), RIGHT(sir,Nrc), MID(sir,Start [,Nrc]), INSTR([intStart, ] Sir, strCauta [, intCompara]);

c). Functii de editare: Format, Format_String;

d). Functii financiare: DDB, FV, IPMT, IRR, MIRR, NPER, NPV, PMT, PPMT, PV, RATE, SLN;

e). Functii pentru conversia intregilor: Int(), CInt();

f). Functii pentru conversia tipului de data: CDbl(arg), CLng(arg), CSng(arg), Cstr(arg), CVar(arg), CCur(arg);

g). Functii de verificare a tipului de data: IsNumeric(), IsDate(), IsEmpty(), IsNull(), VarType();

h). Functii pentru lucrul cu date calendaristice: DateDiff(), IsDate(expresie), Time(), Date(), Now(), CStr (Time), CStr (Date), CStr (Now);

i). Functii pentru lucrul cu fisiere: Seek(NumarFisier), LOF(NumarFisier), EOF(NumarFisier).

4.7. Functii si proceduri utilizator in Visual Basic.

O functie este un modul program care efectueaza o anumita sarcina si returneaza o valoare identificata prin numele functiei.

O procedura eveniment devine activx atunci cand e apelata de utilizator sau de program in mod automat.

O procedura functie este o procedura care realizeaza o anumita valoare identificata prin numele functiei.

Procedurile tip proprietate pot returna si atribui valori si pot stabili referinte la obiecte.

Procedurile sunt blocuri de cod constituite din instructiuni, date locale si alte subprograme.

Procedurile generale sunt blocuri de cod prin care se transmite aplicatiei cum trebuie sa indeplineasca o anumita sarcina.

Procedurile eveniment sunt blocuri de cod asociate diferitelor evenimente recunoscute de un obiect si care se executa in momentul in care se produce evenimentul respectiv.

Apelarea unei proceduri se face in doua moduri, cu sintaxa:

NumeProcedura lista_parametri_actuali

sau

Call NumeProcedura(lista_parametri_actuali)

4.8. Instructiuni de atribuire.

Atribuirea unei valori la o variabila de memorie se poate efectua prin instructiunile: Let, Set, Lset si Rset.

4.9. instructiuni de terminare sau oprire a programului.

Terminarea executiei unui program sau oprirea temporara a acestuia se pot realiza prin instructiunile: DoEvents, End, Exit, Stop.

4.10. Comenzi pentru lucrul cu fisiere.

4.10.1. Deschiderea fisierului - este o operatie care trebuie executata inainte de orice prelucrare a acestuia. Pentru intrare sau iesire, orice fisier trebuie deschis cu comanda OPEN, cu sintaxa:

OPEN ( numefisier) FOR ( mod de deschidere ) [Access acces] [blocare] AS # numarFisier [Len=lungInreg]

4.10.2. Comenzi pentru fisiere aleatorii.

Descrieirea campurilo - ce formeaza inregistrarile unui fisier aleator se face utilizand o declaratie de tip utilizator:

TYPE numetip

NumeVariabila1 as

NumeVariabilak as

EDN TYPE

Scrierea unei inregistrari intr-un fisier se face cu instructiunea PUT care are urmatoarea sintaxa:

PUT #NumeFisier, [NumarInreg] , NumeVariabila

Pozitionarea pentru citire pe o inregistrare dintr-un fisiert aleator se face cu instructiunea GET, cu sintaxa:

GET [#]numarfisier [, numar]

4.10.3. Inchiderea fisierelor - se realizeaza cu comanda CLOSE, a carei sintaxa este:

CLOSE [lista fisiere]

sau

CLOSE [ # numarFisier1] [, # numarFisier2] [, # numarFisier3]

4.10.4. Comenzi pentru fisiere secventiale.

a). Scrierea datelor intr-un fisier secvential se poate face cu comenzile:

Print #NumarFisier, lista_expresii

sau

Write #NumarFisier, lista_expresii

b). Citirea informatiilor din fisiere cu acces secvential - se poate face cu ajutorul instructiunilor:

Input #NumarFisier, lista_expresii

Line Input# NumarFisier, SirCaractere

Input$ (NumarOcteti, [#] NumarFisier)

4.11. Grafica si Multimedia in Visual Basic.

Stergerea zonei de desenare

Pentru a curata zona de desenare folositi metoda Cls care sterge si redeseneaza forma sau controlul pastrand aceeasi culoare de fundal.

Stabilirea culorilor.

BackColor - culoarea fundalului unui control sau a unei forme;

ForeColor - culoarea folositx la desenarea figurilor si textelor;

BorderColor - culoarea chenarului;

FillColor - culoarea de completare a spatiului liber al unei figuri.

Afisarea textului - in interiorul formelor sau al casetelor cu poza se face cu ajutorul metodei Print, cu sintaxa:

[obiect.] Print [lista iesiri] [ ]

Desenarea unui dreptunghi se face folosind metoda Line a formei sau a casetei cu imagini, care are urmatoarea sintaxa:

obiect.Line [Step] (x1,y1) [Step] (x2,y2), [color], [B], [F]

Desenarea cercurilor, a arcelor de cerc si a elipselor - se realizeaza utilizand metoda Circles a formei sau a casetei cu poza, cu sintaxa:

Obiect.Circle [Step] (x,y), radius, [color,[start, end, [aspect]]]

Desenarea punctelor intr-o forma sau Intr-o casetx cu poza se realizeaza cu ajutorul metodei Pset, cu sintaxa:

obiect.Pset [Step] (x,y), [color]

PARTEA a 2-a

Aplicatii.

1) Ceas cu alarma


Private Declare Function mciExecute Lib 'winmm.dll' (ByVal lpstrCommand As String) As Long

Dim x

Private Sub Command1_Click()

On Error Resume Next

Form2.Show

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Form_Load()

Timer1.Enabled = True

Timer1.Interval = 1000

End Sub

Private Sub Timer1_Timer()

Label1.Caption = Format(Time, 'short time')

End Sub

Private Sub Timer2_Timer()

If Label1.Caption = Text1.Text Then

x = mciExecute('play alarm.wav')

MsgBox ' Alarma !!! ', vbInformation, 'Alarma'

End If

End Sub

Private Sub Command1_Click()

On Error Resume Next

Form1.Text1.Text = Form2.Text1.Text + ':' + Form2.Text2.Text

Form1.Timer2.Enabled = True

Form1.Timer2.Interval = 1000

If Text1.Text > 24 Or Text1.Text < 0 Then

MsgBox 'Introduceti o valoarea intre 0 si 24', vbExclamation, 'Ora setata incorect !'

Text1.Text = ''

ElseIf Text2.Text > 59 Or Text2.Text < 0 Then

MsgBox 'Introduceti o valoarea intre 0 si 59', vbExclamation, 'Minute setate incorect !'

Text2.Text = ''

End If

Unload Me

End Sub

Private Sub Form_Load()

On Error Resume Next

End Sub

2) Calculator


Dim n As Double

Private Sub Command1_Click()

On Error Resume Next

If Option1.Value = True Then

Text3.Text = Val(Text1.Text) + Val(Text2.Text)

ElseIf Option2.Value = True Then

Text3.Text = Val(Text1.Text) - Val(Text2.Text)

ElseIf Option3.Value = True Then

Text3.Text = Val(Text1.Text) * Val(Text2.Text)

ElseIf Option4.Value = True Then

If Text2.Text = '0' Then

MsgBox 'Nu se poate imparti la 0', vbCritical, 'Eroare'

Text2.Text = ''

Else

Text3.Text = Val(Text1.Text) / Val(Text2.Text)

End If

ElseIf Option5.Value = True Then

Text2.Text = '0'

Text2.Enabled = False

If Val(Text1.Text) < 0 Then

MsgBox 'Nu se poate extrage radical de oridin 2 din numere negative', vbCritical, 'Eroare'

Else

n = Val(Text1.Text)

Text3.Text = Sqr(n)

End If

End If

Text2.Enabled = True

End Sub

Private Sub Command2_Click()

End

End Sub

Private Sub Command3_Click()

Text1.Text = Empty

Text2.Text = Empty

Text3.Text = Empty

Option1.Value = False

Option2.Value = False

Option3.Value = False

Option4.Value = False

Option5.Value = False

End Sub

Private Sub Option5_Click()

Text2.Enabled = False

End Sub

3) Conversie valuatara



Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Command2_Click()

OpDolar.Value = False

OpEuro.Value = False

OpFranc.Value = False

OpYen.Value = False

suma = Empty

txtDolar = Empty

txtEuro = Empty

txtFranc = Empty

txtYen = Empty

End Sub

Private Sub Form_Load()

End Sub

Private Sub OpDolar_Click()

curs = InputBox('Introduceti cursul valutar pentru USD:')

txtDolar = CStr(Format(Val(suma.Text) / curs, 'FIXED')) + ' USD'

End Sub

Private Sub OpEuro_Click()

curs = InputBox('Introduceti cursul valutar pentru Euro:')

txtEuro = CStr(Format(Val(suma.Text) / curs, 'FIXED')) + ' Euro'

End Sub

Private Sub OpFranc_Click()

If OpFranc.Enabled = True Then

curs = InputBox('Introduceti cursul valutar pentru Francul Francez:')

txtFranc = CStr(Format(Val(suma.Text) / curs, 'FIXED')) + ' Franci'

End If

End Sub

Private Sub OpYen_Click()

If OpYen.Enabled = True Then

curs = InputBox('Introduceti cursul valutar pentru Yenul Japonez:')

txtYen = CStr(Format(Val(suma.Text) / curs, 'FIXED')) + ' Yeni'

End If

End Sub

4) Calcul dobanda


Option Explicit

Dim i As Integer, j As Integer

Dim DobandaA As Long, SumaActual As Long

Private Sub cmdCalcul_Click()

Select Case cmbCont.Text

Case cmbCont.Text

If cmbCont.Text = '<ALL>' Then

Me.Cls ''curata' forma de text

For j = LBound(Record) To UBound(Record) 'incepe de la LBound - limita inferioara a vectorului 'RECORD' - pana la UBound - limita superioara a vectorului

If Record(j).TermenDepozit = '1' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.1) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '3' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.11) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '6' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.12) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '12' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.14) * Val(Record(j).TermenDepozit) / 12

SumaActual = Val(Record(j).SumaDepusa) + DobandaA

Me.Print '(NR.CONT ' & Record(j).NrCont & ') ' & Record(j).Nume & ' ' & Record(j).Prenume & vbCrLf & _

'VALOARE DOBANDA = ' & DobandaA & vbCrLf & _

'SUMA ACTUALIZATA = ' & SumaActual & vbCrLf

Next j

Else

If cmbCont.Text <> '' Then

Me.Cls

j = Val(cmbCont.Text)

If Record(j).TermenDepozit = '1' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.1 / 100) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '3' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.11 / 100) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '6' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.12 / 100) * Val(Record(j).TermenDepozit) / 12

If Record(j).TermenDepozit = '12' Then DobandaA = (Val(Record(j).SumaDepusa) * 0.14 / 100) * Val(Record(j).TermenDepozit) / 12

SumaActual = Val(Record(j).SumaDepusa) + DobandaA

Me.Print '(NR.CONT ' & Record(j).NrCont & ') ' & Record(j).Nume & ' ' & Record(j).Prenume & vbCrLf & _

'VALOARE DOBANDA = ' & DobandaA & vbCrLf & _

'SUMA ACTUALIZATA = ' & SumaActual

ElseIf i < 0 Then MsgBox 'Nu exista inregistrari', vbInformation

ElseIf i >= 0 Then MsgBox 'Alege NUMAR CONT', vbInformation

End If

End If

Case '': Exit Sub

End Select

End Sub

Private Sub cmdRaport_Click()

If i < 0 Then

MsgBox 'Nu exista inregistrari', vbInformation

ElseIf i >= 0 Then MsgBox 'Exista ' & i + 1 & ' inregistrari.', vbInformation

End If

End Sub

Private Sub Form_Load()

i = -1

End Sub

Private Sub cmdIntroducere_Click()

i = i + 1 'incrementare numar cont

ReDim Preserve Record(i) 'redimensionare marime vector 'RECORD'

Record(i).NrCont = i 'atribuire numar cont

EnterNume: 'marcaj punct de inceput inregistrare Nume

Record(i).Nume = InputBox('NUME pentru REC.' & i, 'Inregistrare NR. ' & i) 'atribuire nume

'start verificari pentru Nume

If Len(Record(i).Nume) = 0 Then 'verificare daca exista nume introdus

If MsgBox('NUME nu poate avea valoare nula.' & vbCrLf & _

'Va rog introduceti NUME.' & vbCrLf & vbCrLf & _

'Pentru a anula inregistrarea curenta clic 'Cancel'', _

vbExclamation + vbOKCancel, 'Date invalide') = vbOK Then 'Numele nu este introdus sau se doreste anularea inregistrarii (utilizatorul a executat clic pe Cancel)

GoTo EnterNume 'executia se intoarce la marcajul de inceput inregistrare Nume (utilizatorul a dat clic pe OK, deci doreste introducerea numelui, implicit executia continua

Else

'utilizatorul a executat clic pe Cancel, el nu mai doreste sa continue inregistrarea

i = i - 1 'contorul de contruri se intoarce la starea precedenta

MsgBox 'Inregistrare anulata.' & vbCrLf & _

'Incrementarea NumarCont nemodificata (REC.' & i + 1 & ')', , 'Inregistrare Anulata' 'notificare

Exit Sub 'executia intregii subrutine se opreste

End If

End If

EnterPrenume:

Record(i).Prenume = InputBox('PRENUME pentru REC.' & i, 'Inregistrare NR. ' & i)

If Len(Record(i).Prenume) = 0 Then

If MsgBox('PRENUME nu poate avea valoare nula.' & vbCrLf & _

'Va rog introduceti PRENUME.' & vbCrLf & vbCrLf & _

'Pentru a anula inregistrarea curenta clic 'Cancel'', _

vbExclamation + vbOKCancel, 'Date invalide') = vbOK Then

GoTo EnterPrenume

Else

i = i - 1

MsgBox 'Inregistrare anulata.' & vbCrLf & _

'Incrementarea NumarCont nemodificata (REC.' & i + 1 & ')', , 'Inregistrare Anulata'

Exit Sub

End If

End If

EnterSumaDepusa:

Record(i).SumaDepusa = InputBox('SUMA DEPUSA pentru REC.' & i & vbCrLf & vbCrLf & _

Record(i).Prenume & ', ' & UCase(Record(i).Nume), 'Inregistrare NR. ' & i)

If IsNumeric(Record(i).SumaDepusa) = False Then 'se verifica daca SumaDepusa este valoare numerica

If MsgBox('SUMA DEPUSA nu poate avea valoare nula si/sau sa fie un sir de caractere.' & vbCrLf & _

'Va rog introduceti SUMA DEPUSA (valoare numerica).' & vbCrLf & vbCrLf & _

'Pentru a anula inregistrarea curenta clic 'Cancel'', vbExclamation + vbOKCancel, 'Date invalide') = vbOK Then

GoTo EnterSumaDepusa

Else

i = i - 1

MsgBox 'Inregistrare anulata.' & vbCrLf & _

'Incrementarea NumarCont nemodificata (REC.' & i + 1 & ')', , 'Inregistrare Anulata'

Exit Sub

End If

End If

EnterTermenDepozit:

Record(i).TermenDepozit = InputBox('TERMEN DEPOZIT pentru REC.' & i & vbCrLf & _

Record(i).Prenume & ', ' & UCase(Record(i).Nume) & vbCrLf & vbCrLf & _

'TERMENE: (introduceti cifra corespunzatoare)' & vbCrLf & _

'(1) O luna' & vbCrLf & _

'(3) Trei luni' & vbCrLf & _

'(6) Sase luni' & vbCrLf & _

'(12) Doisprezece luni', _

'Inregistrare NR. ' & i)

If IsNumeric(Record(i).TermenDepozit) = False Or _

Record(i).TermenDepozit <> '1' And _

Record(i).TermenDepozit <> '3' And _

Record(i).TermenDepozit <> '6' And _

Record(i).TermenDepozit <> '12' Then 'se verifica daca TermenDepozit este valoare numerica si daca aceasa este 1, 3, 6 sau 12

If MsgBox('TERMEN DEPOZIT nu poate avea valoare nula si/sau sa fie un sir de caractere.' & vbCrLf & _

'Va rog introduceti TERMEN DEPOZIT (valoare numerica: 1, 3, 6, 12).' & vbCrLf & vbCrLf & _

'Pentru a anula inregistrarea curenta clic 'Cancel'', vbExclamation + vbOKCancel, 'Date invalide') = vbOK Then

GoTo EnterTermenDepozit

Else

i = i - 1

MsgBox 'Inregistrare anulata.' & vbCrLf & 'Incrementarea NumarCont nemodificata (REC.' & i + 1 & ')', , 'Inregistrare Anulata'

Exit Sub

End If

End If

cmbCont.Clear

For j = LBound(Record) To UBound(Record)

cmbCont.AddItem j

Next j

cmbCont.AddItem '<ALL>'

End Sub

5) Lista de produse
Dim a As String

Private Sub cmdadauga_Click()

a = InputBox('Introduceti ce doriti sa adaugati in lista')

If a = '' Then

MsgBox ('introduceti un produs')

Else

lst1.AddItem (a)

End If

End Sub

Private Sub cmdsterge_Click()

lst1.RemoveItem (ListIndex)

End Sub

Private Sub lst1_Click()

lbl3.Caption = lst1.ListIndex + 1

End Sub

6) Analiza unui text preluat dintr-un fisier sau introdus de la tastatura

Option Explicit


Dim retry As Integer, maxRetry As Integer

Dim strPassword As String

Private Sub cmdExit_Click()

Unload Me

End Sub

Private Sub cmdOK_Click()

If Text1 <> strPassword Then

retry = retry + 1

If retry >= maxRetry Then

MsgBox 'Parola incorecta.' & vbCrLf & 'S-a depasit numarul de incercari.' & vbCrLf & 'Executie terminata.', vbCritical, 'Parola'

Unload Me

Else

Select Case maxRetry - retry

Case 1: MsgBox 'Parola incorecta.' & vbCrLf & 'Mai aveti o incercare.', vbCritical, 'Parola'

Case Else

MsgBox 'Parola incorecta.' & vbCrLf & 'Mai aveti ' & maxRetry - retry & ' incercari.', vbCritical, 'Parola'

End Select

End If

Else

Me.Hide

Load Form2

Form2.Show

Unload Me

End If

End Sub

Private Sub Form_Load()

retry = 0

maxRetry = 5

strPassword = 'parola'

Label1 = 'Facultatea Informatica Manageriala' & vbCrLf & _

'Universitatea Romano-Americana' & vbCrLf & vbCrLf & _

'Descriere proiect: Analiza Text'

End Sub

Private Sub Command1_Click()

Unload Me

End

End Sub

Private Sub Command2_Click()

On Error Resume Next

Dim cuv() As String

Dim tot() As Long

Dim i As Long, j As Long

If Len(Text1) <> 0 Then

cuv = Split(Trim(Text1), ' ', , vbTextCompare)

Form3.Text1.Text = 'Cuvinte gasite: ' & UBound(cuv) + 1 & vbCrLf

ReDim tot(UBound(cuv))

'nr aparitii

For i = 0 To UBound(cuv)

For j = 0 To UBound(cuv)

If Trim(cuv(i)) = Trim(cuv(j)) Then tot(i) = tot(i) + 1

Next

Next

For i = 0 To UBound(cuv)

For j = i + 1 To UBound(cuv)

If Trim(cuv(i)) = Trim(cuv(j)) Then cuv(i) = ''

Next

Next

' afisare

For i = 0 To UBound(cuv)

If cuv(i) <> '' Then Form3.Text1.Text = Form3.Text1.Text & 'Cuvant: ' & Chr(34) & cuv(i) & Chr(34) & ' nr aparitii: ' & tot(i) & vbCrLf

Next

Form3.Text1.Text = Form3.Text1.Text + '----- ----- ------------'

'afisare propozitii (succesiune de cuvinte urmate de .)

Dim prop() As String

prop = Split(Text1, '.', , vbTextCompare)

Form3.Text1.Text = Form3.Text1.Text & 'Propozitii gasite: ' & UBound(prop) & vbCrLf

ReDim tot(UBound(prop))

' total aparitii

For i = 0 To UBound(prop)

For j = 0 To UBound(prop)

If Trim(prop(i)) = Trim(prop(j)) Then tot(i) = tot(i) + 1

Next

Next

For i = 0 To UBound(prop)

For j = i + 1 To UBound(prop)

If Trim(prop(i)) = Trim(prop(j)) Then prop(i) = ''

Next

Next

' afisare

For i = 0 To UBound(prop)

If prop(i) <> '' Then Form3.Text1.Text = Form3.Text1.Text & 'Propozitie: ' & Chr(34) & prop(i) & Chr(34) & ' nr aparitii: ' & tot(i) & vbCrLf

Next

Form3.Text1.Text = Form3.Text1.Text + '----- ----- ---------------'

'afisare frazele (succesiune de cuvinte urmate de . si ,)

Dim fraz() As String

fraz = Split(Text1, '.', , vbTextCompare)

fraz = Split(Text1, ',', , vbTextCompare)

Form3.Text1.Text = Form3.Text1.Text & 'frazele gasite: ' & UBound(fraz) + 1 & vbCrLf

ReDim tot(UBound(fraz))

' total aparitii

For i = 0 To UBound(fraz)

For j = 0 To UBound(fraz)

If Trim(fraz(i)) = Trim(fraz(j)) Then tot(i) = tot(i) + 1

Next

Next

For i = 0 To UBound(fraz)

For j = i + 1 To UBound(fraz)

If Trim(fraz(i)) = Trim(fraz(j)) Then fraz(i) = ''

Next

Next

' afisare

For i = 0 To UBound(fraz)

If fraz(i) <> '' Then Form3.Text1.Text = Form3.Text1.Text & 'frazele: ' & Chr(34) & fraz(i) & Chr(34) & ' nr aparitii: ' & tot(i) & vbCrLf

Next

Form3.Text1.Text = Form3.Text1.Text + '----- ----- --------------'

Dim lit() As String

ReDim lit(Len(Text1))

Form3.Text1.Text = Form3.Text1.Text & 'Litere gasite: ' & UBound(lit) & vbCrLf

ReDim tot(UBound(lit))

For i = 0 To UBound(lit)

lit(i) = Mid(Text1, i + 1, 1)

Next

For i = 0 To UBound(lit)

For j = 0 To UBound(lit)

If lit(i) = lit(j) Then tot(i) = tot(i) + 1

Next

Next

For i = 0 To UBound(lit)

For j = i + 1 To UBound(lit)

If lit(i) = lit(j) Then lit(i) = ''

Next

Next

' afisare

For i = 0 To UBound(lit)

If lit(i) <> '' Then Form3.Text1.Text = Form3.Text1.Text & 'Litera: ' & Chr(34) & lit(i) & Chr(34) & ' nr aparitii: ' & tot(i) & vbCrLf

Next

Else

Form3.Text1 = 'ERROR: TEXT SURSA INEXISTENT'

End If

Form3.Show 1, Me

End Sub

Private Sub Command3_Click()

On Error Resume Next

Dim fileData As String

CommonDialog1.ShowOpen

Open CommonDialog1.FileName For Input As #1

fileData = Input(LOF(1), 1)

Close #1

Text1.Text = fileData

End Sub

Private Sub Form_Load()

CommonDialog1.Filter = 'Text (*.txt)|*.txt|All files (*.*)|*.*'

End Sub

Private Sub Form_Resize()

On Error Resume Next

If Me.ScaleWidth <= 120 + Command3.Width + 240 + Command2.Width + 120 + Command1.Width + 120 Then

Me.Width = 120 + Command3.Width + 240 + Command2.Width + 120 + Command1.Width + 120

End If

Text1.Move 120, 120, Me.ScaleWidth - 240, Me.ScaleHeight - 240 - Command1.Height - 120

Command3.Move 120, Text1.Height + 240

Command2.Move Command3.Width + 240, Text1.Height + 240

Command1.Move Me.ScaleWidth - Command1.Width - 120, Text1.Height + 240

End Sub

Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_Load()

End Sub

7) Aplicatie pentru un centru de vanzare si inchiriere carti, reviste, ziare.


Option Explicit

Dim k As Integer

Dim strText As String

Private Sub Form_Activate()

strText = String(30, ' ') + 'Va multumim pentru vizita la Centrul nostru de vanzari si inchirieri - carti,reviste,ziare'

Timer1.Enabled = True

Text1.Text = 'Centru de inchirieri si vanzare' & vbCrLf & 'carti, reviste, ziare'

Text2.SetFocus

k = 1

End Sub

Private Sub Timer1_Timer()

strText = Mid(strText, 2) & Left(strText, 1)

Text2.Text = strText

k = k + 1

If k = 30 Then

Form5.Show

End If

End Sub


Private Sub bare_instrumente_Click()

BaraInstrumente.Show

End Sub

Private Sub Clienti_Click()

Clientii.Show

End Sub

Private Sub Clienti_inchi_vanz_Click()

ClientiInchiVanz.Show

End Sub

Private Sub Command1_Click()

End

End Sub

Private Sub culori_Click()

aspect.Show

End Sub

Private Sub exit_Click()

End

End Sub

Private Sub Form_Load()

DBDir = App.Path

DBName = 'data'

Unload Splash

Unload Form5

If parolacon = 'admin' Then

setari.Visible = True

Else

setari.Visible = False

End If

DB.Close

'Set DB = OpenDatabase(DBDir & DBName)

'Setdata1.recordset= DB.OpenRecordset('table1')

End Sub

Private Sub generare_app_Click()

MsgBox ' Se genereaza Baza de date - numai la incarcarea aplicatiei pentru prima oara'

'Kill ('C:proiectVBdata.mdb')

MsgBox 'Recreati Baza de Date ?', vbYesNo

If vbYes Then

Kill App.Path & 'data.mdb'

'1) Creaza baza de date DATA

'Set DB = CreateDatabase(App.Path & 'data', dbLangGeneral, dbEncrypt)

Set DB = CreateDatabase(App.Path & 'data', dbLangGeneral)

End If

'2) Creaza tabela clienti

MsgBox 'Doriti crearea tbelei CLIENTI ?', vbYesNo

If vbYes Then

DB.Execute 'CREATE TABLE clienti' & '( nume_pren CHAR (30),legit int, cnp char(13),datan date);'

DB.Execute 'insert into clienti (nume_pren ,legit , cnp , datan) values ('Ionescu Ion',1, '1234567890123', '21/10/1986');'

End If

'3) Creaza tabela PRODUSE

MsgBox 'Doriti crearea tbelei PRODUSE ?', vbYesNo

If vbYes Then

DB.Execute 'CREATE TABLE PRODUSE ' & '(tipprod CHAR (7), numeprod CHAR (20), prez char (50), autedit char(50), evbib char(1), inchiriat char(1), pret INT, cant int, imag char (20));'

DB.Execute 'insert into PRODUSE (tipprod,numeprod,prez,autedit,evbib,inchiriat,pret,cant,imag) values ('ziar', 'ZIARUL', 'cotidian central','tipografia ziarul','0','0',1,1,'ziarul.jpg'); '

End If

'4) Creaza tabela miscari

MsgBox 'Doriti crearea tbelei MISCARI ?', vbYesNo

If vbYes Then

DB.Execute 'CREATE TABLE MISCARI ' & '(legit INT, cnp CHAR(13), numeprod CHAR (20), tipprod char (1), pret int, datai date, dataimp date,datares date, tipop char (1) );'

DB.Execute 'insert into miscari (legit) values ('1'); '

End If

'5) Creaza tabela parole

MsgBox 'Doriti crearea tbelei PAROLE ?', vbYesNo

If vbYes Then

DB.Execute 'CREATE TABLE parole ' & '(user CHAR (20), parola char (6), drepturi char (13) );'

DB.Execute 'insert into parole (user, parola, drepturi) values ('Admin','admin','administrator'); '

DB.Execute 'insert into parole (user, parola, drepturi) values ('Operator1','op1','operator'); '

DB.Execute 'insert into parole (user, parola, drepturi) values ('Operator2','op2','operator'); '

End If

DB.Close

MsgBox 'Baza de date OK'

End Sub

Private Sub imagini_Click()

ModificareImagini.Show

End Sub

Private Sub imprumuturi_Click()

Imprumutury.Show

End Sub

Private Sub Incasari_Click()

Inkasari.Show

End Sub

Private Sub inregistrare_client_Click()

InregistrareClient.Show

End Sub

Private Sub intrari_prod_Click()

produseNoi.Show

End Sub

Private Sub parola_Click()

Parole.Show

End Sub

Private Sub Penalizari_Click()

Penalizarile.Show

End Sub

Private Sub prod_neret_Click()

Prodneret.Show

End Sub

Private Sub Produse_Click()

Prods.Show

End Sub

Private Sub produse_existente_Click()

ProduseExistente.Show

End Sub

Private Sub produse_inchiriate_Click()

ProduseInchiriate.Show

End Sub

Private Sub produse_returnate_Click()

Prodreturn.Show

End Sub

Private Sub restantieri_Click()

Restantierii.Show

End Sub

Private Sub text_Click()

ModificareText.Show

End Sub

Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)

If Button.Index = 1 Then

Imprumutury.Show

End If

If Button.Index = 2 Then

Vanzari.Show

End If

If Button.Index = 3 Then

InregistrareClient.Show

End If

If Button.Index = 4 Then

ProduseExistente.Show

End If

If Button.Index = 5 Then

Restantierii.Show

End If

If Button.Index = 6 Then

produseNoi.Show

End If

End Sub

Private Sub tot_pro_client_Click()

Totprod.Show

End Sub

Private Sub Vanzare_Click()

Vanzari.Show

End Sub


Private Sub Combo1_Click()

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'select numeprod,pret from produse where trim(tipprod) = '' & Trim(Combo1.Text) & '''

Data1.Refresh

Data1.Recordset.MoveLast

'MsgBox Data1.Recordset.RecordCount

If Data1.Recordset.RecordCount > 0 Then

Combo2.Clear

Data1.Recordset.MoveFirst

While Not Data1.Recordset.EOF

Combo2.AddItem Data1.Recordset.Fields(0)

Data1.Recordset.MoveNext

Wend

Combo2.Text = Combo2.List(0)

End If

End Sub

Private Sub Combo2_Click()

Data1.Recordset.MoveFirst

Data1.Recordset.Move Combo2.ListIndex

Text4.Text = Data1.Recordset.Fields(1)

End Sub

Private Sub Command1_Click()

InregistrareClient.Show

Command2.Visible = True

Text1.Visible = False

Text2.Visible = False

Text3.Visible = False

End Sub

Private Sub Command2_Click()

Text1.Visible = True

Text2.Visible = True

Text3.Visible = True

Text1.Text = legitg

Text2.Text = cnpg

Text3.Text = numeg

Command2.Visible = False

Text5.SetFocus

End Sub

Private Sub Command3_Click()

Data1.Recordset.Close

Data1.Database.Close

DBDir = App.Path

DBName = 'data.mdb'

Set DB = OpenDatabase(DBDir & DBName)

'DB.Execute 'CREATE TABLE MISCARI ' & '(legit INT,cnp CHAR(13), numeprod CHAR (20), tipprod char (1), pret int, datai date, dataimp date,datares date, tipop char (1) );'

DB.Execute 'insert into miscari (legit,cnp,numeprod,tipprod,pret,datai,dataimp,datares,tipop) values ('' _

& Text1.Text & '', '' _

& Text2.Text & '', '' _

& Combo2.Text & '', '' _

& Combo1.Text & '', '' _

& Text4.Text & '', '' _

& Text6.Text & '', '' _

& Text6.Text & '', '' _

& Text7.Text & '', '1');'

End Sub

Private Sub Command4_Click()

'DB.Close

Unload Me

End Sub

Private Sub Form_Load()

Combo1.Clear

Combo1.AddItem 'carte'

Combo1.AddItem 'revista'

Combo1.AddItem 'ziar'

Combo1.Text = 'carte'

Text1.Visible = False

Text2.Visible = False

Text3.Visible = False

Command2.Visible = False

Text6.Text = Mid(Now, 1, 10)

End Sub

Private Sub Text5_LostFocus()

Text8.Text = Val(Text5.Text) * Val(Text4.Text)

End Sub


Private Sub Combo1_Click()

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'select numeprod,pret from produse where trim(tipprod) = '' & Trim(Combo1.Text) & '''

Data1.Refresh

Data1.Recordset.MoveLast

'MsgBox Data1.Recordset.RecordCount

If Data1.Recordset.RecordCount > 0 Then

Combo2.Clear

Data1.Recordset.MoveFirst

While Not Data1.Recordset.EOF

Combo2.AddItem Data1.Recordset.Fields(0)

Data1.Recordset.MoveNext

Wend

Combo2.Text = Combo2.List(0)

End If

End Sub

Private Sub Combo2_Click()

Data1.Recordset.MoveFirst

Data1.Recordset.Move Combo2.ListIndex

Text4.Text = Data1.Recordset.Fields(1)

End Sub

Private Sub Command1_Click()

InregistrareClient.Show

Command2.Visible = True

Text1.Visible = False

Text2.Visible = False

Text3.Visible = False

End Sub

Private Sub Command2_Click()

Text1.Visible = True

Text2.Visible = True

Text3.Visible = True

Text1.Text = legitg

Text2.Text = cnpg

Text3.Text = numeg

Command2.Visible = False

Text5.SetFocus

End Sub

Private Sub Command3_Click()

Data1.Recordset.Close

Data1.Database.Close

DBDir = App.Path

DBName = 'data.mdb'

Set DB = OpenDatabase(DBDir & DBName)

MsgBox Text2.Text

'DB.Execute 'CREATE TABLE MISCARI ' & '(legit INT,cnp CHAR(13), numeprod CHAR (20), tipprod char (1), pret int, datai date, dataimp date,datares date, tipop char (1) );'

DB.Execute 'insert into miscari (legit,cnp,numeprod,tipprod,pret,datai,dataimp,datares,tipop) values ('' _

& Text1.Text & '', '' _

& Text2.Text & '', '' _

& Combo2.Text & '', '' _

& Combo1.Text & '', '' _

& Text4.Text & '', '' _

& Text6.Text & '', '' _

& Text6.Text & '', '' _

& Text6.Text & '', '0');'

End Sub

Private Sub Command4_Click()

'DB.Close

Unload Me

End Sub

Private Sub Form_Load()

Combo1.Clear

Combo1.AddItem 'carte'

Combo1.AddItem 'revista'

Combo1.AddItem 'ziar'

Combo1.Text = 'carte'

Text1.Visible = False

Text2.Visible = False

Text3.Visible = False

Command2.Visible = False

Text6.Text = Mid(Now, 1, 10)

End Sub

Private Sub Text5_LostFocus()

Text8.Text = Val(Text5.Text) * Val(Text4.Text)

End Sub


Public i As Integer

Private Sub Command1_Click()

Data1.Recordset.Close

Data1.Database.Close

Unload Me

End Sub

Private Sub Command2_Click()

Text1.Text = ''

Text2.Text = ''

Text3.Text = ''

Text4.Text = ''

Command5.Visible = True

Command6.Visible = True

Command2.Visible = False

Command3.Visible = False

Command4.Visible = False

Label6.Caption = 'ADAUGARE CLIENT'

i = 1

Text1.SetFocus

End Sub

Private Sub Command3_Click()

Command5.Visible = True

Command6.Visible = True

Label6.Caption = 'MODIFICARE CLIENT'

i = 2

Text1.SetFocus

End Sub

Private Sub Command4_Click()

Command5.Visible = True

Command6.Visible = True

Label6.Caption = 'STERGE CLIENT'

i = 3

Command5.Caption = 'OK'

Command5.SetFocus

End Sub

Private Sub Command5_Click()

Select Case i

Case 1

Data1.Recordset.AddNew

Data1.Recordset.Fields(0) = Text1.Text

Data1.Recordset.Fields(1) = Text2.Text

Data1.Recordset.Fields(2) = Text3.Text

Data1.Recordset.Fields(3) = Text4.Text

Data1.Recordset.Update

Data1.Refresh

Case 2

'MsgBox 'edit'

Data1.Recordset.MoveFirst

Data1.Recordset.Move ItemIndex - 1

Data1.Recordset.Edit

Data1.Recordset.Fields(0) = Text1.Text

Data1.Recordset.Fields(1) = Text2.Text

Data1.Recordset.Fields(2) = Text3.Text

Data1.Recordset.Fields(3) = Text4.Text

Data1.Recordset.Update

Data1.Refresh

Case 3

Data1.Recordset.MoveFirst

With Data1.Recordset

.Move ItemIndex - 1

.Delete

End With

Data1.Refresh

End Select

Command5.Caption = 'Save'

Command5.Visible = False

Command6.Visible = False

Command2.Visible = True

Command3.Visible = True

Command4.Visible = True

Label6.Caption = 'Inregistrare clienti'

Data1.Recordset.MoveFirst

ListView1.ListItems.Clear

Do While Not Data1.Recordset.EOF

Set LI = ListView1.ListItems.Add(, , Data1.Recordset.Fields(0))

LI.SubItems(1) = Data1.Recordset.Fields(1)

LI.SubItems(2) = Data1.Recordset.Fields(2)

LI.SubItems(3) = Data1.Recordset.Fields(3)

Data1.Recordset.MoveNext

Loop

Text1.Text = ''

Text2.Text = ''

Text3.Text = ''

Text4.Text = ''

Command5.Visible = False

Command6.Visible = False

Command3.Visible = False

Command4.Visible = False

i = 0

End Sub

Private Sub Command6_Click()

Command5.Caption = 'Save'

Command5.Visible = False

Command6.Visible = False

Command2.Visible = True

Command3.Visible = False

Command4.Visible = False

Label6.Caption = 'Inregistrare clienti'

End Sub

Private Sub Form_Load()

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'select * from clienti'

'MsgBox Data1.Recordset.RecordCount

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

Data1.Recordset.MoveFirst

End If

Data1.Recordset.MoveFirst

ListView1.ListItems.Clear

Do While Not Data1.Recordset.EOF

Set LI = ListView1.ListItems.Add(, , Data1.Recordset.Fields(0))

LI.SubItems(1) = Data1.Recordset.Fields(1)

LI.SubItems(2) = Data1.Recordset.Fields(2)

LI.SubItems(3) = Data1.Recordset.Fields(3)

Data1.Recordset.MoveNext

Loop

Text1.Text = ''

Text2.Text = ''

Text3.Text = ''

Text4.Text = ''

Command5.Visible = False

Command6.Visible = False

Command3.Visible = False

Command4.Visible = False

i = 0

End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

ItemIndex = ListView1.SelectedItem.Index

Text1.Text = ListView1.ListItems.Item(ItemIndex)

Text2.Text = ListView1.ListItems(ItemIndex).SubItems(1)

Text3.Text = ListView1.ListItems(ItemIndex).SubItems(2)

Text4.Text = ListView1.ListItems(ItemIndex).SubItems(3)

Command3.Visible = True

Command4.Visible = True

legitg = Text2.Text

cnpg = Text3.Text

numeg = Text1.Text

End Sub

Public Sub ColumnSort(ListViewControl As ListView, Column As ColumnHeader)

With ListViewControl

If .SortKey <> Column.Index - 1 Then

.SortKey = Column.Index - 1

.SortOrder = lvwAscending

Else

If .SortOrder = lvwAscending Then

.SortOrder = lvwDescending

Else

.SortOrder = lvwAscending

End If

End If

.Sorted = -1

End With

End Sub

Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader)

Call ColumnSort(ListView1, ColumnHeader)

End Sub


Private Sub Command1_Click()

Unload Me

End Sub

Private Sub Form_Load()

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'select numeprod as Denumire_produs,pret,cant from produse order by tipprod'

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

MSFlexGrid1.Visible = True

End If

End Sub


Private Sub Form_Load()

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'select a.legit ,a.cnp ,b.nume_pren ,b.datan from miscari a, clienti b where (a.legit = b.legit) and (a.tipop = '1') and (a.datares<date())'

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

MSFlexGrid1.Visible = True

End If

End Sub


Private Sub Command1_Click()

Dim struser As String

Dim strparola As String

Dim strdrept As String

DBDir = App.Path

DBName = 'data.mdb'

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'produse'

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

Data1.Recordset.MoveFirst

End If

If Option1.Value = True Then

With Data1.Recordset

.AddNew

!tipprod = Trim(Combo1.Text)

!numeprod = Trim(Text2.Text)

!prez = Trim(Text3.Text)

!autedit = Text4.Text

If Combo2.Text = 'Se inchiriaza' Then

!evbib = 1

Else

!evbib = 0

End If

!inchiriat = 0

!pret = Text1.Text

!cant = Text5.Text

!imag = numeimg

.Update

End With

Dir1.Visible = False

Frame1.Visible = True

Label9.Visible = False

File1.Visible = False

Image1.Visible = False

Call Option4_Click

End If

If Option2.Value = True Then

With Data1.Recordset

.Move ItemIndex - 1

.Edit

!tipprod = Trim(Combo1.Text)

!numeprod = Trim(Text2.Text)

!prez = Trim(Text3.Text)

!autedit = Text4.Text

If Combo2.Text = 'Se inchiriaza' Then

!evbib = 1

Else

!evbib = 0

End If

!inchiriat = 0

!pret = Text1.Text

!cant = Text5.Text

!imag = numeimg

.Update

End With

Dir1.Visible = False

Frame1.Visible = True

Label9.Visible = False

File1.Visible = False

Image1.Visible = False

Call Option4_Click

End If

If Option3.Value = True Then

struser = Trim(Text1.Text)

strparola = Trim(Text2.Text)

strdrept = Trim(Combo1.Text)

MsgBox 'Chiar doriti sa stergeti ?', vbYesNo

If vbOK Then

With Data1.Recordset

.Move ItemIndex - 1

.Delete

End With

End If

End If

'===========================================

Data1.Refresh

Data1.Recordset.MoveFirst

ListView1.ListItems.Clear

Do While Not Data1.Recordset.EOF

Set LI = ListView1.ListItems.Add(, , Data1.Recordset.Fields('tipprod'))

LI.SubItems(1) = Data1.Recordset.Fields('numeprod')

LI.SubItems(2) = Data1.Recordset.Fields('prez')

LI.SubItems(3) = Data1.Recordset.Fields('autedit')

LI.SubItems(4) = Data1.Recordset.Fields('evbib')

LI.SubItems(5) = Data1.Recordset.Fields('inchiriat')

LI.SubItems(6) = Data1.Recordset.Fields('pret')

LI.SubItems(7) = Data1.Recordset.Fields('cant')

LI.SubItems(8) = Data1.Recordset.Fields('imag')

numeimg = Data1.Recordset.Fields('imag')

Data1.Recordset.MoveNext

Loop

Command1.Visible = False

Command3.Visible = False

Option4.Value = True

End Sub

Private Sub Command2_Click()

DB.Close

Unload Me

End Sub

Private Sub Command3_Click()

Command1.Visible = False

Command3.Visible = False

Option4.Value = True

Dir1.Visible = False

File1.Visible = False

Image1.Visible = False

Label9.Visible = False

Frame1.Visible = True

End Sub

Private Sub Dir1_Change()

File1.Path = Dir1.Path

File1.Pattern = '*.jpg'

End Sub

Private Sub File1_Click()

Command1.Visible = True

Command3.Visible = True

Dim X As Picture

Set X = LoadPicture(File1.Path & '' & File1.FileName)

Set Image1.Picture = X

numeimg = File1.FileName

End Sub

Private Sub Form_Load()

DBDir = App.Path

DBName = 'data.mdb'

Combo1.Clear

Combo1.AddItem 'carte'

Combo1.AddItem 'revista'

Combo1.AddItem 'ziar'

Combo1.Text = 'carte'

Combo2.Clear

Combo2.AddItem 'Se inchiriaza'

Combo2.AddItem 'Se vinde'

Combo2.Text = 'Se vinde'

Command1.Visible = False

Command3.Visible = False

Label9.Visible = False

Frame1.Visible = True

Option4.Value = True

File1.Pattern = '*.jpg'

Dir1.Path = App.Path & 'imagini'

Dir1.Visible = False

File1.Visible = False

Image1.Visible = True

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'produse'

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

Data1.Recordset.MoveFirst

End If

End Sub

Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)

Dim X As Picture

ItemIndex = ListView1.SelectedItem.Index

Combo1.Text = ListView1.ListItems.Item(ItemIndex)

Text2.Text = ListView1.ListItems(ItemIndex).SubItems(1)

Text3.Text = ListView1.ListItems(ItemIndex).SubItems(2)

Text4.Text = ListView1.ListItems(ItemIndex).SubItems(3)

numeimg = RTrim(ListView1.ListItems(ItemIndex).SubItems(8))

'Path = 'D:ProiecteVBproiectVBimagini'

Path = App.Path + 'imagini'

Set X = LoadPicture(Path & RTrim(ListView1.ListItems(ItemIndex).SubItems(8)))

Set Image1.Picture = X

Image1.Visible = True

Combo2.Text = ListView1.ListItems(ItemIndex).SubItems(4)

Text1.Text = ListView1.ListItems(ItemIndex).SubItems(5)

Text5.Text = ListView1.ListItems(ItemIndex).SubItems(6)

End Sub

Private Sub Option1_Click()

If Option1.Value = True Then

Dir1.Visible = True

File1.Visible = True

Image1.Visible = True

Label9.Visible = True

Frame1.Visible = False

Text2.Text = ''

Text3.Text = ''

Text1.Text = ''

Text5.Text = ''

'Command1.Visible = True

Command3.Visible = True

DBDir = App.Path

DBName = 'data.mdb'

Data1.Refresh

Data1.Recordset.MoveFirst

ListView1.ListItems.Clear

Do While Not Data1.Recordset.EOF

Set LI = ListView1.ListItems.Add(, , Data1.Recordset.Fields('tipprod'))

LI.SubItems(1) = Data1.Recordset.Fields('numeprod')

LI.SubItems(2) = Data1.Recordset.Fields('prez')

LI.SubItems(3) = Data1.Recordset.Fields('autedit')

LI.SubItems(4) = Data1.Recordset.Fields('evbib')

LI.SubItems(5) = Data1.Recordset.Fields('inchiriat')

LI.SubItems(6) = Data1.Recordset.Fields('pret')

LI.SubItems(7) = Data1.Recordset.Fields('cant')

LI.SubItems(8) = Data1.Recordset.Fields('imag')

Data1.Recordset.MoveNext

Loop

Text1.Text = ''

Text2.Text = ''

End If

End Sub

Private Sub Option2_Click()

'Data1.Refresh

Dir1.Visible = True

File1.Visible = True

Image1.Visible = True

Label9.Visible = True

Frame1.Visible = False

Command1.Visible = True

Command3.Visible = True

Call ListView1_ItemClick(ListView1.SelectedItem)

ListView1.SetFocus

End Sub

Private Sub Option3_Click()

Data1.Refresh

Command1.Visible = True

Command3.Visible = True

If Option3.Value = True Then

Call ListView1_ItemClick(ListView1.SelectedItem)

ListView1.SetFocus

End If

End Sub

Private Sub Option4_Click()

Set DB = OpenDatabase(DBDir & DBName)

Data1.DatabaseName = DBDir & DBName

Data1.RecordSource = 'produse'

Data1.Refresh

If Data1.Recordset.RecordCount > 0 Then

Data1.Recordset.MoveFirst

End If

'Data1.Recordset.MoveFirst

ListView1.ListItems.Clear

Do While Not Data1.Recordset.EOF

Set LI = ListView1.ListItems.Add(, , Data1.Recordset.Fields('tipprod'))

LI.SubItems(1) = Data1.Recordset.Fields('numeprod')

LI.SubItems(2) = Data1.Recordset.Fields('prez')

LI.SubItems(3) = Data1.Recordset.Fields('autedit')

LI.SubItems(4) = Data1.Recordset.Fields('evbib')

LI.SubItems(5) = Data1.Recordset.Fields('inchiriat')

LI.SubItems(6) = Data1.Recordset.Fields('pret')

LI.SubItems(7) = Data1.Recordset.Fields('cant')

LI.SubItems(8) = Data1.Recordset.Fields('imag')

Data1.Recordset.MoveNext

Loop

Call ListView1_ItemClick(ListView1.SelectedItem)

End Sub

8) Aplicatie pentru o casa de schimb valutar.


Private Function calc_stoc(smb As String) As Double

Dim valoare(100) As Integer, stoc_disp(100) As Double

nr_bancnote = 0

fiss2 = FreeFile

Open 'stocuri/stoc_' + smb + '.dat' For Input As fiss2

While Not EOF(fiss2)

nr_bancnote = nr_bancnote + 1

Input #fiss2, valoare(nr_bancnote), stoc_disp(nr_bancnote)

Wend

Close fiss2

total = 0

For i = 1 To nr_bancnote

total = total + valoare(i) * stoc_disp(i)

Next i

calc_stoc = total

End Function

Private Sub incarca_valute()

Dim q_simbol(100) As String, q_vanzare(100) As Double, q_cumparare(100) As Double

Combo1.Clear

Combo1.AddItem '-'

k = 0

fiss = FreeFile

Open 'valute.dat' For Input As fiss

While Not EOF(fiss)

k = k + 1

Input #fiss, q_simbol(k), q_vanzare(k), q_cumparare(k)

Wend

Close fiss

max_val = 0

For w = 1 To k

stc = calc_stoc(q_simbol(w))

If stc > 0 Then

max_val = max_val + 1

simbol(max_val) = q_simbol(w)

vanzare(max_val) = q_vanzare(w)

cumparare(max_val) = q_cumparare(w)

stoc(max_val) = stc

Combo1.AddItem UCase(simbol(max_val))

End If

Next w

Combo1.ListIndex = 0

End Sub

Private Sub admin_stocuri_Click()

main.Enabled = False

pass_stocuri.Visible = True

End Sub

Private Sub admin_utilizatori_Click()

main.Enabled = False

pass_users.Visible = True

End Sub

Private Sub Combo1_Click()

If Combo1.ListIndex = 0 Then

lbl_cantitate.Caption = '-'

lbl_cumparare.Caption = '-'

lbl_vanzare.Caption = '-'

Else

lbl_cantitate.Caption = Str(stoc(Combo1.ListIndex))

lbl_vanzare.Caption = Str(vanzare(Combo1.ListIndex))

lbl_cumparare.Caption = Str(cumparare(Combo1.ListIndex))

End If

End Sub

Private Sub Command1_Click()

permis = True

If Combo1.ListCount = 1 Then

x = MsgBox('Nu exista nici un tip de valuta disponibila pt tranzactii!', vbInformation, 'Info')

Exit Sub

End If

If Combo1.ListIndex = 0 Then

x = MsgBox('Nu ati selectat nici un tip de valuta!', vbExclamation, 'Atentie')

permis = False

Else

If Trim(Text3.Text) = '' Then

x = MsgBox('Nu ati introdus nici o cantitate', vbExclamation, 'Atentie')

permis = False

End If

End If

If permis Then

If Option1.Value = True Then

opp = 'cumparata'

Else

opp = 'vanduta'

End If

If (opp = 'vanduta') And (Val(Text3.Text) > Val(lbl_cantitate)) Then

x = MsgBox('Cantitatea selectata pt vanzare este mai mare decat stocul!', vbExclamation, 'Atentie')

Else

List1.AddItem Trim(Text3.Text) + ' ' + Trim(Combo1.Text) + ' / ' + opp

End If

End If

End Sub

Private Sub Command2_Click()

If List1.ListCount > 0 Then

idx = List1.ListIndex

If idx < 0 Then

x = MsgBox('Nu ati selectat nici o tranzactie!', vbInformation, 'Info')

Else

x = MsgBox('Confirmati stergerea tranzactiei selectate?', vbYesNo, 'Confirmare')

If x = 6 Then

List1.RemoveItem idx

End If

End If

Else

x = MsgBox('Cosul de tranzactii este gol!', vbInformation, 'Info')

End If

End Sub

Private Sub Command3_Click()

If List1.ListCount > 0 Then

x = MsgBox('Confirmati golirea cosului?', vbYesNo, 'Confirmare')

If x = 6 Then List1.Clear

Else

x = MsgBox('Cosul de tranzactii este gol!', vbInformation, 'Info')

End If

End Sub

Private Sub Command4_Click()

Unload Me

End Sub

Private Sub Command5_Click()

If List1.ListCount = 0 Then

x = MsgBox('Nu exista nici o tranzactie in cos!', vbInformation, 'Info')

Else

If Trim(Text1.Text) = '' Then

x = MsgBox('Nu ati completat numele cumparatorului!', vbExclamation, 'Atentie')

Else

If Trim(Text2.Text) = '' Then

x = MsgBox('Nu ati completat CNP-ul cumparatorului!', vbExclamation, 'Atentie')

Else

List1.Clear

Text1.Text = ''

Text2.Text = ''

Text3.Text = ''

x = MsgBox('Tranzactii incheiate cu succes!', vbInformation, 'Info')

End If

End If

End If

End Sub

Private Sub Form_Load()

Call incarca_valute

End Sub


Dim t_simbol(100) As String, t_vanzare(100) As Double, t_cumparare(100) As Double

Dim valoare(100) As Integer, stoc_disp(100) As Double, vall(1000) As Integer, seria(1000) As String

Dim permis As Boolean, nr_bancnote As Integer, total As Double, tot_hartii As Integer

Private Sub refresh_tip_banc()

Combo2.Clear

total = 0

For i = 1 To nr_bancnote

total = total + valoare(i) * stoc_disp(i)

Combo2.AddItem valoare(i)

Next i

Combo2.ListIndex = 0

End Sub

Private Sub refresh_bancnote()

List1.Clear

For i = 1 To tot_hartii

If (Trim(Combo2.Text) = vall(i)) Then

List1.AddItem seria(i)

End If

Next i

End Sub

Private Function refresh_tot(smb As String)

nr_bancnote = 0

fiss2 = FreeFile

Open 'stocuri/stoc_' + smb + '.dat' For Input As fiss2

While Not EOF(fiss2)

nr_bancnote = nr_bancnote + 1

Input #fiss2, valoare(nr_bancnote), stoc_disp(nr_bancnote)

Wend

Close fiss2

Call refresh_tip_banc

Label13.Caption = Combo1.Text

Label9.Caption = Combo1.Text

Label10.Caption = Combo1.Text

Label14.Caption = Str(total)

tot_hartii = 0

fiss3 = FreeFile

Open 'bancnote/banc_' + smb + '.dat' For Input As fiss3

While Not EOF(fiss3)

tot_hartii = tot_hartii + 1

Input #fiss3, vall(tot_hartii), seria(tot_hartii)

Wend

Close fiss3

Call refresh_bancnote

End Function

Private Sub resetcolor(coll As String)

Label1.ForeColor = coll

Label2.ForeColor = coll

Label3.ForeColor = coll

Label5.ForeColor = coll

Label6.ForeColor = coll

End Sub

Private Sub verifica(q As Integer, coll2 As String)

permis = True

resetcolor (&H0&)

Select Case q

Case 1:

exista = False

For i = 0 To Combo2.ListCount - 1

If Combo2.List(i) = Trim(Text3.Text) Then

exista = True

Exit For

End If

Next i

If (Trim(Text3.Text) = '') Or (exista = True) Then

Label5.ForeColor = coll2

permis = False

End If

If Trim(Text4.Text) = '' Then

Label6.ForeColor = coll2

permis = False

End If

Case 2:

If Trim(Text2.Text) = '' Then

Label4.ForeColor = coll2

permis = False

End If

If Trim(Text3.Text) = '' Then

Label5.ForeColor = coll2

permis = False

End If

End Select

End Sub

Private Sub incarca()

Combo1.Clear

tot_val = 0

fiss = FreeFile

Open 'valute.dat' For Input As fiss

While Not EOF(fiss)

tot_val = tot_val + 1

Input #fiss, t_simbol(tot_val), t_vanzare(tot_val), t_cumparare(tot_val)

Combo1.AddItem UCase(t_simbol(tot_val))

Wend

Close fiss

Combo1.ListIndex = 0

End Sub

Private Sub Combo1_Click()

If modif = True Then

x = MsgBox('Au fost efectuate modificari ce nu au fost salvate! Continuati?', vbYesNo, 'Confirmare')

If x = 6 Then

modif = False

Text1.Text = t_vanzare(Combo1.ListIndex + 1)

Text2.Text = t_cumparare(Combo1.ListIndex + 1)

Call refresh_tot(Combo1.Text)

End If

Else

Text1.Text = t_vanzare(Combo1.ListIndex + 1)

Text2.Text = t_cumparare(Combo1.ListIndex + 1)

Call refresh_tot(Combo1.Text)

End If

End Sub

Private Sub Combo2_Click()

Label11.Caption = stoc_disp(Combo2.ListIndex + 1)

Call refresh_bancnote

End Sub

Private Sub Command1_Click()

Call verifica(1, &HFF&)

If permis = False Then

x = MsgBox('Exista erori in completarea unor campuri obligatorii!', vbExclamation, 'Atentie')

Else

x = MsgBox('Confirmati adaugarea tipului de moneda?', vbYesNo, 'Confirmare')

If x = 6 Then

If valoare(1) > Val(Trim(Text3.Text)) Then

nr_bancnote = nr_bancnote + 1

For j = nr_bancnote To 2

valoare(j) = valoare(j - 1)

stoc_disp(j) = stoc_disp(j - 1)

Next j

valoare(1) = Val(Trim(Text3.Text))

stoc_disp(1) = Val(Trim(Text4.Text))

Else

If valoare(nr_bancnote) < Val(Trim(Text3.Text)) Then

nr_bancnote = nr_bancnote + 1

valoare(nr_bancnote) = Val(Trim(Text3.Text))

stoc_disp(nr_bancnote) = Val(Trim(Text4.Text))

Else

For i = 1 To nr_bancnote - 1

If valoare(i) < Val(Trim(Text3.Text)) And (valoare(i + 1) > Val(Trim(Text3.Text))) Then

nr_bancnote = nr_bancnote + 1

For j = nr_bancnote To i + 1

valoare(j) = valoare(j - 1)

stoc_disp(j) = stoc_disp(j - 1)

Next j

valoare(i + 1) = Val(Trim(Text3.Text))

stoc_disp(i + 1) = Val(Trim(Text4.Text))

Exit For

End If

Next i

End If

End If

Text3.Text = ''

modif = True

Call refresh_tip_banc

x = MsgBox('Tipul de bancnota a fost adaugat cu succes!', vbInformation, 'Info')

End If

End If

End Sub

Private Sub Command2_Click()

Text6.Text = ''

For i = 1 To 10

Randomize

Text6.Text = Trim(Text6.Text) + Trim(Str(Int(Rnd * 9)))

Next i

Randomize

x = Int(Rnd * Combo2.ListCount)

Text5.Text = Combo2.List(x)

Command3.Enabled = True

End Sub

Private Sub Command3_Click()

x = MsgBox('Confirmati adaugarea bancnotei in stoc?', vbYesNo, 'Confirmare')

If x = 6 Then

For i = 0 To Combo2.ListCount - 1

If Combo2.List(i) = Val(Trim(Text5.Text)) Then

stoc_disp(i + 1) = stoc_disp(i + 1) + 1

End If

Next i

tot_hartii = tot_hartii + 1

vall(tot_hartii) = Val(Trim(Text5.Text))

seria(tot_hartii) = Trim(Text6.Text)

Call refresh_bancnote

modif = True

x = MsgBox('Bancnota a fost adaugata cu succes!', vbInformation, 'Info')

End If

End Sub

Private Sub Command4_Click()

main.Enabled = True

Unload stocuri

End Sub

Private Sub Command5_Click()

x = MsgBox('Confirmati salvarea modificarilor?', vbYesNo, 'Confirmare')

If x = 6 Then

t_vanzare(Combo1.ListIndex + 1) = Trim(Text1.Text)

t_cumparare(Combo1.ListIndex + 1) = Trim(Text2.Text)

fiss = FreeFile

Open 'valute.dat' For Output As fiss

For i = 1 To Combo1.ListCount

Write #fiss, t_simbol(i), t_vanzare(i), t_cumparare(i)

Next i

Close fiss

fiss = FreeFile

Open 'stocuri/stoc_' + LCase(Trim(Combo1.Text)) + '.dat' For Output As fiss

For i = 1 To Combo2.ListCount

Write #fiss, valoare(i), stoc_disp(i)

Next i

Close fiss

fiss = FreeFile

Open 'bancnote/banc_' + LCase(Trim(Combo1.Text)) + '.dat' For Output As fiss

For i = 1 To tot_hartii

Write #fiss, vall(i), seria(i)

Next i

Close fiss

modif = False

x = MsgBox('Modificarile au fost salvate!', vbInformation, 'Info')

End If

End Sub

Private Sub Command6_Click()

If List1.ListCount > 0 Then

idx = List1.ListIndex

If idx < 0 Then

x = MsgBox('Nu ati selectat nici o bancnota!', vbInformation, 'Info')

Else

x = MsgBox('Confirmati stergerea bancnotei selectate?', vbYesNo, 'Confirmare')

If x = 6 Then

For i = 1 To tot_hartii

If seria(i) = Trim(List1.List(idx)) Then

For j = 0 To Combo2.ListCount - 1

If Combo2.List(j) = vall(i) Then

stoc_disp(j + 1) = stoc_disp(j + 1) - 1

End If

Next j

For j = i To tot_hartii - 1

seria(j) = seria(j + 1)

vall(j) = vall(j + 1)

Next j

tot_hartii = tot_hartii - 1

End If

Next i

List1.RemoveItem idx

End If

End If

Else

x = MsgBox('Stocul de bancnote cu aceasta valoare este nul!', vbInformation, 'Info')

End If

End Sub

Private Sub Form_Load()

modif = False

Call incarca

Call refresh_tot(Combo1.Text)

End Sub


Dim user(100), parola(100) As String

Dim nr_usr As Integer, permis As Integer

Private Sub resetcolor(coll As String)

Label3.ForeColor = coll

Label4.ForeColor = coll

Label5.ForeColor = coll

End Sub

Private Sub verifica(q As Integer)

coll2 = &HFF&

permis = True

resetcolor (&H0&)

Select Case q

Case 1:

If Trim(Text1.Text) = '' Then

Label3.ForeColor = coll2

permis = False

End If

Case 2:

If Trim(Text2.Text) = '' Then

Label4.ForeColor = coll2

permis = False

End If

If Trim(Text3.Text) = '' Then

Label5.ForeColor = coll2

permis = False

End If

End Select

End Sub

Private Sub scriere()

fiss = FreeFile

Open 'users.dat' For Output As fiss

For i = 1 To nr_usr

Write #fiss, user(i), parola(i)

Next i

Close fiss

End Sub

Private Sub refres()

nr_usr = 0

fiss = FreeFile

Open 'users.dat' For Input As fiss

While Not EOF(fiss)

nr_usr = nr_usr + 1

Input #fiss, user(nr_usr), parola(nr_usr)

Wend

Close fiss

Combo1.Clear

For i = 1 To nr_usr

Combo1.AddItem user(i)

Next i

Combo1.ListIndex = 0

Label2.Caption = parola(1)

End Sub

Private Sub Combo1_Click()

idx = Combo1.ListIndex

Label2.Caption = parola(idx + 1)

End Sub

Private Sub Command1_Click()

Call verifica(1)

If permis = False Then

x = MsgBox('Exista erori in completarea campurilor obligatorii!', vbExclamation, 'Atentie')

Else

a = MsgBox('Sigur schimbati parola?', vbYesNo, 'Confirmnare')

If a = 6 Then

ix = Combo1.ListIndex + 1

parola(ix) = Trim(Text1.Text)

Call scriere

x = MsgBox('Parola afost schimbata cu succes!', vbInformation, 'Info')

End If

Text1.Text = ''

Call refres

End If

End Sub

Private Sub Command2_Click()

ussr = Trim(Text2.Text)

psss = Trim(Text3.Text)

Call verifica(2)

If permis = False Then

x = MsgBox('Exista erori in completarea campurilor obligatorii!', vbExclamation, 'Atentie')

Else

x = MsgBox('Confirmati adaugarea utilizatorului?', vbYesNo, 'Confirmare')

If x = 6 Then

fiss = FreeFile

Open 'users.dat' For Append As fiss

Write #fiss, ussr, psss

Close fiss

x = MsgBox('Utilizatorul a fost adaugat!', vbInformation, 'Info')

Text2.Text = ''

Text3.Text = ''

Call refres

End If

End If

End Sub

Private Sub Command3_Click()

main.Enabled = True

Unload users

End Sub

Private Sub Command4_Click()

Maxx = Combo1.ListCount

If Maxx > 1 Then

a = MsgBox('Sigur stergeti utilizatorul?', vbYesNo, 'Confirmnare')

If a = 6 Then

ix = Combo1.ListIndex + 1

For i = ix To nr_usr - 1

user(i) = user(i + 1)

parola(i) = parola(i + 1)

Next i

nr_usr = nr_usr - 1

Call scriere

x = MsgBox('Utilizatorul a fost sters!', vbInformation, 'Info')

Call refres

End If

Else

x = MsgBox('Trebuie sa existe cel putin un utilizator!', vbInformation, 'Info')

End If

End Sub

Private Sub Form_Load()

Call refres

End Sub



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 3183
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved