CATEGORII DOCUMENTE |
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
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
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 =
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 =
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 =
fraz =
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
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
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
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
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
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()
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,
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 |
Vizualizari: 3183
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved