Sunteți pe pagina 1din 192

Sanda Monica TTRM

CREAREA INTERFEELOR GRAFICE


PRINCIPII I APLICAII

Descrierea CIP a Bibliotecii Naionale a Romniei TTRM, SANDA MONICA Crearea interfeelor grafice: Principii i aplicaii/ Ttrm Sanda Monica - Bucureti: Editura Fundaiei Romnia de Mine, 2004 192 p., 11,5 cm. Bibliografie ISBN 973-582-864-2 004.4

Editura Fundaiei Romnia de Mine, 2004

UNIVERSITATEA SPIRU HARET


FACULTATEA DE MATEMATIC INFORMATIC

Sanda Monica TTRM

CREAREA INTERFEELOR GRAFICE


PRINCIPII I APLICAII

EDITURA FUNDAIEI ROMNIA DE MINE Bucureti, 2004

CUPRINS

Cuvnt introductiv.. Convenii.. 1. Introducere. 1.1. Comunicarea om-calculator. 1.2. Interfeele grafice-utilizator: scurt istoric.. 1.3. Interfeele grafice-utilizator i criticii lor. 1.3.1. Limitrile interfeelor de tip prompter-linie de comand 1.3.2. Limitrile interfeelor orientate spre comenzi... 1.3.3. Limitrile interfeelor de tip point-and-click 1.4. Perspective n dezvoltarea interfeelor grafice.. 2. Proiectarea interfeelor grafice. 2.1. Cteva caliti eseniale ale interfeelor grafice. 2.2. Proiectarea interfeelor grafice: o problem informal. 2.3. Proiectarea interfeelor grafice i analiza i proiectarea sistemelor... 2.4. Scurt introducere n semiotic 2.5. Cele 11 componente ale procesului de comunicare... 2.6. Proiectarea interfeelor grafice; aspecte semiotice. 2.6.1. Aspecte convenionale i motivaionale n limbajele de programare.. 2.6.2. Aspecte convenionale i motivaionale n programarea orientat spre obiecte... 2.6.3. Aspecte convenionale i motivaionale n programarea vizual. 2.7. Proiectarea interfeelor grafice; aspecte cognitive.. 2.8. Avantajele i limitele metaforei n proiectarea interfeelor.. 2.9. Principii de proiectare a interfeelor grafice 2.9.1. Cteva principii generale... 2.9.2. Cteva sugestii pragmatice.. 2.9.3. Exemple i ... contraexemple 2.10. Standardizarea n proiectarea interfeelor grafice.

7 9 11 11 13 16 16 17 19 24 28 28 29 31 33 35 37 38 39 41 42 44 46 47 49 53 60

3. Niveluri de programare.. 3.1. Programarea n limbajul Visual Basic 3.2. Programarea n limbajul VBA.. 3.3. Programarea n limbajul macrocomenzilor. 3.4. Programarea la nivelul interfeei grafice. 3.4.1. Programarea prin setarea opiunilor de rulare a aplicaiei.. 3.4.2. Programarea prin alegerea comenzilor din meniuri i a iconurilor de pe toolbaruri. 3.4.3. Programarea prin utilizarea procedurilor de asisten 3.5. Utilizarea obiectelor i evenimentelor n crearea interfeelor grafice. 3.5.1. Utilizarea obiectelor n programarea aplicaiilor Ms Office i Visual Basic 3.5.2. Utilizarea evenimentelor n programarea aplicaiilor Ms Office i Visual Basic.. 4. Aplicaii 4.1. Exerciii i teme privind etichetele,casetele-text, butoanele de comand,casetele i butoanele de opiune.. 4.2. Exerciii i teme privind casetele-list.... 4.3. Exerciii i teme privind casetele grafice.. 4.4. Exerciii privind casetele combinate, casetele geometrice i chenarele. 4.5. Exerciii privind crearea aplicaiilor cu mai multe forme; depanarea proiectelor cu fereastra-dialog Debug.. 4.6. Exerciii privind accesarea bazelor de date cu Visual Basic.... 4.7. Exerciii privind crearea aplicaiilor cu evenimente Drag-and-Drop. BIBLIOGRAFIE ANEXA

64 64 64 65 66 66 67 67 67 67 77 84 84 93 102 112 119 146 162 183 187

CUVNT INTRODUCTIV

Proiectarea interfeelor grafice poate fi privit att ca un instrument, ct i ca un produs al interaciunii om-calculator, al activitii de programare de aplicaii. Ea cere programatorilor s posede cunotine din domenii variate i aparent disjuncte de specialitatea lor: semiotic, teoria cunoaterii, estetic etc. Prezenta lucrare ncearc s analizeze crearea interfeelor grafice din perspectiva utilizrii unui mediu de programare integrat (Visual Basic) i s enumere cteva noiuni i tehnici provenind din domenii neinformatice, dar care pot ameliora, n primul rnd, funcionalitatea, dar i aspectul interfeelor proiectate. Cartea este structurat n patru capitole. n capitolul introductiv sunt definii principalii termeni i se face un istoric al evoluiei interfeelor, al limitelor diferitelor tipuri de interfee i al modului n care acestea au fost eliminate, producnd noi generaii. Al doilea capitol face o scurt incursiune n domeniile menionate mai sus i enumer cteva principii de proiectare corect a interfeelor grafice. Al treilea capitol analizeaz cele patru niveluri de programare n dezvoltarea aplicaiilor cu programele Visual Basic i Ms Office. Ultimul capitol este dedicat aplicaiilor. Sunt propuse exerciii i teme suplimentare, cu grade variate de dificultate. Soluiile exerciiilor sunt prezentate detaliat, astfel nct cititorul s poat asimila noiunile de baz ale programrii cu Visual Basic, rezolvnd probleme i mai ales formulnd singur variante ale acestora. De altfel, fiecare soluie este nsoit de trimiteri la elementul respectiv de programare, prezentat n lucrarea Visual Basic pentru proiectarea interfeelor grafice de acelai autor. Lucrarea este dedicat att studenilor facultilor cu profil informatic, ct i celor de la profilul economic. Autoarea

CONVENII

semnaleaz prezentarea unor informaii suplimentare semnaleaz prezentarea unor cazuri speciale semnaleaz soluii pentru situaii-capcan indic trecerea la urmtorul pas ntr-o procedur de programare cu elementele interfeei grafice indic efectul parcurgerii unei secvene de pai dintr-o procedur de programare cu elementele interfeei grafice: deschiderea unei ferestre-dialog, generarea unui obiect etc. Numele meniurilor, comenzilor i subcomenzilor, precum i numele butoanelor de comand sunt scrise cu majuscule. Cuvintele rezervate din Visual Basic, numele de toolbaruri, iconi, ferestre-dialog, aplicaii sunt formatate Title Case i Italic. Cuprinsul detaliat al lucrrii poate fi utilizat i ca index de termeni.

10

Motto:
In the same way that books support mans linear and verbal thinking, machines will support his graphic and intuitive thought processes.
Dean BROWN and Joan LEWIS: The Process of Conceptualization, Educational Policy Center Research Note, EPRC-6747-9, December 1968.

1. INTRODUCERE 1.1. Comunicarea om-calculator Interaciunea om-calculator (HCI 1 ) este definit de ACM 2 drept disciplina care se ocup cu proiectarea, evaluarea i implementarea sistemelor interactive utilizate de oameni, precum i cu studierea fenomenelor semnificative legate de acestea. Disciplina a fost listat de ACM/IEEE-CS Joint Curriculum Task Force on Computing Curricula printre cele 11 domenii eseniale pentru alctuirea oricrei programe universitare de informatic. Disciplinele cu care HCI interacioneaz cel mai frecvent i mai intens sunt: inteligena artificial i robotica, arhitectura calculatoarelor, sistemele de operare, limbajele de programare, proiectarea i metodologia software. Domeniul a aprut n ultimii ani ai deceniului 9 al secolului XX, pe msur ce calculul distribuit, reelele de calculatoare i interfeele grafice s-au maturizat i universalizat. El a cunoscut cea mai rapid i ampl dezvoltare n Statele Unite (unde este folosit
1 2

HCI = Human Computer Interaction ACM = Association for Computing Machinery 11

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

termenul de HCI = Human-Computer Interaction); dintre rile europene, o meniune deosebit trebuie fcut pentru Marea Britanie (aici folosindu-se ns termenul de CHI = ComputerHuman Interaction). n mod corespunztor i cercetarea n domeniu s-a orientat pe direcii diferite n Statele Unite fa de rile europene. n Statele Unite, cercetarea se desfoar n marile companii productoare de aplicaii software i este axat tocmai pe dezvoltarea i automatizarea sistemelor i aplicaiilor. n Europa occidental, studierea problemelor ridicate de comunicarea om-calculator (ca i nsi proiectarea aplicaiilor) se desfoar n companii de dimensiuni semnificativ mai mici i, ca urmare, are tendina de a merge dincolo de aspectele cognitive i de percepie, pn la integrarea acestui tip special de comunicare n contextul su social i organizaional. O contribuie major n evoluia domeniului au avut-o i formularea i recunoaterea de ctre teoreticieni i utilizatori a problemelor specifice calculului interactiv. Iat dou exemple: n [Wegner,1997], se argumenteaz c interaciunea omcalculator este mai semnificativ dect algoritmicitatea rezolvrii problemelor; n [Bottoni, Levialdi, Pun 1998], se construiete un model al interaciunii om-calculator, care este apoi tradus ntr-o familie de limbaje vizuale, asupra crora sunt demonstrate rezultate de indecidabilitate, lucru care poate fi interpretat astfel: calculul interactiv este suficient de puternic nct s genereze probleme indecidabile3 . Exist 3 stiluri de interfee grafice (vezi [Hamciuc, 2002]): interfaa cu un singur document (SDI = Single Document Interface), interfaa cu mai multe documente (MDI = Multiple Document Interface),
Mai mult, n aceleai condiii i ntr-un sens bine definit, se poate calcula cu figuri la nivel Turing (vezi [Bottoni, Mauri, Mussio, Pun, 2001]) 12
3

1. Introducere ______________________________________________________________

interfaa de explorare (explorer style interface) Interfaa SDI permite deschiderea n fiecare moment a unui singur document (fiier). Dac este necesar deschiderea unui alt document, trebuie mai nti nchis primul. Un exemplu de astfel de aplicaie care are interfa SDI este aplicaia WordPad. Interfaa MDI permite deschiderea simultan a mai multor documente create cu aplicaia respectiv, fiecare dintre acestea fiind deschis n propria sa fereastr. n fiecare moment, unul singur dintre documente este activ (este focalizat). Exemple de aplicaii care au interfee MDI sunt aplicaiile din grupul Ms Office. Interfaa de explorare const dintr-o singur fereastr mprit n dou paneluri: cel din stnga afieaz de obicei un arbore sau o structur ierarhic, iar cel din dreapta listeaz coninutul elementului curent selectat din respectiva structur. Un exemplu de aplicaie a crei interfa este de explorare este aplicaia Windows Explorer. 1.2. Interfeele grafice-utilizator: scurt istoric Termenul de interfa-utilizator nu este circumscris exclusiv comunicrii om-calculator. Aproape orice aparat sau instrument utilizat acas sau la serviciu trebuie s ofere o interfa utilizatorului su; e suficient s ne gndim la omniprezentele telefoane, maini de splat automate, automobile etc. Fiecare dintre aceste interfee au aceeai misiune: s asigure comunicarea informaiei ntre utilizator i aparatul respectiv. Dup cum realizeaz acest lucru, mai direct sau mai ncifrat, interfaa face ca aparatul s fie mai uor deci mai mult utilizat, sau dimpotriv. Ceea ce difereniaz interfeele cu calculatorul (din ultimele generaii) de interfeele cu alte tipuri de aparate este caracterul lor mediat, complex i alternativ: pentru a vira la stnga trebuie
13

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

efectiv s rotim volanul automobilului, ceea ce n sine este o operaie simpl i natural, dar este singura care ne permite s modificm astfel traiectoria automobilului. n schimb, pentru a salva un document avem la dispoziie 3 variante de lucru: iconul Save, comanda FILE SAVE, combinaia de taste CTRL + S. n cazul calculatoarelor, evoluia interfeelor i rolul lor n asigurarea unei bune comunicri om-calculator se pot urmri mult mai uor. n anii 40, primele calculatoare electronice ENIAC, EDVAC, EDSAC etc. nu dispuneau de o interfa-utilizator n sensul atribuit astzi termenului: aveam de-a face mai degrab cu o interaciune fizic a programatorilor cu calculatorul. De altfel, mai mult de jumtate din timpul de lucru era ocupat de operaiile de introducere direct n calculator (prin setarea switch-urilor de pe panouri) a datelor de intrare. Putem spune c acele interfee semnau nc foarte bine cu interfeele actualelor aparate electrocasnice. n anii 50, calculatoarele au cptat interfee electromecanice: perforatoare de cartele, cititoare de cartele etc. Au nceput s apar ns limbajele de programare de tip alfanumeric (limbajele de asamblare). Primii pai ctre interfeele moderne om-calculator au fost fcui n anii 60. Atunci au aprut primele soluii exclusiv electronice. Calculatoarele sunt nzestrate cu terminale electronice de tip alfanumeric tabular (terminalele de tip TTY), iar limbajele de programare ctig n indicialitate prin construirea instruciunilor cu cuvinte mprumutate direct din limba englez, fr a li se schimba nelesul universal acceptat n conversaia natural. Noiunea de interfa grafic cu utilizatorul, aa cum o cunoatem astzi, s-a cristalizat n anii 70, ca urmare a studiilor ntreprinse de o echip de cercettori de la Xerox Palo Alto Research Center, dar
14

1. Introducere ______________________________________________________________

nu a prsit prea curnd laboratorul. Pentru aceasta era nevoie s apar calculatoarele personale i s se generalizeze utilizarea lor, astfel nct ele s fie manevrate de persoane cu cele mai diverse tipuri de profesiuni. Anii 80 au fost martorii dezvoltrii i generalizrii utilizrii interfeelor grafice, ca urmare a evoluiei calculatoarelor personale. Acestea se bazau n mod esenial pe analogia cu modul de lucru al funcionarului dintr-un birou: exist o suprafa de lucru (ecranul terminalului nlocuiete suprafaa biroului), pe care se afl mai multe dosare cu lucrri (directoarele cu fiiere) i diverse obiecte, ntre care chiar i un co n care se arunc informaiile (fiierele) inutile. Aceast nou paradigm aduce dou nouti eseniale: utilizarea unor imagini grafice ct mai asemntoare obiectelor reale ale cror proprieti le preiau; n acest fel, comunicarea om-calculator pierde din simbolism i ctig n iconicitate i indicialitate; furnizarea ctre utilizator a mai multor canale de comunicare: tastatura, barele de iconi, meniurile; n acest fel, aceeai comand, de printare de exemplu, poate fi transmis calculatorului n mai multe feluri: cu ajutorul iconului care reprezint o imprimant, alegnd comanda PRINT din meniul FILE, sau apsnd tasta cu litera P simultan cu tasta CTRL. Ca urmare, noul mod de comunicare cu calculatorul s-a orientat n mod esenial ctre utilizator (care nu mai este neaprat un programator). Pe de o parte, timpul de nvare s-a redus simitor, utilizatorul primind o serie de variante din care trebuie s aleag, fr s trebuiasc s mai memoreze linii ntregi de comenzi. Pe de alt parte, timpul de rspuns s-a diminuat de asemenea foarte mult, utilizatorul primind aproape instantaneu pe ecranul terminalului mesajul de rspuns al calculatorului la comanda transmis.

15

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Interfeele grafice cele mai cunoscute (vezi [Hamciuc, 2002]) sunt cele proiectate de Microsoft (Windows), Apple (MacIntosh i System 7), Digital Research (GEM), VisiCorp (Vision). Prima versiune de Windows a aprut n 1980; n 1990, este lansat Windows 3.0, iar n 1991, Windows 3.1, care, dei rula nc sub DOS, s-a impus graie facilitilor OLE i drag and drop. Windows 95 a fost prima versiune care putea rula independent de DOS. Au urmat Windows 98, Windows NT, Windows 2000, Windows XP etc. 1.3. Interfeele grafice-utilizator i criticii lor Istoria evoluiei interfeelor grafice-utilizator este i istoria limitrilor puse n eviden de creterea n dimensiuni i complexitate (dar i n cost!) a aplicaiilor proiectate pentru calculator. 1.3.1. Limitrile interfeelor de tip prompter-linie de comand Primele interfee grafice cu utilizatorul au fost cele de tip prompter-linie de comand, care au aprut o dat cu nzestrarea calculatoarelor cu terminale de tip TTY. Acest tip de terminal a impus un anumit stil de comunicare om-calculator: aplicaia punea ntrebri utilizatorului, iar acesta rspundea prin tastarea comenzii: un ordin nsoit de valori pentru parametrii asociai. Interfaa prompter-linie de comand era adecvat aplicaiilor de mici dimensiuni i cu un numr mic de utilizatori i i-a demonstrat rapid 2 dezavantaje: era orientat ctre calculator nu ctre utilizator, era inflexibil i dificil: utilizatorul trebuia s memoreze comenzi lungi, cu muli parametri i diferii separatori. Se revenea cumva la situaia din anii 40, cnd primele limbaje de programare codurile main erau mai adecvate calculatoarelor dect programatorilor,
16

1. Introducere ______________________________________________________________

ceea ce, la momentul respectiv, a i dus pentru scurt timp la o criz: nu erau muli specialiti dispui s prseasc laboratoarele i bibliotecile pentru a memora iruri de instruciuni n cod binar. 1.3.2. Limitrile interfeelor orientate spre comenzi Ca urmare a evidenierii dezavantajelor interfeelor de tip prompter-linie de comand descrise mai sus, a avut loc o modificare a modului de comunicare om-calculator: la nivelul superficial, prin gruparea mai multor prompt-uri n meniuri ierarhizate, la nivelul profund, prin mutarea centrului de control al comunicrii dinspre calculator ctre factorul uman. A aprut astfel urmtoarea generaie de interfee grafice, interfeele orientate spre comenzi (funcii). Acesta este i n prezent un tip de interfa eficient i flexibil, care faciliteaz dezvoltarea aplicaiilor, dar a unor aplicaii de tip verb-obiect. Dezavantajele sale sunt legate de: modul de transmitere a comenzilor: de la tastatur (susceptibil de erori frecvente), dificultatea accesrii: utilizatorul nu mai trebuie s memoreze linii de comand, dar trebuie s memoreze starea sistemului, abordarea orientat spre comand n proiectarea aplicaiilor. Aceasta nseamn c fiecare comand reprezint o aciune care trebuie executat asupra unor entiti precizate cu ajutorul argumentelor comenzii. Limitarea const n faptul c verbul comenzii trebuie s aib incorporate criterii de selecie a obiectelor (de exemplu, delete word, delete character etc.). Fiecare dintre aceste limitri a devenit subiectul cercetrilor n scopul gsirii unor noi soluii radicale.
17

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Limitrile generate de utilizarea tastaturii au fost reduse de urmtoarele modificri: la nivelul superficial: utilizarea prescurtrilor pentru comenzi (cheile rapide i, mai trziu, iconii), gruparea i organizarea diferit a spaiului de comand (componena diferit a meniurilor i toolbarurilor n funcie de starea aplicaiei), posibilitatea oferit utilizatorului de a grupa i organiza spaiul de comand cu ajutorul macrocomenzilor i scripturilor (n acest fel i se ofer utilizatorului, parial, controlul asupra proiectrii interfeei i, mai mult chiar, are loc o abstractizare a interfeei n raport cu aplicaia, interfaa putnd s fie modificat de o persoan care nu a proiectat aplicaia); la nivelul profund: nlocuirea terminalelor de tip TTY (teletypewriter) cu terminale de tip CRT (cathodic ray tube). Astfel, interfaa orientat spre comenzi a fost nlocuit cu interfaa orientat spre meniuri. Spaiul de comand s-a abstractizat i s-a supus complet ordinelor utilizatorului. Proiectantul de aplicaii a trebuit s l trateze pe utilizator ca pe o entitate separat (lucru care a accentuat specializarea proiectanilor care s-au dedicat fie domeniului aplicaiei, fie interfeei aplicaiei). Limitrile generate de necesitatea memorrii strii sistemului au fost rezolvate: la nivelul superficial: prin gsirea unor metastrategii de grupare i ierarhizare a comenzilor, inclusiv a unor noi comenzi de interogare asupra strii sistemului i asupra comenzilor disponibile (listarea diferit a comenzilor active i inactive, meniurile contextuale etc.);
18

1. Introducere ______________________________________________________________

la nivelul profund: prin reprezentarea strii sistemului la nivelul utilizatorului (de exemplu, prin nlocuirea editoarelor-text de tip linie cu editoare-text de tip ecran). A aprut astfel interfaa de tip WYSIWYG (What You See Is What You Get). Limitrile generate de abordarea orientat spre comenzi au fost eliminate la nivelul superficial, prin nlocuirea orientrii verb-obiect cu orientarea obiect-verb (n acest caz, comenzile se compun din dou pri: partea n care se selecteaz obiectul i partea n care se specific efectiv comanda; de exemplu: n fereastra aplicaiei Windows Explorer se alege mai nti directorul sau fiierul i apoi se deschide meniul rapid sau barmeniul i se alege comanda dorit: PRINT, COPY, SAVE etc.). Din pcate, aceast schimbare a nlocuit o limitare cu alta: utilizatorul nu mai trebuie s memoreze parametri i valori (adic obiecte), ci trebuie s in minte ce aciuni sunt asociate fiecrui obiect! Aceast limitare i manifest adevrata amploare abia atunci cnd programatorul ncearc s transforme o interfa bazat pe comenzi ntr-o interfa de tip WYSIWYG i s o combine cu o interfa bazat pe meniuri. n cazul interfeei bazate pe meniuri, deci n cazul orientrii verb-obiect, utilizatorul ncepe printr-o abordare modal (specificarea unei aciuni dintr-un meniu) i trece n modul selecie (definirea obiectelor din reprezentarea domeniului asupra crora se va executa aciunea). n cazul abordrii obiect-verb eliminarea abordrii modale, pstrarea meniurilor i a reprezentrii domeniului aciunii i utilizarea interfeei WIMP (Windows, Icons, Menus, Pointing Device) permit o manipulare direct a interfeei (interfaa direct manipulabil numindu-se i interfa de tip point-and-click). 1.3.3. Limitrile interfeelor de tip point-and-click Toate aceste modificri prezentate mai sus, variate ca surs precum i ca nivel de manifestare, au impus supremaia interfeei de tip point-and-click i au condus la separarea acesteia de aplicaie. Ca urmare, proiectarea aplicaiei i
19

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

proiectarea interfeei sale au nceput s se realizeze separat, de ctre echipe specializate de programatori. O aplicaie const acum din 3 componente: 1. componenta funcional, care realizeaz sarcinile specifice pentru care a fost proiectat aplicaia; 2. componenta de prezentare, care realizeaz reprezentarea grafic a domeniului i obiectelor virtuale care vor permite interaciunea cu aplicaia; 3. administratorul dialogului, care controleaz comunicarea dintre componenta funcional i componenta de prezentare, precum i aspectul obiectelor virtuale pentru interaciunea cu aplicaia. Acest model a aprut n anul 1985 i, de atunci, att domeniul aplicaiilor ct i tehnologiile de proiectare au evoluat n mod semnificativ. Ca urmare, au aprut zeci de standarde industriale i instrumente dedicate de dezvoltare a interfeelor, care au facilitat semnificativ sarcina dezvoltatorilor de aplicaii i interfee dar numai n ceea ce privete componenta de prezentare; n ceea ce privete componenta funcional, dezvoltatorii sunt nc confruntai cu aceeai problem a administrrii volumelor mari de informaie: n absena unei riguroase organizri a acesteia interfaa devine inutilizabil. Din pcate i interfeele de tip point-and-click sufer de mai multe limitri: Interfeele de tip point-and-click sunt n mod esenial echivalente cu limbajele de programare de tip secvenial. Aceast limitare este destul de greu de sesizat i const n faptul c nici aceste interfee nu dispun de structuri de test i cu att mai puin de structuri repetitive, lucru necesar pentru automatizarea multora dintre cele mai simple aciuni ale utilizatorilor asupra aplicaiei.

20

1. Introducere ______________________________________________________________

Acest dezavantaj poate fi combtut pe dou ci: manipularea indirect a interfeei i, respectiv, modificarea domeniului instrumentelor de lucru. a) Manipularea indirect (gruparea atributelor i abstractizarea): modul de lucru intrinsec interfeelor de tip point-and-click (selectarea obiectelor urmat de selectarea operaiilor de executat asupra lor) devine extrem de plictisitor pe msur ce numrul obiectelor disponibile n interfa crete. Aa s-a impus reciproca unui bine-cunoscut adagiu, i anume: un cuvnt valoreaz ct o mie de imagini! Entuziasmul generat de utilizarea imaginilor n comunicarea om-calculator a fcut s scad dramatic interesul pentru utilizarea n proiectarea interfeelor grafice a tuturor cuceririlor lingvistice aprute ca urmare a attor milenii de evoluie lingvistic lent, dar continu. Sugestivitatea oferit de iconicitate i indicialitate a aruncat ntr-un con de umbr numeroasele i variatele beneficii ale utilizrii simbolurilor n comunicarea experienelor i aciunilor. Iconii sunt exceleni pentru a descrie obiecte, dar complet nepotrivii pentru a descrie aciuni (operaia de salvare este descris prin obiectul cu care se execut, disketa). Acest lucru a fcut ca dominanta interfeelor grafice s o constituie obiectele, nu aciunile pe care le fac posibile. Or, aciunile, experienele pot fi clasificate eficient numai cu ajutorul cuvintelor, deci cu mijloace convenionale, simbolice. Analog, numele date obiectelor le pot clasifica i grupa eficient pe acestea n vederea manipulrii simultane. Ajungem astfel la manipularea indirect a obiectelor, adic la manipularea direct a unei abstractizri a acestora, abstractizare care controleaz comportamentul obiectului propriu-zis. Exemple banale de astfel de manipulri indirecte sunt stilurile de formatare, fiierele-ablon etc. (vezi [Guastello, Trant, Korienek, 1989]. Avantajul manipulrii indirecte rezid n reducerea unui set mare de date (toate atributele obiectului) la un set mult mai mic
21

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

de date (atributele obiectului cu adevrat importante din punct de vedere semantic). Dezavantajul manipulrii indirecte const n faptul ca utilizatorul trebuie s asimileze abstractizarea respectiv, ceea ce presupune efort i timp de nvare suplimentar. De aceea, modul de grupare a atributelor i obiectelor, de atribuire a numelor trebuie s rimeze cu modul de lucru cu aplicaia nsi. b) Modificarea domeniului instrumentelor de lucru este un principiu mprumutat de proiectanii de interfee din sfera sistemelor de gestiune a bazelor de date. Majoritatea SGBD-urilor relaionale dispun de cel puin 3 tipuri de instrumente de lucru: (i) un limbaj de programare de generaia a 3-a; (ii) un limbaj de interogare de generaia a 4-a (de tip SQL); (iii) un instrument interactiv ad-hoc de interogare. Toate acestea sunt interschimbabile i ofer mai multe moduri de vizualizare a aceluiai obiect. Avantajul acestui principiu const n varietatea oferit; ca atare, cel puin unul dintre instrumentele de lucru ar putea i ar trebui s fie simbolic i de tip text. i n acest caz dezavantajul provine din sarcina suplimentar de nvare pus asupra utilizatorului. Interfeele de tip WYSIWYG ascund structura aplicaiei. O interfa de tip WYSIWYG este eficient n cazul aplicaiilor interactive; altfel, ea poate fi contraproductiv deoarece ascunde elementele de abstractizare care structureaz aplicaia. Aceast limitare este destul de semnificativ: ntruct abstractizarea nu are ntotdeauna o legtur evident cu ceea ce se afieaz pe ecran, utilizatorul trebuie s recurg la memorare sau s ncerce singur s deduc structura intern a aplicaiei pentru a ajunge la aceast abstractizare. i cum memoria uman este una dintre
22

1. Introducere ______________________________________________________________

cele mai costisitoare componente ale oricrei strategii, tocmai aceste abstracii ar trebui s se afle n centrul reprezentrilor. Interfeele grafice nu sunt realmente grafice. Majoritatea instrumentelor de proiectare a interfeelor grafice se axeaz pe domeniul de control i comand a aplicaiei i se preocup prea puin de integrarea domeniului reprezentrii aplicaiei. Ca atare, avem de-a face n general nu cu interfee grafice, ci cu sisteme de meniuri, n care reprezentarea grafic a domeniului aplicaiei cade n sarcina proiectantului nevoit s o realizeze ntr-o etap ulterioar, prin apelarea unor primitive grafice. O interfa grafic n toat puterea cuvntului ar trebui s ofere o reprezentare complet a sistemului pe care l controleaz i comand, precum i capacitatea de a interaciona prin intermediul acestei reprezentri. Cu alte cuvinte, interfaa grafic ar trebui s permit: 1. modelarea grafic complet a sistemului, 2. descrierea datelor modelate, 3. relaiile dintre grafic i date. Abundena de faciliti oferite utilizatorului conduce la o abordare suboptimal a interfeei. Fiecare facilitate incorporat n interfa chiar dac este ignorat i nu este accesat de utilizator are un cost propriu. Ca urmare, aglomerarea de astfel de faciliti mrete costul de nvare i cunoatere a interfeei i conduce treptat la o utilizare ineficient a acesteia. O cale de contracarare a acestei limitri este incorporarea de elemente de inteligen artificial n dezvoltarea interfeei. Aceasta reduce numrul de opiuni disponibile, constrngnd utilizatorul s urmeze anumite direcii de lucru sau ajutndu-l s fac o alegere corect. Se pot da mai multe exemple: dezactivarea acelor comenzi din meniuri, care nu ar putea fi accesate n starea curent a aplicaiei (afiarea lor cu caractere estompate), lucru care reduce semnificativ erorile de compatibilitate ntre operanzi (obiecte) i operatori (comenzi),
23

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

crearea i utilizarea meniurilor rapide, afiarea meniurilor prescurtate, coninnd comenzile cel mai frecvent accesate de utilizator, opiunea de a genera vectori de controale grafice la iniierea operaiei de creare a unui control grafic prin copiere i lipire. Abundena de faciliti oferite utilizatorului conduce la scderea vitezei de lucru cu interfaa. O alt urmare a beiei de faciliti incorporate n interfa este creterea timpului de acces datorit faptului c secvenele de cod trebuie s trateze toate posibilitile de abordare a interfeei, chiar dac unele dintre ele vor fi rar sau foarte rar accesate. Metode de contracarare a acestei limitri (mprumutate din lumea SGBD-urilor) sunt: discriminarea tratrii facilitilor care sunt mai rar accesate, procesarea distribuit i interoperativitatea (modelul client-server, tehnica OLE de la Microsoft etc.). 1.4. Perspective n dezvoltarea interfeelor grafice Ca urmare, viitoarele generaii de interfee grafice vor trebui s in cont de aceste deziderate. Cele mai probabile direcii de dezvoltare sunt: 1. Standardizarea componentelor predefinite n prezent, standardizarea proiectrii interfeelor grafice se reduce la utilizarea unor biblioteci de apeluri de subrutine, executate sub C sau C++ sau sub alte limbaje de programare de nivel nalt sau la utilizarea unor aplicaii parial interactive (numite constructori de interfee). Adevraii programatori le gsesc ineficiente, iar profanii, de-a dreptul inutilizabile. 2. Capacitatea de a vizualiza un numr mare de obiecte, specifice domeniului care trebuie automatizat Actuala interfa grafic, proiectat dup modelul biroului (aa-numita white-collar paradigm), i-a demonstrat eficiena n
24

1. Introducere ______________________________________________________________

aplicaii de tipul procesrii documentelor, dar i-a trdat limitele atunci cnd s-a confruntat cu alte tipuri de aplicaii (automatizarea operaiilor din unitatea de control a unei uzine, de exemplu; aici, este necesar un alt tip de model, mai aproape de obiectele fizice prezente: valve de nchidere, cadrane ale aparatelor de msur etc.). 3. Capacitatea de a procesa simultan mai multe evenimente recunoscute de diferite obiecte virtuale prezente n interfa 4. Capacitatea de a satisface cerinele de proiectare ale unei comuniti din ce n ce mai neomogene de programatori i, corespunztor, capacitatea de a satisface cerinele de utilizare ale unei comuniti la fel de neomogene de utilizatori Ca urmare a creterii complexitii aplicaiilor software de dezvoltare, specializarea se va accentua proporional cu valoarea profesional a comunitii respective de programatori. Exist deja programatori specializai n testarea programelor, alii n evaluarea lor, alii n studierea impactului programelor create asupra comunitilor profesionale sau particulare crora li se adreseaz. n mod similar, pe msur ce calculatoarele vor cuceri noi sfere ale activitii noastre profesionale i domestice, va deveni tot mai evident varietatea de utilizatori crora trebuie s li se adreseze: utilizatori fr nici un fel de cunotine privind utilizarea unui calculator ntre care exist o submulime de amatori interesai sau chiar pasionai, utilizatori care folosesc la serviciul lor aplicaii simple, precum cele din grupul Ms Office 4 ntre care exist o submulime de pseudoprogramatori care i creeaz singuri fiiere-ablon sau macrocomenzi. Dar cea mai important difereniere la nivelul comunitii utilizatorilor este cea ntre aanumiii front-users i aa-numiii end-users: primii sunt utilizatori
4

Este de ateptat ca numrul acestora s creasc n continuare, datorit noilor venii: FrontPage (pentru dezvoltarea paginilor Web) i InfoPath (pentru proiectarea celor mai variate tipuri de formulare de colectare a datelor). 25

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

permaneni ai sistemului informatic i numai accidental ai interfeei grafice (ei citesc rapoarte generate de ali utilizatori etc.), ultimii sunt utilizatori la fel de frecveni ai sistemului informatic ca i ai interfeei grafice: sarcinile lor obinuite au constat ntotdeauna n pregtirea formularelor de culegere a datelor i nregistrarea efectiv a acestor date, sarcini care acum se realizeaz numai cu ajutorul calculatorului. 5. Crearea interfeelor orientate-obiect n sensul propriu al cuvntului Urmtorul exemplu ilustreaz diferenele dintre o interfa orientat spre comenzi i una orientat spre obiecte i arat clar c atributul grafic nu confer automat interfeei caracterul de orientare spre obiect. S presupunem c utilizatorul trebuie s selecteze anumite informaii dintr-o baz de date, s le formateze i apoi s listeze raportul astfel generat. ntr-o interfa grafic orientat spre comenzi (funcii), utilizatorului i se ofer o fereastr-dialog (de exemplu, o gril QBE), n care i se cere s specifice criteriul de selecie; apoi, utilizatorul poate selecta opiunile de formatare dintr-un meniu derulant i, n fine, poate da comanda de printare prin clic, pe suprafaa iconului reprezentnd o imprimant. Toate operaiile se execut grafic i sunt puternic centrate pe aciunile pe care trebuie s le execute utilizatorul (adic, pe comenzile pe care acesta i le transmite calculatorului), i nu pe datele efective pe care utilizatorul trebuie s le manipuleze pentru a obine raportul (de fapt, utilizatorul vede datele pe care trebuie s le prelucreze numai dup executarea i a ultimului pas din secvena de prelucrri; el trebuie s recurg la memorie pentru a indica numele tabelelor care conin datele, criteriul de selecie, sintaxa acestuia etc.). ntr-o interfa orientat spre obiecte utilizatorului trebuie s i se ofere mai nti o fereastr-dialog coninnd mostre de nregistrri din baza de date (ceea ce faciliteaz n mod semnificativ sarcina utilizatorului de a-i aminti coninutul bazei de date i de a compune un criteriu de selecie corespunztor). Ca urmare, fereastra-dialog va afia datele care verific acel
26

1. Introducere ______________________________________________________________

criteriu de selecie, iar caracterul interactiv al interfeei va permite modificarea criteriului i afiarea datelor care l verific n mod repetat, pn cnd utilizatorul este satisfcut de rezultat. Analog, formatarea se va face prin modificarea aspectului ferestrei-dialog pn la obinerea formatului dorit. Ultimul pas va fi tot printarea prin clic pe iconul cu imprimanta. Rezultatul nu va mai fi ns la prima vedere, ci va fi unul cu care utilizatorul s-a familiarizat graie feed-back-ului imediat primit pe parcursul tuturor acestor operaii centrate de aceast dat pe datele prelucrate.

27

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

2. PROIECTAREA INTERFEELOR GRAFICE 2.1. Cteva caliti eseniale ale interfeelor grafice Scopul activitii de proiectare a interfeelor grafice (activitate despre care vom vedea c poate i trebuie s recurg la instrumente de lucru din domenii variate) este acela de a crea o aplicaie de calitate. Neputnd defini riguros termenul, autorii crilor i articolelor de specialitate au ncercat s l descrie cu ajutorul unei liste de parametri. Astfel, o interfa grafic de calitate trebuie s fie: intuitiv: aspectul grafic al interfeei trebuie s reproduc elemente cu care utilizatorul este familiarizat i nu trebuie s altereze n nici un fel modul n care utilizatorul era obinuit s interacioneze cu elementele respective (evident, o mare varietate de utilizatori induce o mare varietate de accepiuni ale termenului intuitiv: ceea ce este intuitiv pentru unii utilizatori este ncifrat pentru alii); extensibil: designul interfeei trebuie s permit modificarea i mbogirea acesteia pe msura modificrilor hardware i software aprute (setul de controale grafice Windows 9x i 2000 este mult mai amplu dect cel din Windows 3.1); atractiv: aspectul grafic al interfeei trebuie s aib caliti estetice menite s l fac pe utilizator s acceseze cu plcere interfaa; uor de nvat: aceast calitate este strns legat de prima: modul de accesare a unei interfee intuitive va fi uor de nvat; uor de utilizat: aceast calitate este considerat de muli utilizatori ca esenial n evaluarea interfeelor, deoarece accesarea interfeei se nva o singur dat, dar se execut de nenumrate ori. n fapt, aceast calitate poate fi privit ca o rezultant a celor de mai sus.
28

2. Proiectarea interfeelor grafice ______________________________________________________________

2.2. Proiectarea informal

interfeelor

grafice: o problem

Este binecunoscut clasificarea problemelor n: probleme informale; probleme formale: * de analiz, * de sintez. Problemele specifice activitii de proiectare (cum sunt cele legate de crearea interfeelor grafice) sunt studiate n [Ford, Marchak,1997] prin contrast cu problemele specifice activitilor tiinifice, tehnice, inginereti. Sunt urmrite dou criterii: (a) modul de rezolvare, (b) modul de evaluare a soluiei. (a) Dup primul criteriu, problemele de proiectare sunt n mod esenial probleme informale (Ford i Marchak le numesc wicked, adic rutcioase, poznae), n timp ce problemele specifice activitilor tiinifice, tehnice, inginereti sunt n mod esenial probleme formale de multe ori chiar probleme de sintez, n care se cunoate inclusiv metoda de rezolvare. Ei citeaz i ali autori care: caracterizeaz problemele de proiectare ca probleme prost formulate, de complexitate dezarmant, n care informaia primar este derutant, iar beneficiarii i factorii de decizie sunt numeroi i au interese care vin n conflict unele cu altele (conform matematicianului Horst Rittel), sau folosesc dihotomia probleme nedeterminate vs. probleme determinate. Primele sunt definite prin chiar soluia aleas, soluie care este numai una dintre multiplele combinaii de soluii posibile (conform R. Buchanan), celelalte permit o analiz exhaustiv, ceea ce face ca soluia s decurg n mod logic din cerine.

29

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

O alt paralel care se face ntre problemele de proiectare i cele de inginerie se refer la modul de abordare: proiectanii ncep prin a propune direct o soluie problemei cu care se confrunt, soluie care le permite apoi s neleag mai profund problema propus, precum i calitile pe care trebuie s le comporte o soluie pentru a fi acceptabil. Acest demers iterativ de formulare i testare a ipotezelor i conjecturilor permite proiectanilor s avanseze n clarificarea, nelegerea i rezolvarea problemei. Din contr, inginerii nu propun o soluie problemei de rezolvat dect dup ce au analizat complet toate aspectele acesteia. ntruct proiectanii nu pot determina toate aspectele problemei nainte de a propune o soluie, activitatea de proiectare nu este o activitate formal, cu att mai puin, una algoritmic. (b) Al doilea criteriu necesit mai nti o definiie ct mai riguroas pentru sintagma proiect bun. Ford i Marchak consider c un proiect bun (deci i o interfa grafic bun) trebuie s rezolve ntr-un anumit context i pentru un anumit grup de utilizatori problema propus, n mod efectiv i eficient. De remarcat din nou precauia cu care se evit caracteristicile de generalitate i de completitudine. Mai mult, ei consider c un obiect bine proiectat este mai mult dect un obiect bine construit. Astfel, orice interfa grafic menit s acceseze o baz de date este bun dac ofer funciile de baz: interogare, actualizare etc. Utilizatorul o va prefera ns pe aceea care va fi i uor de nvat i simplu de utilizat. Prin urmare, un proiect bun trebuie s satisfac nu numai cerinele funcionale ci i cerinele estetice i emoionale ale utilizatorului. Consideraiile dezvoltate n [Ford, Marchak, 1997] subliniaz faptul c n realizarea unei bune interfee grafice dificultatea nu st numai n programarea ei, ci mai ales n proiectare. n acest sens, un ajutor esenial l ofer instrumentele de lucru provenind din domenii mai mult sau mai puin nrudite, cum sunt analiza i proiectarea sistemelor, semiotica etc.
30

2. Proiectarea interfeelor grafice ______________________________________________________________

2.3. Proiectarea interfeelor grafice i analiza i proiectarea sistemelor Unul dintre blocurile constitutive ale unui sistem informatic (vezi [Whitten, Looney, 1999 1 ]) este cel al interfeelor: cu utilizatorii sistemului, cu alte sisteme informatice, cu mediul de lucru. Ca atare, proiectanii interfeelor grafice cu utilizatorii pot prelua metodologia folosit de analitii de sistem pentru realizarea sistemelor informatice. Aceast metodologie poart numele de ciclu de dezvoltare a sistemelor. n general, ea const din urmtoarele 5 etape (vezi i Figura 1): planificarea = identificarea ariei i granielor problemei i stabilirea obiectivelor i a strategiei de proiectare; = studierea i analiza problemelor, cauzelor i efectelor, urmat de identificarea i analiza condiiilor care trebuie satisfcute de orice soluie corect; = dac este cazul, proiectarea soluiei (nu orice soluie presupune o operaie de proiectare); = implementarea (construirea) soluiei; = analizarea soluiei implementate, rafinarea proiectului, implementarea mbuntirilor.

analiza

proiectarea

implementarea ntreinerea

abordare inspirat i modificat din motive didactice de articolul lui John Zachman: A Framework for Information Systems Architecture, IBM Systems Journal, 26 (1987), no.3, p. 276-292. 31

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

32

2. Proiectarea interfeelor grafice ______________________________________________________________

2.4. Scurt introducere n semiotic Semiotica este tiina care studiaz formarea i utilizarea semnelor (vezi [Marcus, 1979], [Guiraud, 1971]). Fiecare obiect din lumea nconjurtoare poate dobndi/pierde la un moment dat calitatea de a funciona ca semn. Funcia de semn a unui obiect este capacitatea sa de a reprezenta (de a ine loc de) ceva, pentru cineva, ntr-un anumit context natural sau social. Avem astfel de a face cu o structur ternar: 1. semnul (de exemplu, cuvntul cal), 2. referentul su (obiectul, procesul, evenimentul, aciunea la care se refer el; de exemplu, toi caii care au existat, exist sau vor exista), 3. interpretantul (conform Charles Sanders Peirce) sau (conform Gottlob Frege) sensul (imaginea mental sau semnul echivalent pe care primul semn l creeaz n mintea cuiva; de exemplu, noiunea de cal (vezi [Marcus, 1979])). Se observ imediat c, n timp ce semnul este ntotdeauna perceptibil iar interpretantul este doar inteligibil, referentul poate fi concret sau abstract. Aceast calitate a referentului de a include entiti fizice dar i conceptuale deschide calea ctre iterarea proceselor semiotice: referentul unui semn poate fi el nsui un ntreg triunghi semiotic. Distingem astfel procese semiotice de ordinul nti (n care referentul aparine exclusiv lumii materiale) i procese semiotice de ordinul al doilea (n care referentul este un proces semiotic de ordinul nti). Procesele semiotice pot fi de ordine din ce n ce mai mari, pe msura aprofundrii procesului de abstractizare (metalimbajele indispensabile unor domenii ale tiinei i artei sunt o manifestare tipic a unor procese semiotice de ordin superior). n plus, faptul c referentul unui semn se poate constitui ntr-un triunghi semiotic (n care unul dintre elemente este un semn) face ca i semnele s poat fi de mai multe ordine: semne de ordinul nti (semnele uzuale, care sunt entiti materiale,
33

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

direct perceptibile prin simuri), semne de ordinul al doilea (triunghiurile semiotice generate de acestea) etc. O alt triad semnificativ pentru dezvoltarea semioticii este cea constituit de distinciile dintre: sintax (care se ocup cu studiul relaiilor dintre semnele unui sistem semiotic), semantic (care se ocup cu studiul relaiilor dintre semne i referenii lor), pragmatic (care se ocup cu studiul relaiilor dintre semne i cei care le percep i le utilizeaz). Procesele semiotice sunt intrinsec legate de evoluia fiinei umane, de procesele de cunoatere i comunicare (limbajul natural, scrierea etc.), dar rdcinile semioticii ca tiin par s fi aprut n antichitatea greac. Cel mai proeminent dintre precursorii acestei tiine este considerat G.W. Leibnitz, cu care calculul devine o parte a teoriei semnelor. ntemeietor al semioticii moderne este considerat matematicianul, fizicianul, logicianul i filosoful Ch. S. Peirce (1839-1914), a crui oper este cunoscut numai fragmentar ([Marcus, 1979]). Termenul de semiotic pare s fi fost utilizat de filosoful englez John Locke (1632-1704) cu accepia de doctrin a semnelor , el prelundu-l din scrierile despre muzic ale lui John Wallis. Dup tipul de legtur dintre semn i referentul su, semnele se clasific n semne iconice, semne indiciale i semne simbolice. Funcia iconic are n vedere existena unor proprieti comune semnului i referentului. Conform Ch. S. Peirce, exist trei tipuri de semne iconice: imagini (de exemplu, fotografiile, hrile), reprezentri grafice (de exemplu, semnele de circulaie, formulele algebrice etc.), metafore.

34

2. Proiectarea interfeelor grafice ______________________________________________________________

Funcia indicial are n vedere o anumit contiguitate a semnului cu referentul (de exemplu, un raport de la cauz la efect, de la parte la ntreg etc.). Funcia simbolic are n vedere o legtur pur convenional ntre semn i referent. Semnele iconice i semnele indiciale sunt semne motivate: legtura dintre semn i referentul su este motivat de o proprietate comun (n particular, o analogie), respectiv de un raport de contiguitate. Semnele simbolice sunt semne nemotivate; cel mai important semn simbolic este semnul verbal. Funciile semiotice sunt graduale: se poate vorbi de un grad de iconicitate, despre unul de indicialitate i despre unul de simbolizare ale aceluiai proces semiotic. Semnele simbolice reprezint treapta cea mai nalt de dezvoltare a proceselor de semnificare i au cel mai pronunat caracter social (sunt generate exclusiv prin puterea unei convenii instaurate de o comunitate uman). Limbajul uman chiar dac este bogat n fenomene de iconicitate i indicialitate se bazeaz mai ales pe semne simbolice. 2.5. Cele 11 componente ale procesului de comunicare Procesele de comunicare, de o mare varietate, cu diferite grade de complexitate, au totui o structur comun, care a fost pus n eviden prin cercetri interdisciplinare: Lingvistic, Teoria informaiei, Semiotic. Astfel, au fost identificate unsprezece componente prezente n procesele de comunicare: 1. sursa (adresantul, care iniiaz comunicarea), 2. transmitorul (agentul care codific mesajul pentru a putea fi transmis prin canalul de comunicare respectiv), 3. receptorul (agentul care primete mesajul codificat i l decodific pentru a putea fi neles de destinatar),
35

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

4. destinatarul (cel cruia i este adresat mesajul), 5. codul (limbajul n care trebuie tradus mesajul, pentru a putea fi transmis pe canalul de comunicare, i care ar trebui s comporte faciliti de detectare i corectare a erorilor de transmitere), 6. mesajul (care exprim o anumit realitate), 7. canalul (mediul prin care se realizeaz comunicarea), 8. contextul conceptual, 9. contextul referenial, 10. observatorul (care nu face parte din contextul conceptual sau referenial al mesajului i astfel poate clarifica erorile aprute n sfera semantic sau pragmatic a mesajului), 11. zgomotul (n sensul de perturbare; care poate mpiedica transmiterea i recepionarea corect i complet a mesajului). Exist situaii comunicaionale n care unele dintre componente se suprapun ca, de exemplu, n cazul comunicrii umane verbale (sursa i transmitorul, respectiv destinatarul i receptorul, sunt de obicei una i aceeai persoan). Fiecare component ndeplinete o anumit funcie n procesul de comunicare: 1. funcia expresiv: indic atitudinea adresantului n procesul de comunicare, 2. funcia de codificare, 3. funcia de decodificare, 4. funcia conativ: prezent mai ales n procesele de comunicare de tip imperativ sau interogativ, 5. funcia metalingvistic: subliniaz codul i este esenial n procesele de comunicare n care limbajul obiect (care este studiat) i metalimbajul (limbajul cu ajutorul cruia se exprim ipotezele de lucru i rezultatele cercetrii) coincid, 6. funcia poetic: subliniaz mesajul i are valori diferite ntr-un enun tiinific unde este preponderent cognitiv sau n unul artistic, 7. funcia fatic: controleaz buna funcionare a canalului de comunicare, 8. funcia intensional,
36

2. Proiectarea interfeelor grafice ______________________________________________________________

9. funcia extensional, 10. funcia terapeutic, 11. funcia perturbatoare. Aspectele semiotice (paradoxuri 2 i antinomii 3 ) legate de comportamentul acestor 11 funcii au fost studiate n [Marcus, 1997] i [Marcus, Ttrm, 1987]: funcia metalingvistic se autosaboteaz (este paradoxal: suma ponderilor n ciclul format mpreun cu funciile de codificare, poetic i de decodificare este negativ: 1); funcia expresiv se autofavorizeaz (este antinomic: suma ponderilor n ciclul format mpreun cu funciile de codificare, decodificare i poetic este pozitiv: +2). 2.6. Proiectarea interfeelor grafice; aspecte semiotice Procesul de comunicare om-calculator are trei componente: comunicarea om-calculator, comunicarea calculator-om, comunicarea calculator-calculator. Conform [Calude, Marcus, 1981], eterogenitatea adresantului n raport cu destinatarul la nivelul primelor dou componente determin structura codului folosit n procesul de comunicare: acesta nu este nici natural nici formal, sau altfel spus: este n
Fie A i B dou funcii de comunicare; perechea (A,B) mpreun cu o relaie de negare constituie un semiparadox (de exemplu: dezvoltarea funciei expresive, A, conduce la diminuarea funciei de codificare, B). Dac att (A,B) ct i (B,A) sunt semiparadoxuri, atunci perechea (A,B) este un paradox. 3 Fie A i B dou funcii de comunicare; perechea (A,B) mpreun cu o relaie de negare i una de afirmare constituie o semiantinomie (de exemplu: funcia conativ, A, face necesar prezena funciei expresive, B, dar totodat o menine la un nivel redus de manifestare). Dac att (A,B) ct i (B,A) sunt semiantinomii, atunci perechea (A,B) este o antinomie. 37
2

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

acelai timp i natural i formal! Ca n orice tip de limbaj artificial, semnele folosite sunt preponderent convenionale. Limbajele de programare nu reprezint dect o component adevrat, cea mai important i mai uor de studiat a procesului de comunicare om-calculator. Dar, aa cum studiul procesului de comunicare uman nu poate fi redus la studiul limbii naturale folosite, nici comunicarea om-calculator nu poate fi redus la studiul limbajelor de programare. Totui, de-a lungul anilor, aa s-a procedat, tocmai fiindc termenul om din sintagma comunicare om-calculator se referea de obicei numai la programator (s ne amintim c, pn la apariia calculatoarelor personale, codul scris de programator era trecut pe cartele perforate i introdus n calculator de un operator specializat care, de asemenea, trebuia s introduc i unele comenzi speciale de montare a suporturilor de date etc.; or, acest operator ca i aciunile sale formau o alt component, la fel de important a procesului de comunicare om-calculator: transmitorul). 2.6.1. Aspecte convenionale i motivaionale n limbajele de programare Limbajele de programare au fost clasificate pe niveluri n funcie de relaia lor cu limba englez: fiecare generaie de limbaje de programare a nsemnat nu numai un instrument de programare mai performant, ci i un mijloc mai natural pentru om de comunicare cu calculatorul. Pentru prima generaie de calculatoare electronice, codul main reprezenta singurul mijloc de comunicare om-calcuator. Considerat un limbaj de nivel inferior, codul main este un exemplu remarcabil de coexisten a funciei simbolice cu cea indicial, a elementului convenional cu cel motivat: reprezentarea operaiei de nmulire prin secvena binar 00100101 i atenueaz caracterul convenional dac avem n vedere faptul c operaia era efectuat cu ajutorul circuitelor electrice, ale cror pori aveau doar dou stri: nchis/deschis.
38

2. Proiectarea interfeelor grafice ______________________________________________________________

Limbajele de asamblare folosite pentru programarea calculatoarelor de generaia a doua reprezint rodul eforturilor de nlocuire a codurilor binare cu coduri mnemonice pentru operaii: A: nsemna o operaie de adunare, STO: o operaie de memorare etc. Astfel, aspectul motivaional al limbajului de programare a fost puternic subliniat. Necesitatea unui limbaj care s traduc codul scris n limbajul de asamblare n cod main a condus la apariia funciilor de codificare, poetic i fatic n procesul de comunicare om-calcuator. Generaia a treia de calculatoare a nsemnat apariia limbajelor de programare de nivel nalt i accentuarea funciei simbolice a codului; funcia indicial este nc foarte puternic datorit alegerii cuvintelor rezervate folosite n instruciuni dintr-o limb natural pe baza aciunilor similare pe care trebuiau s le desemneze n viaa real i n programare: READ, WRITE, DO etc. Aceasta a fcut ca, ncepnd cu generaia a treia, limbajele de programare s fie considerate procese semiotice de ordinul al doilea. Limbajele de programare de generaia a patra i a cincea nu au fcut dect s accentueze trsturile limbajelor de generaia a treia. Elementele de noutate din punct de vedere semiotic au fost impuse de trecerea de la programarea procedural la cea orientat spre obiecte i de apariia interfeelor grafice. 2.6.2.Aspecte convenionale i motivaionale n programarea orientat spre obiecte Trecerea de la programarea procedural la cea orientat spre obiecte a determinat modificri majore ale aspectelor semiotice ale disciplinei de programare din urmtoarele cauze: analogia direct (n fapt o funcie injectiv) dintre obiectele din domeniul problemei de rezolvat i obiectele din lumea real. n acest fel, triunghiul semiotic este perfect valid: semnul reprezentat prin cuvntul worksheet admite ca referent mulimea tuturor worksheet-urilor din toate workbook-urile Ms
39

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Excel n timp de interpretantul su este noiunea de worksheet din aplicaia Ms Excel: With Workbooks (Balanta). Worksheets (Cont). Cells (1,1) Analogia direct este o consecin a structurii bazate pe obiecte. Dac programarea este privit ca o simulare, atunci este mai uor s rezolvm problema propus alegnd obiecte dintr-o lume virtual dect bazndu-ne numai pe proceduri i aciuni. n plus, asemenea obiectelor din lumea real pe care le imit att de bine, obiectele virtuale folosite n programe au o stare i un ciclu de via propriu: ele pot fi create i distruse dup caz. Ca urmare, domeniul referentului este mult mai strns legat de lumea material dect nainte. muli termeni folosii n programarea orientat spre obiecte nu reprezint dect o discret rafinare a utilizrii lor din limbajul natural. Acest lucru a constituit o alegere programatic nc de la proiectarea, n 1983, a primului limbaj orientat spre obiecte dedicat calculatoarelor personale, Smalltalk. Limbajul era destinat a fi utilizat nu numai de ctre aduli ci i de ctre copii; ca atare, metaforele folosite pentru a exprima conceptele de programare fundamentale trebuiau s provin dintr-un context accesibil copiilor. Totodat, ele nu trebuiau s reduc puterea expresiv a limbajului fcndu-l neadecvat utilizrii de ctre aduli. Prin urmare, putem afirma c n timp ce limbajele de programare orientate spre obiecte rmn procese semiotice de ordinul al doilea, programarea orientat spre obiecte este mai degrab un proces semiotic de ordinul nti. una dintre metaforele eseniale din programarea orientat spre obiecte este aceea c obiectele comunic ntre ele trimind i primind mesaje (conform [Voss, 1991]). clasele sunt abloane pentru obiecte i se constituie ntr-o ierarhie; ca urmare, obiectele dintr-o clas au aceleai proprieti i motenesc proprietile tuturor claselor n care este inclus clasa lor. Acest lucru corespunde situaiei reale n care toi cinii Labrador au aceleai caliti i motenesc caliti
40

2. Proiectarea interfeelor grafice ______________________________________________________________

pe care le au numai cinii, nu i caii, de exemplu, dar i caliti pe care le au numai mamiferele, nu i psrile etc. 2.6.3.Aspecte convenionale i motivaionale n programarea vizual Programarea vizual revine la utilizarea limbajelor de programare de generaia a treia i a patra ntr-un mediu grafic sau vizual. Avem aici de a face cu o ntrire substanial a funciei iconice i o atenuare a celei simbolice n activitatea de programare. S lum exemplul editorului de texte Ms Word: utilizatorul care dorete s mute o anumit informaie dintr-un punct n altul al documentului poate recurge la una dintre urntoarele metode: alegerea cu mouse-ul a meniului EDIT i apoi a comenzii CUT (corespunztor procesului normal de gndire al unui lucrtor dintr-o editur), alegerea cu mouse-ul a iconului forfecu de pe toolbarul Standard al aplicaiei (corespunztor aciunii normale a unei persoane care taie cu foarfeca un articol dintr-un ziar pentru a-l pune ntr-un dosar, de exemplu), acionarea combinaiei de taste CTRL i X. Prima metod are cel mai pronunat caracter simbolic, deoarece se utilizeaz o secven de cuvinte-cheie preluate din limba natural: EDIT CUT; a doua metod se constituie ntr-un proces semiotic de ordinul al doilea cu un pronunat caracter iconic; n fine, ultima metod combin convenionalul pur: utilizarea tastei CTRL cu un proces semiotic de ordinul al doilea: utilizarea tastei X, litera cea mai apropiat ca aspect de o foarfec. Dac avem n vedere utilizarea extensiv a toolbarurilor n mediile de programare vizual, deducem c dintre cele 3 categorii de semne iconice: imagini, reprezentri grafice, metafore, programarea vizual recurge mai ales la imagini. Evident, aspectele motivaionale pot fi mai puternice n unele cazuri dect n altele; astfel, iconul pentru operaia de salvare a
41

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

unui fiier este o disket, cel pentru cutarea unei informaii este un binoclu sau o lup, n timp ce iconul pentru operaia de sortare n ordine cresctoare este perechea de litere A, Z nsoit de o sgeat ndreptat n jos. Un tip special de motivare apare n procesul semiotic de comunicare a comenzilor ctre calculator atunci cnd utilizatorul recurge nu la iconi sau meniuri ci la tastatur. n acest caz, mesajele ctre calculator sunt transmise cu ajutorul unei combinaii de 2 taste: o tast de control (CTRL, ALT, SHIFT, TAB) i o tast activ sau funcional. i n cazul acestor combinaii, gradul de indicialitate este variat: el este foarte sczut (ca n exemplul comenzii CTRL + A, unde A este iniiala cuvntului All, sau al comenzii ALT + O pentru derularea meniului FORMAT), mediu (ca n exemplul comenzilor CTRL + S, pentru salvare, CTRL + P, pentru listare print n limba englez) sau ridicat (ca n exemplul de mai sus al comenzii CTRL + X). 2.7. Proiectarea interfeelor grafice; aspecte cognitive Cunoaterea pe cale vizual a obiectelor este o condiie iniial pentru cunoaterea pe cale vizual a fenomenelor i aciunilor, precum i a obiectelor virtuale (vezi [Ttrm, 2002]); n articolul citat este abordat numai cunoaterea pe cale vizual a obiectelor, i anume din perspectiva relevanei pentru programarea vizual. n acest sens, se pornete de la distincia care trebuie operat ntre nivelul inferior i cel superior al vizualizrii, ntre percepia senzorial i cea conceptual, ntre proprietile unui obiect i aciunile pe care le poate el executa. Motivul este acelai: n cazul programrii vizuale, cunoaterea vizual este un proces de ordinul al doilea. Astfel, atunci cnd un utilizator vede pentru prima dat ntr-o interfa grafic (a unui mediu de programare sau a unei aplicaii) iconul cu disketa, de exemplu, el a beneficiat deja de cunoaterea vizual a disketei att la nivelul
42

2. Proiectarea interfeelor grafice ______________________________________________________________

inferior, ct i la cel superior. El a vzut i revzut mai multe diskete i a nvat ce caliti au (ce aciuni pot fi efectuate cu ajutorul lor). Cnd vede pentru prima dat imaginea disketei, el recurge la informaia pe care o deine deja despre obiectul real i deduce c obiectul virtual (iconul) i va permite s fac o copie a fiierului su. Ca urmare, utilizatorul execut un clic asupra iconului cu disketa (iconul Save) i i salveaz fiierul. Mai mult dect att, atunci cnd va lucra ntr-un alt mediu de programare vizual i va trebui s-i salveze informaia, utilizatorul va cuta n interfaa grafic aceeai imagine (un icon cu o disket) i va executa clic asupra acesteia. El va realiza astfel un proces de percepie conceptual a disketei, i anume, un proces de percepie conceptual de ordinul al doilea al obiectului real i un proces de percepie conceptual de ordinul nti al obiectului virtual (al iconului). Motivul este acela c iconul n sine este o imagine, dar n mediul de programare vizual el este un obiect propriu-zis aparinnd interfeei WIMP. Aceast observaie este consistent cu afirmaia din [Dretske, 1995], conform creia: cunoaterea conceptual urmeaz o structur ierarhic. Este subliniat astfel funcia indicial a cunoaterii conceptuale: Dretske arat c o persoan care urmrete (vede) starea/comportamentul unor obiecte poate vizualiza cu ochii minii starea/comportamentul altor obiecte (ca n cazul aparatelor de msur n relaie cu obiectele pe care le monitorizeaz: nivelul sczut al indicatorului de benzin l face pe ofer s vad cu ochii minii rezervorul aproape gol al mainii sale). n concluzie, interfeele grafice au modificat raportul de fore dintre funciile iconic i indicial, pe de o parte, i funcia simbolic a mediilor de programare vizuale orientate spre obiecte, pe de alta. Cea care a fost puternic ntrit este funcia iconic.

43

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

2.8. Avantajele i limitele metaforei n proiectarea interfeelor Orice activitate de proiectare ncepe cu dezvoltarea unui model conceptual al sistemului care trebuie creat. Aa cum am artat mai sus, acest model conceptual reprezint o prim soluie propus de proiectant pentru problema (informal) care trebuie rezolvat i, ca atare, el trebuie s fie satisfctor pentru un anumit grup de utilizatori i ntr-un anumit context de utilizare. Modelul trebuie s comporte o serie de elemente fundamentale: setul de operaii pe care le permite i instrumentele de executare a lor; structura i modul de navigare; modul n care diferitele componente ale sistemului comunic ntre ele. Dup prima implementare a modelului conceptual i dup ce aceasta a fost accesat de utilizatori, apare un nou model al sistemului: modelul-utilizator. Acest model nu este dect reprezentarea pe care i-o formeaz utilizatorii asupra sistemului, asupra structurii, funcionalitii i modului su de lucru, bazndu-se exclusiv pe propria experien dobndit pe msur ce au interacionat cu modelul. Dac sistemul a fost bine proiectat, dac el corespunde tuturor cerinelor utilizatorilor explicite sau neexprimate dac el a fost complet i corect comunicat utilizatorilor, atunci modelul-utilizator va fi echivalent cu modelul conceptual. Cum se poate transmite mai fidel utilizatorilor modelul conceptual, astfel nct distana ntre acesta i modelul-utilizator s fie ct mai mic, dac se poate chiar nul? O metod ar fi utilizarea metaforelor n proiectarea interfeelor. mprumutat din literatur 4 , termenul i-a schimbat n mod semnificativ rolul. Comparaia
Metafor = figur de stil rezultat dintr-o comparaie subneleas prin substituirea cuvntului-obiect prin cuvntul-imagine (conform Dicionarului explicativ al limbii romne, Editura Academiei, Bucureti, 1984). 44
4

2. Proiectarea interfeelor grafice ______________________________________________________________

implicit din care provine metafora literar are loc ntre dou elemente care sunt ambele cunoscute i care, dei par foarte diferite, au ceva n comun. n activitatea de proiectare, unul dintre cele dou elemente este nou sau necunoscut; puterea metaforei rezidnd tocmai n a face un sistem nou s par ct mai familiar, ct mai asemntor cu unul deja cunoscut. Dac n literatur metafora este revelatoare, n informatic ea trebuie s fie n primul rnd explicativ. Dac utilizeaz corect metafora, proiectantul poate furniza utilizatorilor direct modelul-utilizator i nu pe cel conceptual. Legnd modelul i funcionalitatea unui sistem cunoscut de un program necunoscut cu ajutorul metaforelor, proiectantul permite utilizatorilor s aplice toate cunotinele lor relative la sistemul vechi noului sistem (practic, ei aplic modelulutilizator al vechiului sistem peste modelul-utilizator al noului sistem) i s fac inferene asupra acestuia din urm (vezi [Mohnkern, 1997]). Migrnd din literatur n informatic, metafora nu ia depit limitele: n literatur ele provin din faptul c n aceeai msur n care metafora reveleaz similitudinile dintre cele dou elemente comparate ea i ascunde deosebirile dintre ele. n informatic, limitele metaforei provin din diferena de esen care exist ntre sistemele informatice i sistemele din lumea real ntre care se exercit comparaia. Nu exist o bijecie ntre un sistem din lumea real i analogul su informatic; dimpotriv, modelarea sistemelor informatice (n particular, a interfeelor grafice) dup cele reale produce contradicii i confuzii: utilizatorul presupune c i n sistemul informatic sunt respectate legile care guverneaz sistemul real (Mohnkern d exemplul confidenialitii incorect presupuse n cazul potei electronice); utilizatorul se ateapt ca imaginea obiectului real preluat n interfaa grafic s i ofere aceeai funcionalitate cu care l-a obinuit obiectul din lumea real. Dac proiectantul aplic cu strictee porunca similaritii sistemului informatic (interfeei grafice) cu sistemul real nu numai la nivelul obiectelor unde este benefic ci i la nivelul operaiilor (aciunilor), el poate cdea ns ntr-o alt capcan: sistemul proiectat va relua n manier informatic disfuncionalitile, dac nu chiar erorile,
45

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

sistemului real. Ori, motivul pentru care se proiecteaz un sistem informatic (o interfa grafic) pentru o problem din lumea real este tocmai acela c, recurgnd la ajutorul calculatorului, putem face mai corect, mai uor, mai rapid i n mod mai plcut, o serie de operaii dificile i plictisitoare. Concluzia este c proiectantul sistemului informatic (n particular al interfeei grafice) trebuie s utilizeze metaforele disponibile cu mare grij, pentru a nu plti puterea lor explicativ prin repetarea greelilor i inconvenientelor din sistemul real. Numai astfel sistemul informatic devine dac nu superior celui din lumea real cel puin diferit de acesta. Mai mult, proiectantul trebuie s fie pregtit chiar s abandoneze metafora folosit atunci cnd aceasta a devenit prea restrictiv. n astfel de cazuri, el trebuie s revizuiasc funcionalitatea sistemului proiectat (n particular, a interfeei grafice) i modul n care acesta a fost comunicat utilizatorilor, pentru a determina cte dintre funciile elementelor componente sunt necesare i evidente pentru utilizatori, care dintre ele trebuie abandonate i care trebuie scoase mai mult n eviden. Acest examen trebuie fcut n raport cu tipul de utilizator al sistemului (interfeei): statutul su social i cultural, gradul de educaie (general vs. informatic), mediul de lucru i chiar eventualele inabiliti fizice pe care le are. 2.9. Principii de proiectare a interfeelor grafice Proiectarea interfeelor grafice ar trebui ntre altele s previn i apariia urmtoarelor clase de probleme relative la procesele de comunicare (identificate de W. Weaver, citat n [Marcus, 1979]): probleme tehnice, referitoare la acurateea cu care mesajele (aciunile asupra interfeei, rspunsurile calculatorului) schimbate ntre utilizator i calculator sunt codificate, transmise i decodificate (aceste probleme ale proceselor de comunicare formeaz obiectul
46

2. Proiectarea interfeelor grafice ______________________________________________________________

de studiu al teoriei matematice a comunicrii, fundat de C. Shannon i W. Weaver5 ); probleme semantice, referitoare la concordana dintre mesaj i context; probleme de efectivitate, referitoare la modul n care mesajul recepionat de destinatar acioneaz asupra acestuia, n sensul dorit de adresant. 2.9.1. Cteva principii generale Principiile de proiectare specifice interfeelor grafice au fcut subiectul multor cri sau serii de articole n revistele de informatic (vezi, de exemplu, [Mullet, Sanos, 1994] i [de Bono, 1999], citate n [Hudson, 2003]). Dintre acestea, enumerm: proiectantul trebuie s nceap prin a nelege problema pe care o are de rezolvat, tipul de utilizatori pentru care lucreaz i contextul n care acetia vor interaciona cu interfaa, urmnd apoi s asigure adecvarea soluiei propuse la aceste restricii; proiectantul trebuie s divid proiectul n elemente uor abordabile din punctul de vedere al complexitii, respectnd ns principiul unitii: proiectul trebuie s rmn un ansamblu de pri strns corelate, avnd o contribuie clar la atingerea scopului propus; proiectantul trebuie s asigure flexibilitatea interfeei: soluiile flexibile, proiectate dintru nceput pentru a permite modificri i extensii ulterioare, reduc efortul de ntreinere (reproiectare) a interfeei care apare n mod inevitabil i repetat; pe tot parcursul proiectrii interfeei, proiectantul trebuie s urmreasc principiul simplitii (ceea ce va asigura i elegana soluiei): soluiile ad-hoc, care privesc problema static, sacrific simplitatea i elegana pentru discutabilul ctig al accelerrii proiectrii;

C. SHANNON, W. WEAVER: The Mathematical Theory of Communication, The University of Illinois Press, Urbana, 1949. 47

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

proiectantul trebuie s propun mai multe soluii alternative i s fie pregtit s itereze proiectarea i testarea soluiei alese; proiectantul trebuie s utilizeze metafora explicativ i rafinarea funcionalitii (eliminarea elementelor care nu contribuie direct la interaciunea om-calculator) pentru a comunica interfaa ctre utilizatori. Cel mai important principiu de proiectare este, probabil, primul de respectarea lui depinznd ntreaga evoluie a proiectrii i utilizrii interfeei. Este uor de sesizat ct de mare este diferena dintre proiectarea unei interfee grafice destinate programatorului nsui, respectiv colaboratorilor si (deci unor programatori cu aceeai pregtire profesional), i proiectarea unei interfee grafice destinate unui utilizator generic despre care nu se tie nimic n afara nivelului relativ bun al cunotinelor sale informatice, sau unui numr mic de astfel de utilizatori sau unei mulimi largi de utilizatori complet necunoscui i cu cunotine informatice de nivel practic nul. Fiecare dintre aceti destinatari impun necesitatea gsirii unei alte strategii de definire i implementare a interfeei grafice, strategie al crei cost crete pe msur ce coborm pe scara format de tipurile de utilizatori enumerai mai sus. Numrul elementelor care determin nivelul de accesibilitate al unei interfee grafice este destul de mare: timpul necesar asimilrii modului de lucru cu interfaa, timpul necesar sistemului pentru a rspunde comenzilor primite de la utilizator, numrul de aciuni pe care le permite interfaa, numrul de aplicaii pe care utilizatorul le-ar putea rula simultan cu interfaa, timpul mediu n care utilizatorul va interaciona cu interfaa, numrul de obiecte i clase de obiecte virtuale (controale grafice) pe care utilizatorul le va manevra atunci cnd va accesa interfaa.

48

2. Proiectarea interfeelor grafice ______________________________________________________________

Notnd cu ni aceti parametri, i 1, i cu fi(ni) costul implicat de tratarea acestora, obinem urmtoarea funcie g de cost care poate evalua valoarea fiecrei strategii propuse de proiectant pentru o interfaa grafic oarecare: g(f1(n1), f2(n2), , fk(nk)). Funcia de cost g reflect efectul combinat, fie aditiv fie multiplicativ, al costurilor tuturor componentelor avute n vedere. Pentru a putea utiliza aceast abordare n alegerea uneia dintre strategiile de proiectare a interfeei: se studiaz setul de componente pentru a determina care dintre ele prin costul su va influena n mod semnificativ costul ntregii strategii (fie, de exemplu, componenta nh); se verific dac se poate aprecia drept constant costul celorlalte componente (fi(ni), i h) indiferent de variaiile nregistrate de fh(nh); n funcie de complexitatea funciei fh(nh) se poate atunci aprecia complexitatea funciei g : linear, exponenial etc. Evident, n cazul unei complexiti ridicate a funciei g se pot ncerca diverse metode de reducere a complexitii (n primul rnd a complexitii componentei eseniale fh(nh)), prin adoptarea unei noi strategii de proiectare. Din pcate, o multitudine de factori de la cei financiari la cei psihologici pot compromite nlocuirea unei strategii vechi cu una nou, mai economic (aa cum s-a ntmplat cu varianta american a tastaturii Dvorak, care, n ciuda evidentei sale superioriti, nu a putut nlocui binecunoscuta tastatur QWERTY). 2.9.2. Cteva sugestii pragmatice Pe lng aceste principii generale, proiectantul poate urma i o serie de sugestii (vezi [Goodman, 2001]), rezultate din experiena altor proiectani: proiectarea interfeei poate ncepe cu examinarea interfeei grafice a aplicaiilor care au nregistrat cele mai bune vnzri (semn c au fost agreate de muli utilizatori),
49

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

precum i a aplicaiilor pe care proiectantul nsui le-a folosit i apreciat cel mai tare; proiectarea interfeei ar trebui s respecte tipicuri deja larg acceptate de utilizatori (de exemplu, primul meniu s fie FILE i ultimul HELP, i nu invers); avantaje: se evit confuziile i ezitrile: utilizatorul este deja obinuit cu designul interfeei i timpul de nvare se reduce simitor; dezavantaje: poate interveni plictiseala i dorina utilizatorului de a gsi ceva nou; proiectarea interfeei trebuie s nceap pe hrtie (este util executarea unui desen pentru fiecare dintre forme nainte de a trece la popularea acestora cu controale grafice i la scrierea codului) i s se continue cu un ir de prototipuri din ce n ce mai complexe pn la atingerea aspectului final al interfeei; testarea interfeei trebuie efectuat iterativ, asemenea proiectrii, i mai mult de ctre utilizatori nu de ctre autor: proiectantul interfeei trebuie s solicite utilizatorilor s-i comenteze verbal aciunile asupra interfeei pentru a putea urmri procesul de gndire i modul n care acesta se concretizeaz la nivelul accesrii interfeei; el trebuie s-i noteze sistematic observaiile pentru a le incorpora n urmtoarea iteraie a proiectrii interfeei; proiectantul trebuie s elimine din interfa acele faciliti despre care constat c nu sunt deloc nelese sau accesate de ctre utilizatorii-testatori; el poate solicita utilizatorilor s execute o anumit operaie fr s le explice cum, pentru a vedea dac facilitatea respectiv este bine proiectat: uor de neles i accesat. Mai concret, indicaiile de proiectare se refer la: compoziia interfeei (poate accentua sau sabota dou dintre calitile acesteia: atractivitatea i accesibilitatea): plasarea i gruparea controalelor grafice n concordan cu importana lor, cu scopul i cu frecvena accesrii. Utilizatorul examineaz interfaa aa cum examineaz o pagin scris sau un desen: de la stnga la dreapta i de sus n jos. Ca urmare, cele mai
50

2. Proiectarea interfeelor grafice ______________________________________________________________

importante controale, cele care trebuie accesate primele sau cel mai des trebuie plasate n colul de stnga sus al formelor; analog, butoanele de comand OK, NEXT etc. trebuie plasate n colul din dreapta jos deoarece utilizatorul nu le va aciona dect dup ce va examina toat informaia din form. De asemenea, controalele grafice ar trebui grupate dup informaia pe care o transmit: datele personale ale clienilor, datele despre companie, mijloacele de parcurgere a formelor etc.; consistena: n ciuda marii varieti de controale cu rol echivalent oferite de Visual Basic este indicat alegerea i utilizarea aceluiai tip de control, cu aceeai formatare, pentru aceeai sarcin nu numai la nivelul unei forme ci i la nivelul ntregii aplicaii (de exemplu: utilizarea casetelor-list, respectiv a casetelor-text, pentru preluarea i redarea textelor, respectiv a numerelor etc.). Consistena confer nu numai elegan designului ci i ncredere utilizatorului n valoarea i eficiena interfeei; indicaii: alegerea i formatarea controalelor grafice poate sugera utilizatorului rolul acestora n interfa, modul n care trebuie accesate etc. (exemplu, un buton de comand cu aspect tridimensional atunci cnd trebuie accesat i cu aspect bidimensional sau ters atunci cnd nu trebuie acionat; contraexemplu: o caset-text formatat fr chenar va semna cu o etichet i utilizatorul nu se va atepta s primeasc informaii din partea sistemului prin intermediul ei); administrarea spaiului liber: formele nu trebuie aglomerate cu controale grafice; controalele trebuie aliniate i spaiate pe ct posibil (exist comenzi de formatare comod de folosit) iar spaiul liber dintre ele trebuie colorat n nuane palide, care s lase s ias n eviden controalele i informaia acestora; simplitatea: interfaa grafic nu trebuie s reproduc cu mijloace informatice o situaie real (un formular elegant din lumea real poate deveni pe ecran un formular aglomerat i chiar neinteligibil). n schimb, se poate modifica aspectul obiectului real la trecerea n virtual prin
51

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

gruparea funcionalitilor dup frecven, prin paginare sau tabulare, prin utilizarea proprietilor Visible i Enabled, prin furnizarea valorilor predefinite etc. Simplitatea sau lipsa ei pot fi depistate printr-un test banal: dac utilizatorul nu poate ndeplini prin fore proprii sarcina propus, atunci nseamn c interfaa trebuie reproiectat; utilizarea culorilor, graficii, iconilor i animaiei (poate aluneca uor spre exagerare, producnd interfee iptor colorate, cu culori amestecate etc.). n alegerea culorilor i imaginilor trebuie inut cont de: conotaiile culturale ale culorilor i imaginilor (pentru aplicaiile cu utilizare internaional); vrsta i educaia utilizatorilor (interfeele dedicate copiilor pot fi mai intens colorate, n timp ce interfeele pentru aplicaii bancare, tiinifice etc. trebuie s fie mai sobre); necesitatea de a pstra culorile vii pentru semnalarea mesajelor, informaiilor importante, situaiilor anormale etc. (este absolut nerecomandabil folosirea culorii negre pentru fundalul formelor); efectul schimbrii rezoluiei display-ului; distorsiunile de percepere a culorilor (din cauza utilizatorilor daltoniti, trebuie evitat scrierea textelor cu rou pe fond verde sau invers etc.); efectele de animaie pot ncetini ncrcarea formei, pot distrage atenia utilizatorului, pot crea confuzii; utilizarea pentru funcii cunoscute a unor iconi noi poate alunga monotonia designului, dar mai ales poate crea confuzii neplcute; alegerea fonturilor: (cum informaia din form este preponderent textual, alegerea fonturilor este esenial). Pentru a evita ca interfaa s arate ca o scrisoare de rscumprare ([Goodman, 2001]), se recomand utilizarea a cel mult 2 fonturi diferite i a cel mult 2-3 dimensiuni diferite. Dac se utilizeaz alte fonturi dect cele comune tuturor aplicaiilor Windows, atunci ele trebuie comunicate mpreun cu aplicaia, pentru a evita ca
52

2. Proiectarea interfeelor grafice ______________________________________________________________

sistemul-gazd s le nlocuiasc cu ceea ce are el disponibil. De asemenea, dac interfaa trebuie tradus n alt limb, este necesar s se lase un spaiu de depire (de pn la 50%), pentru cazul n care textul tradus este mai lung dect cel iniial. 2.9.3. Exemple i contraexemple Tot n [Goodman, 2001] gsim (preluate i adaptate din [Cooper, 1995]) o serie de sfaturi (design tips) multe de bunsim utile pentru proiectanii de interfee grafice: toate casetele-dialog (InputBox pentru introducerea datelor sau MessageBox pentru afiarea rezultatelor sau mesajelor) trebuie s posede un titlu sugestiv pe bara de titlu (chiar dac mesajul afiat este destul de clar): e suficient folosirea unui singur cuvnt care s indice operaia de executat; vezi exemplul i contraexemplul din Figurile 2, respectiv 3);

Figura 2

53

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Figura 3 casetele-dialog trebuie s fie ct se poate de mici, dar s rmn inteligibile: n interfa, nu trebuie s rmn dect acele casete-dialog strict necesare; acestea trebuie ns s fie lizibile, neambigui, sugestive. Trebuie evitate butoanele de comand cu animaie, textele stufoase etc., dar mai ales trebuie evitate mesajele greu de neles pentru utilizatorii neavizai. Figura 4 ofer un exemplu de urmat: proiectantul propune utilizatorului o alternativ clar pentru soluionarea impasului; Figura 5 este ns un contraexemplu!

Figura 4

54

2. Proiectarea interfeelor grafice ______________________________________________________________

Figura 5 toate casetele-dialog modale 6 trebuie s conin butoanele de comand OK i CANCEL: chiar dac alte butoane de comand (APPLY, RETRY, ABORT etc.) sunt adecvate, proiectantul trebuie s furnizeze utilizatorului o cale familiar de validare/respingere a aciunilor efectuate ct timp caseta-dialog a fost afiat (vezi Figura 6);

Figura 6 casetele-dialog modale nu trebuie s permit nchiderea lor cu iconul Close: n conformitate cu sfatul anterior, este
Se numete fereastr modal o fereastr deschis pe suprafaa alteia; att timp ct fereastra modal este deschis nici o alt fereastr deschis nu poate fi accesat. 55
6

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

indicat s se dezactiveze toate facilitile oferite automat de sistemul Windows, pentru manevrarea ferestrelor (Figura 7);

Figura 7 nu trebuie folosite casete-dialog dect pentru a semnala situaii anormale, excepii: semnalarea printr-o caset-dialog a ncheierii corecte a unei operaii consum inutil timp, iar utilizatorul poate crede c proiectantul l-a subestimat i se poate chiar considera jignit (Figura 8);

Figura 8 toate casetele-dialog nemodale trebuie s conin opiuni clasice de nchidere, adic s conin butoanele de comand YES, NO i CANCEL;
56

2. Proiectarea interfeelor grafice ______________________________________________________________

casetele-dialog cu taburi trebuie s conin butoanele de comand care asigur procedura de nchidere a casetei n zona liber de taburi a casetei (exemplu: Figura 9; contraexemplu: Figura 10);

Figura 9

Figura 10
57

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

casetele dialog modale trebuie vizibil i clar difereniate de cele nemodale: prin culori, fonturi diferite etc.; utilizarea colorrii pentru evidenierea textului selectat; textele trebuie parcurse vertical (niciodat orizontal): utilizatorii folosesc cu reticen bara de defilare orizontal (exemplu: Figura 11; contraexemplu: Figura 12);

Figura 11

Figura 12
58

2. Proiectarea interfeelor grafice ______________________________________________________________

programul trebuie s l informeze pe utilizator atunci cnd o alt aplicaie care ruleaz n background pare s i blocheze aplicaia (i s afieze imediat pe bara de stare informaii privind situaia aplicaiei; exemplu: Figura 13);

Figura 13 toolbarurile nu trebuie s constituie un barmeniu alternativ (ele trebuie s ofere utilizatorilor experimentai posibilitatea de a executa mai rapid anumite operaii cu interfaa, deci vor conine iconi numai pentru efectuarea anumitor operaii); toolbarurile trebuie s dispun de definiii rapide (tooltips): se evit ambiguitatea i se diminueaz efortul de memorare pe care trebuie s l fac utilizatorul; trebuie evitate toate acele elemente de interfa a cror nelegere i accesare presupune din partea utilizatorului cunotine de logic, informatic etc. (de evitat operatorii logici, termenii de specialitate etc.; contraexemplu: Figura 14).

Figura 14
59

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

2.10. Standardizarea n proiectarea interfeelor grafice Conform [Blanchard, 1996], standardizarea este un ajutor preios n rezolvarea problemelor care apar o dat cu amplificarea unui mod de comunicare a informaiei, cunotinelor, experienelor de orice fel, iar proiectarea interfeelor grafice nu face excepie. Definirea i respectarea unor standarde conduce, n orice activitate, la creterea semnificativ a vitezei de nvare i de executare a activitii respective. Exemplul preluat de Harry Blanchard de la Don Norman se refer la ceasuri i la dificultile cu care ne-am confrunta n aflarea orei dac ceasornicarii nu ar respecta standardul binecunoscut al sensului acelor de ceasornic!! Standardizarea (alegerea unei unice soluii atunci cnd exist alternative) unui element sau proceduri n cadrul unei interfee grafice face ca o anumit regul sau procedur s nu trebuiasc nvat dect o singur dat. ACM prin unul din grupurile sale speciale de interes7 a dedicat o intreag serie de articole acestui subiect, tocmai pentru a sublinia importana standardizrii ntr-un domeniu cu o rat a creterii att de mare cum este informatica. Editorul rubricii, Harry Blanchard, recomand dou cri devenite fundamentale pentru standardizarea tehnologiei informaiei (vezi [Cargill, 1989], pentru elemente de istorie i concepte de baz8 i [Smith, 1996], pentru aspectele ergonomice ale domeniului9 ). Exist trei categorii de organizaii care stabilesc standarde n domeniul proiectrii interfeelor grafice (vezi [Blanchard, 1996]): organizaii internaionale (ISO 10 , IEC 11 , JTC1 12 , ITU-T),
7 8

SIGCHI= Special Interest Group on Computer Human Interaction. Cargill, C.F.: Information Technology Standardization; Theory, Process, and Organizations, Digital Press, Bedford, MA, 1989. 9 Smith, W.J.: ISO and ANSI Ergonomic Standards for Computer Products, Prentice Hall, Upper Saddle River, NJ, 1996. 10 ISO = The International Organization for Standardization. 11 IEC = International Electrotechnical Commission. 60

2. Proiectarea interfeelor grafice ______________________________________________________________

organizaii naionale i regionale (CEN 13 , ETSI 14 ), consorii independente neoficiale (ANSI 15 , ANFOR 17 , DIN 18 ).

BSI 16 ,

Cea mai bine cunoscut organizaie internaional n sfera standardizrii domeniului industrial este ISO, care cel puin n domeniul ingineriei electrice i al electronicii conlucreaz extrem de puternic cu IEC, comitetele lor tehnice completndu-se att de bine nct au dat natere unui organism unic: JTC1, care se ocup de tehnologia informaiei. ITU-T (numit iniial CCITT 19 ) este organizaia internaional responsabil cu stabilirea standardelor n telecomunicaii. Ea este un comitet al ITU 20 i, spre deosebire de ISO, a fost creat n urma unui tratat. Aceasta face ca recomandrile sale s nu fie doar orientative (ca n cazul ISO), ci, odat adoptate de guverne i de companiile naionale sau locale respective, s capete putere de lege. ITU-T stabilete, prin intermediul Colectivului de lucru 2 din cadrul Grupului de Studiu 1, standardele privind interfeele-utilizator pentru sistemele de calcul care monitorizeaz i administreaz reelele de telecomunicaii. Ca structur i mod de lucru, ISO se compune din mai multe comitete tehnice (TC), care se ocup fiecare de standardizarea unui domeniu industrial major i care pot fi, la rndul lor,
JTC1 = The ISO/IEC Joint Technical Committeee 1 on Information Technology 13 CEN = Comit Europen de Normalisation 14 ETSI = European Telecommunications Standards Institute 15 ANSI = American National Standards Institute 16 BSI = British Standards Institute 17 ANFOR = Association Franaise de Normalisation 18 DIN = Duetsches Institut fr Normung 19 CCITT = Comit Consultatif International Tlgrafique et Tlphonique 20 ITU = International Telecommunications Union 61
12

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

divizate n mai multe subcomitete (SC). Comitetele i subcomitetele pot fi n continuare divizate n mai multe grupuri de lucru (WG), iar acestea n mai multe colective de lucru (WP), dedicate fiecare cte unui domeniu particular. Astfel, ISO TC159 SC4 WG5 este grupul de lucru care se ocup de standardizarea interfeelor grafice i de tip text, precum i de alte aspecte ergonomice ale proiectrii software (vezi [Blanchard, 1996]). ISO/IEC 11581 este unul dintre documentele emise de ISO/IEC JTC1 SC18 WG9 i care conine standardul ISO/IEC privind iconii utilizai n interfeele grafice pentru reprezentarea datelor i aplicaiilor. Acest standard este mprit n mai multe seciuni, dedicate diferitelor tipuri de iconi i funcii (vezi [Blanchard, 1997]). ANSI/HFES 21 200 conine acele seciuni din ISO 9241 care se refer la tehnicile de realizare a dialogului utilizator-calculator: prile 3, 4, 5, 7, 8, 10 conin recomandri privind proiectarea controalelor grafice, partea a 6-a se ocup de utilizarea culorilor ca mecanism de codificare sau ca mijloc de prezentare a informaiei, iar partea a 9-a este dedicat utilizrii vocii n interfeele grafice sau de alt tip. Astfel, n partea a 6-a sunt furnizate indicaii generale privind: redundana n codificarea prin culori, numrul maxim de culori folosite, utilizarea culorilor pentru evidenierea semnificaiei informaiei, reguli de alegere i poziionare a culorilor atunci cnd obiectele trebuie identificate prin culoare, alegerea culorilor pentru textele i obiectele care apar n interfee sau pentru semnalizarea evenimentelor speciale, personalizarea culorilor de ctre utilizator etc. Partea a 9-a se compune din 3 subseciuni: recunoaterea automat a vocii (Speech Recognition), utilizarea sunetelor, altele dect cele vocale (Non-speech Auditory Output), obinerea interactiv a rspunsurilor la mesaje vocale (Interactive Voice Response = IVR). Prima subseciune se ocup de utilizarea tehnologiei de recunoatere a vocii ca interfa de comand i control pentru calculatoare
21

HFES = The Human Factors and Ergonomics Society 62

2. Proiectarea interfeelor grafice ______________________________________________________________

(nchiderea/deschiderea fiierelor prin comenzi vocale etc.) i, respectiv, ca metod de introducere a informaiei ntr-un document creat de un editor de texte (transformarea calculatorului ntr-o main de dictat-scris). A doua subseciune conine recomandri privind utilizarea elementelor sonore (earcons, n loc de icons) n dialogul utilizator-calculator. Ultima subseciune se distaneaz vizibil de restul seciunilor din ANSI/HFES 200 i din ISO 9241, doarece se axeaz pe proiectarea sistemelor bazate pe utilizarea telefonului, numite Interactive Voice Response Systems sau Touch-Tone User Interfaces. Ea conine, de exemplu, recomandri privind proiectarea meniurilor i prompturilor pentru interfeele telefonice, care difer semnificativ de meniurile i prompturile grafice (vezi [Blanchard, 1997]).

63

3. NIVELURI DE PROGRAMARE Aplicaiile de dezvoltare din grupul Ms Office permit utilizarea mai multor niveluri de programare n cadrul crerii de aplicaii: nivelul propriei interfee grafice, nivelul limbajelor de macrocomenzi, nivelul limbajului de programare VBA incorporat n fiecare aplicaie Ms Office, nivelul limbajului de programare VB. Le vom prezenta n ordinea invers enumerrii i nu n ordinea accesibilitii lor. 3.1. Programarea n limbajul Visual Basic Visual Basic a fost dezvoltat de Bill Gates i Paul Allen din versiunea original a limbajului Basic (Beginners All-Purpose Symbolic Instrucions Code, codul instruciunilor simbolice de uz general pentru nceptori) creat de John Kemeny i Thomas Kurtz n 1964 i a fost lansat n 1991, la 16 ani dup fondarea firmei Microsoft Corporation la Seattle, WA. Acesta a fost primul limbaj de programare vizual conceput special pentru PC-uri i nu necesita dect 4KB de memorie (conform [Solomon, 1997]). Termenul visual din numele limbajului se traduce ntre altele prin faptul c programarea cu VB presupune nu numai scrierea unor linii de cod, ci i crearea unor controale grafice. Pn la versiunea 5.0, limbajul Visual Basic avea doar cteva dintre trsturile specifice unui limbaj de programare orientat spre obiecte. 3.2. Programarea n limbajul VBA VBA (Visual Basic for Applications) este limbajul de programare comun tututror aplicaiilor din grupul Ms Office i ncorporat n toate aceste aplicaii. Altfel spus, VB este nucleul limbajului, iar
64

3. Niveluri de programare ______________________________________________________________

fiecare aplicaie Ms Office a extins acest nucleu n aa fel nct i-a asigurat accesul la propriile sale caracteristici speciale. n plus, n timp ce biblioteca VBA332.DLL const din 11 categorii diferite de proceduri avnd 182 funcii, proprieti i metode i 254 constante intrinseci (predefinite), biblioteca de obiecte EXCEL8.OLB este de 16 ori mai mare, deoarece conine i obiectele, proprietile i metodele care permit accesarea i fructificarea tuturor facilitilor Excel. La fel, biblioteca MSACC8.OLB este de cteva ori mai mare dect biblioteca VBA menionat. Tocmai aceste biblioteci reprezint A-ul din numele limbajului VBA. Din aceast cauz, dezvoltatorii de aplicaii sub Ms Office i VBA trebuie s fie de tip renascentist (conform [Solomon, 1997]): ei trebuie s fie nu numai buni programatori n sensul propriu i demult acceptat al cuvntului, ci i buni cunosctori ai tuturor facilitilor i posibilitilor fiecrei aplicaii din grup. Din pcate, gsirea unor astfel de specialiti nu este deloc uoar. Ca urmare, multe companii prefer s-i finaneze singure cursuri de perfecionare pentru proprii informaticieni; la absolvirea cursurilor, acetia devin nu programatori, ci dezvoltatori de aplicaii sub Windows, care pot crea aplicaii sofisticate folosind produsele Ms Office i limbajele VBA i VB. n fine, s mai subliniem faptul c VB este o aplicaie independent care se poate instala i lansa independent de grupul Ms Office, n timp ce VBA este o aplicaie auxiliar, incorporat, care se poate lansa numai din fereastra unei aplicaii Ms Office. 3.3. Programarea n limbajul macrocomenzilor O macrocomand este o structur secvenial de cod VBA care poate fi lansat n execuie prin asignarea ei la o combinaie de taste, la un icon sau la o comand dintr-un meniu.
65

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Pentru a crea (nu a scrie!) o macrocomand, se procedeaz diferit n Ms Access fa de Ms Word, Ms Excel sau Ms PowerPoint. n Ms Access, programatorul alege fiecare directiv care intr n componena macrocomenzii dintr-un set de directive oferit de produs i seteaz eventualele argumente; cu rare excepii (directiva Beep etc.), acestor directive le corespund comenzi din diferitele meniuri ale aplicaiei. n celelalte aplicaii enumerate, utilizatorul lanseaz facilitatea Macro Recorder i efectueaz manevrele necesare cu mouse-ul sau cu tastatura; simultan, Macro Recorder genereaz codul VBA corespunztor fiecrei manevre a utilizatorului. Ulterior, toate aceste aciuni ale utilizatorului vor fi executate automat de sistem printr-un simplu apel al macrocomenzii (asignat n prealabil, cum am menionat mai sus, unui icon, unei combinaii de taste etc.). Macrocomenzile sunt programe mult mai schematice dect cele scrise direct n VBA sau VB: ele nu suport structuri repetitive i nici condiionale (n Ms Access ns exist posibilitatea controlrii fluxului execuiei prin evaluarea unor condiii). Totui, exist situaii cnd utilizarea lor nu poate fi nlocuit cu scrierea unui program n VBA sau VB (de exemplu, n Ms Access: pentru ataarea cheilor rapide sau setarea opiunilor de lansare a aplicaiei). 3.4. Programarea la nivelul interfeei grafice Distingem i aici mai multe subniveluri de programare: programarea prin setarea opiunilor de rulare a aplicaiei; programarea prin alegerea comenzilor din meniuri i a iconilor de pe toolbaruri; programarea prin utilizarea procedurilor de asisten. 3.4.1. Programarea prin setarea opiunilor de rulare a aplicaiei Fiecare aplicaie conine n meniul TOOLS comanda OPTIONS, n care se pot reseta opiunile prestabilite privind afiarea mesajelor de atenionare, modul de salvare i listare a fiierelor, dimensiunea i culoarea fonturilor etc.
66

3. Niveluri de programare ______________________________________________________________

3.4.2. Programarea prin alegerea comenzilor din meniuri i a iconurilor de pe toolbaruri Datorit interfeei grafice, liniile de comand alfanumerice sunt nlocuite cu manevre de mouse sau tastatur asupra elementelor grafice din interfa. 3.4.3. Programarea asisten prin utilizarea procedurilor de

Majoritatea operaiilor care se pot efectua n aplicaiile Ms Office sunt dublate de proceduri de asisten; acestea constau n afiarea treptat a unor ferestre-dialog, n care utilizatorul poate accepta sau poate modifica valorile unor opiuni. Trecerea de la o fereastr la alta nseamn acceptarea de ctre utilizator a valorilor opiunilor din fereastra respectiv i indic sistemului cum s lucreze mai departe. La nchiderea procedurii, manevra dorit este realizat complet de aplicaie i rezultatul ei este vizibil pe ecran. De remarcat faptul c n fiecare fereastr-dialog din procedur (cu excepia primei i ultimei ferestre) exist butoanele de comand: CANCEL, BACK, NEXT, FINISH. 3.5. Utilizarea obiectelor i evenimentelor n crearea interfeelor grafice Cele mai multe dintre nivelurile de programare discutate mai sus fac apel la dou noiuni eseniale pentru programarea vizual orientat spre obiecte: obiectul i evenimentul. 3.5.1. Utilizarea obiectelor n programarea aplicaiilor Ms Office i Visual Basic Conceptul pe care se bazeaz tehnologiile orientate spre obiecte este acela c orice aplicaie software trebuie creat ori de cte ori este posibil din componente standard
67

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

reutilizabile. Prezentm n continuare, pe scurt, cteva elemente de programare orientat spre obiecte. Abstractizarea = procesul de identificare a proprietilor eseniale ale unei entiti i de ignorare a proprietilor sale mai puin importante. Abstractizarea prezint dou aspecte fundamentale: ncapsularea i independena datelor. ncapsularea = un obiect const dintr-o structur de date i din setul de operaii care pot fi folosite pentru prelucrarea acestor date. Independena datelor (ascunderea informaiei) = aspectele exterioare ale unui obiect sunt separate de cele interioare, acestea din urm nefiind vizibile pentru agenii din mediului exterior; ca urmare, dac toate caracteristicile exterioare ale obiectului rmn neschimbate, atunci cele interne pot fi modificate fr ca acest lucru s afecteze n vreun fel aplicaiile care utilizeaz obiectul. Mai mult, crearea i ntreinerea aplicaiilor este mult simplificat prin modularizare: un obiect este o cutie neagr care poate fi construit i modificat independent de restul sistemului, cu condiia ca interfaa sa cu mediul exterior s rmn neschimbat. n unele limbaje de programare, ncapsularea se realizeaz prin conceptul de tip abstract de date (ADT = Abstract Data Type); un obiect se compune din: interfaa, care specific operaiile care pot fi efectuate asupra obiectului, implementarea, care const din structura de date a ADT i din funiile care realizeaz interfaa. Interfaa este singura care este vizibil pentru celelalte obiecte ale aplicaiei i pentru utilizatori. Obiectul = o entitate unic identificabil; conine att atributele care descriu starea obiectului corespunztor din lumea real ct i aciunile care i sunt asociate. Obiectul i entitatea au definiii
68

3. Niveluri de programare ______________________________________________________________

similare; deosebirea const n faptul c obiectul ncapsuleaz att starea, ct i comportamentul, pe cnd entitatea modeleaz doar starea. Exemple de obiecte Access: baza de date, raportul, seciunea. Exemple de obiecte Word: documentul, paragraful, semnul de carte, referina ncruciat, caracterul. Exemple de obiecte Excel: celula, domeniul, foaia de lucru. Exemple de obiecte aflate n mai multe aplicaii Ms Office: tabelul, nregistrarea, cheia primar, filtrul, diagrama, formularul. Exemple de obiecte Visual Basic : caseta-text, eticheta, forma. Atributul sau proprietatea (o variabil instaniat) = descrie starea unui obiect. Exemple de proprieti ale obiectelor: numele, coninutul, dimensiunea, culoarea, statusul la salvare (read-only sau readwrite), vizibilitatea, modalitatea etc. n Visual Basic fiecare proprietate are asociat un set de valori permise; acest set de valori este predefinit (stabilit de creatorii limbajului) pentru fiecare proprietate i pentru fiecare obiect. Mai mult, fiecare proprietate a unui obiect este implicit setat pe o anumit valoare din setul permis, lucru care determin o anumit stare i un anumit comportament al obiectului, facilitnd, de asemenea, n mod semnificativ efortul de programare n crearea aplicaiilor cu VB. Una dintre proprietile pe care le are orice obiect Visual Basic este proprietatea Name, care identific obiectul la nivelul codului VB. Aceast proprietate nu poate fi resetat dect n cazul obiectelor individuale, nu i n cazul claselor. n Visual Basic, exist 3 categorii de proprieti: read-only: ale cror valori nu pot fi modificate de ctre utilizator; read-write: ale cror valori pot fi modificate de ctre utilizator; write-only: ale cror valori trebuie definite de ctre utilizator.
69

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Tipul proprietii se poate determina fie apelnd facilitatea Help, fie examinnd bara de stare a ferestei aplicaiei incorporate Object Browser, atunci cnd proprietatea este selectat. n cazul aplicaiilor Ms Access i Visual Basic, setul de proprieti al unui obiect se poate afia prin comanda PROPERTIES ntr-o fereastr, numit Properties, format din mai multe taburi, corespunzatoare clasificrii proprietilor obiectului: Format, Data, Event etc. ntr-un mediu orientat spre obiecte, fiecare obiect primete n momentul n care este creat un identificator unic (OId = Object Identifier). Acesta are urmtoarele caliti: este generat de sistem, este unic pentru fiecare obiect, este invariant (niciodat pe toat durata de via a obiectului el nu poate fi schimbat i nici dup tergerea obiectului el nu poate fi reasignat altuia), este independent de valorile atributelor obiectului, adic de starea lui (dou obiecte pot avea aceeai stare, dar vor avea identiti diferite), este invizibil pentru utilizatori (situaie ideal!). Identitatea obiectelor este implementat n limbajele de programare orientate spre obiecte cu ajutorul numelor de variabile i cu ajutorul pointerilor sau adreselor de memorie virtual. Observaie Trebuie fcut distincia ntre identitatea i egalitatea obiectelor: dou obiecte sunt identice dac i numai dac este vorba de unul i acelai obiect (au acelai OId); dou obiecte sunt egale dac au aceeai stare (dar au OId diferite).

70

3. Niveluri de programare ______________________________________________________________

Metoda (numit funcie n limbajele de programare) = definete comportamentul obiectului. Metodele pot fi folosite pentru: a modifica starea unui obiect (prin modificarea valorilor atributelor sale); a cunoate starea unui obiect (prin cunoaterea valorilor anumitor atribute ale sale). Ele constau dintr-un nume (care identific n mod unic metoda) i un bloc de cod (care efectueaz comportamentul respectiv). Accesarea metodelor se face prin specificarea numelui obiectului i a numelui metodei, separate printr-un punct. n Visual Basic: returnarea valorii proprietii fie se poate observa n chiar interfaa grafic, fie se poate realiza prin cod (de exemplu: instruciunea nume=combo1.Name returneaz n variabila nume numele casetei combinate combo1); resetarea unei proprieti se poate realiza fie cu ajutorul interfeei grafice fie prin cod (de exemplu: instruciunea combo1.Visible=False determin ascunderea casetei combinate combo1). Sintaxa celor dou instruciuni este, respectiv: nume_variabil = nume_obiect.nume_proprietate nume_obiect.nume_proprietate = valoare Ca i n cazul proprietilor, fiecare obiect Ms Office sau Visual Basic are propriul su set predefinit de metode. De exemplu: obiectul Document admite metoda PrintOut. Unele metode posed unul sau mai multe argumente; prin setarea valorilor acestor argumente se definete modul n care trebuie s fie aplicat metoda (adic modul n care trebuie s se efectueze aciunea respectiv de ctre obiect). De exemplu, ActiveDocument.PrintOut From:=1, To:=3 indic faptul c trebuie listate numai primele 3 pagini ale documentului activ.
71

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Mesajul = o cerere formulat de un obiect, numit i emitent (surs, adresant), ctre un alt obiect, numit i destinatar, prin care i cere acestuia s execute una dintre metodele de care dispune (emitentul i destinatarul pot fi unul i acelai obeict). Mesagele reprezint modul prin care obiectele pot comunica ntre ele. Clasa = un ablon (o schi) care servete pentru definirea unui set de obiecte similare = un grup de obiecte care au aceleai atribute i rspund la aceleai mesaje (execut aceleai aciuni). Ca urmare, obiectele dintr-o clas pot fi privite ca exemplificri (instanieri) ale clasei. Exemple de clase: clasa Workbooks a regitrilor de lucru Excel, clasa Worksheets a foilor de lucru Excel, clasa Documents a documentelor Word curent deschise, clasa Templates a abloanelor, clasa CommandBars a toolbarurilor. Trebuie fcut distincia ntre clase i tipuri: o clas este referit n momentul execuiei (deoarece este un ablon necesar crerii obiectelor i furnizrii metodelor care s poat fi efectuate de ctre obiecte); un tip este referit n timpul compilrii (deoarece compilatorul l poate folosi pentru a verifica dac operaiile care urmeaz s fie efectuate asupra variabilei de tipul t sunt compatibile cu acest tip, ceea ce contribuie la asigurarea corectitudinii software-ului). Ca urmare, tipul corespunde mai degrab noiunii de ADT dect noiunii de clas. Exist sisteme orientate spre obiecte n care clasele sunt considerate la rndul lor ca obiecte i, ca atare, au propriile lor atribute i metode, numite atribute i metode ale clasei. Exemple de astfel de metode pentru clase sunt cele care permit crearea de noi instane ale clasei, respectiv tergerea acelora care nu mai sunt necesare; aceste metode se numesc constructori, respectiv destructori. Mesajele trimise n scopul executrii unei metode pentru o clas sunt trimise mai degrab clasei dect unei instane a acesteia. Ca urmare, o clas poate fi privit i ca o instan a unei clase de nivel mai nalt, numit metaclas.
72

3. Niveluri de programare ______________________________________________________________

O metod se poate aplica unui singur obiect sau ntregii clase. n primul caz, obiectul trebuie mai inti accesat i returnat din clas. Aceasta se poate realiza n 3 moduri: prin denumire sau prin indexare la nivelul clasei; prin invocarea unei proprieti (de obicei, a proprietii Active Document, ActiveWorksheet etc.) prin aplicarea n prealabil a unei alte metode. Exemplu: Documents(Recenzie.doc).Save Documents (2).Save ActiveDocument.Save Documents.Add.Save Documents.Save Primele 3 instruciuni de mai sus determin salvarea documentului curent (numit Recenzie.doc i care a fost al doilea deschis). Ultima instruciune determin salvarea tuturor documentelor curent deschise (care formeaz clasa Documents), deci i a lui Recenzie.doc. Sintaxa nume_clas ( nume_obiect).nume_metod sau nume_clas ( index_obiect_n_ clas).nume_metod Activenume_obiect.nume_metod sau nume_ clas. nume_metod.nume_metoda Observaii Numai n cazul clasei Application (singura eterogen) se poate omite numele clasei. Dac obiectul face parte dintr-o clas inclus n alt clas (vom reveni) atunci referirea lui se face indicnd tot irul de clase, de la cea mai cuprinztoare la cea mai restrns. De exemplu, pentru a terge a cincea foaie de lucru din al doilea registru de lucru deschis, se procedeaz astfel: Workbooks(2).Worksheets(5).Delete.
73

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Motenirea = un concept care permite unei clase s fie definit ca un caz special al unei clase mai generale. Clasele speciale se numesc subclase, iar clasele mai generale se numesc superclase. Specializare/generalizare = procesul de formare a unei subclase/superclase. Motenirea se refer att la starea obiectelor ct i la comportamentul lor: o subclas motenete toate proprietile superclasei (superclaselor) din care face parte i i poate defini propriile sale proprieti suplimentare; de asemenea, ea poate executa toate metodele superclasei (superclaselor) i poate redefini unele dintre ele. nlocuirea (substitutability) = se poate folosi o instan a subclasei ori de cte ori o metod solicit o instan a superclasei Exist mai multe tipuri de motenire: motenirea simpl = subclasa motenete o singur superclas, motenirea multipl = subclasa motenete mai multe superclase, motenirea repetat = este un caz special de motenire multipl n care superclasele motenesc, la rndul lor, atributele i metodele unei superclase comune, motenirea selectiv = subclasa motenete numai un numr limitat dintre atributele i metodele superclasei. n cazul motenirii multiple, dac mai multe superclase au cel puin unele dintre atribute i metode n comun, atunci apar n mod inevitabil conflicte i trebuie imaginat un mecanism de rezolvare a lor: referirea atributelor s fie precedat de numele superclasei necesare n cazul respectiv, liniarizarea ierarhiei dup care are loc motenirea i utilizarea motenirii simple, redefinirea de ctre utilizator a atributelor i metodelor care au produs conflictul,
74

3. Niveluri de programare ______________________________________________________________

generarea unui mesaj de eroare i interzicerea definirii pn la rezolvarea conflictului. n cazul motenirii repetate poate aprea un conflict suplimentar, atunci cnd o subclas motenete un atribut de dou ori, deoarece el apare att la una dintre superclase, ct i la superclasa comun acestora. Motenirea selectiv poate fi folosit i pentru discriminarea accesului utilizatorilor la informaii. Redefinirea (overriding) = o clas care motenete automat proprietile superclasei i poate redefini unele dintre aceste proprieti i le poate folosi pe acestea n locul celor motenite. Redefinirea este un caz special de supradefinire. Supradefinirea (overloading) = face posibil reutilizarea numelui unei metode n definirea mai multor clase; n acest fel, un singur mesaj poate genera mai multe aciuni diferite n funcie de obiectul care primete mesajul i acolo unde este cazul n funcie de parametrii transmii metodei (de exemplu, metoda Print este recunoscut de majoritatea obiectelor). Supradefinirea poate simplifica mult aplicaiile, deoarece face posibil utilizarea aceluiai nume pentru aceeai aciune, indiferent de clasa n care este executat, lsnd contextul s determine semnificaia corespunztoare n funcie de fiecare clas. Supradefinirea, la rndul ei, este un caz special de polimorfism. Exist 3 tipuri de polimorfism: polimorfism operaional (de exemplu: supradefinirea), polimorfism descendent (de exemplu: o metod definit ntr-o supraclas i motenit n subclasele ei), polimorfism parametrizat = genericitate (utilizarea tipurilor ca parametri n declararea claselor sau a tipurilor generice).
75

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Polimorfismul exprim posibilitatea ca diferite instanieri ale unei clase de obiecte s rspund n mod diferit la primirea aceluiai mesaj. El mrete flexibilitatea modelului OO n reprezentarea ct mai sintetic a realitii. Legarea (binding) = procesul de alegere a metodei adecvate n funcie de tipul obiectului. n general, determinarea tipului obiectului se face n momentul compilrii; dac ea poate fi amnat pn la momentul execuiei, atunci selecia se numete legare dinamic (late or dynamic binding). Obiectele complexe = sunt de dou tipuri: structurate nestructurate. Obiect complex structurat = un obiect care consist din mai multe subobiecte sau componente i care este privit ca un obiect unic din lumea real. ntr-un sistem orientat spre obiecte, un obiect coninut n altul poate fi manevrat n dou feluri: poate fi ncapsulat n obiectul complex, poate forma o parte a obiectului complex. n ultimul caz, structura obiectului coninut n obiectul complex este o parte a structurii obiectului complex i acesta va fi accesat numai cu metodele obiectului complex. n ciuda acestui fapt, obiectul coninut este considerat a avea o existen independent de cea a obiectului complex: numai OId-ul su este memorat n obiectul complex - scufundarea (embedding) este nlocuit cu legarea (linking). n plus, el poate avea o structur i metode proprii i poate fi coninut n mai multe obiecte complexe diferite. Obiect complex nestructurat = un obiect complex a crui structur poate fi interpretat numai de programul aplicaiei. n cazul SGBD-urilor, obiectele complexe nestructurate se mai numesc i obiecte binare mari (BLOB = Binary Large OBjects),
76

3. Niveluri de programare ______________________________________________________________

adic date binare reprezentnd o imagine grafic sau video, o secven audio, o procedur etc. Cum SGBD-ul nu vede coninutul sau structura sa intern, el nu poate prelucra (interoga, de exemplu) un BLOB. Supradefinirea semantic = nu exist nici o posibilitate de reprezentare a semnificaiei datelor (de exemplu, modelul relaional al bazelor de date dispune de un singur construct relaia pentru a reprezenta att datele, ct i legturile (corespondenele) dintre ele i nu dispune de nici un mecanism pentru a le diferenia). Programarea bazat pe setarea proprietilor obiectelor = metoda de programare care revine la modificarea valorilor proprietilor obiectelor, de exemplu n fereastra Properties a acestora. 3.5.2. Utilizarea evenimentelor n programarea aplicaiilor Ms Office i Visual Basic n aplicaiile procedurale exist un punct unic de intrare n aplicaie i un punct unic de ieire; n plus, aplicaia nsi prin fluxul de control incorporat decide ce secvene de cod se execut n fiecare moment. n aplicaiile bazate pe evenimente, codul nu se execut dup o cale prestabilit, ci secvenele de program se execut ca rspuns la apariia unor evenimente. Windows este o aplicaie bazat pe evenimente i la fel vor fi toate aplicaiile dezvoltate sub Windows, precum i aplicaiile proiectate cu ajutorul acestora. Eveniment = orice interaciune care are loc ntre aplicaia software i contextul acesteia (reprezentat prin utilizator, sistemul de calcul, alte aplicaii care ruleaz n paralel). Urmarea acestei interaciuni este o modificare a strii aplicaiei/obiectului asupra cruia s-a acionat. De aceea, evenimentul mai este definit i astfel: Eveniment = orice schimbare survenit n starea unui obiect. De asemenea, mai putem spune i c evenimentele sunt declanate de mesaje trimise aplicaiei de ctre:
77

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

utilizator, sistemul de calcul, alte aplicaii, aplicaia nsi.

Utilizatorul iniiaz evenimente acionnd asupra obiectelor care compun aplicaia: prin intermediul tastaturii (apsarea unei taste singur sau n combinaie cu o tast de control sau o tast funcional; mesajul este primit de controlul activ din aplicaie), prin intermediul mouse-ului (dublu clic sau clic cu butonul stng sau drept, glisare; mesajul este primit de obiectul de sub mouse). Sistemul de calcul iniiaz evenimente de tipul: ncrcarea formelor, activarea obiectelor, avansul cronometrului etc. Alte aplicaii iniiaz evenimente de tipul actualizrii informaiei legate sau scufundate n aplicaie. Aa cum am artat mai sus, un mesaj este o comunicare ntre dou obiecte, numite emitent i, respectiv, destinatar, care are loc ca urmare a apariiei unui eveniment. Mesajul incorporeaz tipul evenimentului i toate datele asociate lui (poziia mouse-ului, poziia butonului de comand sau opiune, numrul sau litera de pe tast etc.), pe care le transmite ca parametri obiectului destinatar. Obiectele i mesajele constituie paradigma obiect-aciune. Evident, aceasta funcioneaz cel mai bine ntr-o interfa orientat-obiect, deoarece elementele constitutive ale acesteia rspund direct i coerent la o mare varietate de evenimente (vezi Goodman 2001). Aceasta nseamn c utilizatorul alege un obiect din interfa i apoi alege o aciune pe care o execut asupra acelui obiect (vezi i elementele grafice ale ferestrei Code din interfaa aplicaiei Visual Basic. n proiectarea aplicaiilor, programatorul trebuie s aplice aciunile (clic, dublu clic etc.) n mod consistent asupra tuturor obiectelor, pentru a nu dezorienta utilizatorul.
78

3. Niveluri de programare ______________________________________________________________

Sistem bazat pe evenimente = un sistem care rspunde la interaciuni (iniiate de utilizator, sistem sau alte aplicaii) n loc s comande interaciuni. Pentru un astfel de sistem, datele de intrare sunt mesajele. Distingem 3 etape n comportamentul unui sistem bazat pe evenimente: 1. apariia unui eveniment intern sau extern aplicaiei; 2. detectarea lui de ctre aplicaie, 3. reacia (rspunsul) aplicaiei la producerea evenimentului. Exemple Deplasarea mouse-ului pe suprafaa unei ferestre determin apariia evenimentului MouseMove la care aplicaia Windows rspunde prin redesenarea mouse-ului n diferite puncte de pe ecran, urmrind traiectoria dup care se deplaseaz acesta. Executarea unui clic cu mouse-ul pe suprafaa butonul START de pe bara de stare determin apariia evenimentului Click la care aplicaia Windows rspunde prin afiarea meniului principal al aplicaiei. Executarea unui dublu clic cu mouse-ul pe suprafaa iconului aplicaiei Ms Word determin apariia evenimentului DoubleClick la care aplicaia Windows rspunde prin ncrcarea aplicaiei Ms Word i deschiderea unei ferestre pentru un document generic pe suprafaa ferestrei aplicaiei. Detectarea i rspunsul aplicaiei la apariia unui eveniment se numete pe scurt recunoaterea evenimentului. ntr-o prim etap, evenimentele cad n sarcina unei componente a sistemului de operare, numit administrator de evenimente (event manager). Astfel, recunoaterea unui eveniment nseamn de fapt generarea (de exemplu, de ctre aplicaia Windows) a unuia sau mai multor mesaje asociate; aceste mesaje sunt depuse ntr-o coad de mesaje (message queue) a sistemului; de aici ele sunt trimise unuia dintre propriile obiecte sau sunt transmise mai departe n coada de mesaje a aplicaiei de care aparin (n a crei fereastr a aprut evenimentul
79

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

respectiv) deoarece fiecare aplicaie orientat-obiect are propriul ei administrator de evenimente. La nivelul aplicaiei intervine administratorul de evenimente al aplicaiei, care trimite mesajul din coada de mesaje a aplicaiei ctre obiectul destinatar; dac acesta are ataat o procedur-eveniment (event handler), atunci el rspunde respectivului mesaj. De exemplu, dac fereastra aplicaiei Ms Word este deschis i s-a executat: clic pe iconul Maximize, atunci aplicaia Windows maximizeaz aplicaia Ms Word; clic pe un buton din aceast fereastr, atunci aplicaia Windows detecteaz apariia evenimentului MouseDown, genereaz mesajul WM_MOUSEDOWN1 i l plaseaz n coada de mesaje a aplicaiei Ms Word. Aceasta trebuie s preia mesajele din coad dup regula FirstInFirstOut (exist prea puine cozi de mesaje care fac excepie de la aceast regul) i s reacioneze corespunztor. Aplicaia Ms Word poate examina coada de mesaje datorit unei secvene de cod de care dispune, secven numit message loop (bucl de mesaje). Succesiunea n care apar aceste evenimente (succesiunea mesajelor n coada de mesaje a aplicaiei) determin ordinea n care se execut codul aplicaiei. Aceasta nseamn c, la fiecare execuie, programul poate urma o cale diferit. Procedura-eveniment = o secven de cod creat pentru a rspunde unui anumit mesaj. Procedurile-eveniment sunt ataate obiectelor. Astfel, atunci cnd un obiect primete un mesaj are loc o examinare a listei sale de evenimente n scopul gsirii unei proceduri-eveniment n stare s rspund acelui mesaj. Dac nu exist nici o astfel de procedur-eveniment, atunci mesajul este distrus sau trimis unui alt obiect.
Prefixul din numele mesajului indic tipul ferestrei care poate reaciona la mesaj. WM (Window Message) din numele WM_MOUSEDOWN indic faptul c mesajul este destinat unei ferestre generice. Exemple de prefixe pentru mesaje destinate unor ferestre specifice sunt: TB (Toolbars) LB (ListBox) etc. 80
1

3. Niveluri de programare ______________________________________________________________

Eveniment S.O. Administrator de evenimente Mesaj Coada de mesaje Coada de evenimente

APLICAIE Administrator de evenimente

Coada de mesaje Procedur evenimente

Coada de evenimente

Figura 1

81

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

Fiecrui eveniment recunoscut de un obiect i corespunde n setul de proprieti ale obiectului respectiv o anumit proprietate (care i schimb starea la producerea evenimentului; majoritatea schimbrilor sunt de natur binar: selectat/neselectat, activat/dezactivat, deschis/nchis etc.). Aceast proprietate face parte dintr-un set special de proprieti ale obiectului, i anume din setul proprietilor-eveniment. Numele fiecrei proprietieveniment este predefinit i este de obicei format din numele evenimentului precedat de cuvntul On; de exemplu, proprietatea asociat evenimentului clic recunoscut de un buton de comand se numete OnClick. Exist ns i excepii, de exemplu: proprietile Before Update i After Update. Nu toate obiectele aplicaiilor de dezvoltare sau ale aplicaiilor create recunosc aceleai evenimente (au acelai set de proprieti-eveniment); n plus, exist obiecte care nu recunosc nici un fel de eveniment. Analog, exist dou tipuri de aplicaii Windows: cele care nu recunosc dect evenimentele predefinite (NotePad, Calculator etc.) i cele care, n plus, permit utilizatorilor-programatori s-i redefineasc aceste evenimente (Ms Word, Ms Excel, Ms Access etc.). S lum exemplul unui buton de comand cmdCalcul creat pe suprafaa unui formular Ms Access; implicit, acest obiect Access recunoate 12 evenimente, deci are ataate 12 proprieti-eveniment: OnEnter, OnGotFocus, OnClick, OnMouseDown, OnKeyDown etc.; dac utilizatorulprogramator nu a ataat o procedur special (o macrocomand sau o secven de cod VBA) unuia dintre aceste evenimente, atunci la producerea lui Ms Access execut automat doar aciunea ataat implicit evenimentului respectiv; altfel, el execut i aciunea ataat de programator. S presupunem c programatorul ataeaz evenimentului clic al butonului cmdCalcul o secven de cod VBA, prin care se efectueaz un anumit calcul; atunci cnd butonul deine cursorul de intrare (focus-ul) i Ms Access primete din coada de mesaje a aplicaiei Windows mesajul c s-a executat un clic
82

3. Niveluri de programare ______________________________________________________________

pe butonul cmdCalcul, aplicaia Ms Access execut mai nti operaiile predefinite asociate evenimentului clic i apoi ruleaz secvena de cod ataat de programator butonului. Programarea bazat pe evenimente revine la ataarea unei proceduri-eveniment (o secven de cod scris n limbajul de macrocomenzi, n limbajul VBA sau n limbajul VB) unui eveniment astfel nct ori de cte ori utilizatorul declaneaz evenimentul respectiv, iar obiectul l recunoate se execut secvena respectiv de cod.

83

4. APLICAII 4.1. Exerciii i teme privind etichetele, casetele-text, butoanele de comand, casetele i butoanele de opiune Exerciiile rezolvate i temele propuse n acest capitol urmresc ndeaproape structura Capitolului 2: Introducere n programarea Visual Basic din [Ttrm, 2004], dup modelul din [Shelly, Cashman, Repede, 1996] din care sunt adaptate. De aceea, vom nsoi soluiile prezentate aici cu indicativul subcapitolului sau paragrafului din [Ttrm, 2004] (referin notat n continuare prin [T2], n scopul simplificrii), care conine noiuni noi, utile pentru proiectarea soluiei. Exerciiul 1: Afiarea i ascunderea unui text; utilizarea etichetelor i a butoanelor de comand Se cere s se creeze un proiect pentru afiarea unei formule de salut (vezi [T2] &1, &2.1, &2.2).

Figura 1 Soluie 1) se creeaz n form o etichet i 2 butoane de comand (clic pe controalele grafice de pe Toolbox i glisare n form (vezi Figura 2);
84

4. Aplicaii

2) se seteaz proprietile formei i controalelor: se seteaz proprietatea Name a fiecrui control n fereastra Properties astfel: n caseta derulant Object box se alege numele controlului se poziioneaz mouse-ul n linia Name se tasteaz textul (aici: lblSalut, cmdOn, cmdOff, frmSalut) analog, se seteaz proprietatea Caption a controalelor (aici: Salut !, On, Off, Salut) eventual, n linia proprietii Font se lanseaz procedura de asisten pentru formatare analog, se seteaz culoarea pentru fondul formei: proprietatea BackColor a formei (Figura 1);

Figura 2 se ruleaz forma prin clic pe iconul Run de pe toolbarul Standard se revine prin clic pe iconul End de pe Standard
85

Crearea interfeelor grafice: principii i aplicaii

se salveaz forma; 3) se ataeaz codul necesar butoanelor de comand astfel: meniul VIEW comanda CODE se deschide fereastra-dialog pentru editarea codului n caseta derulant a obiectelor se selecteaz obiectul n caseta derulant a evenimentelor se selecteaz evenimentul n fereastra propriu-zis se tasteaz codul VB aici: se ataeaz butoanelor de comand cmdOn respectiv cmdOff coduri care s permit afiarea, respectiv ascunderea textului din eticheta lblSalut; acest lucru revine la setarea proprietii Visible a etichetei, pe valoarea True, respectiv False: Private Sub cmdOn_Click() blSalut.Visible = True End Sub Private Sub cmdOff_Click() lblSalut.Visible = False End Sub 4) se ruleaz proiectul astfel creat: clic pe iconul Run se acioneaz butonul de comand Off forma arat astfel (Figura 3) se acioneaz butonul de comand Off forma arat astfel (Figura 4)

Figura 3
86

Figura 4

4. Aplicaii

Exerciiul 2: Afiarea numelui studentului cutat; utilizarea funciei Inputbox pentru introducerea datelor Se cere s se creeze un proiect pentru afiarea numelui unui student; informaia trebuie introdus prin intermediul unei casete-dialog Inputbox (vezi [T2] &2.7). Soluie

Figura 5 1) se creeaz un proiect cu o singur form; n form se insereaz o etichet i 3 butoane de comand; 2) se seteaz proprietile controalelor (Tabelul 1); Tabelul 1 Control lblNumeStud cmdOn cmdOff cmdNumeStud Proprietate Caption Caption Caption Caption Valoare Numele studentului On Off Pentru introducerea noului nume

3) prin clic pe butonul de comand cmdNumeStud se afieaz o caset-dialog InputBox; numele studentului introdus n caseta-text din InputBox este preluat n eticheta
87

Crearea interfeelor grafice: principii i aplicaii

lblNumeStud. Prin clic pe butonul de comand cmdOn, respectiv cmdOff, acest nume este afiat, respectiv ascuns, asemenea formulei de salut din Exerciiul 1. De aceea, butoanelor de comand cmdOn i cmdOff li se ataeaz acelai cod ca n Exerciiul 1, iar butonului de comand cmdNumeStud i se ataeaz codul: Private Sub cmdNumeStud_Click() lblNumeStud.Caption=InputBox(Tastati numele studentului) End Sub 4) se ruleaz proiectul (Figura 5). Exerciiul 3: Introducerea i formatarea textului direct n form; utilizarea casetelor-text, a butoanelor i casetelor de opiune Se cere s se creeze un proiect pentru afiarea unui text i formatarea lui cu diferite tipuri de fonturi i stiluri (vezi [T2] &2.2.3, &2.3, &2.4, &2.5).

Figura 6

88

4. Aplicaii

Soluie 1) n forma (denumit Formatarea textului) se insereaz o casettext, 2 casete de opiune i 3 butoane de opiune. 2) se seteaz proprietile controalelor (Tabelul 2 i Figura 7): Tabelul 2 Control txtInput Proprietate MultiLine ScrollBars Alignment Text Caption Caption Value Caption Font Caption Font Caption Font Valoare True 2-Vertical 2-Center Aici putei introduce direct textul Bold Italic 1-Checked Arial Arial Times New Roman Times New Roman Symbol Symbol

ckbxBold chbxItalic optbArial optbTNewR optbSymb

Observaii Proprietatea Value a casetei de opiune chbxItalic a fost resetat pe 1-Checked pentru ca aceast caset s apar implicit selectat la lansarea formei. Dac proprietatea Multiline a casetei-text nu este resetat pe True, tasta ENTER nu are efect i textul se introduce pe o singur linie, ieind din caset. Ct despre tasta TAB, aceasta nu determin un salt n text, ci permite selectarea controalelor din form. 3) se ataeaz codurile controalelor din form. ntruct textul trebuie formatat Bold, Arial etc. dup cum caseta sau butonul de opiune respectiv sunt selectate de utilizator sau nu, se
89

Crearea interfeelor grafice: principii i aplicaii

folosete o instruciune If, care s verifice starea proprietii Value a casetei sau butonului de opiune: dac valoarea este 1, respectiv True, nseamn c utilizatorul a selectat caseta de opiune, respectiv butonul de opiune (dorete s aplice formatul corespunztor).

Figura 7 Private Sub ckbxBold_Click() If ckbxBold.Value = 1 Then txtInput.FontBold = True Else txtInput.FontBold = False End If End Sub Private Sub ckbxItalic_Click() If ckbxItalic.Value = 1 Then txtInput.FontItalic = True Else txtInput.FontItalic = False End If End Sub Private Sub optbArial_Click() If optbArial.Value Then txtInput.FontName = Arial End Sub
90

4. Aplicaii

Private Sub optbTNewR_Click() If optbTNewR.Value Then txtInput.FontName = _ Times New Roman End Sub Private Sub optbSymb_Click() If optbSymb.Value Then txtInput.FontName = Symbol End Sub 4) se ruleaz proiectul (Figura 7). Tema 1: S se creeze un proiect care s conin o singur form pentru afiarea datei i orei curente Indicaie Se pot utiliza 3 butoane de comand, pentru afiarea datei, orei i, respectiv, i a datei i a orei curente (vezi [T2] &2.1, &2.10.1, &2.14.1). Soluie

Figura 8

Figura 9

Tema 2: S se creeze un proiect care s conin o singur form pentru afiarea numelui autorului i datei la care a fost creat forma

91

Crearea interfeelor grafice: principii i aplicaii

Soluie

Figura 10

Figura 11
92

4. Aplicaii

4.2. Exerciii i teme privind casetele-list Exerciiul 4: Afiarea listei cursurilor; utilizarea funciei MsgBox Se cere s se creeze un proiect care s afieze lista cursurilor din anul curent de studii i care s permit actualizarea listei, tergerea ei complet i nchiderea formei (vezi [T2] &2.1, &2.7.2, &2.9, &2.10.2, &2.12). Soluie

Figura 12 1) se insereaz n form o etichet, o caset-text, o caset-list i 4 butoane de comand (Figura 13) ; 2) se seteaz proprietile formei i controalelor (Tabelul 3); 3) se ataeaz codul VB butoanelor de comand.

93

Crearea interfeelor grafice: principii i aplicaii

Figura 13

Tabelul 3 Control lblExplic txtInput lstCursuri cmdAdd cmdDelete cmdClear cmdClose Proprietate Caption Text List Sorted Caption Default Caption Caption Cancel Caption Valoare Tastai titlul cursului de adugat n list True Add True Delete Clear True Close

Private Sub cmdAdd_Click() se adaug un element la list; acesta este valoarea curent a proprietii Text a casetei-text txtInput, valoare care se constituie din textul introdus n caset de la tastatur lstCursuri.AddItem txtInput.Text
94

4. Aplicaii

se reseteaz proprietatea Text a casetei-list txtInput pe blank; astfel caseta este pregatit pentru preluarea unei noi valori txtInput.Text = se repoziioneaz cursorul n caseta-text; astfel se poate introduce direct text n caset txtInput.SetFocus End Sub Private Sub cmdClear_Click() metoda Clear elimin toate elementele din list lstCursuri.Clear End Sub Private Sub cmdClose_Click() instruciunea Unload Me inchide forma Unload Me End Sub Private Sub cmdDelete_Click() pentru a sterge un element din list acesta trebuie n prealabil selectat: se utilizeaz proprietatea ListIndex a casetei-list; de asemenea, trebuie verificat dac lista este vid sau nu If (lstCursuri.ListCount >= 1 and lstCursuri.ListIndex >= 0) Then lstCursuri.RemoveItem lstCursuri.ListIndex Else dac ListCount returneaz o valoare mai mic dect 1 nseamn c lista este vid, iar dac ListIndex returneaz o valoare mai mic dect 0 nseamn c nu s-a selectat nimic MsgBox Lista este vida sau nu ati selectat nici un element End If End Sub 4) se ruleaz proiectul (Figura 12). Exerciiul 5: Afiarea informaiilor despre studenii grupei; utilizarea casetelor-text i a casetelor-list Se cere s se creeze un proiect pentru afiarea informaiilor relative la studenii unei grupe: nume, prenume, data naterii, dac este sau nu integralist. Soluie 1) n forma (denumit Lista studenilor) se insereaz 3 etichete,, 3 casete-text, 3 casete-list i 4 butoane de comand; 2) se seteaz proprietile controalelor (Tabelul 4 i Figura 15).
95

Crearea interfeelor grafice: principii i aplicaii

3) se ataeaz codul VB controalelor grafice:

Figura 14 Private Sub cmdAdd_Click() butonul ADD este implicit selectat cmdAdd.Default = True lstNume.AddItem txtNume.Text txtNume.Text = txtDataN.SetFocus lstDataN.AddItem txtDataN.Text txtDataN.Text = lstInt.SetFocus lstInt.AddItem txtInt.Text txtInt.Text = txtNume.SetFocus End Sub Private Sub cmdClear_Click() lstNume.Clear lstDataN.Clear lstInt.Clear End Sub Private Sub cmdClose_Click() Unload Me End Sub
96

4. Aplicaii

Tabelul 4 Control Form1 Label1 Label2 Label3 Text1 Text2 Text3 List1 List2 List3 Command1 Command2 Command3 Command4 Proprietate Name Caption Name Caption Name Caption Name Caption Name MultiLine Text Name Text Name Text Name List Name List Name List Name Caption Name Caption Name Caption Name Caption Valoare frmListaStud Lista Studenilor lblNume Tastai numele studentului i prenumele studentului lblDataN Tastai data naterii: zz/LL/aa lblInt Este integralist (Da / Nu) txtNume True txtDataN txtInt lstNume lstDataN lstInt cmdAdd ADD cmdDelete DELETE cmdClear CLEAR cmdClose CLOSE

97

Crearea interfeelor grafice: principii i aplicaii

Figura 15 Private Sub cmdDelete_Click() pentru a terge corect toat informaia referitoare la un acelai student, trebuie verificat din ce caset-list a selectat utilizatorul elementul; apoi indexul acestuia trebuie preluat i de celelalte casete-list If lstNume.ListIndex >= 0 Then lstDataN.ListIndex = lstNume.ListIndex lstInt.ListIndex = lstNume.ListIndex lstNume.RemoveItem lstNume.ListIndex lstDataN.RemoveItem lstDataN.ListIndex lstInt.RemoveItem lstInt.ListIndex Else MsgBox Trebuie selectat un element din lista End If If lstDataN.ListIndex >= 0 Then lstNume.ListIndex = lstDataN.ListIndex lstInt.ListIndex = lstDataN.ListIndex lstNume.RemoveItem lstNume.ListIndex lstDataN.RemoveItem lstDataN.ListIndex
98

4. Aplicaii

lstInt.RemoveItem lstInt.ListIndex Else MsgBox Trebuie selectat un element din lista End If If lstInt.ListIndex >= 0 Then lstNume.ListIndex = lstInt.ListIndex lstDataN.ListIndex = lstInt.ListIndex lstNume.RemoveItem lstNume.ListIndex lstDataN.RemoveItem lstDataN.ListIndex lstInt.RemoveItem lstInt.ListIndex Else MsgBox Trebuie selectat un element din lista End If End Sub 4) se ruleaz proiectul (Figura 14). Tema 3: S se creeze un proiect pentru afiarea listei studenilor dintr-o grup i a calitii lor de bursier i/sau cminist Indicaie Se nlocuiete caseta-text txtInt din forma creat pentru Exerciiul 5 cu 2 casete de opiune. Dup cum studentul respectiv este sau nu bursier i/sau cminist, se selecteaz una, niciuna sau ambele casete de opiune i aceast aciune determin afiarea informaiei n caseta-list asociat lstInt (Figura 16).

99

Crearea interfeelor grafice: principii i aplicaii

Soluie

Figura 16 Tema 4: S se creeze un proiect pentru afiarea i formatarea listei cailor care particip la un concurs hipic Soluie

Figura 17
100

4. Aplicaii

Observaie Formatarea informaiei din caseta-text, realizat aici cu ajutorul butoanelor i casetelor de opiune, se pierde atunci cnd textul este mutat n caseta-list deoarece el preia automat formatarea implicit a acesteia. Tema 5: S se creeze un proiect pentru chestionarul examenului de conductor auto

Figura 18 Indicaii Trebuie creat o form care s simuleze examinarea n vederea obinerii carnetului de conductor auto; candidatul trebuie s indice dac, ntr-un anumit context, o anumit manevr este: interzis, obligatorie, permis.
101

Crearea interfeelor grafice: principii i aplicaii

Candidatul trebuie s aib posibilitatea de a-i corecta singur rspunsul dat. El trebuie s dispun de butoane de comand pentru tergerea informaiei din fiecare caset-list i de un buton de comand pentru tergerea tuturor informaiilor introduse. Preluarea informaiei n casetele-list (n vederea memorrii) se va face prin intermediul a 3 butoane de opiune (Figura 18 i Figura 19). Soluie

Figura 19 4.3. Exerciii i teme privind casetele grafice Exerciiul 6: Simularea deplasrii pe vertical a unui avion Se cere s se creeze un proiect care s simuleze deplasarea pe vertical a unui avion (vezi [T2] &2.15, &2.16).
102

4. Aplicaii

Soluie

Figura 20

Figura 21

1) se insereaz n form o caset-grafic i 2 butoane de comand (Figura 21); 2) se seteaz proprietile formei i controalelor (Tabelul 5); Tabelul 5 Controlul frmRaq cmdUp cmdDown picRaq AutoSize BorderStyle Proprietatea Caption Caption Caption Picture Valoarea Deplasarea rachetei UP DOWN A:\Graphics\Icons\ Industry\Roquet.ico True 0-None

3) se ataeaz codul VB butoanelor de comand (se utilizeaz proprietatea Top a casetei grafice: ea returneaz distana n twips dintre frontierele superioare ale casetei i formei; deplasarea rachetei este simulat prin scderea/adunarea unei raii la aceast valoare).
103

Crearea interfeelor grafice: principii i aplicaii

Private Sub cmdDown_Click() picRaq.Top = picRaq.Top + 50 End Sub Private Sub cmdUp_Click() picRaq.Top = picRaq.Top 50 End Sub 4) se ruleaz proiectul (Figura 20). Exerciiul 7: Simularea deplasrii automobilului la schimbarea culorii semaforului; utilizarea instruciunilor Select Case i For Soluie

Figura 22

104

4. Aplicaii

Proiectul se poate crea n doi pai: (1) inserarea semaforului i simularea schimbrii culorii acestuia; (2) inserarea automobilului i simularea deplasrii acestuia n funcie de culoarea semaforului (vezi [T2] &2.10.2, &2.10.3, &2.20). (1) Se includ n form 4 casete grafice: una pentru un semafor generic, celelalte trei pentru cte un semafor la care este permanent setat o singur culoare. Iniial, numai semaforul generic este vizibil n form. Forma mai cuprinde un buton de comand al crui cod asociat const din nlocuirea semaforului generic cu semaforul avnd culoarea corect. Acest lucru revine la setarea proprietii Picture a casetei grafice ce conine semaforul generic pe valoarea proprietii Picture a casetei grafice ce conine semaforul cu culoarea corect. 1a) se insereaz n form 4 casete grafice i un buton de comand; 1b) se seteaz proprietile controalelor (Tabelul 6 i Figura 23);

Figura 23
105

Crearea interfeelor grafice: principii i aplicaii

Tabelul 6 Control frmGrafica picSemafor picGreen picYellow picRed cmdChange Proprietate Caption Picture Picture Visible Picture Visible Picture Visible Caption Valoare Elemente grafice A:\Graphics\Icons\ Traffic\Trffc09.ico A:\Graphics\Icons\ Traffic\Trffc10a.ico False A:\Graphics\Icons\ Traffic\Trffc10b.ico False A:\Graphics\Icons\ Traffic\Trffc10c.ico False Change

1c) se ataeaz butonului de comand cmdChange codul VB necesar pentru schimbarea culorii semaforului; procedura simuleaz schimbarea culorilor semaforului n ordinea: verde, galben, rosu, verde etc. Private Sub cmdChange_Click() Select Case picSemafor.Picture Case picGreen.Picture picSemafor.Picture = picYellow.Picture Case picYellow.Picture picSemafor.Picture = picRed.Picture Case picRed.Picture picSemafor.Picture = picGreen.Picture Case Else picSemafor.Picture = picYellow.Picture End Select End Sub 1d) se ruleaz proiectul (Figura 24).

106

4. Aplicaii

Figura 24 (2) Adugm n form imaginea unui automobil (sau a pietonilor) i simulm deplasarea n funcie de culoarea semaforului (iniial, automobilul apare n colul din dreapta jos al formei). 2a) se redimensioneaz forma prin glisarea la dreapta a frontierei din dreapta i se insereaz n spaiul nou creat o nou caset grafic; 2b) se seteaz proprietile ei astfel: Name = picAuto, Picture = A:\Graphics\Icons\Industry\Cars.ico (pentru automobil) sau la A:\Graphics\Icons\ Misc\Misc28.ico (pentru pietoni), AutoSize = True (ca urmare, dimensiunea casetei grafice se adapteaz automat la dimensiunea imaginii pe care o conine), BorderStyle = 0-None se ascunde imaginea automobilului la deschiderea formei (pentru aceasta se aduce frontiera din dreapta a formei la poziia iniial) se insereaz dou controale grafice Line pentru a simula o strad se seteaz proprietatea BorderWidth a acestora pe 2 (Figura 25);

107

Crearea interfeelor grafice: principii i aplicaii

Figura 25 2c) se modific secvena de cod VB ataat butonului de comand cmdChange astfel: Private Sub cmdChange_Click() se definesc 2 variabile de tip ntreg: counter: contor pentru un ciclu For i origine pentru memorarea poziiei iniiale a automobilului; ca urmare, dup ce maina a ajuns la marginea din stnga a formei se poate cere revenirea ei n poziia iniial Dim counter, origine As Integer origine = picAuto.Left Select Case picSemafor.Picture Case picGreen.Picture picSemafor.Picture = picYellow.Picture Case picYellow.Picture picSemafor.Picture = picRed.Picture Case picRed.Picture picSemafor.Picture = picGreen.Picture
108

4. Aplicaii

un ciclu cu 15 pai (datorit limii formei) pentru deplasarea automobilului de la dreapta la stnga; pasul de deplasare este de 500 twips; pentru a cunoate poziia iniial a automobilului se folosete proprietatea Left a controlului picAuto care returneaz valoarea setat la inserarea controlului n form For counter = 1 To 15 picAuto.Left = picAuto.Left 500 pentru ca deplasarea s nu se fac rapid i continuu, fiecare pas este validat printr-o caset-dialog: dac valoarea constantei vbYesNo este 6, corespunztoare constantei vbYes, nseamn c utilizatorul vrea s continuie simularea i a ales butonul de comand YES; dac valoarea constantei vbYesNo este 7, corespunztoare constantei vbNo, nseamn c utilizatorul nu mai vrea s continue simularea i a ales butonul de comand NO: el primete un mesaj sonor i se iese forat din ciclu If MsgBox (Doriti s continuai?, vbYesNo) = _ vbNo Then Beep Next la ieirea din ciclu, automobilul i reia poziia iniial picAuto.Left = origine Case Else picSemafor.Picture = picYellow.Picture End Select End Sub 2d) se ruleaz proiectul (Figura 22). Observaie Pentru ca la lansarea proiectului semaforul s afieze culoarea roie trebuie inclus i procedura:
109

Crearea interfeelor grafice: principii i aplicaii

Private Sub Form_Load() picSemafor.Picture = picRed.Picture End Sub Tema 6: S se creeze un proiect care s simuleze deplasarea printr-o intersecie a automobilelor i pietonilor n funcie de culoarea semaforului Soluie

Figura 26 Tema 7: S se modifice proiectul de la Tema 6, astfel nct deplasarea autovehiculelor i pietonilor s fie determinat prin clic pe semafor

110

4. Aplicaii

Soluie

Figura 27 Tema 8: S se modifice proiectul de la Tema 6, astfel nct automobilul s se deplaseze pe vertical sau pe orizontal, n funcie de culoarea semaforului: roie, respectiv verde Soluie

Figura 28
111

Crearea interfeelor grafice: principii i aplicaii

4.4. Exerciii privind casetele combinate, casetele geometrice i chenarele Exerciiul 8: Gestiunea vnzrii biletelor de teatru Se cere s se creeze un proiect pentru simularea efecturii unei tranzacii cu bilete de teatru i adugarea acesteia la o list de tranzacii (vezi [T2] &2.6, &2.9, &2.10, &2.14.2, &2.17).

Figura 29 Fiecare tranzacie const din urmtoarele operaii: selectarea titlului piesei, selectarea datei i orei spectacolului; indicarea numrului de bilete cumprate cu pre ntreg; indicarea numrului de bilete cumprate cu pre redus; selectarea preului unitar al fiecrui bilet; verificarea existenei unei reduceri pentru matineu;
112

4. Aplicaii

calcularea i afiarea preului total; preluarea i afiarea sumei avansate de cumprtorul biletelor; calcularea i afiarea restului datorat; afiarea unui mesaj n cazul n care suma oferit este inferioar preului total al biletelor; acceptarea tranzaciei, adugarea ei n list i pregtirea formei pentru o nou tranzacie. n form trebuie afiat i data i ora curent, din secund n secund. Soluie 1) n forma (denumit Bine ai venit din nou la Teatrul Bulandra) se insereaz controalele grafice necesare (Figura 30): 2 casete combinate, nsoite de 2 etichete pentru explicaii i destinate selectrii titlului piesei i, respectiv, selectrii zilei i orei spectacolului; un chenar care conine 4 butoane de opiune: 3 pentru preluarea preului biletelor i unul (acesta trebuie s fie primul creat dintre cele patru) care devine invizibil n Run Time i care permite ca aparent la lansarea formei nici un buton de opiune s nu fie selectat; o caset geometric care conine 2 etichete pentru explicaii i 2 casete-text, destinate prelurii numrului de bilete solicitate cu pre ntreg, i respectiv, cu pre redus; o caset de opiune destinat prelurii tipului de spectacol: obinuit sau matineu; 2 etichete destinate afirii preului total, calculat, al biletelor, i respectiv, sumei avansate de cumprtor; ntruct aceste etichete afieaz valori numerice, calculate sau preluate, ele sunt nsoite de alte 2 etichete explicative; o caset-text pentru afiarea restului calculat, de asemenea nsoit de o etichet explicativ; o caset-text destinat prelurii i afirii tuturor tranzaciilor cu bilete; ea este nzestrat cu bare de defilare i cu o etichet explicativ;
113

Crearea interfeelor grafice: principii i aplicaii

un buton de comand care determin preluarea fiecrei tranzacii n caseta-text i pregtirea formei pentru o nou tranzacie; un cronometru i 2 etichete pentru afiarea datei i orei curente.

Figura 30 2) se seteaz proprietile controalelor (Tabelul 7): Tabelul 7 Control frmTeatru lblPiesa lblSpec Proprietate Caption AutoSize Caption AutoSize Caption Valoare Bine ai venit din nou la Teatrul Bulandra True Titlul piesei True Data i ora spectacolului

114

4. Aplicaii

Tabelul 7 (continuare) Control LblPInt lblPInt LblSitVin Proprietate AutoSize Caption AutoSize Caption AutoSize Caption AutoSize Caption AutoSize Caption AutoSize Caption Alignment BackColor BorderStyle Caption Font Fore Color Text Text Text Font Text Font Fore Color BorderStyle MultiLine ScrollBars Text Valoare True Numrul biletelor cu pre ntreg True Numrul biletelor cu pre redus True Situaia curent a vnzrilor True Preul total al biletelor True Suma avansat True Restul de plat 2-Center &H00C0C0C0& (Gri) 1-Fixed Single Arial, 10, Bold, Italic &H000000FF& (Albastru) 0 0 Arial 10, Bold Arial, 10, Bold &H00FF0000& (Rou) 1-Fixed Single True 2-Vertical
115

lblTotal lblSuma lblRest lblCalcRest

txtPInt txtPRed TxtTotal TxtSuma

txtSitVant

Crearea interfeelor grafice: principii i aplicaii

Tabelul 7 (final) Control CboPiesa cboSpec chkMatin opt02 opt03 opt04 optNone cmdEnter fraPreturi shpNr lblData lblOra Timer 3) se ataeaz codul VB controalelor grafice Private Sub Form_Load() Timer1.Interval = 1000 Setarea intervalului de timp. cboPiesa.AddItem Meditaiile Ritei cboPiesa.AddItem Elisabeta I cboPiesa.AddItem Visul unei nopi de var cboPiesa.AddItem Furtuna cboPiesa.AddItem Hamlet cboPiesa.AddItem Harfa de, iarba
116

Proprietate Sorted Style Text Text Caption Caption Caption Caption Caption Value Visible Caption Default Caption BorderStyle Shape AutoSize Caption AutoSize Caption

Valoare True 2-Dropdown List Matineu $2 $3 $4 None True False ENTER True Alegeti un pre pentru bilet 1-Solid 4-Rounded Rectangle True Data crt. True Ora crt.

4. Aplicaii

cboSpec.AddItem Mari cboSpec.AddItem Miercuri cboSpec.AddItem Joi cboSpec.AddItem Vineri cboSpec.AddItem Smbt -- 10,30 cboSpec.AddItem Smbt -- 19,00 cboSpec.AddItem Duminic -- 10,00 cboSpec.AddItem Duminic -- 18,30 End Sub Private Sub txtSuma_Click() txtSuma.Text = Format$ (txtSuma.Text, currency) End Sub Private Sub txtTotal_Click() If opt02 = True Then Pint = txtPInt.Text * 2 Pred = txtPRed.Text * 2 ElseIf opt03 = True Then Pint = txtPInt.Text * 3 Pred = txtPRed.Text * 3 ElseIf opt04 = True Then Pint = txtPInt.Text * 4 Pred = txtPRed.Text * 4 Else Pint = 0 Pred = 0 End If txtTotal.Text = Pint + Pred / 2 If chkMatin.Value = 1 Then txtTotal.Text = Format$ (txtTotal.Text * 0.75, currency) Else txtTotal.Text = Format$(txtTotal.Text, currency) End If End Sub Private Sub lblCalcRest_Click() lblCalcRest.Caption=Format$ (txtSuma.Text-txtTotal.Text, _ currency)
117

Crearea interfeelor grafice: principii i aplicaii

If lblCalcRest.Caption < 0 Then MsgBox ATENTIE! Suma < preul ! NU dati rest!! txtSuma.Text = End If End Sub Private Sub cmdEnter_Click() txtSitVan.Text = cboPiesa.Text & / & cboSpec.Text & _ // & txtPInt.Text & & txtPRed.Text & Chr$(13) _ & Chr$(10) & txtSitVan.Text cboPiesa.ListIndex = -1 Vidarea listelor din casetele combinate cboSpec.ListIndex = -1 chkMatin.Value = 0 Deselectarea casetei de opiune optNone.Value = True Selectarea butonului de opiune invizibil n scopul deselectrii acelui buton de opiune dintre cele 3 vizibile care a fost selectat Vidarea casetelor-text cu informaie numeric txtPInt.Text = 0 txtPRed.Text = 0 Vidarea casetelor-text cu informaie alfanumeric txtTotal.Text = . txtSuma.Text = lblCalcRest.Caption = Vidarea etichetei End Sub Private Sub Timer1_Timer() lblData.Caption = Date Afiarea datei curente lblOra.Caption = Time Afiarea orei curente End Sub 4) se ruleaz proiectul (Figurile 30 i 31).

118

4. Aplicaii

Figura 31 4.5. Exerciii privind crearea aplicaiilor cu mai multe forme; depanarea proiectelor cu fereastra-dialog Debug Exerciiul 9: Calculul ratei de returnare a unui mprumut i a sumei totale datorate; utilizarea funciilor financiare, a barelor de defilare pentru introducerea datelor i a unei forme suplimentare drept caset-dialog Se cere s se creeze un proiect pentru calcularea ratei de returnare a unui mprumut, precum i a sumei totale datorate la sfritul perioadei (vezi [T2] &1.6, &2.11, &2. 14, &2.19, &2.21).

119

Crearea interfeelor grafice: principii i aplicaii

Soluie Aplicaiile prezentate mai sus constau din mai multe tipuri de controale grafice inserate ntr-o singur form. Acest proiect const din mai multe forme n care sunt inserate tipuri noi de controale VB standard (barele de defilare); de asemenea, sunt folosite funciile financiare predefinite din biblioteca Visual Basic, precum i facilitile de dialog oferite de casetele-dialog predefinite InputBox i MsgBox, abordate deja n proiectele anterioare. n final, este prezentat fereastra-dialog Debug i este explicat modul n care poate fi utilizat pentru depanarea aplicaiilor. Scopul principal al acestui proiect este de a calcula rata lunar pentru plata unui mprumut i suma final care trebuie returnat. n acest scop trebuie furnizate: valoarea mprumutului, numrul de ani n care trebuie returnat mprumutul, dobnda anual (APR) stabilit la contractare. Valoarea mprumutului este tastat ntr-o caset-text; numrul de ani i dobnda sunt transmise prin intermediul unor bare de defilare orizontale. Prezentm, n continuare, crearea acestor forme i ataarea codului VB. De remarcat faptul c nu se ncepe cu construirea formei principale (frmCalcRata), care este o form standard de interfa cu utilizatorul i n care are loc calculul propriu-zis al ratei mprumutului, ci cu proiectarea formei secundare (frmInfo), care este n fond o caset-dialog lucru care va impune o setare special a proprietilor sale. De asemenea, trebuie semnalat faptul c n acest proiect inserarea controalelor i setarea proprietilor se realizeaz concomitent, ntruct formele conin mai multe controale de acelai tip i cu aceleai proprieti. I. Crearea formei secundare, redenumit frmInfo 1) se creeaz forma secundar, denumit frmInfo i se insereaz controalele:
120

4. Aplicaii

un icon ca fundal, o etichet care afieaz un mesaj privitor la rolul formei principale, frmCalcRata, un buton de comand care nchide forma, 2 etichete care afieaz numele autorului i data crerii proiectului, o linie orizontal care separ ultimele 2 etichete de celelalte controale grafice din form (Figura 32).

Figura 32 2) se seteaz proprietile formei i controalelor (Tabelul 8). Tabelul 8 Control frmInfo Proprietate BorderStyle Valoare 3 (Fixed Dialog); fiind o casetdialog nu trebuie s permit redimensionri Informaii despre calculul ratei False; fiind o caset-dialog, frmInfo nu trebuie s aib meniu-sistem

Caption ControlBox

121

Crearea interfeelor grafice: principii i aplicaii

Tabelul 8 (continuare) Control frmInfo Proprietate Height Top, Left Width WindowState Valoare 3000 vor fi setate n Run Time 5400 0 (Normal); fiind o casetdialog nu poate aprea nici maximizat nici minimizat True Calcularea ratei lunare pentru returnarea mprumutului True Peter Norton True 2 Februarie 2003 spaiu butonul va afia o imagine i nu un text 1-Graphical A:\Graphics\Icons\Misc\Check mrk.ico True 0-None dimensiunea casetei-imagine se va ajusta automat la dimensiunea imaginii A:\Samples\PGuide\calc\calc.ic o 1-Solid 3 ngroa linia BorderStyle nu poate lua dect valorile 1 sau 6

lblMsg

AutoSize Caption AutoSize Caption AutoSize Caption Caption Style Picture Default BorderStyle

lblAutor lblData cmdOk

ImaCalc

Picture lin1 BorderStyle BorderWidth

122

4. Aplicaii

3) se salveaz forma frmInfo i proiectul (Figura 33).

Figura 33 Observaie Deocamdat nu se ataeaz cod VB acestei forme; ea este salvat sub numele frmInfo.frm, iar proiectul este salvat sub numele de Pr22_CalcRata.vbp. II. Crearea formei principale, redenumit frmCalcRata 1) se creeaz forma principal, denumit frmCalcRata i se insereaz controalele: Pentru a aduga nc o form unui proiect se procedeaz astfel: meniul PROJECT comanda FORM, sau iconul AddForm de pe toolbarul Standard meniu derulant comanda FORM, sau clic cu butonul drept al mouse-ului n panelul Project Explorer al ferestrei Project meniu rapid comanda ADD subcomanda FORM n oricare din cele 3 cazuri se deschide fereastra-dialog Add Form (Figura 34) cu tabul New n care se selecteaz
123

Crearea interfeelor grafice: principii i aplicaii

Form clic pe OPEN noua form este adugat proiectului i ea apare n panelul Project Explorer.

Figura 34 Afiarea alternativ a formelor dintr-un proiect se realizeaz rapid prin dublu clic pe numele formei n panelul Project Explorer. 2) se insereaz urmtoarele controale grafice n forma adugat i se seteaz proprietile acestora i ale formei; inserarea i setarea se fac dup mai multe metode, astfel nct s se reduc timpul de lucru (Figura 35): o caset-text (pentru preluarea sumei mprumutului), 2 bare de defilare orizontale (pentru preluarea numrului de ani n care se returneaz mprumutul i a dobnzii lunare care trebuie pltit),

124

4. Aplicaii

Figura 35 9 etichete (dintre care 7 explic rolul controalelor grafice, iar 2 afieaz rezultatele: rata lunar i suma total care urmeaz s fie pltit), 3 butoane de comand, care efectueaz urmtoarele operaii: butonul CALCUL, implicit selectat, calculeaz rata lunar de returnare a mprumutului i o afieaz n prima etichet; dac valoarea mprumutului introdus n form (n caseta-text) nu este valid, atunci procedura-eveniment a butonului afieaz ntr-o caset-dialog MsgBox un mesaj de atenionare cu un singur buton: OK; selectndu-l, caseta-dialog se nchide, iar valoarea eronat este tears din casetatext a formei; butonul ELIMINARE terge valorile numerice afiate n caseta-text i n etichete i seteaz barele de defilare pe valorile minime; butonul INFORMATII afieaz caseta-dialog frmInfo deja creat;
125

Crearea interfeelor grafice: principii i aplicaii

3 casete geometrice de form dreptunghiular care au rolul de a grupa controalele grafice de mai sus astfel: o caset geometric pentru controalele care preiau informaia de intrare, o caset geometric pentru controalele care afieaz rezultatele i o caset geometric pentru butoanele de comand. Se procedeaz astfel: se ncepe cu inserarea casetelor geometrice i setarea proprietilor acestora i ale formei principale (Tabelul 9) Tabelul 9 Control FrmCalc Rata Proprietate Caption Top, Left Height Width BorderStyle Valoare Calcularea Ratei Imprumutului vor fi setate n Run Time 5265 5265 2 (Sizable); fiind o form standard trebuie s permit redimensionri True (implicit) forma va avea meniu sistem i butoane de minimizare i maximizare A:\Graphics\Icons\Misc\ Checkmrk.ico n locul iconului implicit pentru forme, caseta meniuluisistem ofer iconul unui calculator de buzunar, acelai care apare n frmInfo 0 (Normal) shpInput shpOutput shpCom

ControlBox, MinButton, MaxButton Icon

Shape1 Shape2 Shape3


126

WindowState Name Name Name

4. Aplicaii

se insereaz primele 7 etichete i se seteaz proprietile acestora (Tabelul 10). Cele 7 etichete sunt toate fr contur: 5 aparin casetei geometrice a datelor de intrare i 2 aparin casetei geometrice a datelor de ieire: . se creeaz prima etichet se seteaz proprietatea AutoSize a acesteia pe True (proprietatea Name rmne la valoarea implicit: Label1) . CTRL + C CTRL + V apare o fereastr-dialog n care se alege butonul de comand NO sau se tasteaz N (altfel, s-ar crea un vector de controale grafice) . s-a creat a 2-a etichet, care a preluat automat toate setrile fcute mai sus pentru eticheta-surs; ea apare n colul din stnga sus al formei, de unde poate fi glisat cu mouse-ul n poziia dorit. Se reia pasul (ii) pentru fiecare din celelalte 5 etichete care mai trebuie create. se insereaz ultimele 2 etichete, i anume, tot n caseta geometric a datelor de ieire; ele vor avea ns contur vizibil (pentru c vor servi la returnarea valorilor ratei i, respectiv, sumei totale datorate, nu la furnizarea unor explicaii); se seteaz proprietile acestora (Tabelul 10) se creeaz o etichet se seteaz proprietatea BorderStyle a acesteia pe 1-Fixed Single (proprietatea Name rmne la valoarea implicit: Label8) se copiaz eticheta ca mai sus. se insereaz caseta-text, cele 2 bare de defilare orizontale i cele 3 butoane de comand i se seteaz proprietilor lor; de asemenea, se seteaz celelalte proprieti ale etichetelor (Tabelul 10).

127

Crearea interfeelor grafice: principii i aplicaii

Tabelul 10 Control lblSuma lblNrAni lblValInfAni Proprietate Caption Caption Caption Alignment Caption Caption Alignment Caption Alignment Caption Alignment Caption Caption Alignment MultiLine Text Max Min LargeChange Max Min LargeChange Caption Caption Caption Valoare Suma mprumutat Nr. Ani 1 1-Right Justify (pentru c afieaz o valoare numeric) Dobnda pe an .01 1-Right Justify Suma de pltit lunar 1-Right Justify Suma total 1-Right Justify Spaiu Spaiu 1-Right Justify True (dac rmne False, resetarea proprietii Alignment este fr efect) Spaiu 30 1 5 1500 1 10 CALCUL ELIMINARE INFORMAII

LblDobAn lblValInfDob lblRata lblTotal lblAfRata lblAfTotal txtSuma

hsbNrAni hsbDobAn

cmdCalc cmdElim cmdInfo


128

4. Aplicaii

Observaie Pentru preluarea sumei mprumutate, se utilizeaz o caset-text i nu o etichet, ca n cazul returnrii ratei i sumei totale datorate. Motivul este acela c suma mprumutat nu este rezultatul unui calcul, ci o dat de intrare pe care utilizatorul trebuie s aib posibilitatea de a o modifica uor i orict de frecvent, recurgnd numai la manipularea direct a interfeei grafice a aplicaiei. Fiecare bar de defilare din frmCalcRata dispune de 2 etichete: cea din stnga explic tipul de informaie care este preluat cu ajutorul barei (numr de ani, dobnda lunar); cea din dreapta afieaz valoarea curent a informaiei controlat de bara respectiv. La fiecare acionare cu mouse-ul a cursoarelor de defilare, a zonei dintre caseta de defilare i unul dintre cursoare i la fiecare glisare a casetei de defilare pe bara de defilare se declaneaz evenimentul Change al barei i, de asemenea, se modific proprietatea Value a barei de defilare. Legtura dintre evenimentul Change al barei i informaia afiat de eticheta din stnga ei se va face prin cod VB. Observaii Proprietatea SmallChange a barelor de defilare nu a fost resetat deoarece convine valoarea implicit: 1. Aceasta nseamn c, la fiecare clic cu mouse-ul pe cursoarele de defilare, valoarea proprietii Value a barei crete, respectiv scade cu o unitate. Proprietatea Caption a etichetei lblValInfAni (aflat deasupra i n dreapta barei de defilare hsbNrAni) va afia valoarea proprietii Value a acestei bare de defilare, valoare ce reprezint numrul de ani n care trebuie returnat mprumutul (cel puin 1 an i cel mult 30). Analog, proprietatea Caption a etichetei lblValInfDob (aflat deasupra i n dreapta barei de defilare hsbDobAn) va reprezenta dobnda anual, dar va lucra puin diferit. Dobnzile sunt exprimate n procente, iar procentele sunt afiate ca numere reale cu 2 poziii la partea ntreag i 2 poziii la partea
129

Crearea interfeelor grafice: principii i aplicaii

zecimal. Pe de alt parte, domeniul de valori al proprietii Value pentru barele de defilare este ntotdeauna o submulime a mulimii numerelor ntregi (aici: {1, 2, , 1500}). De aceea, valoarea proprietii Caption a etichetei lblValInfDob se va obine prin nmulirea cu .01 a valorii returnate de proprietatea Value a hsbDobAn. Astfel, conform setrilor proprietilor Min = 1 i Max = 1500 pentru hsbDobAn, lblValInfDob va afia dobnzi cuprinse ntre 0.01 i 15.00 %. 3) se ataeaz codul VB: se stabilesc evenimentele i, respectiv, aciunile care trebuie s se produc pentru ca proiectul s-i realizeze scopul (aici 7 proceduri-eveniment: vezi Tabelul 11) se defininete forma Startup a proiectului: meniul PROJECT comanda PROJECT1 PROPERTIES n caseta derulant Startup Object din tab-ul General al ferestrei-dialog se alege numele formei care se definete ca form Startup (aici frmCalcRata) OK.. Orice proiect are n Run Time o form Startup; atunci cnd proiectul are o singur form, evident c ea devine automat forma Startup; atunci cnd proiectul are mai multe forme, se ia prin definiie ca form Startup prima form creat (se presupune c celelalte se deschid din aceasta prin coduri VB corespunztoare). n acest proiect ns, prima form creat a fost frmInfo, i nu frmCalcRata. Prin urmare, frmCalcRata trebuie definit ca form Startup pentru proiectul Pr22_CalcRata.

130

4. Aplicaii

Tabelul 11 Form frm CalcRata Control forma hsb NrAni hsb DobAn cmdCalc Eveniment Load Change Change Click Aciune Poziioneaz forma n centrul ecranului Actualizeaz valoarea proprietii Caption a etichetei lblNrAni Actualizeaz valoarea proprietii Caption a etichetei lblDobAn Calculeaz rata lunar i suma total care trebuie returnat i le afieaz n etichetele lblAfRata i lblAfTotal Elimin valorile introduse sau afiate n txtSuma, lblAfRata i lblAfTotal; reseteaz hsbNrAni i hsbDobAn pe valorile minime Deschide caseta-dialog frmInfo pe suprafaa formei frmCalcRata Inchide caseta-dialog frmInfo

cmdElim

Click

cmdInfo frmInfo cmdOk

Click Click

se ataeaz codul procedurii-eveniment frmCalcRata Form_Load pentru centrarea formei Startup. Pentru a poziiona forma frmCalcRata n centrul ecranului trebuie modificate proprietile Top i Left ale formei i trebuie folosite dimensiunile n twips ale ecranului (memorate de Visual Basic n Screen.Height i Screen.Width).

131

Crearea interfeelor grafice: principii i aplicaii

Private Sub Form_Load() frmCalcRata.Top = (Screen.Height frmCalcRata.Height) / 2 frmCalcRata.Left = (Screen.Width frmCalcRata.Width) / 2 End Sub se ataeaz codul procedurilor hsbNrAni_Change i hsbDobAn_Change pentru afiarea, n eticheta plasat deasupra barei i n dreapta ei, a datelor de intrare preluate cu ajutorul barelor de defilare orizontale. Private Sub hsbNrAni_Change() lblValInfAni.Caption = hsbNrAni.Value End Sub Private Sub hsbDobAn_Change() lblValInfDob.Caption = hsbDobAn.Value * 0.01 End Sub se ataeaz codul procedurii frmCalcRata_Click pentru calcularea i afiarea ratei lunare i a sumei totale de returnat. Procedura va trebui, la selectarea butonului de comand CALCUL: s calculeze rata dobnzii (se va folosi funcia financiar predefinit Pmt) i suma total de rambursat; s verifice c argumentul transmis prin caseta-text pentru funcia Pmt este numeric (se va folosi funcia IsNumeric); n cazul tastrii unei valori eronate (caracter nu cifr), s afieze un mesaj, s elimine valoarea eronat din casetatext i s repoziioneze pointerul n caseta txtSuma pentru tastarea unei noi valori (se va folosi metoda SetFocus). Funcia Pmt, una dintre funciile financiare din setul de funcii predefinite al Visual Basic, returneaz un numr real n dubl precizie care reprezint plata unei anuiti (mprumut sau investiie), plat bazat pe rate de valoare fix i dobnd fix. Sintaxa sa este: Pmt ( rata, nper, pv[, fv[, tip ]]) Argumentele funciei sunt transmise prin intermediul controalelor din forma frmCalcRata. Ele ns nu pot fi folosite
132

4. Aplicaii

ca atare ci vor fi compatibilizate cu sintaxa funciei, conform Tabelului 12. Argumentul funciei Pmt rata nper Pv fv tip Tabelul 12 Valoarea transformat dup preluarea din form .0001 * hsbDobAn.Value / 12 hsbNrAni.Value * 12 - 1 * txtSuma.Text 0 1

ntruct proprietatea Text a unei casete-text poate prelua mai degrab secvene de caractere dect numere, trebuie prevenit posibilitatea ca mprumutul s fie transmis nu ca un numr, ci ca o secven de caractere dintre care cel puin unele nenumerice. Acest lucru se poate face cu ajutorul funciei VB IsNumeric care are sintaxa: IsNumeric ( expresie) De obicei, atunci cnd valoarea returnat este False, codul continu cu afiarea unui mesaj de atenionare. Private Sub cmdCalc_Click() If IsNumeric(txtSuma.Text) = False Then ' Dac data de intrare este eronat se afieaz un mesaj prin funcia MsgBox; caseta-dialog are un icon cu semnul exclamrii i un singur buton de comand: OK MsgBox Va rog tastai suma numai in cifre, 48, _ Test pentru valori numerice Se elimin informaia eronat din caseta-text txtSuma.Text = ' Se plaseaz cursorul n caseta-text txtSuma.SetFocus Else ' Dac data de intrare este corect, se calculeaz rata cu Pmt rata = Pmt (0.0001 * hsbDobAn.Value / 12, _ hsbNrAni * 12, -1 * txtSuma.Text, 0, 1) ' Se afieaz rata lunar lblAfRata.Caption = Format$ (rata, currency)
133

Crearea interfeelor grafice: principii i aplicaii

' Se calculeaz i se afieaz suma total de rambursat lblAfTotal.Caption = Format$ (rata * hsbNrAni.Value _ * 12, currency) End If End Sub se ataeaz codul procedurii cmdElim_Click pentru eliminarea informaiilor (date de intrare i rezultate) introduse n form. Procedura va trebui, la selectarea butonului de comand ELIMINARE: s tearg valorile afiate de caseta-text txtSuma i etichetele lblAfRata, lblAfTotal; s readuc casetele de defilare n extremitatea stng a barelor de defilare (ceea ce reseteaz implicit i valorile afiate de etichetele lblValInfNrAni, lblValInfDobAn); s repoziioneze cursorul n caseta-text. Private Sub cmdElim_Click() txtSuma.Text = lblAfRata.Caption = lblAfTotal.Caption = hsbNrAni.Value = 1 hsbDobAn.Value = 1 txtSuma.SetFocus End Sub se ataeaz codul procedurii cmdInfo_Click pentru deschiderea celei de-a doua forme din proiect, frmInfo, care se comport ca o caset-dialog. Procedura va trebui, la selectarea butonului de comand INFORMATII: s poziioneze forma frmInfo tot n centrul ecranului; s o deschid (cu ajutorul procedurii Show). Private Sub cmdInfo_Click() frmInfo.Top = (Screen.Height frmInfo.Height) / 2 frmInfo.Left = (Screen.Width frmInfo.Width) / 2 frmInfo.Show 1 1 forma afiat este modal End Sub
134

4. Aplicaii

se ataeaz codul procedurii cmdOk_Click pentru nchiderea formei frmInfo. Procedura va trebui, la selectarea butonului de comand OK din forma frmInfo, s nchid forma. Operaia se realizeaz cu ajutorul instruciunii Unload. De observat c forma frmInfo nu are nici meniu-sistem nici icon de nchidere, deci aceast procedur cmdOk_Click este singura capabil s ndeprteze caseta-dialog frmInfo de pe ecran.
Private Sub cmdOk_Click() Unload frmInfo End Sub

Figura 36 Evident, acest cod este introdus n fereastra Code a formei frmInfo i nu n cea a formei frmCalcRata.
135

Crearea interfeelor grafice: principii i aplicaii

4) se ruleaz proiectul (vezi mai sus Figura 36) III. Depanarea proiectelor: fereastra-dialog Debug Depanarea este procesul de descoperire, izolare i corectare a erorilor din cod. n timpul execuiei proiectului, Visual Basic deschide o fereastr suplimentar, numit fereastra Debug, care faciliteaz depanarea codului proiectului. (Vezi [T2] &2.6). Execuia proiectului poate fi: ntrerupt temporar: prin selectarea iconului Break de pe toolbarul Standard (acest icon, situat ntre iconii Start i End, devine activ numai n Run Time), reluat: prin selectarea iconului Run, redenumit acum Continue. n timpul ntreruperii execuiei, aplicaia se afl n break mode. Atunci programatorul poate izola i afia valorile anumitor variabile, proprieti, apeluri de funcii sau orice expresii Visual Basic valide, n scopul depistrii erorilor. Facilitile de depanare oferite de Visual Basic sunt: afiarea valorilor variabilelor i proprietilor setarea i afiarea expresiilor de control (watch expressions): programatorul poate defini nite expresii de control, n care sunt specificate variabilele i proprietile ale cror valori trebuie afiate. Aceste expresii se construiesc nainte de lansarea n execuie a proiectului; modificarea valorii expresiei de control determin ntreruperea temporar a execuiei codului. iniierea unei afiri imediate (immediate watch): programatorul poate verifica valoarea oricrei variabile din program atunci cnd proiectul intr n break mode; oprirea execuiei la o anumit instruciune din cod setarea unui punct de ntrerupere (breakpoint): programatorul poate indica o instruciune din codul Visual Basic al proiectului la care dorete s opreasc temporar execuia; executarea codului instruciune cu instruciune (stepping through the code); execuia imediat a codului (the immediate pane).
136

4. Aplicaii

Setarea i afiarea expresiilor de control O metod de depanare la care poate recurge programatorul este urmtoarea: definirea unui punct de ntrerupere n execuia codului proiectului; lansarea n execuie a proiectului; iniierea unei afiri imediate n momentul n care proiectul intr n break mode, adic stabilirea unei variabile a crei valoare trebuie vizualizat nainte de reluarea execuiei. n cazul proiectului Pr22_CalcRata, care calculeaz rata de returnare a unui mprumut i suma final (mprumut + dobnd), un punct de ntrerupere i o afiare imediat se seteaz astfel: 1. se selecteaz forma frmCalcRata 2. se afieaz fereastra Code 3. se selecteaz procedura-eveniment cmdCalc_Click 4. se poziioneaz pointerul mouse-ului la a 8-a linie de cod: lblAfRata.Caption = Format$ (rata, currency) 5. meniul DEBUG comanda TOGGLE BREAKPOINT (sau F9) 6. se marcheaz faptul c aceast instruciune este un punct de ntrerupere a execuiei codului prin colorarea ei n grena i prin apariia unui disc pe bara de selecie (Figura 37) 7. se lanseaz proiectul n execuie prin clic pe iconul Start de pe toolbarul Standard 8. se introduc n form datele de intrare: 12000 n caseta-text txtSuma, 5 pe bara de defilare hsbNrAni, 6.5 pe bara de defilare hsbDobAn 9. se iniiaz calculul dobnzii i al sumei totale prin clic pe butonul de comand CALCUL 10. Visual Basic execut codul procedurii-eveniment pn la punctul de ntrerupere definit, adic pn la instruciunea marcat 11. apoi intr n break mode la baza ferestrei Code apare panelul Immediate Window
137

Crearea interfeelor grafice: principii i aplicaii

12. punctul de ntrerupere (instruciunea) are acum culoarea galben i marcajul s-a modificat ntr-o sageat galben (Figura 38)

Figura 37

138

4. Aplicaii

Figura 38 13. urmtoarea instruciune care ar trebui executat este chiar instruciunea definit ca punct de ntrerupere 14. se selecteaz cu mouse-ul variabila rata (a 7-a instruciune) 15. lsnd mouse-ul pe suprafaa selectat, se obine valoarea variabilei (s-a setat deci o afiare imediat pentru aceast variabil; vezi Figura 39) Aceeai informaie se poate obine i astfel: se selecteaz variabila meniul DEBUG comanda QUICK WATCH (sau SHIFT + F9) pe suprafaa formei se deschide fereastradialog Quick Watch (Figura 40).

139

Crearea interfeelor grafice: principii i aplicaii

Figura 39

Figura 40
140

4. Aplicaii

Figura 41 Aceast fereastr afieaz urmtoarele informaii: n zona Current Context: numele proiectului, modulului, i procedurii n care se afl expresia de control; n zona Expression: expresia de control; n zona Value: valoarea expresiei de control. Valoarea curent nu este afiat dac expresia nu apare ntr-o procedur listat n fereastra-dialog Call Stacks. Ea conine, pe lng butoanele de comand CANCEL i HELP, butonul de comand ADD, al crui rol este de a aduga expresia de control curent n fereastra Watch (Figura 41). Eliminarea unui punct de ntrerupere: meniul DEBUG comanda TOGGLE BREAKPOINT sau tasta F9. Eliminarea tuturor punctelor de ntrerupere: meniul DEBUG comanda CLEAR ALL BREAKPOINTS
141

Crearea interfeelor grafice: principii i aplicaii

tastele CRTL + SHIFT + F9. Setarea unei expresii de control i execuia codului instruciune cu instruciune Programatorul poate defini o expresie de control nainte de a lansa n execuie proiectul, dup care poate executa codul instruciune cu instruciune. n panelul Watch Window se pot afia tipul i valoarea variabilei sau proprietii selectate n liniile de cod. n aplicaia din Exerciiul 9 se poate proceda astfel: 1. se afieaz codul procedurii-eveniment cmdCalc_Click al formei frmCalcRata 2. se poziioneaz pointerul mouse-ului n stnga liniei a 2-a de cod: instruciunea
If IsNumeric (txtSuma.Text) = False Then

3. se deschide meniul DEBUG comanda TOGGLE BREAKPOINTS 4. s-a generat un punct de ntrerupere ca mai sus 5. se selecteaz cu mouse-ul n instruciune condiia, adic: IsNumeric (txtSuma.Text) 6. meniul DEBUG comanda ADD WATCH 7. pe suprafaa ferestrei Code se deschide fereastra-dialog AddWatch, care are urmtoarele elemente (Figura 42): zona Expression: afieaz expresia de control, care poate fi o variabil, o proprietate, un apel de funcie, orice expresie sintactic corect. Implicit, este afiat expresia selectat, dar programatorul poate tasta n locul acesteia orice alt expresie; zona Context: seteaz domeniul variabilelor din expresia de control prin indicarea: n caseta derulant Procedure a numelui procedurii n care apare elementul selectat. Aici se definete procedura sau setul de proceduri n care este evaluat expresia (se pot selecta toate procedurile sau numai una singur);
142

4. Aplicaii

n caseta derulant Module a numelui modulului n care apare elementul selectat (se pot selecta toate modulele sau numai unul singur); linia Project: afieaz numele proiectului curent (expresiile nu pot fi evaluate ntr-un context dinafara proiectului curent);

Figura 42 zona Watch Type conine 3 butoane de opiune care stabilesc modul n care Visual Basic reacioneaz la expresiile de control: prin selectarea butonului de opiune Watch Expression valoarea se afieaz n panelul Watch Window; la intrarea n break mode aceast valoare este actualizat automat; prin selectarea butonului de opiune Break When Value Is True aplicaia intr automat n break mode cnd valoarea expresiei de control este evaluat la
143

Crearea interfeelor grafice: principii i aplicaii

True sau este nenul (expresia nu poate fi de tip String); prin selectarea butonului de opiune Break When Value Changes aplicaia intr automat n break mode cnd valoarea expresiei de control se modific n contextul specificat. Observaii Expresia de control poate fi introdus n Immediate Window i prin glisare din fereastra Code. Contextul selectat trebuie s fie cel mai mic posibil. Selectarea tuturor procedurilor i modulelor ncetinete execuia codului deoarece evaluarea expresiei are loc dup fiecare instruciune. 8. se lanseaz proiectul n execuie prin clic pe iconul Start de pe toolbarul Standard 9. se introduc n form datele de intrare, de exemplu: 12000 n caseta-text txtSuma, 5 pe bara de defilare hsbNrAni, 6.5 pe bara de defilare hsbDobAn 10. se iniiaz calculul dobnzii i al sumei totale prin clic pe butonul de comand CALCUL 11. Visual Basic execut codul procedurii-eveniment pn la noul punct de ntrerupere definit, adic pn la instruciunea marcat 12. apoi intr n break mode 13. punctul de ntrerupere (instruciunea) are acum culoarea galben i marcajul s-a modificat ntr-o sageat galben (Figura 42) 14. meniul VIEW comanda WATCH WINDOW 15. la baza ferestrei Code se deschide fereastra-dialog Watches, n care apar tipul i valoarea expresiei selectate 16. meniul DEBUG comanda STEP INTO (sau F8) 17. se iniiaz execuia codului instruciune cu instruciune 18. se acioneaz F8 sau se introduc datele de intrare pn la ncheierea execuiei procedurii-eveniment sau pn la apariia unei erori.
144

4. Aplicaii

Eliminarea unei expresii din panelul Watches se realizeaz prin selectarea ei n panelul Watches i acionarea tastei DELETE. Utilizarea panelului Immediate Window O a treia metod de vizualizare a valorii unor variabile sau proprieti din codul Visual Basic al proiectului const n utilizarea panelului Immediate Window. n aplicaia din Exerciiul 9 se poate proceda astfel: 1. se lanseaz proiectul n execuie prin clic pe iconul Start de pe Standard 2. se introduc n form datele de intrare, de exemplu: 12000 n caseta-text txtSuma, 5 pe bara de defilare hsbNrAni, 6.5 pe bara de defilare hsbDobAn 3. se iniiaz calculul dobnzii i al sumei totale prin clic pe butonul de comand CALCUL 4. Visual Basic execut codul procedurii-eveniment 5. clic pe iconul Break aplicaia intr n break mode 6. meniul DEBUG comanda IMMEDIATE WINDOW 7. se poziioneaz pointerul mouse-ului n panelul Immediate Window 8. se tasteaz Print IsNumeric (txtSuma.Text) 9. n panelul Immediate Window apare valoarea, aici: True (vezi Figura 43) 10. se poate continua execuia (iconul Continue care l-a nlocuit pe Start) sau se poate ncheia imediat (iconul End).

145

Crearea interfeelor grafice: principii i aplicaii

Figura 43 4.6. Exerciii privind accesarea bazelor de date cu Visual Basic Exerciiul 10: Afiarea informaiilor coninute ntr-o baz de date Ms Access; utilizarea controlului Data, a meniurilor i cheilor rapide Se cere s se creeze un proiect pentru afiarea informaiilor coninute ntr-o baz de date Ms Access (vezi [T2] &2.22, &2.23, &2.24). Soluie Acest proiect va conine un control Data care va fi legat de alte controale din form, destinate s preia i s afieze informaiile dintr-o baz de date. De asemenea, el va fi nzestrat cu meniuri, submeniuri i un meniu rapid, care vor realiza toate operaiile necesare.
146

4. Aplicaii

Proiectarea acestei aplicaii ilustreaz: crearea meniurilor de pe barmeniu i a meniurilor rapide; ataarea cheilor rapide de acces la comenzi; semnalarea comenzii curent selectate printr-un marcaj afiat n stnga ei; afiarea difereniat a comenzilor active i a celor inactive. utilizarea culorilor n proiecte; crearea vectorilor de controale; scrierea codului pentru selectarea nregistrrilor dintr-o baz de date; crearea procedurilor generale. Descrierea aplicaiei Proiectul afieaz informaia coninut ntr-o baz de date deja creat cu MS Access, denumit Atlas (Figura 44). Baza de date conine un singur tabel, numit ri. Proprietile cmpurilor acestui tabel au fost setate astfel:

Figura 44 Codara: cmp de cheie primar, de tip Text i de lungime 3, formatul >; ara, Capitala, Forma Statal: tipul Text, lungimea 30, respectiv 20 i 20; Suprafaa, Populaia: tipul Number, lungimea Single, respectiv Double, formatul General Number; Steagul: tipul OLE. Operaiile care se pot efectua n acest proiect (i comenzile corespunztoare) sunt:
147

Crearea interfeelor grafice: principii i aplicaii

furnizarea explicaiilor despre proiect (meniul FILE comanda ABOUT; meniul FILE este un meniu derulant); nchiderea aplicaiei (meniul FILE comanda EXIT); parcurgerea tabelului ri din Atlas.mdb prin selectarea nregistrrii anterioare, urmtoare, a primei sau a ultimei nregistrri (meniul SELECT comenzile PREVIOUS, NEXT, FIRST, LAST; meniul SELECT este un meniu rapid al formei); afiarea tuturor informaiilor despre o anumit ar, respectiv numai a numelui i a steagului ei (meniul SETTINGS comanda VIEW subcomenzile NAME ONLY, respectiv ALL INFO; meniul SETTINGS i submeniul VIEW sunt de tip derulant, iar cele 2 subcomenzi se exclud reciproc); schimbarea culorii fundalului formei (meniul SETTINGS comanda COLORS subcomenzile YELLOW, BLUE, WHITE (pentru revenirea la culoarea iniial); submeniul COLORS este, de asemenea, de tip derulant). Comenzile selectate vor fi afiate cu un marcaj de selecie, iar cele inactive cu culori deschise; proiectul poate rula i minimizat, poate fi redimensionat etc. (Figura 45). I. Inserarea controalelor Forma conine o caset-imagine, 10 etichete i un control Data. Cele 10 etichete formeaz un vector de controale; meniurile sunt create cu aplicaia auxiliar Menu Editor (Figura 46). I.1. Inserarea etichetelor Cele 10 etichete sunt dispuse pe 2 coloane: cele din stnga afieaz numele cmpurilor din tabelul ri, iar cele din dreapta afieaz informaia din cmpurile respective. Vectorul de etichete se creeaz astfel: 1. se creeaz prima etichet i se poziioneaz n form 2. se seteaz proprietile: BackStyle = 1-Opaque (implicit este 0-Transparent pentru cazul formelor cu fundal colorat; dac ns programatorul vrea s evidenieze controalele formei atunci seteaz proprietatea BackStyle ca mai sus i proprietatea BackColor pe culoarea dorit; altfel, valoarea proprietii BackStyle este ignorat) 3. se selecteaz eticheta CTRL + C CTRL + V
148

4. Aplicaii

4. n fereastra-dialog se selecteaz YES se creeaz o a doua etichet cu aceleai proprieti ca i prima; cele 2 etichete au aceleai valori pentru proprietile Name i Caption, dar au numerele de ordine 0 i respectiv 1 5. se reia pasul 3 de nc 8 ori.

Figura 45 Dup creare, etichetele trebuie dispuse ntr-o anumit ordine pentru a facilita setarea proprietilor, i anume: pe coloana din stnga, etichetele cu indexul de la 0 la 4, iar pe coloana din dreapta, cele cu indexul de la 5 la 9. I.2. Inserarea controalelor Image i Data Se insereaz: controlul Image deasupra celor dou coloane de etichete, iar controlul Data la baza formei (n acest proiect, controlul nu va fi vizibil n Run Time, deoarece operaiile pe care le realizeaz el sunt preluate de meniul rapid SELECT; ca atare, poziia i dimensiunile sale n form nu au mare importan). Proprietatea Name va fi setat pe imaSteag i respectiv datAtlas; pentru
149

Crearea interfeelor grafice: principii i aplicaii

controlul Data, proprietatea Caption va fi setat pe Atlas, dei controlul nu e vizibil dect n Design Time. I.3. Crearea meniurilor Se creeaz barmeniul proiectului astfel (Figura 46): 1. clic pe iconul MenuEditor de pe toolabtul Standard 2. se deschide fereastra-dialog Menu Editor 3. n linia Caption se tasteaz numele primului meniu (aici: &FILE ) 4. meniul &FILE apare n caseta-list a ferestrei Menu Editor 5. n linia Name se tasteaz numele meniului (aici: mnuFile) 6. clic pe butonul de comand NEXT 7. controalele ferestrei Menu Editor sunt golite de informaii i se trece la crearea unui nou element de meniu

Figura 46
150

4. Aplicaii

8. se reiau paii 3, 4 i 5 pentru prima comand a meniului FILE, numit &ABOUT (mnuAbout) 9. butonul de comand RIGHT ARROW 10. &ABOUT este retrogradat, deoarece este n fapt o comand i nu un meniu 11. se reiau paii 6 i 7 comanda &ABOUT apare n caseta-list n poziia corect 12. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda &EXIT (mnuExit) a meniului &FILE 13. butonul de comand LEFT ARROW din fereastra Menu Editor pentru a promova urmtorul element de meniu, care este un meniu i nu o comand 14. se reiau paii 3, 4, 5, 6, 7 pentru meniul &SETTINGS (mnuSettings) 15. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda &VIEW (mnuView) 16. se reiau paii 3, 4, 5 pentru subcomanda NAME &ONLY (mnuName) 17. butonul de comand RIGHT ARROW 18. NAME &ONLY este retrogradat de 2 ori, deoarece este o subcomand 19. se reiau paii 6, 7 subcomanda NAME &ONLY apare n caseta-list n poziia corect din meniu 20. se reiau paii 3, 4, 5, 16, 6, 7 pentru subcomanda ALL &INFO (mnuAll); n plus, pentru mnuAll caseta de opiune Enabled se deselecteaz pentru ca, la deschidere, forma s afieze implicit toate informaiile i s nu fie activ dect comanda NAME ONLY 21. butonul de comand RIGHT ARROW 22. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda &COLORS (mnuColors) din meniul SETTINGS 23. se reiau paii 3, 4, 5, 17, 6, 7 pentru subcomanda RE&D (mnuRed) 24. se reiau paii 3, 4, 5, 17, 6, 7 pentru subcomanda &BLUE (mnuBlue) 25. se reiau paii 3, 4, 5, 17, 6, 7 pentru subcomanda &WHITE (mnuWhite) 26. butonul de comand LEFT ARROW selectat de 2 ori pentru promovare 27. se reiau paii 3, 4, 5 pentru meniul SE&LECT (mnuSelect)
151

Crearea interfeelor grafice: principii i aplicaii

28. se deselecteaz caseta de opiune Visible deoarece meniul SE&LECT este un meniu rapid i nu este vizibil pe barmeniu 29. se reiau paii 6 i 7 30. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda &NEXT (mnuNext) a meniului SE&LECT 31. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda &PREVIOUS (mnuPrevious) a meniului SE&LECT 32. n linia Caption se tasteaz un hyphen n meniul SE&LECT se creeaz o linie de separaie ntre comenzile NEXT, PREVIOUS i FIRST, LAST 33. n linia Name se tasteaz separator NEXT 34. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda FI&RST (mnuFirst) a meniului SE&LECT 35. se reiau paii 3, 4, 5, 9, 6, 7 pentru comanda LAS&T (mnuLast) a meniului SE&LECT 36. se nchide fereastra Menu Editor cu butonul de comand OK. II. Setarea proprietilor II.1. Proprietile formei Poziia formei n centrul ecranului va fi stabilit n Run Time. n Design Time setm urmtoarele proprieti: Name = frmAtlas BackColor = vbWhite Caption = Atlas Viewer Icon = A:\Graphics\Icons\Misc\Bridge.ico Height = 4900 Width = 3800 II.2. Proprietile casetei-imagine Name = imaFlag Height = 960 Width = 960 Strech = True dimensiunile casetei-imagine se vor adapta la dimensiunile imaginii steagului fiecrei ri din baza de date.

152

4. Aplicaii

II.3. Proprietatea Caption a celor 5 etichete de pe coloana din stnga Label1(0) ara Label1(1) Capitala Label1(2) Forma Statal Label1(3) Suprafaa Label1(4) Populaia

II.4. Proprietile controlului Data Caption = Atlas DatabaseName = C:\winnt\Profiles\Personal\Atlas.mdb (numele i calea fiierului bazei de date) RecordsetType = 0-Table RecordSource = ri (numele tabelului) Connect = Microsoft Access (valoare implicit: numele aplicaiei care a creat baza de date) Visible = False (controlul nu trebuie s apar n form). II.5. Proprietile controalelor orientate ctre date Controalele de pe coloana din dreapta vor afia informaia din baza de date; deci, ele vor fi corelate cu controlul Data i legate de cmpurile tabelului ri din baza de date Atlas.mbd prin setarea proprietilor DataSource i DataField: Label 1(5):DataSource = DatAtlas DataField = ara Label 1(6):DataSource = DatAtlas DataField = Capitala Label 1(7) DataSource = DatAtlas DataField = FormaStatala Label 1(8):DataSource = DatAtlas DataField = Suprafaa Label 1(9):DataSource = DatAtlas DataField = Populaia Proprietile Name i Caption rmn neschimbate: prima pentru c etichetele fac parte dintr-un vector; a doua pentru c valorile predefinite sunt automat nlocuite de valorile din cmpurile respective ale primei nregistrri din tabel.
153

Crearea interfeelor grafice: principii i aplicaii

III. Ataarea codului Visual Basic Pentru rularea proiectului, trebuie scrise 15 procedurieveniment i o procedur general. Numele controlului, numele evenimentului i scopul procedurii-eveniment sunt descrise n Tabelul 13: III.1. Procedura frmAtlas_Load Private Sub Form_Load() Centrarea formei pe ecran frmAtlas.Top = (Screen.Height frmAtlas.Height) / 2 frmAtlas.Left = (Screen.Width frmAtlas.Width) / 2 Etichetele (implicit aliniate la stnga) de pe coloana din stnga trebuie aliniate la dreapta; deoarece etichetele fac parte dintr-un vector se poate folosi un ciclu For For I = 0 to 4 Label1(I).Alignment = 1 Next End Sub III.2. Procedura mnuExit_Click Private Sub mnuExit_Click() End End Sub III.3. Procedura mnuAbout_Click Procedura va afia ntr-o prim caseta-dialog MsgBox cu butoane de comand YES i NO un mesaj, permind utilizatorului s continue rularea aplicaiei sau s-o ncheie; dac utilizatorul alege NO (deci vrea s nchid aplicaia), el mai primete nc un mesaj pentru confirmare, ntr-o a doua caset-dialog MsgBox tot cu butoane YES i NO; dac el alege tot butonul NO, pe lng afiarea mesajului de atenionare, aplicaia se nchide (efect echivalent cu comanda FILE EXIT din meniul formei) prin instruciunea End.

154

4. Aplicaii

Tabelul 13 Control frmAtlas mnu About mnuExit mnuName mnuAll mnuRed mnuBlue mnuWhite mnuNext mnu Previous mnuFirst mnuLast FrmAtlas Label1 imaSteag Eveniment Load Click Click Click Click Click Click Click Click Click Click Click MouseUp MouseUp MouseUp Scop Centrarea formei pe ecran i realinierea controalelor de pe coloana din stnga Deschiderea unui MsgBox cu informaii despre aplicaie nchiderea proiectului Afiarea numelui i steagului fiecrei ri Afiarea tuturor informaiilor despre fiecare ar Schimbarea culorii fondului formei n rou Schimbarea culorii fondului formei n albastru Revenirea la culoarea iniial a fondului: alb Afiarea informaiei din nregistrarea urmtoare din tabel Afiarea informaiei din nregistrarea precedent din tabel Afiarea informaiei din prima nregistrare din tabel Afiarea informaiei din ultima nregistrare din tabel Afiarea meniului rapid SELECT la acionarea butonului drept Afiarea meniului rapid SELECT la acionarea butonului drept Afiarea meniului rapid SELECT la acionarea butonului drept
155

Crearea interfeelor grafice: principii i aplicaii

Private Sub mnuAbout_Click() Se creeaz prima caset-dialog pentru a ti dac aplicaia va continua sau nu Msg = Daca doriti sa consultati baza de date selectati YES; Msg = Msg & Chr$(10) & Chr$(13) & daca doriti sa inchideti _ proiectul, selectati NO. Stil = vbYesNo + vbCritical + vbDefaultButton1 Titlu = Proiectul acceseaz tabelul TARI din ATLAS.mdb. Raspuns = MsgBox (Msg, Stil, Titlu) If Raspuns = vbYes Then Utilizatorul a ales YES deci primete un mesaj de continuare Msg = Ati ales YES sau ati dat ENTER, Msg = Msg & Chr$(10) & Chr$(13) & deci puteti continua _ utilizand barmeniul sau meniul rapid al aplicatiei. MsgBox Msg Salt la sfritul procedurii pentru a evita celelalte mesaje GoTo 1 ElseIf Raspuns = vbNo Then Se pregtete a doua caset-dialog pentru confirmarea nchiderii aplicaiei Msg1 = Daca sunteti sigur ca doriti sa inchideti proiectul, _ selectati NO; Msg1 = Msg1 & Chr$(10) & Chr$(13) & daca _ v-ati razgandit, selectati YES i puteti continua! Stil1 = vbYesNo + vbCritical + vbDefaultButton2 Titlu1 = Mesaj de confirmare pentru inchiderea proiectului Raspuns1 = MsgBox(Msg1, Stil1, Titlu1) End If If Raspuns1 = vbNo Then Utilizatorul a ales NO i n a doua caset, deci aplicaia se va nchide Msg2 = Ati ales NO sau ati dat ENTER, Msg2 = Msg2 & Chr$(10) & Chr$(13) & deci aplicatia _ se va inchide imediat. MsgBox Msg2 End Else Utilizatorul s-a rzgndit, deci aplicaia nu se nchide Msg2 = Ati ales YES, Msg2 = Msg2 & Chr$(10) & Chr$(13) & deci puteti _ continua utilizand barmeniul sau meniul rapid al aplicatiei.
156

4. Aplicaii

MsgBox Msg2 End If End Sub III.4. Procedurile submeniului COLORS al meniului SETTINGS Submeniul COLORS din meniul SETTINGS permite setarea culorii fundalului formei prin selectarea uneia dintre comenzile RED, YELLOW sau BLUE, deci prin lansarea uneia dintre procedurile-evenimet mnuRed_Click, mnuYellow_Click sau mnuBlue_Click. Fiecare dintre proceduri realizeaz aceleai aciuni: coloreaz fundalul formei n culoarea respectiv, ataeaz un marcaj de selecie comenzii corespunztoare din submeniu, elimin marcajul de selecie de la oricare dintre celelalte subcomenzi. Constantele VB pentru culori se formeaz din prefixul rezervat vb i din numele englezesc al culorii. Sintaxa instruciunilor folosite este: numeobiect.BackColor = constanta VB a culorii numeelementdomeniu.Checked = expresie boolean Codul procedurilor va fi: Private Sub mnuRed_Click() frmAtlas.BackColor = vbRed mnuBlue.Checked=False mnuWhite.Checked=False mnuRed.Checked=True End Sub Private Sub mnuBlue_Click() frmAtlas.BackColor = vbBlue mnuRed.Checked=False mnuWhite.Checked=False mnuBlue.Checked=True End Sub Private Sub mnuWhite_Click() frmAtlas.BackColor = vbWhite mnuRed.Checked=False
157

Crearea interfeelor grafice: principii i aplicaii

mnuBlue.Checked=False mnuWhite.Checked=True End Sub III.5. Procedurile-eveniment ale submeniului VIEW din meniul SETTINGS (de tip on/off): utilizarea procedurilor generale O procedur-eveniment este lansat n execuie prin iniierea evenimentului respectiv. n plus, o procedur-eveniment poate lansa ea nsi n execuie o procedur general, care efectueaz o operaie compatibil cu mai multe controale sau evenimente. Astfel, submeniul VIEW din meniul SETTINGS conine 2 comenzi care se exclud reciproc (una permite afiarea numai a steagului i a numelui rii, cealalt afieaz toate informaiile despre ar). Ele acioneaz n acelai mod: modificnd valoarea curent a proprietii Visible a etichetelor ataate cmpurilor Capitala, Populaia etc. din Atlas.mdb. Astfel, comanda NAME ONLY ascunde aceste controale (seteaz proprietatea pe False), iar comanda ALL INFO le afieaz pe toate (seteaz proprietatea pe True). O astfel de aciune asupra unui obiect Visual Basic se realizeaz cu ajutorul operatorului Not aplicat ntr-o instruciune de atribuire: numeob.numeproprietate = Not numeob.numeproprietate cu condiia ca respectiva proprietate s ia valori booleene. Pentru a nu repeta acelai cod n ambele proceduri-eveniment, Sub mnuName_Click() i Sub mnuAll_Click() s-a recurs la scrierea unei proceduri generale care va fi lansat n execuie att din Sub mnuName_Click(), ct i din Sub mnuAll _Click(). Iniiem screirea procedurii: 1. fereastra Code meniul TOOLS comanda ADD PROCEDURE 2. se deschide fereastra-dialog Add Procedure
158

4. Aplicaii

3. n linia Name se tasteaz numele procedurii, aici: ComutaAfisarea OK 4. n fereastra Code, n sectiunea General, au aprut parantezele Public Sub ComutaAfisarea() End Sub i se poate trece la scrierea codului. Se scrie mai nti codul procedurii generale ComutaAfisarea i apoi codul procedurilor Sub mnuName_Click() i Sub mnuAll _Click(). Public Sub ComutaAfisarea() ' Se comut valorile proprietii Visible pentru cele 4 perechi de etichete destinate capitalei, populaiei etc. For i = 1 To 4 Label1(i).Visible = Not Label1(i).Visible Next For i = 6 To 9 Label1(i).Visible = Not Label1(i).Visible Next ' Dezactiveaz comanda care fusese activ mnuName.Enabled = Not mnuName.Enabled mnuAll.Enabled = Not mnuAll.Enabled End Sub Private Sub mnuName_Click() Apelarea procedurii generale ComutaAfisarea End Sub Private Sub mnuAll_Click() Apelarea procedurii generale ComutaAfisarea End Sub III.6. Procedurile-eveniment ale meniului rapid SELECT Comenzile acestui meniu efectueaz aceleai operaii ca i taburile controlului Data inserat n form; tocmai de aceea acest control este ascuns n Run Time i rolul su este preluat de meniul rapid (pentru verificare, se poate reveni n Design Time asupra controlului datAtlas pentru resetarea proprietii Visible pe True, testarea operaiilor de parcurgere cu taburi i resetarea proprietii Visible din nou pe False).
159

Crearea interfeelor grafice: principii i aplicaii

Vor fi utilizate metodele MoveNext, MovePrevious, MoveFirst i MoveLast n instruciuni cu sintaxa: numecontrolData.Recordset.MoveNext Efectul utilizrii lor va fi ns puin diferit de cel al utilizrii taburilor controlului Data. Astfel, utilizatorul selecteaz tabul Next al controlului Data i, dac toate controalele orientate spre date din form afieaz informaia din cmpurile ultimei nregistrri, atunci ultima nregistrare continu s fie nregistrare curent i nici un salt nu se produce. O situaie analog apare n cazul tabului Previous. Pe de alt parte, dac se utilizeaz metoda MoveNext atunci cnd controalele afieaz informaia din ultima nregistrare, o nregistrare nou devine nregistrarea curent i sfritul fiierului, sau proprietatea EOF a recordset-ului i schimb valoarea din False n True. O situaie analog apare n cazul metodei MovePrevious i al proprietii BOF a recordset-ului. Codul celor 4 proceduri-eveniment pentru cele 4 comenzi ale meniului SELECT este: Private Sub mnuFirst_Click() Indiferent de nregistrarea afiat, se trece la prima nregistrare datAtlas.Recordset.MoveFirst End Sub Private Sub mnuLast_Click() Indiferent de nregistrarea afiat, se trece la ultima nregistrare datAtlas.Recordset.MoveLast End Sub Private Sub mnuNext_Click() datAtlas.Recordset.MoveNext If datAtlas.Recordset.EOF = True Then Salt la prima nregistrare are loc o ciclare n tabel datAtlas.Recordset.MoveFirst End If End Sub Private Sub mnuPrevious_Click() datAtlas.Recordset.MovePrevious If datAtlas.Recordset.BOF = True Then Salt la ultima nregistrare are loc o ciclare n tabel
160

4. Aplicaii

datAtlas.Recordset.MoveLast End If End Sub III.7. Procedurile-eveniment pentru evenimentul MouseUp O procedur-eveniment MouseUp sau MouseDown este lansat n execuie atunci cnd utilizatorul acioneaz butonul stng, respectiv drept, al mouse-ului. Spre deosebire de evenimentele Click i DblClick, evenimentele MouseUp i MouseDown permit programatorului prin parametrii procedurilor-eveniment asociate s disting butoanele mouse-ului. ntruct meniul SELECT este conceput ca meniu rapid i nu ca meniu pe barmeniul proiectului (proprietatea sa Visible a fost setat pe False prin deselectarea casetei de opiune Visible din fereastra Menu Editor) afiarea lui este declanat de acionarea butonului drept al mouse-ului. Prin urmare, trebuie utilizat evenimentul MouseUp i testat argumentul button pentru valoarea 2. n plus, contextul acestui meniu poate fi att forma nsi, ct i fiecare dintre controalele sale; deci: acest proiect va folosi contextul implicit, adic poziia curent a mouse-ului. din acest motiv, trebuie scris cte o astfel de procedur-eveniment att pentru form, ct i pentru controlul imaSteag i pentru vectorul de etichete. Se folosete instruciunea PopupMenu numemeniurapid ntr-o structur If Then, care verific dac numrul de ordine al butonului mouse-ului care a fost acionat este 2 (butonul drept). Private Sub Form_MouseUp (Button As Integer, Shift As Integer, _ X As Single, Y As Single) If Button = 2 Then PopupMenu mnuSelect End Sub Private Sub imaSteag_MouseUp (Button As Integer, _ Shift As Integer, X As Single, Y As Single) If Button = 2 Then PopupMenu mnuSelect End Sub Private Sub Label1_MouseUp (Index As Integer, Button As _ Integer, Shift As Integer, X As Single, Y As Single)
161

Crearea interfeelor grafice: principii i aplicaii

If Button = 2 Then PopupMenu mnuSelect End Sub IV. Salvarea proiectului Pentru a putea rula proiectul de pe disket trebuie salvat forma, proiectul, dar i baza de date ale crei informaii trebuie afiate. n plus, noua cale a fiierului bazei de date trebuie specificat nainte de salvarea proiectului n proprietatea DatabaseName a controlului Data din form. 4.7. Exerciii privind creearea evenimente Drag-and-Drop aplicaiilor cu

Exerciiul 11: Simularea unui test pentru examenul auto; Se cere s se creeze un proiect pentru simularea unui test susinut n vederea obinerii permisului de conducere. Soluie Una dintre metodele de interaciune cu aplicaiile Windows este glisarea i eliberarea obiectelor cu mouse-ul (drag-and-drop). I. Descrierea aplicaiei Proiectul const dintr-o singur form care conine 5 semne de circulaie i 5 containere (precum i alte controale auxiliare). Fiecare semn de circulaie trebuie glisat n containerul corespunztor (conform etichetei ataate); dac este ales un container greit atunci semnul de circulaie revine n locaia iniial. n plus, sunt contabilizate rspunsurile corecte i este furnizat un mic chestionar privitor la forma semnelor de circulaie. Interaciunea cu proiectul se realizeaz, prin urmare, prin metoda drag-and-drop i printr-un meniu (OPTIUNI) cu 3 comenzi: ELIMINARE, SOLUTIE, TEST.

162

4. Aplicaii

II. Inserarea controalelor Forma conine: o etichet independent, o caset geometric, o caset-imagine independent, 2 vectori cu cte 5 casete-imagine, 1 vector cu 5 etichete, un barmeniu cu un singur meniu, format din 3 comenzi. II.1. Inserarea controalelor independente: eticheta, caseta geometric i caseta-imagine Eticheta va afia instruciunile legate de utilizarea formei; caseta geometric va servi drept container pentru unul dintre vectorii de casete-imagine; caseta-imagine este inserat la baza formei i devine invizibil n Run Time pentru motive ce vor fi explicate mai trziu (Figura 47). II.2. Inserarea vectorului de casete-imagine imaSemne Metoda drag-and-drop utilizat n Run Time fr a fi nsoit de un cod Visual Basic adecvat creeaz numai iluzia deplasrii obiectelor n form. De fapt, n momentul n care butonul (stng al) mouse-ului este eliberat obiectul revine n poziia iniial. Pentru a crea iluzia deplasrii obiectului glisat cu mouse-ul sunt folosite proprietile DragIcon i Visible ale obiectului (setate pe imaginea obiectului nsui i, respectiv, pe False). Concomitent, un obiect din aceeai clas i aezat n alt locaie n form este setat s preia imaginea obiectului glisat (prin setarea proprietii sale Picture).

163

Crearea interfeelor grafice: principii i aplicaii

Caseta geometric

Caseta-imagine Figura 47 Dac este necesar ns deplasarea efectiv a obiectului dintr-o locaie n alta n form, atunci este necesar ataarea unui cod Visual Basic special, care s conduc la repoziionarea obiectului n momentul eliberrii butonului stng al mouse-ului. Vom numi: controlul glisat cu mouse-ul: control-surs; controlul peste care este poziionat controlul-surs n timpul glisrii: control-destinaie. Primul set de controale de tip caset-imagine din acest proiect conine imaginile grafice a 5 semne de circulaie. Pentru facilitarea scrierii codului, cele 5 casete-imagine sunt grupate ntr-un vector, numit imaSemne, i sunt ncadrate n caseta geometric creat anterior. Posibilitatea de a glisa sau nu un control n form n Run Time este determinat de valoarea proprietii DragMode a controlului. Dac programatorul vrea ca utilizatorul s poat glisa cu mouse-ul un control din form ca n orice aplicaie
164

4. Aplicaii

Windows (cu butonul stng apsat), el trebuie s seteze proprietatea DragMode a respectivului control pe 1-Automatic (ea este implicit setat pe 0-Manual). Setarea se poate face att n Design Time, ct i n Run Time. n acest proiect, se procedeaz astfel: 1. se creeaz o caset-imagine 2. se gliseaz controlul n caseta geometric n extremitatea stng 3. se seteaz proprietatea Name pe imaSemne 4. se seteaz proprietatea DragMode pe 1-Automatic n Properties Window 5. se copiaz controlul de 4 ori obinndu-se vectorul imaSemne(0), , imaSemne(4). II.3 Inserarea vectorului de casete-imagine ImaContainere Un al doilea vector de casete-imagine, denumit imaContainere, const tot din 5 casete-imagine, care vor funciona ca nite containere menite s primeasc imaginile cu semnele de circulaie. Ele vor fi deci controalele-destinaie i iniial vor trebui s apar ca vide. Crearea vectorului imaContainere urmrete aceiai pai ca mai sus, mai puin setarea proprietilor. Forma arat acum ca n Figura 48. II.4. Inserarea vectorului de etichete lblSemnif Aceste etichete au rolul de a afia n form o explicaie, un text reprezentnd semnificaia containerelor din vectorul imaContainere. Ele sunt inserate tot ca un vector, cu numele lblSemnif; dintre proprietile primei etichete create a mai fost resetat, pe lng Name, i proprietatea AutoSize, i anume pe valoarea True.

165

Crearea interfeelor grafice: principii i aplicaii

Figura 48 II.5. Crearea meniului De la iconul MenuEditor de pe toolbarul Standard se deschide fereastra-dialog Menu Editor i se definesc meniul OPTIUNI i comenzile sale: ELIMINARE, SOLUTIE, TEST. Numele acestor elemente de meniu sunt: mnuOpt, mnuElim, mnuSol i, respectiv, mnuTest. Celelalte elemente din fereastra editorului i-au pstrat setrile implicite. n acest moment interfaa este complet i arat ca n Figura 49. Atenie la ordinea controalelor grafice n fiecare vector. Inserarea se face n ordine de la stnga la dreapta, iar elementele celor 3 vectori trebuie s se corespund. Altfel, codul nu va funciona.

166

4. Aplicaii

Figura 49 III. Setarea proprietilor III.1. Setarea proprietilor formei Poziionarea formei n centrul ecranului se va face ca n toate exerciiile anterioare n Run Time prin cod VB. Celelalte proprieti se vor reseta astfel: Name = frmExAuto Caption = nvarea semnelor de circulaie Icon = A:\Graphics\Icons\Traffic\Trffc09.ico Height = 4995 Width = 7080 III.2. Setarea proprietii Caption pentru vectorul de etichete lblSemnif n panelul Properties Window, n linia Caption a etichetelor, selectate pe rnd n form, se tasteaz respectiv: Autostrada; Stop; Viteza maxima 50; Drum alunecos; Sens interzis.
167

Crearea interfeelor grafice: principii i aplicaii

III.3. Setarea proprietii Picture pentru casetele-imagine din vectorul imaSemne n panelul Properties Window n linia Picture a casetelorimagine, selectate pe rnd n vectorul imaSemne, se lanseaz procedura de asisten i, n fereastra-dialog Load Icon, se selecteaz fiierele: A:\Graphics\Icons\Traffic\trffc11.ico, respectiv trffc14.ico, trffc12.ico, trffc07.ico, trffc13.ico. III.4. Setarea proprietilor pentru vectorul de caseteimagine imaContainere Vor fi resetate proprietile BorderStyle, Height i Width ale acestor controale. ntruct toate controalele grafice ale vectorului trebuie s primeasc aceleai valori, pentru aceste proprieti se va proceda altfel dect n cazurile de mai sus: 1. se selecteaz toate controalele din vector prin CTRL + clic 2. se seteaz BorderStyle pe 1-Fixed Single (pentru ca fiecare caset s apar ca un container) 3. se seteaz Height i Width pe 480. Observaii Metoda de mai sus se poate aplica i n cazul setrii unei proprieti care primete aceeai valoare pentru mai multe controale independente. Numai n cazul setrii unei proprieti care primete aceeai valoare pentru mai multe controale care formeaz un vector se poate recurge la o metod alternativ: folosirea instruciunilor de ciclare n Visual Basic. III.5. Setarea proprietilor controalelor individuale din form Eticheta individual este destinat afirii instruciunilor ctre utilizator privind modul de interaciune cu forma (Tabelul 14).

168

4. Aplicaii

Tabelul 14 Control Eticheta Proprietate Name Caption Alignment BorderStyle Name Visible Valoare lblExplic Glisai semnele de circulaie n locaia corespunztoare! 2 Center 1 Fixed Single imaVida False

Casetaimagine

Caseta-imagine de la baza formei devine invizibil n Run Time, deoarece ea servete pentru crearea impresiei de deplasare a imaginilor grafice. IV. Ataarea codului Visual Basic Codul Visual Basic pentru acest proiect va implica dou evenimente noi: DragOver i DragDrop. IV.1. Evenimentul DragOver Apare n timpul operaiei de glisare (drag and drop). Poziia pointerului mouse-ului determin care dintre obiectele-destinaie va recunoate evenimentul. De exemplu, atunci cnd o caset-imagine (cum este imaSemne(0)) este glisat peste o form (cum este frmExAuto), este declanat evenimentul Form_DragOver; controlul-surs este imaSemne(0), iar controlul-destinaie este frmExAuto. Programatorul poate scrie linii de cod care s se aplice oricrui control grafic glisat peste un control-destinaie, dac utilizeaz cuvntul sursa n locul numelui efectiv al acelui control. De exemplu, instruciunea Source.Visible = False dintr-o procedureveniment DragOver seteaz pe False proprietatea Visible a unui control grafic care este glisat peste un control-destinaie, oricare ar fi tipul controlului glisat.

169

Crearea interfeelor grafice: principii i aplicaii

Observaie Setarea pe False a proprietii Visible a controlului-surs nu afecteaz proprietatea DragIcon a acestui control (adic: iconul de glisare rmne vizibil). Aceast setare d numai impresia c acel control-surs este selectat i mutat. Procedura-eveniment DragOver face parte din clasa procedurilor-eveniment cu parametri: ca atare, linia inserat automat n fereastra Code este: Sub numecontrol_DragOver (Source As Control, X As Single, Y As Single, State As Integer) Semnificaia argumentelor este dat n Tabelul 15. Tabelul 15 Argument numecontrol Source X, Y State Semnificaie Controlul peste care se gliseaz (controluldestinaie) Controlul glisat (controlul-surs) Coordonatele poziiei curente a mouse-ului n controlul sau forma-destinaie Transformarea strii controlului glisat n raport cu controlul sau forma-destinaie: 0 Enter: controlul-surs este glisat peste domeniul destinaie 1 Leave: controlul-surs este glisat n afara domeniului destinaie 2 Over: controlul-surs este glisat dintr-o poziie n alta n destinaie

IV.2. Evenimentul DragDrop Apare la ncheierea unei operaii de glisare a unui control peste o form sau peste un alt control (adic atunci cnd se elibereaz butonul stng al mouse-ului). Procedura-eveniment DragDrop poate fi folosit pentru a stabili ce se ntmpl dup terminarea operaiei de glisare. De
170

4. Aplicaii

exemplu, se pot scrie linii de cod prin care controlul-surs s fie mutat n alt locaie n form sau prin care proprietatea sa Visible s fie resetat etc. Linia inserat automat n fereastra Code este (semnificaia argumentelor este dat n Tabelul 16): Sub numecontrol_DragDrop (Source As Control, X As Single, Y As Single) Argument numecontrol Tabelul 16 Semnificaie Controlul peste care este poziionat pointerul mouse-ului atunci cnd este eliberat butonul stng al acestuia (controlul-destinaie) Controlul glisat (controlul-surs, care poate fi referit chiar prin acest pseudonim: source) Coordonatele poziiei curente a mouse-ului n controlul sau forma-destinaie

Source X, Y

Codul proiectului const din 11 proceduri-eveniment descrise n Tabelul 17. IV.3. Codul din seciunea General_Declarations ntruct trebuie numrate rspunsurile corecte i ntruct variabila NrRaspCor care le contorizeaz trebuie s fie accesibil tuturor subrutinelor, aceasta va fi declarat n procedura General_Declarations. Instruc iunea de declarare este: Dim NrRaspCor As Integer

171

Crearea interfeelor grafice: principii i aplicaii

Tabelul 17 Controlul General frmExAuto Procedura Declarations Load Aciunea Declararea variabilelor folosite n proceduri Centrarea formei pe ecran Setarea proprietii DragIcon pentru casetele-imagine din vectorul imaSemne Apare atunci cnd se ncepe glisarea unui semn de circulaie. Resetarea proprietii Visible a controlului-surs pe False Eliberarea unui semn de circulaie n form (nu ntr-un container) este o aciune incorect; ca urmare, proprietatea Visible a controlului-surs (semnului de circulaie) este setat pe True, ceea ce face ca semnul s par c revine n poziia iniial Eliberarea unui semn de circulaie pe suprafaa altui semn de circulaie este o aciune incorect. Aceeai aciune ca mai sus Evaluarea corectitudinii plasrii unui semn de circulaie: dac e corect, atunci proprietate Picture a containerului imaContainere(index) este setat prin copierea proprietii Picture a casetei-imagine imaSemne(index) altfel, proprietatea Visible a controlului-surs imaSemne(index) devine True Eliberarea unui semn de circulaie pe suprafaa unei etichete este o aciune incorect. Aceeai aciune ca mai sus

DragOver

DragDrop

imaSemne

DragDrop

imaContainere

DragDrop

LblExplic

DragDrop

172

4. Aplicaii

Tabelul 17 (continuare) Controlul lblSemnif mnuElim Procedura DragDrop Click Aciunea Analog cu evenimentul lblExplic_DragDrop Eliminarea tuturor imaginilor grafice din casetele-imagine ale vectorului imaContainere. Setarea proprietii Visible pe True pentru toate caseteleimagine ale vectorului imaSemne Setarea proprietii Visible pe False pentru toate caseteleimagine ale vectorului imaSemne. Setarea proprietii Picture a casetelor-imagine din vectorul imaContainere prin copierea valorii proprietii Picture a casetelor-imagine din vectorul imaSemne Ascunderea formei frmExAuto. Afiarea ntr-o caset-dialog predefinit a 3 ntrebri (cte una pe rnd); ntrebarea este reafiat pn la furnizarea rspunsului corect. Reafiarea formei frmExAuto.

MnuSol

Click

mnuTest

Click

IV.4. Codul procedurii frmExAuto_Load Aceast procedur ndeplinete urmtoarele aciuni: centreaz forma pe ecran n Run Time; seteaz proprietatea DragIcon a fiecrei casete-imagine din vectorul imaSemne; avnd n vedere scopul proiectului,
173

Crearea interfeelor grafice: principii i aplicaii

aceast proprietate va fi setat pe imaginea grafic depus n caseta-imagine respectiv, prin instruciuni de tipul: imaSemne(0).DragIcon = imaSemne(0).Picture Avnd n vedere structura de vector, se va folosi o instruciune For Next. Codul este urmtorul: Private Sub Form_Load() Centrarea formei pe ecran frmExAuto.Top = (Screen.Height frmExAuto.Height) / 2 frmExAuto.Left = (Screen.Width frmExAuto.Width) / 2 Setarea proprietii DragIcon pentru vectorul imaSemne For i = 0 To 4 imaSemne(i).DragIcon = imaSemne(i).Picture Next i End Sub IV.5. Codul procedurii Form_DragOver Aceast procedur este lansat n execuie ori de cte ori un control n spe un semn de circulaie din vectorul imaSemne este glisat pe suprafaa formei frmExAuto. ntruct controlul shpSemne care servete drept container pentru casetele-imagine din vectorul imaSemne nu recunoate (ca orice control de tip Shape) evenimentul DragOver, acest eveniment se produce atunci cnd un semn de circulaie este glisat pe suprafaa frmExAuto. De remarcat, de asemenea, faptul c evenimentul Form_DragOver este primul eveniment de acest fel care apare n timpul operaiei de glisare a unui control, deoarece prima suprafa de glisare este ntotdeauna cea a formei. Pentru a crea impresia c semnul de circulaie este deplasat din locaia sa, evenimentul DragOver al formei este folosit pentru a seta proprietatea Visible a controlului respectiv pe False. n acest fel, n timpul glisrii, iconul de glisare al semnului de circulaie este vizibil, n timp ce semnul de circulaie nsui nu este vizibil n locaia sa iniial. Codul procedurii este urmtorul: Private Sub Form_DragOver (Source As Control, X As Single, Y As _ Single, State As Integer)
174

4. Aplicaii

Source.Visible = False End Sub IV.6. Codul procedurilor Form_DragDrop, lblExplic_DragDrop, lblSemnif_DragDrop i imaSemne_DragDrop Evenimentul DragDrop apare la sfritul operaiei de glisare, n momentul eliberrii butonului stng al mouse-ului. Conform proiectului acestei aplicaii, eliberarea unui semn de circulaie (element al vectorului de casete-imagine imaSemne) pe suprafaa formei, pe suprafaa oricreia dintre etichetele lblExplic, lblSemnif sau pe suprafaa casetelor-imagine din chiar vectorul imaSemne este o operaie incorect care conduce la revenirea semnului de circulaie n locaia iniial. Crearea acestui efect pe ecran revine la resetarea proprietii Visible a casetei-imagine care conine semnul respectiv din nou pe valoarea True. Observaie Cele 4 proceduri conin aceeai linie de cod (deoarece efectueaz aceeai operaie). Scrierea lor poate fi accelerat prin utilizarea comenzilor de transfer al informaiei cu ajutorul ClipBoard-ului. Codul procedurilor este urmtorul: Private Sub Form_DragDrop (Source As Control, X As Single, Y As _ Single) ' Controlul-surs nu poate fi eliberat pe suprafaa acestui control-destinaie Source.Visible = True End Sub Private Sub lblExplic_DragDrop (Source As Control, X As Single, Y _ As Single) Source.Visible = True End Sub Private Sub lblSemnif_DragDrop (Index As Integer, Source As _ Control, X As Single, Y As Single) Source.Visible = True End Sub Private Sub imaSemne_DragDrop (Index As Integer, Source As _
175

Crearea interfeelor grafice: principii i aplicaii

Control, X As Single, Y As Single) Source.Visible = True End Sub IV.7. Codul procedurii imaContainere_DragDrop Eliberarea unui semn de circulaie glisat dintr-o caset-imagine din vectorul imaSemne pe suprafaa unei casete-imagine din vectorul imaContainere poate s fie sau poate s nu fie o operaie corect. n acest sens, este esenial ca ordinea de creare a controalelor din vectorii imaSemne, imaContainere (i, pn la un punct, a controalelor din vectorul lblSemnif), precum i asignarea imaginilor s fie fcut n ordinea indicat la proiectarea interfeei. Astfel, imaSemne(2) conine imaginea semnului de circulaie Stop, iar eticheta lblSemnif(2) care apare sub imaContainere(2) afieaz Stop. Asigurarea consistenei n indexarea vectorilor imaSemne, imaContainere i lblSemnif permite ca verificarea corectitudinii mutrii unui semn de circulaie n containerul corespunztor s revin la verificarea egalitii valorilor indecilor. Observaie Index este o proprietate a controlului-surs atunci cnd acesta face parte dintr-un vector. De asemenea, Index este un argument al procedurii-eveniment DragDrop, care identific controlul-destinaie atunci cnd acesta, la rndul su, face parte dintr-un vector. Ulterior, casetele-imagine din vectorul imaSemne vor fi permutate astfel nct examenul s devin mai dificil; aceast permutare nu va afecta ns indecii. Procedura imaContainere_DragDrop efectueaz urmtoarele operaii: dac semnul de circulaie selectat nu este mutat n containerul corespunztor, atunci: semnul revine n locaia iniial; dac semnul de circulaie selectat este mutat n containerul corespunztor (conform etichetei asociate) atunci: semnul dispare din locaia iniial; containerul preia imaginea semnului;
176

4. Aplicaii

mutarea este contorizat n variabila NrRaspCor; dac NrRaspCor = 5 (numrul de semne de circulaie inserate n form) atunci: se deschide o caset-dialog predefinit MsgBox n care candidatul este felicitat, semnele de circulaie revin n poziiile iniiale (prin apelarea procedurii-eveniment asociate comenzii mnuElim din meniul OPTIONS) proiectul poate fi nchis dac NrRaspCor < 5 atunci candidatul poate continua sau poate nchide forma. Codul procedurii este urmtorul: Private Sub imaContainere_DragDrop (Index As Integer, Source As Control, X As Single, Y As Single) ' Verificarea corectitudinii mutrii semnelor de circulaie (egalitatea indecilor care se corespund) If (Source.Index <> Index) Then ' Mutare incorect; semnul revine n locaia iniial Source.Visible = True Else ' Mutarea semnului n containerul corespunztor imaContainere(Index).Picture = Source.Picture ' Contorizarea mutrii corecte NrRaspCor = NrRaspCor + 1 ' Test pentru numrul rspunsurilor corecte date pn n acest moment If (NrRaspCor = 5) Then ' Mesaj de ncheiere; constanta 48 conduce la includerea unui semn de exclamare n caset MsgBox Trecut cu succes!, 48, Examen auto: ' Aducerea formei la starea iniiala mnuElim_Click End If End If End Sub
177

Crearea interfeelor grafice: principii i aplicaii

IV.8. Codul procedurilor mnuElim_Click, mnuSol_Click i mnuTest_Click Procedura mnuElim_Click ataat comenzii ELIMINARE din meniul OPTIONS al formei trebuie s realizeze urmtoarele operaii: golirea containerelor care conin semne de circulaie proprietatea Picture a casetelor-imagine din vectorul imaContainere trebuie resetat la valoarea proprietii Picture a casetei-imagine imaVida, proprietate care are valoarea implicit (None); revenirea semnelor de circulaie mutate n containere n locaiile iniiale proprietatea Picture a casetelor-imagine din vectorul imaSemne trebuie resetat pe True; resetarea contorului NrRaspCor pe valoarea 0. Codul procedurii este urmtorul (datorit structurii de vector se poate folosi intruciunea For Next): Private Sub mnuElim_Click() ' Videaz containerele i reafieaz semnele de circulaie in locaiile iniiale For Index = 0 To 4 imaContainere(Index).Picture = imaVida.Picture imaSemne(Index).Visible = True Next ' Reseteaz contorul pe 0 NrRaspCor = 0 End Sub Procedura mnuSol_Click ataat comenzii SOLUTIE din meniul OPTIONS al formei trebuie s realizeze mutarea fiecrui semn de circulaie din locaia sa inial n containerul corespunztor. Pentru aceasta: proprietatea Picture a fiecrei casete-imagine din vectorul imaSemne trebuie setat pe False; proprietatea Picture a fiecrei casete-imagine din vectorul imaContainere trebuie s copieze proprietatea Picture a casetei-imagine corespunztoare din vectorul imaSemne.
178

4. Aplicaii

Comanda SOLUTIE este activ pe tot parcursul execuiei aplicaiei, deci poate fi lansat n orice moment, indiferent cte semne de circulaie au fost mutate corect. Prin urmare, trebuie mutate toate controalele n containere. Codul procedurii este urmtorul: Private Sub mnuSol_Click() ' Mutarea tuturor semnelor de circulaie n containerele corespunztoare For Index = 0 To 4 imaSemne(Index).Visible = False imaContainere(Index).Picture = imaSemne(Index).Picture Next End Sub Procedura mnuTest_Click ataat comenzii TEST din meniul OPTIONS al formei afieaz succesiv 3 ntrebri referitoare la forma geometric a unora dintre semnele de circulaie. Pentru aceasta, ea va folosi cteva structuri repetitive imbricate. Forma frmExAuto trebuie eliminat de pe ecran atunci cnd este afiat o ntrebare din test; acest lucru se realizeaz cu metoda Hide care, spre deosebire de Unload, nu ndeprteaz forma i din memorie. n plus, controalele grafice inserate n form rmn accesibile pentru aplicaia Visual Basic. Dup rezolvarea testului, forma este reafiat pe ecran (cu metoda Show). ntrebrile sunt afiate cu ajutorul unei casete-dialog predefinite InputBox: argumentul prompt al acestei funcii permite: afiarea ntrebrii, a unei liste de 3 rspunsuri posibile (pentru simplificare, aceleai indiferent de ntrebarea afiat) i a explicaiilor necesare (salturile la un rnd nou sunt realizate cu ajutorul variabilei RN = Chr$(13) & Chr$(10) ). ntruct testul const din 3 ntrebri, trebuie folosit o instruciune Select Case. Tot pentru accelerarea scrierii codului
179

Crearea interfeelor grafice: principii i aplicaii

sunt folosite variabile speciale pentru mesajele explicative din casetele-dialog. Codul procedurii este urmtorul: Private Sub mnuTest_Click() Dim inst1, inst2, raspunsuri, IndexIntrebare, intrebare, _ RaspCorect, raspuns, reluare Crearea variabilei RN pentru saltul la rnd nou RN = Chr$(13) & Chr$(10) ' Crearea mesajelor explicative, parte component a argumentului prompt al InputBox inst1 = Tastati litera corespunzatoare raspunsului pe care il _ & RN & considerati corect i selectati OK & RN & RN inst2 = Selectati CANCEL pentru a evita aceasta intrebare. _ & RN & RN & RN & RN Crearea mesajului cu cele 3 posibiliti de rspuns, parte component a argumentului prompt al InputBox raspunsuri = a. Stop & RN & b. Sens Interzis & RN & _ c. Drum alunecos ' Ascunderea formei frmExAuto.Hide ' Ciclu pentru afiarea succesiv a celor 3 ntrebri For IndexIntrebare = 1 To 3 ' Asignarea variabilelor intrebare i RaspCorect Select Case IndexIntrebare Case 1 intrebare = 1. Ce semn de circulatie are forma de romb? _ & RN & RN & raspunsuri RaspCorect = C Case 2 intrebare = 2. Ce semn de circulatie are forma de octogon? & RN & RN & raspunsuri RaspCorect = A Case 3 intrebare = 3. Ce semn de circulatie are forma de cerc? _ & RN & RN & raspunsuri RaspCorect = B
180

4. Aplicaii

End Select ' Afiarea ntrebrii; asignarea valorii returnate variabilei raspuns raspuns = InputBox(inst1 & inst2 & intrebare, _ Test pentru examenul auto) ' Ciclu pentru rspunsul corect sau evitarea ntrebrii Do Until (UCase$(raspuns)=RaspCorect) Or (RaspCorect = ) ' Crearea variabilei reluare pentru afiarea unui mesaj n cazul unui rspuns greit reluare = Raspuns incorect. Incercati inca o data! MsgBox reluare , , Test pentru examenul auto ' din nou se afieaz ntrebarea i se asigneaz valoarea returnat variabilei raspuns raspuns = InputBox(inst1 & inst2 & intrebare, _ Test pentru examenul auto) Loop ' Se trece la ntrebarea urmtoare Next Se reafieaz forma frmExAuto.Show End Sub IV.9. Permutarea semnelor de circulaie Faptul c fiecare semn de circulaie se afl exact deasupra containerului corespunztor (a se vedea eticheta afiat sub container) faciliteaz rspunsul! Semnele de circulaie pot fi permutate (cnd forma este afiat n Design Time) i apoi se poate ncepe examinarea folosind tot proiectul descris mai sus. Pentru permutare, se poate folosi un container pe post de caset-imagine auxiliar. Noua forma frmExAuto arat ca n Figura 50:

181

Crearea interfeelor grafice: principii i aplicaii

Figura 50

182

BIBLIOGRAFIE

[Blanchard 1996] Harry E. BLANCHARD: Standards: A look ahead and an overview, ACM SIGCHI Bulletin, vol. 28, nr. 4, sau: http://www.acm.org/sigchi/bulletin/1996.4/ standards.html [Blanchard, 1997] Harry E. BLANCHARD: Standards: HCI standards in the United States, ACM SIGCHI Bulletin, vol. 29, nr. 2, sau: http://www.acm.org/sigchi/bulletin/ 1997.2/standards.html [Blanchard 1997] Harry E. BLANCHARD: Standards: information technology standards ISO/IEC JTC1, ACM SIGCHI Bulletin, vol. 29, nr. 4, sau:http://www.acm.org/ sigchi/bulletin/1997.4/standards.html [de Bono 1999] Edward de BONO: Simplicity, Penguin Books, London. [Bottoni, Constabile, Levialdi, Mussio,1996] Paolo BOTTONI, M.F. CONSTABILE, Stefano LEVIALDI, P. MUSSIO: A visual approach to HCI, ACM SIGCHI Bulletin, vol. 28, no. 1, pp. 50-55. [Bottoni, Levialdi, Pun,1998] Paolo BOTTONI, Stefano LEVIALDI, Gheorghe PAUN: Successful visual human-computer interaction is undecidable, Information Processing Letters, vol. 67, no. 1, pp.13-19. [Bottoni, Mauri, Mussio, Pun 2001] Paolo BOTTONI, Stefano LEVIALDI, Gheorghe PAUN: Computing with shapes, J. of Visual Languages and Computing, vol. 12, no. 4, pp 601-626, sau: http://psystems.disco.unimib.it [Calude, Marcus,1981] Cristian CALUDE, Solomon MARCUS: Man-Computer Communication, Revue Roumaine de Linguistique, vol. 26, nr. 2, pp. 103-112. [Cooper,1995] Alan COOPER: About Face: The Essentials of User Interface Design, IDG Books.
183

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

[Dretske,1995] Fred DRETSKE: Meaningful Perception, n S. M. KOSSLYN and D. N. OSHERSON (eds): An Invitation to Cognitive Science, 2nd Vol.: Visual Cognition, The MIT Press, Cambridge, Mass., pp. 331-352. [Ford, Marchak 1997] Shannon FORD, Frank M. MARCHAK: The future of visual interaction design?, ACM SIGCHI Bulletin, vol. 29, nr. 1, sau: http://www.acm.org/ sigchi/ bulletin/1997.1/vid.html [Fusaru, Mare, Mihai 2003] Doina FUSARU, Marius Daniel MARES, Gabriel MIHAI: Visual Basic i Access, Editura Fundaiei Romnia de Mine, Bucureti, 2003. [Guiraud,1971] Paul GUIRAUD: La smiologie, Presses Universitaires de France, Paris. [Glinert,1999] Ephraim GLINERT (ed.): Visual Programming Environments; Paradigms and Systems, IEEE Comp. Sci. Press. [Goodman, 2001] Albert GOODMAN: Graphical User Interface Programming, Lecture Notes, Deakn University, Victoria, Australia, http://www.deakin.edu.ai/~agoodman/scc313 [Guastello, Traut, Korienek 1989] S.J. GUASTELLO, M. TRAUT, G. KORIENEK: Verbal versus pictorial representations of objects in human-computer interfaces, Journal of Man-Machine Studies, vol. 31, no. 1, pp. 99-120. [Hamciuc, 2002] Violeta HAMCIUC: Realizarea interfeelor grafice utilizator n Visual Basic, Editura Dacia, Cluj-Napoca. [Holzner, 1998] Steven HOLZNER: Visual Basic 6.0 Black Book, Coriolis: An International Thomson Publ. Co., New York, USA. [Hudson, 2003] William HUDSON: Elegance, simplicity, flexibility and change: Resisting design erosion, ACM SIGCHI Bulletin, vol. 35, nr. 3-4, pp. 8. [Marcus, 1979] Solomon MARCUS: Semne despre semne, Editura Stiinific i Enciclopedic, Bucureti.

184

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

[Marcus, 1997] Solomon MARCUS: Language, Logic, Cognition and Computation, University of Tarragona Press, Tarragona, Spain. [Marcus, Ttrm, 1987] Solomon MARCUS, Sanda Monica TTRM: The Feed-Back as Antinomy; The Example of Human Communication, Proceedings of the Seventh International Congress of Cybernetics and Systems, J.Rose (ed.), Thales Publications Ltd., Lytham St. Annes, England, pp. 962-966 [Milner, 1993] R. MILNER: Elements of interaction, Comm. ACM, vol. 36, no. 2, pp. 78-89. [Mohnkern, 1997] Ken MOHNKERN: Visual interaction design: Beyond the interface metaphor, ACM SIGCHI Bulletin, vol. 29, nr. 2, sau: http://www.acm.org/sigchi/bulletin/ 1997.2/vid. html [Mullet, Sanos 1994] Kevin MULLET, Darrell SANOS: Designing Visual Interfaces, Prentice Hall, Englewood Cliffs, NJ. [Preece, Rogers, Sharp 2002] Jennifer PREECE, Yvonne ROGERS, Helen SHARP: Beyond Human Computer Interaction, John Wiley & Sons, New York. [Solomon, 1997] Christine SOLOMON: Microsoft Office 97: Developer's Handbook, Microsoft Press, Redmont, WA. [Shelly, Cashman, Repede, 1996] Gary B. SHELLY, Thomas J. CASHMAN, John F. REPEDE: Introduction to Visual Basic 4, Boyd & Fraser, Cambridge, Ma. [Ttrm, 2001] Sanda Monica TTRM: Visual Computer Programming: Some Semiotic and Cognitive Aspects, The American Journal of Semiotics, vol. 17, no. 3, pp. 157-173. [Ttrm, 2004] Sanda Monica TTRM: Visual Basic pentru proiectarea interfeelor grafice, Editura Fundaiei Romania de Mine, Bucureti. [Voss, 1991] Greg VOSS: Object-Oriented Programming: An Introduction, McGraw-Hill, New York.
185

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

[Wegner, 1997] Paul WEGNER: Why interaction is more powerful than algorithms, Comm. ACM, vol. 40, no. 1, pp. 80-91. [Whitten, Looney, 1999] Jeffrey L. WHITTEN, Bentley D. LOONEY: Systems Analysis and Design Methods, 4th Edition, Irwin / McGraw Hill. [Winemiller, Roff, Heyman, Groom, 2001] Eric WINEMILLER, Jason T. ROFF, Bill HEYMAN, Ryan GROOM: Visual Basic 6.0: Baze de date, Editura Teora, Bucureti. [Wright,1998] Peter WRIGHT: Visual Basic 6.0, Wrox Press Ltd, Birmingham, UK.

186

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

ANEXA Echivalentul-tastatur al unor comenzi Aciuni generale cu aplicaiile Windows Scop Taste Lansarea aplicaiei Help pentru elementul F1 selectat din caseta-dialog Activarea Help-ului context-sensitiv SHIFT + F1 Activarea / dezactivarea barmeniului ALT sau F10 Deschiderea unui meniu de pe barmeniu ALT + litera subliniat Deschiderea meniului rapid pentru obiectul SHIFT + F10 selectat Deschiderea meniului sistem al ferestrei ALT + (aplicaiei) active Spacebar Deschiderea meniului sistem al ferestreiALT + hyphen copil active (n aplicaii MDI) Deschiderea meniului START CTRL + ESC Afiarea urmtoarei ferestre de aplicaie ALT + TAB curent deschis Afiarea urmtoarei ferestre-copil (MDI) CTRL + F6 Mutarea informaiei n clipboard CTRL + X Copierea informaiei n clipboard CTRL + C Aducerea informaiei din clipboard CTRL + V Stergerea DEL Undo CTRL + Z Redo CTRL + Y Salt la (Go To) CTRL + G Cutarea informaiei (Find) CTRL + F
187

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

ANEXA (continuare) Echivalentul-tastatur al unor comenzi Aciuni generale cu aplicaiile Windows nlocuirea informaiei (Replace) CTRL + G Deschiderea unui fiier CTRL + O Salvarea unui fiier CTRL + S Listarea unui fiier CTRL + P nchiderea tuturor fiierelor deschise cu o SHIFT + clic pe aplicaie meniul FILE CLOSE ALL nchiderea tuturor fiierelor deschise i a SHIFT + aplicaiei butonul CLOSE al ferestrei aplicaiei

188

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

ANEXA (continuare) Echivalentul-tastatur al unor comenzi Aciuni generale pe desktop, cu My Computer sau cu Windows Explorer (dup selectarea elementului) Scop Taste Redenumirea unui obiect F2 Gsirea unui fiier sau director F3 tergerea imediat, fr deplasarea SHIFT + DEL obiectului n Recycle Bin Vizualizarea proprietilor obiectului ALT + ENTER sau ALT + dublu clic Copierea unui fiier CTRL + glisare cu mouse-ul Crearea unui shortcut CTRL + SHIFT + glisare cu mouse nchiderea ferestreri (aplicaiei) active ALT + F4 Selectarea complet a informaiei CTRL + A Actualizarea (refresh) ferestrei F5 Vizualizarea folderului de la nivelul imediat BACKSPACE superior

189

Crearea interfeelor grafice: principii i aplicaii ______________________________________________________________

ANEXA (final) Echivalentul-tastatur al unor comenzi Parcurgerea taburilor i controalelor din casetele-dialog Scop Taste Parcurgerea controalelor n sens TAB trigonometric Parcurgerea controalelor n sens invers SHIFT + TAB trigonometric Parcurgerea taburilor nainte CTRL + TAB Parcurgere taburilor napoi CTRL + SHIFT + TAB Activarea unui buton / unei casete de SPACEBAR opiune Deschiderea unei casete combinate ALT + tasta sageat n jos

190

Redactor: Maria CERNEA Tehnoredactor: Sanda Monica TTRM Magdalena ILIE Coperta: Stan BARON Bun de tipar: 18.02.2004; Coli tipar: 12 Format: 16/6186 Editura i Tipografia Fundaiei Romnia de Mine Splaiul Independenei nr. 313, Bucureti, Sector 6, O. P. 83 Telefon/fax.: 410 43 80; www.SpiruHaret.ro e-mail contact @ edituraromaniademaine.ro 191

192