Proiect. Vom construi o aplicatie care va folosi controlul MonthCalendar si alte controale noi.

Size: px
Start display at page:

Download "Proiect. Vom construi o aplicatie care va folosi controlul MonthCalendar si alte controale noi."

Transcription

1 Proiect Vom construi o aplicatie care va folosi controlul MonthCalendar si alte controale noi. Controlul MonthCalendar Controlul MonthCalendar permite vizualizarea sau setarea informaţiilor de tip data. Este un obiect de clasă MonthCalendar. Câteva proprietăţi specifice ar fi: CalendarDimensions stabileşte dimensiunile controlului de tip Calendar; FirstDayOfWeek stabileşte prima zi din săptămână. Implicit este duminică; MaxDate marchează ultima dată reprezentabilă pe calendar; MinDate marchează prima dată reprezentabilă pe calendar; SelectionRange marchează numărul maxim de zile ce pot fi selectate în control. Start furnizează data de început a zonei selectate în control. ShowToday precizează dacă data curentă este sau nu afişată în partea de jos a controlului. TodayDate furnizează data curentă. Ce este interesant de remarcat, ca proprietăţile de tip dată, sunt manipulate prin intermediul unor obiecte de clasă DateTime. Câteva proprietăţi ale acestei clase, mai des utilizate sunt: Date furnizează data conţinută în instanţa curentă a obiectului; Day furnizează numărul zilei din lună conţinută în instanţa curentă a obiectului; DayOfWeek furnizează numărul zilei din săptămână conţinută în instanţa curentă a obiectului; DayOfYear furnizează numărul zilei din an conţinută în instanţa curentă a obiectului; Hour furnizează ora conţinută în instanţa curentă a obiectului; Minute furnizează minutul conţinută în instanţa curentă a obiectului; Month furnizează luna conţinută în instanţa curentă a obiectului; Now furnizează un obiect care conţine data si ora curentă a computerului, setate la nodul de reprezentare locală. Second furnizează secunda conţinută în instanţa curentă a obiectului; Today furnizează data curentă; Year furnizează anul conţinut în instanţa curentă a obiectului; Câteva evenimente produde controlul MonthCalendar sunt: DateChanged se produce la schimbarea datei din calendar; DateSelected se produce atunci când utilizatorul realizează o selecţie explicită cu mouse-ul a unor date; Sa incepem: Creati un nou proiect Windows Forms cu numele AplicatieComplexa Pentru forma care se deschide setati urmatoarele proprietati: o (Name) : mainform o BackColor : CornSilk (Web) o Font: Bold o ForeColor: Navy o FormBorderStyle: FixedDialog o MaximizeBox: False o MinimizeBox: False o Size: 700, 330 o StartPosition: CenterScreen o Text: O aplicatie complexa Trageti pe forma un control MonthCalendar si setati urmatoarele proprietati: o (Name) : mycalendar 1

2 o BackColor : Plum (Web) o Location : 4, 4 o ShowToday : False Trageti pe forma un control Label si setati urmatoarele proprietati : o (Name) : datelabel o Font : Papyrus, 12, Bold Italic o ForeColor : Red o Location : 0, 168 Dorim ca data selectată pe controlul MonthCalendar, să apară în limba română înscrisă în controlul Label. Să ne reamintim că evenimentul produs la fiecare schimbare a datei în controlul MonthCalendar este DateChanged. Facem dublu-clic pe calendar pentru a crea administratorul implicit si scriem codul in rosu : private void mycalendar_datechanged(object sender, DateRangeEventArgs e) mycalendar.todaydate = e.start; CompleteazaData(); In acest cod, data curenta (TodayDate) evidentiata pe calendar este setata la data de inceput a intervalului selectat de utilizator (proprietatea Start a obiectului e de tip data calendaristica). Functia CompleteazaData() va afisa in eticheta datelabel in limba romana data selectata de utilizator si are urmatorul cod : private void CompleteazaData() string d; switch (mycalendar.todaydate.dayofweek) case DayOfWeek.Sunday: datelabel.text = "Duminica "; break; case DayOfWeek.Monday: datelabel.text = "Luni "; break; case DayOfWeek.Tuesday: datelabel.text = "Marti "; break; case DayOfWeek.Wednesday: datelabel.text = "Miercuri "; break; case DayOfWeek.Thursday: datelabel.text = "Joi "; break; case DayOfWeek.Friday: datelabel.text = "Vineri "; break; case DayOfWeek.Saturday: datelabel.text = "Sambata "; break; d = mycalendar.todaydate.day.tostring(); datelabel.text += d; switch (mycalendar.todaydate.month) case 1: datelabel.text += " Ianuarie "; break; case 2: datelabel.text += " Februarie "; break; case 3: datelabel.text += " Martie "; break; case 4: datelabel.text += " Aprilie "; break; case 5: datelabel.text += " Mai "; break; case 6: datelabel.text += " Iunie "; break; case 7: datelabel.text += " Iulie "; break; case 8: datelabel.text += " August "; break; case 9: datelabel.text += " Septembrie "; break; case 10: datelabel.text += " Octombrie "; break; case 11: datelabel.text += " Noiembrie "; break; case 12: datelabel.text += " Decembrie "; break; d = mycalendar.todaydate.year.tostring(); 2

3 datelabel.text += d; Functia extrage din data curenta selectata (TodayDate) ziua din saptamana (DayOfWeek) si adauga in sirul d denumirea zilei in limba romana. Extrage apoi ziua (TodayDate.Day) si luna (TodayDate.Month) si le adauga in stringul d, in cazul lunii inlocuind numarul de ordine al acesteia cu denumirea in limba romana. Sirul obtinut este afisat cu proprietatea Text a etichetei datelabel. În forma actuală a programului, data curentă este afişată de de datelaabel doar dacă se face o schimbare de dată în controlul mycalendar. Dar în mod normal ea trebuie afişată de la început. Pentru a realiza acest lucru: Faceti dublu-clic pe fereastra mainform pentru a crea administratorul implicit (Load) Scrieti codul in rosu: private void mainform_load(object sender, EventArgs e) CompleteazaData(); PopuleazaAn(); PopuleazaLunaInceput(startMonthComboBox); PopuleazaLunaSfarsit(); SeteazaIntervalTimp(myCalendar.TodayDate.Year, startmonthcombobox.selectedindex+1, endmonthcombobox.selectedindex+1); a++; Restul functiilor din administratorul Load le vom adauga pe parcurs. Compilaţi şi executaţi programul. Ce ne deranjează? Faptul că datele pe care le poate reprezenta calendarul nu sunt limitate la un interval dorit de noi. Să încercăm să realizăm acest lucru. Dar pentru aceasta, vom folosi un alt control. Controlul ComboBox Acest control combină în fapt mai multe controale. În acest control vom regăsi un control TextBox, prezentat anterior şi respectiv un control ListBox despre care vom vorbi puţin mai tîrziu. Controlul ComboBox apare ca un TextBox având în partea stângă un buton cu săgeată. Dacă se apasă pe acesta, controlul se deschide, prezentând o listă de elemente. Orice astfel de control este un obiect de clasă ComboBox. Proprietăţi ale acestui control sunt: DropDownStyle - stilul în care este afişat controlul la deschiderea listei. o DropDown utilizatorul poate edita partea de TextBox a controlului şi trebuie să apese butonul săgeată pentru a deschide partea de ListBox. o Simple la fel ca şi DropDown, cu excepţia faptului că partea de ListBox a controlului este tot timpul vizibilă. o DropDownList utilizatorul nu poate edita partea de TextBox a controlului şi trebuie să apese butonul săgeată pentru a deschide partea de ListBox. o DroppedDown Indică dacă partea de listă a controlului este deschisă sau nu. Items este reprezentată sub forma unei colecţii care stochează obiectele conţinute de ComboBox. MaxLength prin setarea acestei proprietăţi la o valoare diferită de 0, se specifică numărul maxim de caractere ce pot fi introduse în partea de TextBox a controlului. SelectedIndex indică indexul obiectului curent selctat în lista controlului. Obiectele sunt ordonate în listă pe baza unui index bazat pe 0. SelectedItem indică obiectul curent selectat în listă. SelectionStart indică indexul primului obiect selctat în lista asociată controlului. SelectionLength lungimea textului selectată în partea de TextBox asociată controlului. 3

4 Sorted dacă această proprietate este true, elementele din lista asociată controlului vor fi sortate în ordine alfabetică. Câteva evenimente sunt: DropDown se produce când partea de ListBox a controlului se deschide. SelectedIndexChanged se produce la schimbarea selecţiei în zona de listă a controlului. KeyDown se produce când o tastă este apăsată în zona de TextBox a controlului. KeyUp - se produce când o tastă este eliberată în zona de TextBox a controlului. TextChanged se produce la schimbarea textului din partea de TextBox a controlului. Dorim să stabilim prin intermediul unor controale ComboBox, anul reprezentat pe MonthCalendar, luna de început şi luna de sfârşit a intervalului de timp prezentat. Trageti pe forma un control GroupBox si setati urmatoarele proprietati: o (Name): selectiongroupbox o Dock: Bottom o Size: 694, 60 (numai inaltimea 60 o pteti edita) o Text: Selectare interval Trageti in GroupBox trei controale ComboBox si setati, in ordine urmatoarele proprietati: o (Name): yearcombobox, startmonthcombobox, endmonthcombobox o DropDownStyle: DropDownList o Location: (47, 24); (290, 24), (533, 24) Trageti in GroupBox trei controale Label si setati, in ordine, urmatoarele proprietati: o (Name): yearlabel, startmonthlabel, endmonthlabel o Location: (12, 28); (192, 28); (441, 28) o Text: An, Luna inceput, Luna sfarsit Trebuie sa completam cele trei ComboBox cu itemii corespunzatori. Pentru aceasta vom scrie urmatoarele functii: private void PopuleazaAn() yearcombobox.items.add(mycalendar.todaydate.year); yearcombobox.items.add(mycalendar.todaydate.year + 1); yearcombobox.items.add(mycalendar.todaydate.year + 2); yearcombobox.items.add(mycalendar.todaydate.year + 3); yearcombobox.selectedindex = 0; private void PopuleazaLunaInceput(ComboBox cb) cb.items.add("ianuarie"); cb.items.add("februarie"); cb.items.add("martie"); cb.items.add("aprilie"); cb.items.add("mai"); cb.items.add("iunie"); cb.items.add("iulie"); cb.items.add("august"); cb.items.add("septembrie"); cb.items.add("octombrie"); cb.items.add("noiembrie"); cb.items.add("decembrie"); cb.selectedindex = 0; 4

5 private void PopuleazaLunaSfarsit() PopuleazaLunaInceput(endMonthComboBox); endmonthcombobox.selectedindex = 11; Functia PopuleazaAn() adauga in primul ComboBox anul curent si urmatorii trei ani si selecteaza (pentru a fi afisat) anul curent. Functia PopuleazaLunaInceput() adauga in al doilea ComboBox toate lunile anului si selecteaza, pentru afisare, luna Ianuarie care are indexul 0. Functia PopuleazaLunaSfarsit() apeleaza functia anterioara pentru a adauga toate lunile anului si selecteaza, pentru afisare, ultima luna din an (luna Decembrie care are indexul 11). Aceste functii vor fi apelate tot din administratorul Load care se executa la incarcarea si afisarea initiala a formei: private void mainform_load(object sender, EventArgs e) CompleteazaData(); PopuleazaAn(); PopuleazaLunaInceput(startMonthComboBox); PopuleazaLunaSfarsit(); SeteazaIntervalTimp(myCalendar.TodayDate.Year, startmonthcombobox.selectedindex+1, endmonthcombobox.selectedindex+1); a++; Compilaţi şi executaţi programul. Ce n-am făcut încă? Pe baza datelor implicite, încă nu am limitat intervalul de timp prezentat de calendar. Va trebui ca la modificarea selecţiei în controalele de tip ComboBox, valorile selectate să se aplice în calculul datelor minimă şi mximă reprezenztabilă pe calendar. Adică, să interceptăm evenimentul SelectedItemChanged produs de cele trei controale ComboBox. Deaorece se realizeaza aceleasi operatii, vom scrie un administrator generic care va fi utilizat de toate cele trei ComboBox. Selectati un ComboBox si faceti dublu-clic pe el pentru a genera administratorul implicit Modificati acest administrator ca mai jos (codul in rosu): private void selectioncombobox_selectedindexchanged(object sender, EventArgs e) if (a == 0) return; int an = Convert.ToInt32(yearComboBox.SelectedItem.ToString()); int start = startmonthcombobox.selectedindex + 1; int end = endmonthcombobox.selectedindex +1; SeteazaIntervalTimp(an, start, end); Selectati primul ComboBox, in fereastra Properties selectati tabul Events (fulgerul galben), selectati evenimentul SelectedIndexChanged si alegeti din lista selectioncombobox_selectedindexchanged Repetati operatia si pentru celelalte doua ComboBox. Codul de mai sus memoreaza in variabila an anul selectat in controlul yearcombobox, in variabila start luna de inceput a intervalului reprezentat in calendar selectata in controlul startmonthcombobox si in variabila end luna de sfarsit a intervalului selectat de utilizator in controlul endmonthcombobox. Cele trei valori sunt utilizate pentru a apela functia SeteazaIntervalTimp() prezentata in continuare: private void SeteazaIntervalTimp(int an, int start, int end) int d = 0; switch (end) 5

6 case 1: d = 31; break; case 2: if (an % 4 == 0) d = 29; else d = 28; break; case 3: d = 31; break; case 4: d = 30; break; case 5: d = 31; break; case 6: d = 30; break; case 7: d = 31; break; case 8: d = 31; break; case 9: d = 30; break; case 10: d = 31; break; case 11: d = 30; break; case 12: d = 31; break; mycalendar.maxdate = new DateTime(an, end, d, 23, 59, 59); mycalendar.mindate = new DateTime(an, start, 1, 0, 0, 0); Aceasta functie foloseste luna de sfarsit a perioadei (parametrul end) pentru a determina in d numarul de zile din luna. Este apoi setata data maxima reprezentata in MyCalendar (MaxDate) cu ajutorul unui obiect de tip DateTime initializat cu valorile an, end, d (ultima zi din luna) si (ore minute secunde). Data minima reprezentata in calendar este setata cu un alt obiect DateTime initializat cu valorile an, start, 1 (prima zi din luna respectiva) si (ore, minute si secunde). Aceasta functie trebuie apelata si la incarcarea formei pentru a seta anul curent si lunile Ianuarie, respectiv Decembrie ca interval de timp prestabilit. Vom adauga in Load codul scris n rosu: private void mainform_load(object sender, EventArgs e) CompleteazaData(); PopuleazaAn(); PopuleazaLunaInceput(startMonthComboBox); PopuleazaLunaSfarsit(); SeteazaIntervalTimp(myCalendar.TodayDate.Year, startmonthcombobox.selectedindex+1, endmonthcombobox.selectedindex+1); a++; Ne reamintim ca functia PopuleazaAn() seteaza indexul la valoarea 0 (anul curent), PopuleazaLunaInceput() seteaza indexul la valoarea 0 (Iuna Ianuarie), iar PopuleazaLunaSfarsit() seteaza indexul la valoarea 11 (luna Decembrie). Acesti indici sunt folositi pentru a apela functia SeteazaInterval() pentru a seta intervalul prestabilit afisat la deschiderea formei si care se limiteaza la anul curent. Deoarece nu dorim ca setarea initiala a celor trei indici sa fie interpretata ca un eveniment SelectedIndexChanged, am folosit variabila globala a declarata inaintea administratorului mycalendar_datechanged(): int a = 0; Dupa initializarea celor trei indici si setarea intervalului initial, variabila a este incrementata in administratorul Load(). In administratorul selectioncombobox_selectedindexchanged, daca a are valoarea 0 (la incarcarea formei) administratorul se incheie (cu return) fara a seta un alt interval de timp. 6

7 Forma initiala: Respectiv dupa selectarea unui alt interval: Controlul TabControl Controlul TabControl furnizează un mod elegant de organizare a unei interfeţe în componente logice, accesibile prin intermediul unor taburi localizate în partea superioară a controlului. Controlul TabControl este organizat în pagini (TabPages) care operează de o manieră oarecum similară controlului GroupBox, dar într-o modalitate mai complexă. Câteva din proprietăţile controlului sunt: Alignment precizează poziţia taburilor. Implicit, acestea sunt afişate în partea superioară a controlului. Appearance Precizează modul de afişare al taburilor. Acestea pot fi afişate ca butoane normale sau bidimensionale. HotTrack dacă această proprietate este true, modul de afişare al taburilor se schimbă la trecerea prompterului mouse-lui pe deasupra lor. Multiline dacă această proprietate este true, se pot insera mai multe linii de text in taburi. 7

8 RowCount conţine numarul de linii al taburilor care sunt afişate în mod curent. SelectedIndex conţine indexul tab-ului curent selectat. TabCount conţine numărul curent de taburi conţinut de control. TabPages conţine sub forma unei colecţii paginile din TabControl. În cele ce urmează, vom dezvolta o aplicaţie mai complexă, componentele acesteia fiind găzduite de paginile unui control TabControl. Trageti pe forma, in spatiul din dreapta calendarului, un control TabControl (din sectiunea Containers) si setati urmatoarele proprietati: o (Name): mytabcontrol o Appearance: Buttons o Dock: Right o HotTrack: True o Size: 514, 238 (numai prima dimensiune o puteti edita din cauza proprietatii Dock Right) Dorim ca acest TabControl sa contina patru pagini. Pentru a adauga si seta aceste pagini procedam astfel: Selectati mytabcontrol si in fereastra Properties selectati TabPages Faceti clic pe caseta cu trei puncte din dreapta proprietatii pentru a deschide editorul TabPage Collection Editor. Mai intai apasati de doua ori butonul Add pentru a aduga controlului inca doua pagini Selectati in stanga prima pagina (numita generic tabpage1) si in panoul din dreapata setati (de sus in jos ) urmatoarele proprietati: o Text: Setari o (Name): setaritabpage Selectati pagina tabpage2 si setati urmatoarele proprietati: o Text: Calculator o (Name): calculatortabpage Selectati tabpage3 si setati: o Text: Editor texte o (Name): editortabpage Selectati tabpage4 si setati: o Text: Agenda o (Name): agendatabpage 8

9 Cand ati terminat apasati butonul OK pentru a inchide editorul. Interfata ar trebui sa arate astfel: Controalele ListBox şi CheckedListBox Controalele de acest tip sunt utilizate pentru a afişa un set de stringuri, din care unul sau mai multe pot fi selectate la un moment dat. Clasa ListBox oferă funcţionalitate atât controlului ListBox cât controlului ComboBox. Clasa CheckedListBox este derivată din aceasta şi adaugă fiecărui string din listă un control de tip CheckBox, utilizat pentru selectare. Câtve din proprietăţile furnizate de clasa ListBox sunt: SelectedIndex indică indicele bazat pe 0 a elementului selctat în listă, sau a primului element selctat în lista, în cazul selecţiei multiple. ColumnWidth specifică lăţimea coloanelor, în listele cu coloane multiple. Items conţne sub forma unei colecţii toate elementele stocate în listă. Multicolumn specifică numărul de coloane din listă. SelectedIndices o colecţie care conţine toţi indicii elementelor selectate din listă. SelectedItem această proprietate conţine elementul selectat în listă dacă selecţia este simplă, respectiv primul elemen selectat din listă în cazul selecţiei multiple. SelectedItems o colecţie care conţine elementele selectate din listă. Sorted dacă această proprietate este true, elementele vor fi afişate în listă în ordine alfabetică. CheckOnClick dacă această proprietate este true, starea unui element se schimbă când asupra lui se efectuează click. Câteva din metodele clasei: ClearSelected() şterge toate selecţiile (nu elementele selectate!) din listă. FindString() caută primul string care începe cu şirul specificat ca parametru în listă. GetSelected() returnează o valoare care specifică dacă un element este selectat. SetSelected() setează sau şterge selectarea unui element. GetItemChecked() returnează o valoare care indică faptul că checkbox-ul asociat unui element este bifat (doar pentru CheckedListBox). GetItemCheckState() returnează o valoare care indică starea casetei checkbox sociată elementului (doar pentru CheckedListBox). SetItemChecked() setează starea casetei checkbox a elementului specificat într-una din stările posibile (doar pentru CheckedListBox). 9

10 SetItemCheckState() Setează starea unui element(doar pentru CheckedListBox). Câteva evenimente: ItemCheck se produce când starea de check a unui element se schimbă. SelectedItemChanged se produce la schimbarea indexului elementelor selectate. Vom continua dezvoltarea aplicatiei astfel: Selectati pagina Setari din mytabcontrol Trageti pe aceasta pagina doua controale CheckedListBox si setati, in ordne de la stanga la dreapta, urmatoarele proprietati: o (Name): totalchklistbox, existentchklistbox o BackColor: CornSilk o CheckOnClick: True o ForeColor: Navy o Location: (30, 50); (345, 50) o Size: 130, 92 Trageti in pagina doua controale Button (intre cele doua CheckedListBox) si setati, in ordine de sus in jos, urmatoarele proprietati: o (Name): adaugabutton, stergebutton o BackColor: CornSilk o Location: (198, 50); (198, 111) o Size: 115, 30 o Text: Adauga, Sterge Pagina ar trebui sa arate astfel: Dorim ca la apăsarea butonului adaugabutton, elementele selectate din lista totalchklistbox să fie copiate în lista existentchklistbox, în prima listă fiind deselectate toate elementele. La apăsarea butonului stergebutton, toate elementele selectate din lista existentchklistbox vor fi şterse. Pentru început, vom popula prima listă. Vom adauga functia: private void CompleteazaListaTotal() totalchklistbox.items.add("calculator"); totalchklistbox.items.add("editor texte"); totalchklistbox.items.add("agenda"); 10

11 Aceasta functie trebuie scrisa in Form1.cs, dupa functia SeteazaIntervalTimp() si va fi apelata din evenimentul Load() al formei: private void mainform_load(object sender, EventArgs e) CompleteazaData(); PopuleazaAn(); PopuleazaLunaInceput(startMonthComboBox); PopuleazaLunaSfarsit(); SeteazaIntervalTimp(myCalendar.TodayDate.Year, startmonthcombobox.selectedindex+1, endmonthcombobox.selectedindex+1); a++; CompleteazaListaTotal(); Vom adauga acum functionalitate celor doua butoane din pagina. Faceti dublu-clc pe butonul Adauga si scrieti codul in rosu: private void adaugabutton_click(object sender, EventArgs e) if (totalchklistbox.checkeditems.count > 0) //sunt selectati itemi in lista existentchklistbox.items.clear(); //stergem toti itemii din a doua lista foreach (string item in totalchklistbox.checkeditems) existentchklistbox.items.add(item.tostring()); //am adaugat in a doua lista itemii selectati in prima lista for (int i = 0; i < totalchklistbox.items.count; i++) totalchklistbox.setitemchecked(i, false); //deselectam toti itemii din prima lista Faceti dublu-clic pe butonul Sterge si scrieti codul in rosu: private void stergebutton_click(object sender, EventArgs e) for (int i = existentchklistbox.items.count - 1; i >= 0; i--) //parcurge toti itemii din a doua lista if (existentchklistbox.getitemcheckstate(i).tostring() == "Checked") //daca itemul a fost bifat existentchklistbox.items.removeat(i); //este sters din lista Este nevoie ca ciclul de stergere se fie descendent, deoarece odată cu ştergerea unui obiect indicii acestora se reaşează. Într-un ciclu ascendent, va rămâne întotdeauna ultimul item din lista neşters. Rulati aplicatia si verificati functionalitatea acestei pagini. 11

12 In pagina a doua a controlullui mytabcontrol vom construi un calculator. Pentru aceasta vom adauga diverse controale astfel incat sa obtinem urmatoarea interfata: Selectati pagina Calculator din mytabcontrol Trageti in pagina un control GroupBox si setati urmatoarele proprietati: o (Name): mygroupbox o BackColor: CornSilk o Dock: Right o Size: 316, 211 Trageti in GroupBox un control TextBox si setati urmatoarele proprietati: o (Name): introtextbox o BackColor: Cyan (Web) o Dock: Top o ForeColor: Navy o ReadOnly: True o Text: Trageti sub TextBox un control ListBox si setati urmatoarele proprietati: o (Name): afisarelistbox o BackColor: Cyan o ForeColor: Navy o Location: 3, 43 o Size: 310, 43 Trageti in partea stanga patru controale Button si setati, in ordine de sus in jos, urmatoarele proprietati: o (Name): storebutton, callbutton, clearbutton, egalbutton o BackColor: Fuchsia (Web) o Location: (0, 93); (0, 122); (0, 151); (0, 180) o Size: 75, 23 o Text: MS (memory store), MC (memory call), C (clear), = Trageti in partea dreapta a GroupBox-ului patru controale Button si setati, in ordne de sus in jos, urmatoarele proprietati: o (Name); plusbutton, minusbutton, oributton, divbutton o BackColor: Fuchsia o Location: (273, 93); (273, 122); (273, 151); (273, 180) o Size: 40, 23 o Text: +, -, *, / 12

13 Trageti in spatiul ramas un control Button si setati-i dimensiunea la 30, 23, apoi faceti clic-dreapta, alegeti Copy si faceti Paste pentru a copia butonul in spatiul ramas. Repetati aceasta operatie pana cand aveti in spatiul din mijloc 12 butoane aranjate aproximativ ca in figura de mai sus. Selectati, in ordine de la stanga la dreapta si de sus in jos, fiecare buton si setati urmatoarele proprietati: o (Name): unubutton, doibutton, treibutton, patrubutton, cincibutton, sasebutton, saptebutton, optbutton, nouabutton, semnbutton, zerobotton, virgulabutton o BackColor: Cyan o Location: (111, 93); (163, 93); (208, 93); (111, 122); (163, 122); (208, 122); (111, 151); (163, 151); (208, 151); (111, 180); (163, 180); (208, 160) o Text: +/-; 0;, (virgula zecimala) Calculatorul trebuie sa fie inactiv la deschiderea formei. El devine activ atunci cand aplicatia Calculator este selectata in lista totalchklistbox din pagina Setari si redevine inactiv cand aplicatia este stearsa din lista existentchlistbox. Vom scrie doua functii: una dezactiveaza tastele calculatorului, iar cealalta le activeaza. Codul lor (din Form1.cs) este: private void DezactiveazaCalculator() unubutton.enabled = false; doibutton.enabled = false; treibutton.enabled = false; patrubutton.enabled = false; cincibutton.enabled = false; sasebutton.enabled = false; saptebutton.enabled = false; optbutton.enabled = false; nouabutton.enabled = false; zerobutton.enabled = false; private void ActiveazaCalculator() unubutton.enabled = true; doibutton.enabled = true; treibutton.enabled = true; patrubutton.enabled = true; cincibutton.enabled = true; sasebutton.enabled = true; saptebutton.enabled = true; optbutton.enabled = true; nouabutton.enabled = true; zerobutton.enabled = true; Deoarece la incarcarea formei calculatorul trebuie sa fie inactiv, vom apela functia DezactiveazaCalculator() in administratorul Load() al formei: private void mainform_load(object sender, EventArgs e)... CompleteazaListaTotal(); DezactiveazaCalculator(); La inserarea numelui Calculator in lista existentchklistbox, calculatorul trebuie sa se activeze. Vom adauga in administratorul butonului Adauga (din pagina Setari) codul in rosu: 13

14 private void adaugabutton_click(object sender, EventArgs e)... foreach (string item in totalchklistbox.checkeditems) existentchklistbox.items.add(item.tostring()); //am adaugat in a doua lista itemii selectati din prima lista if (item.tostring() == "Calculator") //aplicatia a fost selectata ActiveazaCalculator(); //calculatorul este activat... Cand aplicatia Calculator este stearsa din lista existentchklistbox, calculatorul trebuie dezactivat. Vom adauga in administratorul butonului Sterge codul in rosu: private void stergebutton_click(object sender, EventArgs e) foreach (string item in existentchklistbox.checkeditems) if (item.tostring() == "Calculator") DezactiveazaCalculator();... Rulati aplicatia si verificati daca calculatorul se activeaza/dezactiveaza la adaugarea/stergerea aplicatiei Calculator in lista existentchklistbox din pagina Setari. Vom crea acum un administrator generic pentru butoanele calculatorului. Faceti dublu-clic pe orice buton al calculatorului si redenumiti administratorul creat astfel: private void calculatorbutton_click(object sender, EventArgs e) Selectati pe rand, fiecare din cele douzeci de butoane ale calculatorului, in fereastra Properties selectati tabul Events, selectati evenimentul Click si din lista care se deschide alegeti administratorul calculatorbutton_click. Inainte de implementa codul administratorului generic, in Form1.cs vom adauga urmatoarele declaratii: public partial class mainform : Form public mainform() InitializeComponent(); int a = 0; string snr1 = "", snr2 = ""; double rezultat, memory; int op; bool prim = true;... Variabilele nr1 şi nr2 reprezintă cei 2 operanzi. Sirul nr1 va fi completat cu primul operand, la prima introducere şi în plus, va menţine tot timpul rezultatul operaţiilor efectuate. Sirul nr2 va conţine întotdeauna cel de-al doilea operand. Sunt variabile de tip string, deci valorile lor vor 14

15 trebui convertite la double pentru efectuarea operaţiilor. Cum întotdeauna prima introducere de date se face referitor la nr1 şi apoi toate celelalte la nr2, vom avea nevoie de o variabilă care să specifice faptul că valoarea introdusă este primul operand, sau al doilea. Aceasta este prim, care va lua valoarea true înainte de prima introducere, odată cu introducerea primului operand ea fiind facuta false. Rezultatul fiecărei operaţii, în format double va fi stocat în rez, iar valoarea memorată la apăsarea butonului MC va fi stocată în memory. Pentru a putea identifica operaţiile executate asupra operanzilor, va trebui să le codificăm. Vom codifica operaţiile astfel: adunare: 1, scădere:2, înmulţire:3 şi respectiv împărţire:4. Completam administratorul generic cu codul in rosu: private void calculatorbutton_click(object sender, EventArgs e) if (sender == unubutton) CitesteButon("1"); if (sender == doibutton) CitesteButon("2"); if (sender == treibutton) CitesteButon("3"); if (sender == patrubutton) CitesteButon("4"); if (sender == cincibutton) CitesteButon("5"); if (sender == sasebutton) CitesteButon("6"); if (sender == saptebutton) CitesteButon("7"); if (sender == optbutton) CitesteButon("8"); if (sender == nouabutton) CitesteButon("9"); if (sender == zerobutton) CitesteButon("0"); if (sender == virgulabutton) CitesteButon(","); if (sender == semnbutton) //semnul operandului trebuie schimbat if (prim) //este semnul pentru primul operand if (nr1.length == 0) nr1 += "-"; //semnul este primul caracter dintr-un sir vid else if (nr1[0]!= '-' && nr1[0]!= '+') //numarul nu are semn deci era pozitiv nr1 = nr1.insert(0, "-"); //adaugam semnul minus else //schimbam semnul primului operand if (nr1[0] == '-') nr1 = nr1.replace('-', '+'); else nr1 = nr1.replace('+', '-'); else //este semnul pentru al doilea operand if (nr2.length == 0) nr2 += "-"; else if (nr2[0]!= '-' && nr2[0]!= '+') nr2 = nr2.insert(0, "-"); else if (nr2[0] == '-') nr2 = nr2.replace('-', '+'); else nr2 = nr2.replace('+', '-'); if (sender == plusbutton) Operatie("+", 1); if (sender == minusbutton) Operatie("-", 2); if (sender == oributton) Operatie("*", 3); if (sender == divbutton) Operatie("/", 4); if (sender == egalbutton) 15

16 switch (op) case 1: rezultat = Convert.ToDouble(nr1) + Convert.ToDouble(nr2); break; case 2: rezultat = Convert.ToDouble(nr1) Convert.ToDouble(nr2); break; case 3: rezultat = Convert.ToDouble(nr1) * Convert.ToDouble(nr2); break; case 4: rezultat = Convert.ToDouble(nr1) / Convert.ToDouble(nr2); break; afisarelistbox.items.add(nr2); nr2 = ""; nr1 = Convert.ToString(rezultat); afisarelistbox.items.add(" "); afisarelistbox.items.add(nr1); op = 0; if (sender == clearbutton) //sunt anulate valorile introduse nr1 = ""; rezultat = 0; prim = true; introtextbox.clear(); afisarelistbox.items.clear(); if (sender == storebutton) //se stocheaza in memorie rezultatul partial obtinut memory = rezultat; if (memory == 0) storebutton.image = Image.FromFile("D:/Imagini/dot.jpg"); else storebutton.image = Image.FromFile("D:/Imagini/dot2.jpg"); if (sender == callbutton) //se extrage din memorie rezultatul partial if (prim) nr1 = Convert.ToString(memory); else nr2 = Convert.ToString(memory); if ((sender == plusbutton) (sender == minusbutton) (sender == oributton) (sender == divbutton) (sender == egalbutton) prim) introtextbox.text = nr1; else introtextbox.text = nr2; memory=0; storebutton.image = Image.FromFile("D:/Imagini/dot.jpg"); Inante de a explica functia de mai sus vom implementa si functiile CitesteButon() si Operatie(): 16

17 private void CitesteButon(string s) if (prim) nr1 += s; else nr2 += s; private void Operatie(string s, int oper) if (prim) prim = false; else switch (op) case 1: rezultat = Convert.ToDouble(nr1) + Convert.ToDouble(nr2); break; case 2: rezultat = Convert.ToDouble(nr1) Convert.ToDouble(nr2); break; case 3: rezultat = Convert.ToDouble(nr1) * Convert.ToDouble(nr2); break; case 4: rezultat = Convert.ToDouble(nr1) / Convert.ToDouble(nr2); break; nr2 = ""; nr1 = Convert.ToString(rezultat); afisarelistbox.items.add(nr1 + s); op = oper; Funcţia CitesteButon() primeşte ca parametru un şir de caractere. Dacă prim==true, îl adaugă la nr1, altfel la nr2. În acest fel, se permite completarea şirurilor de caractere care conţin cei 2 operanzi. Functia Operatie() este lansată în execuţie doar la apăsarea butoanelor care definesc operaţii aritmetice, adică doar după ce cel puţin un operand este introdus. Dacă deja s-a introdus un operand, prim este facut false pentru ca următorul operand să fie stocat în nr2. Apoi se calculează rezultatul (dar doar dacă există ambii operanzi), se stochează şi în nr1 pentru operaţiile următoare şi se salvează în op codul operaţiei. Operaţia ce se va executa este întotdeauna cea stocată în op. De asemenea, rezultatul şi semnul operaţiei (primit ca şi parametru) este afişat în controlul listă. Şi acum să trecem la funcţia lansată la apăsarea butoanelor (calculatorbutton_click). Dacă butonul care a lansat-o este un buton numeric, valoarea acestuia se adaugă la nr1 sau nr2, în funcţie de valoarea lui prim. Dacă butonul este semn, se adaugă sau + în faţa lui nr1 sau nr2, în funcţie de valoarea lui prim. Dacă şirul este gol sau nu există semn, se adaugă pe prima poziţie -, altfel se schimbă semnul existent cu cel complementar. Dacă butonul care a lansat în execuţie funcţia este un buton de operaţie aritmetică, se memorează codul operaţiei şi se execută operaţia anterioară, conform funcţiei Operatie(). Dacă butonul este =, se execută ultima operaţie, se afişează rezultatul în controlul ListBox şi se actualizează nr1 cu valoarea rezultatului pentru operaţii ulterioare. De asemnea, op este setat la o valoare care nu reprezintă o operaţie aritmetică, pentru ca operaţia să se efectueze doar după introducerea următorului operand. Dacă butonul este clear, se marchează prim=true pentru ca toate operaţiunile să fie reiniţializate şi se şterge rezultatul şi şirul nr1, pentru a-l pregăti să primească un nou operand. Dacă butonul este storebutton, se salvează rezultatul în variabila tampon memory. De asemenea, se schimbă pictograma de pe buton în cerc verde, pentru a marca faptul că în 17

18 memorie există o valoare utilizabilă. Stocarea în memorie a valorii 0 este echivalentă cu ştergerea memorie, deci va fi afişată din nou pictograma cerc roşu. Dacă butonul este callbutton, valoarea stocată în memorie va fi încărcată (după conversie) în nr1 sau nr2, în funcţie de valoarea lui prim. Compilaţi şi executaţi programul. Controlul RichTextBox Este un control asemănător cu controlul TextBox, dar permite afişarea de texte formatate. Câteva din proprietăţile acestui control sunt: CanRedo această proprietate este true dacă a fost executată o acţiune undo în interiorul controlului. CanUndo această proprietate este true dacă în interiorul controlului se poate executa o acţiune undo. RedoActionName proprietatea stochează numele acţiunii care a fost utilizată pentru a executa redo asupra a ceva care a fost făcut undo. DetectUrls dacă această proprietate este true, controlul este capabil să detecteze urluri şi să le formateze (să le sublinieze, la fel ca şi în browser) Rtf este echivalentă cu proprietatea Text din TextBox, dar conţine un text formatat. SelectedRtf această proprietate poate fi utilizată pentru a prelua sau a introduce text formatat din/în control. Dacă de exemplu textul preluat va fi introdus în MsWord, îşi va păstra formatul. SelectedText la fel ca şi proprietatea anterioară, dar textul este neformatat, deci orice informaţii asupra formatului acestuia se vor pierde. SelectionAlignment reprezintă alinierea textului selectat. Poate fi Left, Center sau Right. SelectionBullet proprietatea poate fi utilizată dacă textul este formatat cu bullets sau poate fi utilizată pentru adăugarea sau ştergerea unei asemenea formatări. BulletIndent specifică numărul de pixeli până la bullet, de la marginea stângă a controlului. SelectionColor permite schimbarea culorii textului selectat. SelectionFont permite schimbarea fonturilor textului selctat. SelectionLength permite setarea sau obţinerea lungimii textului selectat. SelectionType conţine informaţii cu privire la tipul obiectelor selectate. ShowSelectionMargin dacă această proprietate este true, o margine va fi afişată în stânga controlului pentru a uşura selectarea textului. UndoActionName precizează numele acţiunii ce se va efectua dacă utilizatorul execută un undo. SelectionProtected permite specificarea căror părţi din text să nu poată fi schimbate, prin setarea la true a acestei proprietăţi. Controlul poate genera o serie de evenimente, dintre care putem aminti: LinkedClick este generat când utilizatorul face click pe un link din text. Protected este generat atunci când utilizatorul încearcă să modifice un text care a fost protejat. SelectionChanged este generat când textul selectat în interiorul controlului se schimbă. Vom folosi acest control pentru a proiecta pagina Editor texte din mytabcontrol. Selectati pagina Editor texte Adaugati in pagina in partea de sus zece controale Button pentru care setati, in ordine de la stanga la dreapta, urmatoarele proprietati: o (Name): openbutton, savebutton, boldbutton, italicbutton, underlinebutton, leftbutton, centerbutton, rightbutton, fontbutton 18

19 o Location: (11, 4); (47, 4); (83, 4); (119, 4); (155, 4); (191, 4); (227, 4); (263, 4); (300, 4); (398, 4) o Size: 30, 30 pentru primele butoane si 60, 30 pentru ultimul buton din dreapta o Text: nimic, nimic, B, I (font italic), U (font underline), nimic, nimic, nimic, nimic, Font Pentru butoanele open, save, left, center, right si color vom folosi pictograme. Cautati pe net pictograme pentru aceste operatii care sa aiba cca 32 x 32 pixeli si salvati aceste imagini in folderul Imagini creat anterior pe discul D cu nume sugestive. Selectati butonul openbutton si in fereastra Properties alegeti BackgroundImage. Apasati pe caseta cu trei puncte si in fereastra Select Resource bifati butonul Local resource si apoi apasati butonul Import pentru a selecta pictograma dorita. Cand ati terminat apasati butonul OK Repetati aceste operatii pentru fiecare din butoanele savebutton, leftbutton, centerbutton, rightbutton, colorbutton si adaugati-le pictograme sugestive. Trageti pe forma un control RichTextBox si setati urmatoarele proprietati: o (Name): myrichtextbox o Dock: Bottom o Font: 10 Regular o Size: 506, 171 Pagina ar trebui sa arate astfel: Ca si calculatorul, editorul de texte trebuie sa fie inactiv la incarcarea formei, sa devina activ la adaugarea textului corespunzator in lista existentchklistbox din pagina Setari si sa redevina inactiv la stergerea sirului din lista. Pentru a realiza aceasta functionalitate vom scrie doua functii care dezactiveaza respectiv activeaza controalele din pagina. private void DezactiveazaEditor() openbutton.enabled = false; savebutton.enabled = false; boldbutton.enabled = false; italicbutton.enabled = false; underlinebutton.enabled = false; leftbutton.enabled = false; centerbutton.enabled = false; rightbutton.enabled = false; colorbutton.enabled = false; fontbutton.enabled = false; myrichtextbox.enabled = false; 19

20 private void ActiveazaEditor() openbutton.enabled = true; savebutton.enabled = true; boldbutton.enabled = true; italicbutton.enabled = true; underlinebutton.enabled = true; leftbutton.enabled = true; centerbutton.enabled = true; rightbutton.enabled = true; colorbutton.enabled = true; fontbutton.enabled = true; myrichtextbox.enabled = true; Functia DezactiveazaEditor() o vom apela prima data in administratorul Load() al formei: private void mainform_load(object sender, EventArgs e)... DezactiveazaCalculator(); DezactiveazaEditor(); O vom apela si in administratorul butonului Sterge din pagina Setari: private void stergebutton_click(object sender, EventArgs e) foreach (string item in existentchklistbox.checkeditems) if (item.tostring() == "Calculator") DezactiveazaCalculator(); if (item.tostring() == "Editor texte") DezactiveazaEditor();... Functia ActiveazaEditor() o vom apela in administratorul butonului Adauga din pagina Setari: private void adaugabutton_click(object sender, EventArgs e) if (totalchklistbox.checkeditems.count > 0) existentchklistbox.items.clear(); foreach (string item in totalchklistbox.checkeditems) existentchklistbox.items.add(item.tostring()); //am adaugat in a doua lista itemii selectati din prima lista if (item.tostring() == "Calculator") //aplicatia a fost selectata ActiveazaCalculator(); //calculatorul este activat if (item.tostring() == "Editor texte") //aplicatia a fost selectata ActiveazaEditor(); //editorul este activat... Compilati si rulati aplicatia pentru a verifica functionalitatea de mai sus. 20

21 Vom scrie mai intai administratorii pentru butoanele de formatare bold, italic si underline pentru ca sunt asemanatoare si mai usor de inteles. Faceti dublu-clic pe butonul bold si scrieti codul in rosu: private void boldbutton_click(object sender, EventArgs e) Font oldfont, newfont; oldfont = myrichtextbox.selectionfont; //fontul textului selectat newfont = new Font(oldFont, oldfont.style ^ FontStyle.Bold); myrichtextbox.selectionfont = newfont; myrichtextbox.focus(); Faceti dublu-clic pe butonul italic si scrieti codul in rosu: private void italicbutton_click(object sender, EventArgs e) Font oldfont, newfont; oldfont = myrichtextbox.selectionfont; newfont = new Font(oldFont, oldfont.style ^ FontStyle.Italic); myrichtextbox.selectionfont = newfont; myrichtextbox.focus(); Faceti dublu-clic pe butonul underline si scrieti codul in rosu: private void underlinebutton_click(object sender, EventArgs e) Font oldfont, newfont; oldfont = myrichtextbox.selectionfont; newfont = new Font(oldFont, oldfont.style ^ FontStyle.Underline); myrichtextbox.selectionfont = newfont; myrichtextbox.focus(); Cele trei funcţii sunt similare. Întâi, definesc doua obiecte de clasă Font, oldfont şi respectiv newfont. În obiectul oldfont se salvează fontul implicit din zona de text selectată. Apoi, se crează un nou font, care se încarcă în obiectul newfont. Contructorul clasei Font are prototipul Font(Famile de fonturi, Stilul fontului) Se observă că în constructor se păstrează aceeaşi familie ca şi fontul din textul selctat (cu alte cuvinte nu se schimbă fontul) dar, stilul vechiului font este supus unei operaţii ^ (SAU exclusiv) cu stilul corespunzător funcţiei (Bold, Italic respectiv Underline). Prin SAU exclusiv, dacă stilurile sunt identice, se şterge stilul, iar dacă stilurile sunt diferite, se aplică stilul. Adică dacă textul selectat este normal şi se apasă de exemplu Bold, textul va fi făcut bold. Dar dacă textul selectat era bold, acest stil se şterge şi textul redevine normal. Apoi, fontul nou este aplicat textului selectat şi focusul este redat controlului. Tot relativ simplu sunt de implementat şi funcţiile care aliniază textul. Faceti dublu-clic pe butonul left si scrieti codul in rosu: private void leftbutton_click(object sender, EventArgs e) myrichtextbox.selectionalignment = HorizontalAlignment.Left; myrichtextbox.focus(); Faceti dublu-clic pe butonul center si scrieti codul in rosu: private void centerbutton_click(object sender, EventArgs e) myrichtextbox.selectionalignment = HorizontalAlignment.Center; myrichtextbox.focus(); Faceti dublu-clic pe butonul right si scrieti codul in rosu: private void rightbutton_click(object sender, EventArgs e) 21

22 myrichtextbox.selectionalignment = HorizontalAlignment.Right; myrichtextbox.focus(); Compilati si rulati aplicatia pentru a verifica functionalitatea butoanelor care au fost implementate. Scrieti un text in myrichtextbox, selectati o portiune de text sau tot textul si formatati-l cu ajutorul butoanelor bold, italic, underline, left, center si right. Casete de dialog Casetele de dialog sunt ferestre care sunt afişate în contextul altor ferestre. Sunt utilizate în general atunci când programul necesită un set de informaţii suplimentare de la utilizator. Pentru a afişa un astfel de control, se va utiliza metoda ShowDialog(), după cum se va vedea în continuare. La reântoarcerea în fereastra principală, caseta de dialog va returna un cod, care în general poate fi DialogResult.OK dacă modificările făcute în caseta de dialog se confirmă, respectiv DialogResult.Cancel dacă acestea se anulează. FontDialog Caseta de dialog FontDialog este prezentată în figura de mai sus. Se poate observa că prin intermediul ei se poate alege tipul de font, dimensiunea fontului precum şi stilul fontului. Această casetă dorim s-o lansăm la apăsarea butonului fontbutton. Faceti dublu-clic pe butonul Font si scrieti codul in rosu: private void fontbutton_click(object sender, EventArgs e) FontDialog fd = new FontDialog(); //creaza un dialog if (fd.showdialog() == DialogResult.OK) //a fost apasat OK myrichtextbox.selectionfont = fd.font; //se aplica selectiei fontul ales myrichtextbox.focus(); Funcţia creează un obiect FontDialog, numit fd. Apoi, îl afişează cu ajutorul funcţiei ShowDialog(). Aceasta va implementa în totalitate funcţionalitatea casetei de dialog. Dacă la ieşire a fost apăsat butonul OK, textului selectat i se schimbă fontul în cel ales şi returnat de caseta de dialog. ColorDialog Caseta de dialog ColorDialog este prezentată în figura de mai sus. Ea permite alegerea culorilor dintr-un set predefinit, sau definirea de culori utilizator. Modul de manifestare este similar casetei de dialog precedente. Faceti dublu-clic pe butonul color si scrieti codul in rosu: 22

23 private void colorbutton_click(object sender, EventArgs e) ColorDialog cd = new ColorDialog(); if (cd.showdialog() == DialogResult.OK) myrichtextbox.selectioncolor = cd.color; myrichtextbox.focus(); Singura deosebire faţă de funcţia anterioară este faptul că nu se schimbă fontul textului selectat, ci culoarea returnată la ieşirea din caseta de dialog. OpenFileDialog Infrastructura C# oferă casete de dialog pentru manipularea numelor de fişiere. O astfel de casetă este OpenFileDialog: În această casetă se poate căuta numele unui fişier existent sau adăuga un nou nume. De aseemenea, se permite specificarea tipului de fişier care urmează să fie încărcat. Pentru specificarea tipurilor de fişiere acceptate, trebuie construit un filtru, după următorul mecanism: mesaj1 tip1 fişier mesaj2 tip2 fisier mesajn tipn fişier Acest filtru trebuie aplicat casetei de dialog după creare cu instrucţiunea new, dar înainte de afişare cu funcţia ShowDialog(). Permite utilizarea aşa numitelor wildcards (semnele?, respectiv *). Caseta de dialog oferă o serie de proprietăţi utile pentru utilizator. Câteva din acestea sunt: Title permite modificarea textului afişat în bara de titlu a casetei de dialog; FileName numele fişierului (fişierelor) selectate; Deoarece fişierele sunt entităţi externe programului, încercarea de accesare a unui fişier cu nume eronat poate duce la erori în cadrul programului, respectiv la oprirea lui forţată de către sistemul de operare. De aceea, înainte de a implementa funcţia care se execută la apăsarea butonului open, mai trebuie să vorbim despre Excepţii Complexitatea aplicaţiilor actuale, în special a celor orientate pe obiecte, presupune o modularizare pe nivele ierarhice. Această situaţie impune tratarea deosebit de riguroasă a situaţiilor deosebite, în special a erorilor care pot să apară la nivelul diferitelor componente ale unui proiect. În cele ce urmează, vom înţelege prin excepţie o situaţie deosebită care poate să apară pe parcursul execuţiei unei componente soft parte a unei aplicaţii. Erorile pot fi privite ca şi un caz particular de excepţii, dar în general nu toate excepţiile sunt erori. 23

24 Excepţiile se împart în două categorii: excepţii sincrone şi excepţii asincrone. Excepţiile sincrone sunt excepţii a căror apariţie poate fi prevăzută de programator (de exemplu, un fişier care se doreşte a fi prelucrat nu se află în directorul aşteptat). Excepţiile asincrone sunt excepţii a căror apariţie nu poate fi prevăzută în momentul implementării programului (de exemplu, defectarea accidentală a hard-disk-ului). Mecanismul de tratare a excepţiilor ia în considerare numai situaţia excepţiilor sincrone. Problema se pune astfel: în faza de programare, se poate presupune că un modul de program va detecta în anumite situaţii o excepţie, dar nu va putea oferi o soluţie generală de tratare a acesteia, în timp ce un alt modul al aplicaţiei poate oferi o soluţie de tratare a excepţiei, dar nu poate detecta singur apariţia excepţiilor. Exemple tipice de excepţii: împărţire cu 0, accesul la un fişier inexistent, operaţii cu o unitate logică nefuncţională, etc. Uzual, la pariţia unei excepţii, sistemul de operare va opri forţat execuţia modului de program în care excepţia s-a produs, pentru ca acesta să nu afecteze buna funcţionare a celorlalte programe. De multe ori însă este necesar ca excepţia apărută să nu fie transmisă sistemului de operare, ci să fie prinsă şi tratată în interiorul modulului care a generat-o. Acest lucru este posibil prin intermediul unui mecanism bazat pe 2 instrucţiuni: try şi catch. Mecanismul este următorul: zona critică, adică zona de cod în care programatorul prevede posibilitatea apariţiei unei excepţii este scrisă într-un bloc try. Blocul try este urmat de unul su mai multe blocuri catch, cîte unul pentru fiecare tip de execepţie ce poate să apară. Execuţia programelor în acest caz este prezentată în fig. a şi b. Fig. a prezintă situaţia normală de execuţie, când în secţiunea critică nu apare excepţie. În acest caz, se execută în succesiune normală toate instrucţiunile din secţiunea critică, după care, următoarea instrucţiune executată este prima de după blocul catch, acesta fiind neglijat. Fig. b prezintă situaţia apariţiei unei excepţii. În acest caz, următoarea unstrucţiune executată după cea care a generat excepţia este prima din blocul catch, în acesta urmând a fi tratată excepţia. După execuţia instrucţiunilor din blocul catch, se continuă în secvenţă normală, cu prima instrucţiune de după acesta. Marea majoritate a claselor care lucrează cu entităţi externe memoriei generează excepţii, pentru ca posibilele erori să poată fi tratate încă din faza de programare. Este şi cazul claselor care lucrează cu fişiere şi este indicat ca toate operaţiile făcute asupra fişierelor să fie tratate prin mecanismul try-catch. Cu aceasta, putem implementa funcţia openbutton_click(): private void openbutton_click(object sender, EventArgs e) OpenFileDialog of = new OpenFileDialog(); of.title = "Deschide fisier"; of.filter = "Rich text *.rtf"; if (of.showdialog() == DialogResult.OK) 24

25 try myrichtextbox.loadfile(of.filename); catch(systemexception err) MessageBox.Show(err.ToString()); La început se creează o nouă caseta OpenFileDialog, numită of. Acesteia i se schimbă titlul în Deschide fisier şi se creează un filtru, astfel încât să se poată selecta fişiere de tip *.rtf. Apoi caseta este dechisă şi se verifică revenirea cu OK. Dacă s-a revenit cu OK, se încarcă fişierul cu numele returnat de of în proprietatea FileName, dar într-o secvenţă critică. Orice eroare va genera o excepţie de clasă SystemException, care este prinsă în blocul catch şi este afişat mesajul asociat erorii, generat de obiectul de clasă SystemException. SaveFileDialog Aceasta permite salvarea cu un nume ales sau dat a unui fişier. Modul de lucru cu această casetă de dialog este absolut similar casetei OpenFileDialog. Deci, funcţia care se execută la apăsarea butonului savebutton va fi: private void savebutton_click(object sender, EventArgs e) SaveFileDialog sf = new SaveFileDialog(); sf.title = "Salveaza fisierul"; sf.filter = "Rich text *.rtf Plain text *.txt"; if (sf.showdialog() == DialogResult.OK) try myrichtextbox.savefile(sf.filename); catch (SystemException err) MessageBox.Show(err.ToString()); 25

26 List View Control Mai avem de implementat agenda. Pentru aceasta, vom studia controlul numit ListView. Acest control este uzual folosit pentru a permite utilizatorului să aibă control asupra detaliilor şi stilului de prezentare. Datele pot fi prezentate tabelar, pe linii şi coloane, sub forma de grilă, într-o singură coloană sau având asociate diferite pictograme (ImageList control). Similar celorlalte controale, ListView oferă un set de proprietăţi, metode şi evenimente. Cîteva din proprietăţi sunt: Activation pe baza acestei proprietăţi, utilizatorul poate controla modul de activare al unui element de listă. Valorile posibile sunt: o Standard mod de activare standard. o OneClick un click asupra elementului de listă are ca efect activarea lui. o TwoClick - dublu click asupra elementului de listă are ca efect activarea lui. Alignment specifică alinierea elementelor de listă. Sunt posibile 4 valori: o Default dacă utilizatorul efectuează un drag-and-drop asupra unui element de listă, el rămâne acolo unde a fost pus de utilizator. o Left elementele sunt aliniate spre stânfa în control. o Top elementele sunt aliniate spre partea de sus a controlului. o SnapToGrid elementele sunt aliniate în interiorul unei grile invizibile. AllowColumnReorder dacă această proprietate este true, ordinea coloanelor în listă poate fi schimbată în timpul execuţiei programului. În acest caz trebuie acordată o atenţie sporită funcţiilor care inserează elemente în ListView, pentru ca inserarea să se facă în coloana potrivită. Autoarrange dacă această proprietate este true, elementele de listă se vor aranja singure conform valorii din proprietatea Alignment. Acesată proprietate funcţionează doar dacă proprietatea View este LargeIcon sau SmallIcon. CheckBoxes dacă această proprietate este true, fiecare element de listă va avea un checkbox în stânga. Funcţionează doar dacă proprietatea View este Details sau List. CheckedIndices, CheckedItems aceste proprietăţi reprezintă colecţii care stochează indicii elementelor, respectiv elementele care sunt bifate în listă. Columns permite accesul la o colecţie de coloane din listă, permiţând ştergerea sau adăugarea de coloane. FocusedItem menţine elementul care are focusul în interiorul listei. FullRowSelect dacă această proprietate este true, la selectarea unui element se selectează întreaga linie din care face parte. Dacă este false, se selectează doar elementul asupra căruia s-a făcut click. GridLines - dacă această proprietate este true, controlul va afişa o grilă de demarcare a liniilor şi coloanelor. Funcţionează doar dacă proprietatea View este Details HeaderStyle permite specificarea modului de afişare a capetelor de coloane. Poate avea valorile: o Clickable capetele de tabel funcţionează ca şi nişte butoane o NonClickable capetele de tabel nu răspund la apăsarea butonului mousului. o None capetele de tabel nu sunt afişate. Items colecţia de elemente de listă. LabelEdit dacă este true, utilizatorul poate edita conţinutul primei coloane într-o listă cu View pus pe Details. LargeImageList proprietatea stochează ImageList care stochează la rândul ei imaginile. Funcţionează dacă View este LargeIcon. MultiSelect dacă este true, este permisă selectarea simultană a mai multor elemente de listă. Scrollable dacă este true, se afişează bare de defilare. SelectedIndices, SelectedItems - aceste proprietăţi reprezintă colecţii care stochează indicii elementelor, respectiv elementele selectate în listă. 26

27 SmallImageList - proprietatea stochează ImageList care stochează la rândul ei imaginile. Funcţionează dacă View este SmallIcon. Sorting controlul poate sorta elementele de listă înainte de afişare. Poate fi: o Ascending o Descending o None TopItem returnează elementul din capul listei. View precizează modul de afişare a elementelor în listă. Poate fi: o LargeIcon toate elementele sunt afişate cu o pictogramă mare (32x32 pixeli) şi o etichetă. o SmallIcon - toate elementele sunt afişate cu o pictogramă mică (16x16 pixeli) şi o etichetă. o List afişarea se face pe o singură coloană, care poate conţine o pictogramă şi o etichetă. o Details afişarea se poate face pe oricâte coloane, dar doar prima coloană poate conţine pictograme. Câteva din metodele ce pot fi executate de control sunt: Add() adaugă elemente de listă. BeginUpdate() prin apelarea acestei metode, controlul ListView va înceta desenarea liniilor actualizate până când va fi apelată metoda EndUpdate(). Această metodă evită pâlpâirea ecranului atunci când sunt inserate mai multe elemnte simultan şi creşte viteza de actualizare a listei. Clear() şterge toate elementele listei. EndUpdate() termină actualizarea listei şi toate elementele sunt afişate. Câteva din evenimentele mai semnificative generate de control: ColumnClick este generat atunci când se face click pe o coloana. ItemActivate este generat etunci când un element de listă este activat Vom construi agenda pe baza celor prezentate mai sus. Selectati pagina Agenda Trageti in pagina un control ListView si setati urmatoarele proprietati o (Name): agendalistview o Dock: Fill (elementul va ocupa tot spatiul disponibil) o ForeColor: Navy o GridLines: True o View: Details Cautati in Toolbox in sectiunea Components elementul ImageList. Pentru al adauga proiectului faceti dublu-clic pe el. Elementul va fi afisat sub forma. Selectati elementul si setati urmatoarele proprietati: o (Name): myimagelist o Cautati pe net doua pictograme de cca 32 x 32 pixeli reprezentand un semn de intrebare, respectiv o exclamatie si salvati-le in directorul Imagini creat anterior in discul D sub numele question.jpg, respectiv exclamation.jpg o Reventi la myimagelist si faceti clic pe caseta cu trei puncte din dreapta proprietatii Images o In fereastra Image Collection Editor care se deschide apasati tasta Add si adaugati prima pictograma si inca odata Add pentru a adauga a doua pictograma. Cand ati terminat apasati OK 27

28 Reveniti la agendalistview, selectati proprietatea SmallImageList si din lista care se deschide selectati myimagelist. In acest fel, agenda va folosi ca pictograme cele doua imagini incarcate in myimagelist. Ca si pentru paginile anterior create, va trebui sa activam, respectiv sa dezactivam agenda conform selectiilor facute in pagina Setari. Vom adauga in Form1.cs codul celor doua functii: private void DezactiveazaAgenda() agendalistview.enabled = false; private void ActiveazaAgenda() agendalistview.enabled = true; Vom adauga apelurile in Load(), adaugabutton_click si stergebutton_click asa cum am procedat si pentru celelalte pagini: private void mainform_load(object sender, EventArgs e)... DezactiveazaEditor(); DezactiveazaAgenda();... private void adaugabutton_click(object sender, EventArgs e) if (totalchklistbox.checkeditems.count > 0) //sunt selectati itemi in lista existentchklistbox.items.clear(); //stergem toti itemii din a doua lista foreach (string item in totalchklistbox.checkeditems) existentchklistbox.items.add(item.tostring()); //am adaugat in a doua lista itemii selectati din prima lista if (item.tostring() == "Calculator") //aplicatia a fost selectata 28

29 ActiveazaCalculator(); //calculatorul este activat if (item.tostring() == "Editor texte") ActiveazaEditor(); //editorul este activat if (item.tostring() == "Agenda") //aplicatia a fost selectata ActiveazaAgenda(); //agenda este activata private void stergebutton_click(object sender, EventArgs e) foreach (string item in existentchklistbox.checkeditems) if (item.tostring() == "Calculator") DezactiveazaCalculator(); if (item.tostring() == "Editor texte") DezactiveazaEditor(); if (item.tostring() == "Agenda") DezactiveazaAgenda();... Acum urmează să implementăm o funcţie care defineşte capul de tabel şi populează cu intervale orare prima coloană a listei. Vom numi această funcţie GenereazaOre() şi va avea implementarea de mai jos. private void GenereazaOre() agendalistview.items.clear(); //sterge toti itemii din lista ColumnHeader caplista; //declara o coloana tip header caplista = new ColumnHeader(); //creeaza coloana caplista.text = "Orele"; //titlul coloanei caplista.width = 70; //latimea coloanei caplista.textalign = HorizontalAlignment.Center; //alinierea textului din coloana agendalistview.columns.add(caplista); //adauga coloana in lista caplista = new ColumnHeader(); //creeaza o noua coloana caplista.text = "Activitate"; caplista.width = 70; caplista.textalign = HorizontalAlignment.Center; agendalistview.columns.add(caplista); //adauga in lista coloana ListViewItem ore; //declara un item pentru lista agendalistview.beginupdate(); //incepe actualizarea listei try for (int i = 8; i <= 20; i += 2) ore = new ListViewItem(); //creeaza o noua linie pentru lista ore.text = Convert.ToString(i) + "-" + Convert.ToString(i + 2); ore.imageindex = 0; agendalistview.items.add(ore); //adauga linia in lista 29

30 catch(exception err) MessageBox.Show("Eroare: " + err.tostring()); agendalistview.endupdate(); //se incheie actualizarea listei Funcţia începe prin a şterge complet toate elementele din listă. Apoi începe construcţia capului de listă, prin definirea unor capete de coloană, care sunt obiecte de clasă ColumnHeader. Fiecare apel new ColumnHeader() va defini o nouă coloană.adaugarea efectivă a fiecărei coloane în listă se face prin apelul funcţiei agendalistview.columns.add(caplista). Acum urmează popularea primei coloane din listă. Vom declara un obiect de clasă ListViewItem, adică element de listă. Vom marca începutul populării listei, ceea ce va avea ca efect blocarea afişării elementelor până la sfârşitul populării (vezi funcţia BeginUpdate()). Apoi, vom popula cu intervele orare de 2 ore, începând cu ora 8 şi terminând cu ora 22. Fiecare nouă linie în listă se defineşte prin new ListViewItem(). Practic, prin inserarea unui element în prima coloană a listei, se va creea automat câte o linie nouă pentru fiecare element în parte. Toate elementele de pe celelalte coloane, vor fi definite ca subelemente (SubItems) ale elementelor de pe prima coloană, linia pe care sunt inserate fiind definită de elementul cărora le sunt asociate. Pentru fiecare element nou introdus, se transformă intervalul orar în text şi i se atribuie imaginea de index=0 din myimagelist (în cazul nostru imaginea stocată în fişierul question.jpg). Inserarea efectivă a fiecărui element (respectiv deschiderea unei noi linii în listă) se face prin apelul agendalistview.items.add(). Tot mecanismul este inserat în blocuri trycatch, pentru a intercepta posibilele excepţii ce apar la crearea listei. La crearea listei se poate genera o excepţie de clasă Exception care este interceptată şi mesajul aferent este afişat. Funcţia GenereazaOre(), va trebui apelată la iniţializarea formei, pentru a completa prima coloană şi ori de câte ori se schimbă data în controlul MonthCalendar. Vom insera apelul acestei funcţii astfel: private void mainform_load(object sender, EventArgs e)... DezactiveazaAgenda(); GenereazaOre(); si: private void mycalendar_datechanged(object sender, DateRangeEventArgs e) mycalendar.todaydate = e.start; CompleteazaData(); GenereazaOre(); Compilaţi şi executaţi programul. Se poate observa modul de afişare a listei. În mod normal, inserarea unei activităţi în agendă se face prin apăsarea dublu-click asupra elementului care reprezintă intervalul orar. Un dublu-click asupra unui element de listă, va genera evenimentul ItemActivate. Acest eveniment va trebui să-l interceptăm şi să-i asociem o funcţie. Pentru a crea acest administrator: Selectati controlul agendalistview din pagina, selectati in fereastra Properties tabul Events, cautati evenimentul ItemActivate si faceti dublu-clic pe el pentru a crea administratorul corespunzator. private void agendalistview_itemactivate(object sender, EventArgs e) 30

31 Acest handler, după cum ştim deja, la fecare dublu-click asupra unui element de listă, va lansa în execuţie funcţia agendalistview_itemactivate(). În mod normal, introducerea textului nu se face direct în listă, ci într-o nouă formă, ce va fi lansată ca un DialogBox utilizator, pentru a se putea face validarea sau invalidarea textului introdus. Deci, înainte de a implementa funcţia, să vedem cum putem construi o nouă formă pe care s-o definim ca DialogBox. Adăugarea unui DialogBox utilizator Pentru definirea unui DialogBox particularizat, va trebui întâi să adăugăm proiectului o nouă formă. Alegeti din meniul C# optiunea ProjectAdd Windows Forms In fereastra care se deschide numiti noua forma ActivityForm si apasati butonul Add Pentru noua forma care se deschide setati urmatoarele proprietati: o BackColor: LightGray (Web) o Font: Bold o ForeColor: Navy o FormBorderStyle: FixedDialog o MaximizeBox: False o MinimizeBox: False o Size: 580, 135 o Text: Adauga o activitate in agenda Trageti pe forma, in partea stanga, trei controale Label si setati, in ordine de sus in jos, urmatoarele proprietati: o (Name): datelabel, hourlabel, messagelabel o Location: (42, 18); (42, 44); (42, 73) o Text: Data, Ora, Mesaj Trageti pe forma trei controale TextBox, cate una in dreapta fiecarei etichete si setati urmatoarele proprietati: o (Name): datetextbox, hourtextbox, messagetextbox o Location: (94, 12); (94, 38); (94, 73) o ReadOnly: True (numai pentru primele doua casete de text) o Size: (115, 20); (115, 20); (450, 20) Trageti pa forma doua controale Button, in partea dreapta a formei, si setati, de sus in jos, urmatoarele proprietati: o (Name): okbutton, cancelbutton o DialogResult: Ok, Cancel o Location: (435, 12); (435, 44) o Size: 85, 23 o Text: OK, Cancel Forma ar trebui sa arate astfel: Dorim ca la lansarea formei, în datetextbox.text să fie scrisă data selectată în controlul MonthCalendar din forma principală, iar în hourtextbox.text să fie trecut intervalul orar din 31

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila

MS POWER POINT. s.l.dr.ing.ciprian-bogdan Chirila MS POWER POINT s.l.dr.ing.ciprian-bogdan Chirila chirila@cs.upt.ro http://www.cs.upt.ro/~chirila Pornire PowerPoint Pentru accesarea programului PowerPoint se parcurg următorii paşi: Clic pe butonul de

More information

Metrici LPR interfatare cu Barix Barionet 50 -

Metrici LPR interfatare cu Barix Barionet 50 - Metrici LPR interfatare cu Barix Barionet 50 - Barionet 50 este un lan controller produs de Barix, care poate fi folosit in combinatie cu Metrici LPR, pentru a deschide bariera atunci cand un numar de

More information

Itemi Sisteme de Operare

Itemi Sisteme de Operare Itemi Sisteme de Operare 1. Pentru a muta un dosar (folder) de pe partiţia C: pe partiţia D: folosim: a. New Folder b. Ctrl + C din bara de instrumente şi Copy; c. Ctrl + X şi Ctrl + V; d. Edit Paste;

More information

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice

Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice Titlul lucrării propuse pentru participarea la concursul pe tema securității informatice "Îmbunătăţirea proceselor şi activităţilor educaţionale în cadrul programelor de licenţă şi masterat în domeniul

More information

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample.

1. Creaţi un nou proiect de tip Windows Forms Application, cu numele MdiExample. Aplicaţia MdiExample Aplicaţia implementează: Deschiderea şi închiderea ferestrelor child. Minimizarea şi maximizarea ferestrelor. Aranjarea ferestrelor. Tratarea mesajului de atenţionare la ieşirea din

More information

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin

Structura și Organizarea Calculatoarelor. Titular: BĂRBULESCU Lucian-Florentin Structura și Organizarea Calculatoarelor Titular: BĂRBULESCU Lucian-Florentin Chapter 3 ADUNAREA ȘI SCĂDEREA NUMERELOR BINARE CU SEMN CONȚINUT Adunarea FXP în cod direct Sumator FXP în cod direct Scăderea

More information

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: "9",

La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - <numarul dvs de carnet> (ex: 9, La fereastra de autentificare trebuie executati urmatorii pasi: 1. Introduceti urmatoarele date: Utilizator: - (ex: "9", "125", 1573" - se va scrie fara ghilimele) Parola: -

More information

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N

2. Setări configurare acces la o cameră web conectată într-un router ZTE H218N sau H298N Pentru a putea vizualiza imaginile unei camere web IP conectată într-un router ZTE H218N sau H298N, este necesară activarea serviciului Dinamic DNS oferit de RCS&RDS, precum și efectuarea unor setări pe

More information

Versionare - GIT ALIN ZAMFIROIU

Versionare - GIT ALIN ZAMFIROIU Versionare - GIT ALIN ZAMFIROIU Controlul versiunilor - necesitate Caracterul colaborativ al proiectelor; Backup pentru codul scris Istoricul modificarilor Terminologie și concepte VCS Version Control

More information

Update firmware aparat foto

Update firmware aparat foto Update firmware aparat foto Mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să efectuaţi acest update de firmware. Dacă nu aveţi încredere că puteţi realiza acest update cu succes, acesta

More information

Modalitǎţi de clasificare a datelor cantitative

Modalitǎţi de clasificare a datelor cantitative Modalitǎţi de clasificare a datelor cantitative Modul de stabilire a claselor determinarea pragurilor minime şi maxime ale fiecǎrei clase - determinǎ modul în care sunt atribuite valorile fiecǎrei clase

More information

Proiect. Construirea interfetei

Proiect. Construirea interfetei Proiect Vom construi un proiect in care vom utiliza o parte din controalele studiate. Vom construi un formular care permite introducerea si validarea informatiilor despre un angajat. Construirea interfetei

More information

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows

Ghid identificare versiune AWP, instalare AWP şi verificare importare certificat în Store-ul de Windows Ghid identificare versiune AWP, instalare AWP 4.5.4 şi verificare importare certificat în Store-ul de Windows Data: 28.11.14 Versiune: V1.1 Nume fişiser: Ghid identificare versiune AWP, instalare AWP 4-5-4

More information

X-Fit S Manual de utilizare

X-Fit S Manual de utilizare X-Fit S Manual de utilizare Compatibilitate Acest produs este compatibil doar cu dispozitivele ce au următoarele specificații: ios: Versiune 7.0 sau mai nouă, Bluetooth 4.0 Android: Versiune 4.3 sau mai

More information

Metoda Dispose() Exemplu Dispose() Windows Forms MetodaDispose

Metoda Dispose() Exemplu Dispose() Windows Forms MetodaDispose Metoda Dispose() Exemplu: Metoda Dispose() are ca efect inchiderea formei curente si dealocarea ei din memorie. Vom crea o aplicatie care la apasarea unui buton va prelua textul introdus intr-o caseta

More information

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND

Textul si imaginile din acest document sunt licentiate. Codul sursa din acest document este licentiat. Attribution-NonCommercial-NoDerivs CC BY-NC-ND Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document

More information

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962)

ARBORI AVL. (denumiti dupa Adelson-Velskii si Landis, 1962) ARBORI AVL (denumiti dupa Adelson-Velskii si Landis, 1962) Georgy Maximovich Adelson-Velsky (Russian: Гео ргий Макси мович Адельсо н- Ве льский; name is sometimes transliterated as Georgii Adelson-Velskii)

More information

Subiecte Clasa a VI-a

Subiecte Clasa a VI-a (40 de intrebari) Puteti folosi spatiile goale ca ciorna. Nu este de ajuns sa alegeti raspunsul corect pe brosura de subiecte, ele trebuie completate pe foaia de raspuns in dreptul numarului intrebarii

More information

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router

2. Setări configurare acces la o cameră web conectată într-un echipament HG8121H cu funcție activă de router Pentru a putea vizualiza imaginile unei camere web IP conectată într-un echipament Huawei HG8121H, este necesară activarea serviciului Dinamic DNS oferit de RCS&RDS, precum și efectuarea unor setări pe

More information

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; }

Arbori. Figura 1. struct ANOD { int val; ANOD* st; ANOD* dr; }; #include <stdio.h> #include <conio.h> struct ANOD { int val; ANOD* st; ANOD* dr; } Arbori Arborii, ca şi listele, sunt structuri dinamice. Elementele structurale ale unui arbore sunt noduri şi arce orientate care unesc nodurile. Deci, în fond, un arbore este un graf orientat degenerat.

More information

Mai bine. Pentru c putem.

Mai bine. Pentru c putem. 1 CUPRINS: 1. SUMAR APLICAŢIE...... 3 1.1 Introducere... 3 1.2 Tipul de aplicaţie... 3 2. SPECIFICAŢII FUNCŢIONALE... 3 3. INSTALARE... 3 3.1 Introducere... 3 3.2 Ce trebuie să verificaţi înainte de a

More information

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban

Reflexia şi refracţia luminii. Aplicaţii. Valerica Baban Reflexia şi refracţia luminii. Aplicaţii. Sumar 1. Indicele de refracţie al unui mediu 2. Reflexia şi refracţia luminii. Legi. 3. Reflexia totală 4. Oglinda plană 5. Reflexia şi refracţia luminii în natură

More information

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog

Laborator 1. Programare declarativă. Programare logică. Prolog. SWI-Prolog Laborator 1 Programare declarativă O paradigmă de programare în care controlul fluxului de execuție este lăsat la latitudinea implementării limbajului, spre deosebire de programarea imperativă în care

More information

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo

Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo Ghid pentru configurarea şi utilizarea aplicaţiei clicksign Demo 2.6.9.223 Cuprins 1 Cadru general...2 2 Obţinerea unui certificat digital...3 3 Configurarea aplicaţiei clicksign...5 4 Utilizarea aplicaţiei

More information

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC

REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC REVISTA NAŢIONALĂ DE INFORMATICĂ APLICATĂ INFO-PRACTIC Anul II Nr. 7 aprilie 2013 ISSN 2285 6560 Referent ştiinţific Lector univ. dr. Claudiu Ionuţ Popîrlan Facultatea de Ştiinţe Exacte Universitatea din

More information

Reţele Neuronale Artificiale în MATLAB

Reţele Neuronale Artificiale în MATLAB Reţele Neuronale Artificiale în MATLAB Programul MATLAB dispune de o colecţie de funcţii şi interfeţe grafice, destinate lucrului cu Reţele Neuronale Artificiale, grupate sub numele de Neural Network Toolbox.

More information

Lucrarea nr.1. Crearea unui document Word

Lucrarea nr.1. Crearea unui document Word Lucrarea nr.1 Crearea unui document Word Scopul lucrării Lucrarea are drept scop inițiere și familiarizarea studenților cu interfața editorului de text Microsoft Word 2007. Modul de lucru Word este un

More information

Figura x.1 Ecranul de pornire al mediului de dezvoltare

Figura x.1 Ecranul de pornire al mediului de dezvoltare x. Mediul de dezvoltare MICROSOFT VISUAL C++ În cadrul acestui capitol vom prezenta Microsoft Visual C++, din cadrul suitei Microsoft Visual Studio 2012, care este un mediu de programare care suportă dezvoltarea

More information

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig.

Proceduri stocate. Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig. Proceduri stocate Crearea procedurilor stocate. Varianta 1 În Management Studio se dă clic pe New Query ca în imaginea de mai jos: Fig. 1 Odată cu deschiderea editorului SQL, apare și bara de instrumente

More information

Actualizarea firmware-ului pentru aparatul foto digital SLR

Actualizarea firmware-ului pentru aparatul foto digital SLR Actualizarea firmware-ului pentru aparatul foto digital SLR Vă mulţumim că aţi ales un produs Nikon. Acest ghid descrie cum să realizaţi actualizarea firmwareului. Dacă nu sunteţi sigur că puteţi realiza

More information

Lucrarea de laborator nr. 4

Lucrarea de laborator nr. 4 Metode merice - Lucrarea de laborator 4 Lucrarea de laborator nr. 4 I. Scopul lucrării Elemente de programare în MAPLE II. III. Conţinutul lucrării 1. Atribuirea. Decizia. Structuri repetitive. 2. Proceduri

More information

Nume şi Apelativ prenume Adresa Număr telefon Tip cont Dobânda Monetar iniţial final

Nume şi Apelativ prenume Adresa Număr telefon  Tip cont Dobânda Monetar iniţial final Enunt si descriere aplicatie. Se presupune ca o organizatie (firma, banca, etc.) trebuie sa trimita scrisori prin posta unui numar (n=500, 900,...) foarte mare de clienti pe care sa -i informeze cu diverse

More information

Curs PowerPoint Lectia 3 Lectia 3 Formatare text si imagini

Curs PowerPoint Lectia 3 Lectia 3 Formatare text si imagini Lectia 3 Formatare text si imagini 3.1 Formatarea si introducerea textului Adaugarea textului intr-un diapozitiv Textul este introdus prin actionarea tastaturii: in momentul in care se ajunge la capatul

More information

Mecanismul de decontare a cererilor de plata

Mecanismul de decontare a cererilor de plata Mecanismul de decontare a cererilor de plata Autoritatea de Management pentru Programul Operaţional Sectorial Creşterea Competitivităţii Economice (POS CCE) Ministerul Fondurilor Europene - Iunie - iulie

More information

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date.

9. Memoria. Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date. 9. Memoria Procesorul are o memorie cu o arhitectură pe două niveluri pentru memoria de program și de date. Primul nivel conține memorie de program cache (L1P) și memorie de date cache (L1D). Al doilea

More information

Olimpiad«Estonia, 2003

Olimpiad«Estonia, 2003 Problema s«pt«m nii 128 a) Dintr-o tabl«p«trat«(2n + 1) (2n + 1) se ndep«rteaz«p«tr«telul din centru. Pentru ce valori ale lui n se poate pava suprafata r«mas«cu dale L precum cele din figura de mai jos?

More information

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home

Ce pot face pe hi5? Organizare si facilitati. Pagina de Home Ce este Hi5!? hi5 este un website social care, în decursul anului 2007, a fost unul din cele 25 cele mai vizitate site-uri de pe Internet. Compania a fost fondată în 2003 iar pana in anul 2007 a ajuns

More information

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul Pagina 1 1. SISTEMUL DE OPERARE WINDOWS 1.1. Pornirea calculatorului Orice calculator are pe cutie cel puţin un buton (de pornire) şi, eventual, unul de restartare în caz de blocare a calculatorului. Pentru

More information

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiect nr. 154/323 cod SMIS 4428 cofinanțat de prin Fondul European de Dezvoltare Regională Investiții pentru viitorul

More information

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm

D în această ordine a.î. AB 4 cm, AC 10 cm, BD 15cm Preparatory Problems 1Se dau punctele coliniare A, B, C, D în această ordine aî AB 4 cm, AC cm, BD 15cm a) calculați lungimile segmentelor BC, CD, AD b) determinați distanța dintre mijloacele segmentelor

More information

UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL

UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL UTILIZAREA FOILOR DE CALCUL TABELAR - EXCEL 1. Deschiderea aplicaţiei Excel - Start Programs Microsoft Excel; - Dublu clic pe pictograma de pe ecran sub care scrie Microsoft Excel; Pe ecranul monitorului

More information

Laboratorul 2 Problemă:

Laboratorul 2 Problemă: Laboratorul 2 În cadrul acestui laborator vom construi o primă aplicaţie în mediul LabWindows CVI care va conţine toate elementele funcţionale fundamentale, constitutive, care vor fi folosite ulterior

More information

GHID DE TERMENI MEDIA

GHID DE TERMENI MEDIA GHID DE TERMENI MEDIA Definitii si explicatii 1. Target Group si Universe Target Group - grupul demografic care a fost identificat ca fiind grupul cheie de consumatori ai unui brand. Toate activitatile

More information

Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET

Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET Laboratorul 3 Lucrul cu baze de date relaționate în Visual C#.NET Ce ne propunem astăzi? În acest laborator ne propunem să implementăm în Visual C#.NET o aplicație destinată unui cabinet medical de radiologie,

More information

Documentaţie Tehnică

Documentaţie Tehnică Documentaţie Tehnică Verificare TVA API Ultima actualizare: 27 Aprilie 2018 www.verificaretva.ro 021-310.67.91 / 92 info@verificaretva.ro Cuprins 1. Cum funcţionează?... 3 2. Fluxul de date... 3 3. Metoda

More information

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic

Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Proiect nr. 154/323 cod SMIS 4428 cofinanțat de prin Fondul European de Dezvoltare Regională Investiții pentru viitorul

More information

Semnare digitală configurări și proceduri de lucru Manual de utilizare

Semnare digitală configurări și proceduri de lucru Manual de utilizare Semnare digitală configurări și proceduri de lucru Manual de utilizare Servicii informatice privind activităţi ale comunităţii portuare Acest document şi informaţiile conţinute în el sunt în proprietatea

More information

Macrocomenzi. Figura 1. Personalizarea barei de meniuri. Se va afișa fereastra din figura 2. Figura 2. Includerea tab ului Developer.

Macrocomenzi. Figura 1. Personalizarea barei de meniuri. Se va afișa fereastra din figura 2. Figura 2. Includerea tab ului Developer. Macrocomenzi Macrocomenzile (sau, prescurtat macrou rile) sunt colecții de comenzi înregistrate pentru a putea fi lansate în execuție, în bloc, ori de câte ori va fi nevoie. Avantajul lucrului cu macro

More information

R O M Â N I A CURTEA CONSTITUŢIONALĂ

R O M Â N I A CURTEA CONSTITUŢIONALĂ R O M Â N I A CURTEA CONSTITUŢIONALĂ Palatul Parlamentului Calea 13 Septembrie nr. 2, Intrarea B1, Sectorul 5, 050725 Bucureşti, România Telefon: (+40-21) 312 34 84; 335 62 09 Fax: (+40-21) 312 43 59;

More information

Procesarea Imaginilor

Procesarea Imaginilor Procesarea Imaginilor Curs 11 Extragerea informańiei 3D prin stereoviziune Principiile Stereoviziunii Pentru observarea lumii reale avem nevoie de informańie 3D Într-o imagine avem doar două dimensiuni

More information

RC-5 Elitech Înregistrator Temperatură (Data Logger) USB Instrucţiuni de operare

RC-5 Elitech Înregistrator Temperatură (Data Logger) USB Instrucţiuni de operare RC-5 Elitech Înregistrator Temperatură (Data Logger) USB Instrucţiuni de operare I. Descriere generală Acest înregistrator de date este utilizat în principal pentru înregistrarea temperaturii în timpul

More information

Ministerul Educaţiei Naţionale şi Cercetării Ştiinţifice Olimpiada de Tehnologia Informaţiei etapa judeţeană 2 aprilie 2016

Ministerul Educaţiei Naţionale şi Cercetării Ştiinţifice Olimpiada de Tehnologia Informaţiei etapa judeţeană 2 aprilie 2016 Subiect - Proba proiect 100 puncte GOOD FOOD Notă: Toate resursele le găsiţi în folder-ul Resurse aflat pe desktop. Creați un folder cu denumirea X, în care X este ID-ul de concurs și salvați în folder-ul

More information

Propuneri pentru teme de licență

Propuneri pentru teme de licență Propuneri pentru teme de licență Departament Automatizări Eaton România Instalație de pompare cu rotire în funcție de timpul de funcționare Tablou electric cu 1 pompă pilot + 3 pompe mari, cu rotirea lor

More information

Auditul financiar la IMM-uri: de la limitare la oportunitate

Auditul financiar la IMM-uri: de la limitare la oportunitate Auditul financiar la IMM-uri: de la limitare la oportunitate 3 noiembrie 2017 Clemente Kiss KPMG in Romania Agenda Ce este un audit la un IMM? Comparatie: audit/revizuire/compilare Diferente: audit/revizuire/compilare

More information

APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC

APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC APLICAŢIE INFORMATICĂ PENTRU PREGĂTIREA MISIUNILOR DE NIVEL TACTIC Asist.univ.drd. Romana OANCEA Conf.univ.dr.ing. Ghiţă BÂRSAN Academia Forţelor Terestre Nicolae Bălcescu Sibiu Abstract The paper describes

More information

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M )

INFORMAȚII DESPRE PRODUS. FLEXIMARK Stainless steel FCC. Informații Included in FLEXIMARK sample bag (article no. M ) FLEXIMARK FCC din oțel inoxidabil este un sistem de marcare personalizată în relief pentru cabluri și componente, pentru medii dure, fiind rezistent la acizi și la coroziune. Informații Included in FLEXIMARK

More information

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB

Grafuri bipartite. Lecție de probă, informatică clasa a XI-a. Mihai Bărbulescu Facultatea de Automatică și Calculatoare, UPB Grafuri bipartite Lecție de probă, informatică clasa a XI-a Mihai Bărbulescu b12mihai@gmail.com Facultatea de Automatică și Calculatoare, UPB Colegiul Național de Informatică Tudor Vianu București 27 februarie

More information

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC)

Semnale şi sisteme. Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC) Semnale şi sisteme Facultatea de Electronică şi Telecomunicaţii Departamentul de Comunicaţii (TC) http://shannon.etc.upt.ro/teaching/ssist/ 1 OBIECTIVELE CURSULUI Disciplina îşi propune să familiarizeze

More information

CERERI SELECT PE O TABELA

CERERI SELECT PE O TABELA SQL - 1 CERERI SELECT PE O TABELA 1 STUD MATR NUME AN GRUPA DATAN LOC TUTOR PUNCTAJ CODS ---- ------- -- ------ --------- ---------- ----- ------- ---- 1456 GEORGE 4 1141A 12-MAR-82 BUCURESTI 2890 11 1325

More information

GHID RAPID PENTRU. Instalarea Nokia Connectivity Cable Drivers

GHID RAPID PENTRU. Instalarea Nokia Connectivity Cable Drivers GHID RAPID PENTRU Instalarea Nokia Connectivity Cable Drivers Cuprins 1. Introducere...1 2. Elemente obligatorii...1 3. Instalarea Nokia Connectivity Cable Drivers...2 3.1 Înainte de instalare...2 3.2

More information

FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/ Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5

FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/ Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5 FORȚA Femei Ocupate, Resursă pentru o Țară Activă POSDRU/144/6.3/S/128914 Suport de curs OPERATOR INTRODUCERE, VALIDARE SI PRELUCRARE DATE MODULUL 5 CALCUL TABELAR FUNDATIA PENTRU FORMARE PROFESIONALA

More information

6. Bucle. 6.1 Instrucţiunea while

6. Bucle. 6.1 Instrucţiunea while 6. Bucle În capitolul trecut am văzut cum putem selecta diferite instrucţiuni pentru execuţie folosind instrucţiunea if. O buclă este o structură de control care provoacă executarea unei instrucţiuni sau

More information

ISBN-13:

ISBN-13: Regresii liniare 2.Liniarizarea expresiilor neliniare (Steven C. Chapra, Applied Numerical Methods with MATLAB for Engineers and Scientists, 3rd ed, ISBN-13:978-0-07-340110-2 ) Există cazuri în care aproximarea

More information

MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE.

MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE. MODULUL 4.1 BAZELE UTILIZĂRII APLICAŢIILOR DE CALCUL TABELAR; APLICAŢIA CALC DIN OPENOFFICE. 1 CUPRINS 4. CALCUL TABELAR CU OPENOFFICE.ORG CALC.----------------------------------------------- 3 4.1. Operaţii

More information

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A.

Excel Advanced. Curriculum. Școala Informală de IT. Educație Informală S.A. Excel Advanced Curriculum Școala Informală de IT Tel: +4.0744.679.530 Web: www.scoalainformala.ro / www.informalschool.com E-mail: info@scoalainformala.ro Cuprins 1. Funcții Excel pentru avansați 2. Alte

More information

Constructii sintetizabile in verilog

Constructii sintetizabile in verilog Constructii sintetizabile in verilog Introducere Programele verilog se împart în două categorii: cod pentru simulare și cod sintetizabil. Codul scris pentru simulare (testul) nu este sintetizabil. Codul

More information

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip

Mods euro truck simulator 2 harta romaniei by elyxir. Mods euro truck simulator 2 harta romaniei by elyxir.zip Mods euro truck simulator 2 harta romaniei by elyxir Mods euro truck simulator 2 harta romaniei by elyxir.zip 26/07/2015 Download mods euro truck simulator 2 harta Harta Romaniei pentru Euro Truck Simulator

More information

Managementul referinţelor cu

Managementul referinţelor cu TUTORIALE DE CULTURA INFORMAŢIEI Citarea surselor de informare cu instrumente software Managementul referinţelor cu Bibliotecar Lenuţa Ursachi PE SCURT Este gratuit Poţi adăuga fişiere PDF Poţi organiza,

More information

Noţiuni introductive privind pachetul software OrCAD

Noţiuni introductive privind pachetul software OrCAD TEHNICI CAD PENTRU MODULE ELECTRONICE LUCRAREA DE LABORATOR nr. 2 Noţiuni introductive privind pachetul software OrCAD I. Scopul lucrării: Scopul lucrării de laborator nr. 1 este de a realiza o introducere

More information

Tema 1 - Transferuri de date DMA intr-o arhitectura de tip Cell

Tema 1 - Transferuri de date DMA intr-o arhitectura de tip Cell Tema 1 - Transferuri de date DMA intr-o arhitectura de tip Cell Termen de trimitere a temei: Luni, 31 martie 2008, ora 23:55 1. Specificatii functionale O arhitectura de tip Cell consta din urmatoarele

More information

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii

Aspecte controversate în Procedura Insolvenţei şi posibile soluţii www.pwc.com/ro Aspecte controversate în Procedura Insolvenţei şi posibile soluţii 1 Perioada de observaţie - Vânzarea de stocuri aduse în garanţie, în cursul normal al activității - Tratamentul leasingului

More information

Aplicaţia nr. 1. Proiectarea unei aplicaţii în LabWindows/CVI

Aplicaţia nr. 1. Proiectarea unei aplicaţii în LabWindows/CVI 1. 1. Introducere Aplicaţia nr. 1. Proiectarea unei aplicaţii în LabWindows/CVI Proiectarea unei aplicaţii în mediul LabWindows/CVI constă în crearea unei interfeţe grafice a aplicaţiei, urmată apoi de

More information

Ghid de utilizare a Calculatorului valorii U

Ghid de utilizare a Calculatorului valorii U Ghid de utilizare a Calculatorului valorii U la Apelul de Propuneri de Proiecte Nr.3 pentru Instituțiile din Sectorul Public pentru investiții în Eficiență Energetică și Surse de Energie Regenerabilă Versiunea

More information

TEHNOLOGII INFORMAŢIONALE PENTRU AFACERI

TEHNOLOGII INFORMAŢIONALE PENTRU AFACERI TEHNOLOGII INFORMAŢIONALE PENTRU AFACERI Laboratorul 5 Procesorul de texte Microsoft Word 2007, partea I După cum am fost deja obişnuiţi, Microsoft oferă o serie de îmbunătăţiri noilor versiuni ale aplicaţiilor

More information

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive.

Dispozitive Electronice şi Electronică Analogică Suport curs 02 Metode de analiză a circuitelor electrice. Divizoare rezistive. . egimul de curent continuu de funcţionare al sistemelor electronice În acest regim de funcţionare, valorile mărimilor electrice ale sistemului electronic sunt constante în timp. Aşadar, funcţionarea sistemului

More information

HTML Reference Prof. Marius Măciucă

HTML Reference Prof. Marius Măciucă Prof Marius Măciucă Lecţia 1 Ce este HTML? HTML REFERENCE HTML Hypertext Markup Language (limbaj de marcare hypertext) stă la baza realizării paginilor WEB În prezent există o largă paletă de utilitare

More information

Modulul 3 Procesare de text

Modulul 3 Procesare de text Modulul 3 Procesare de text Acest capitol asigură cunoştinţele necesare în lucrul cu o aplicaţie de editare text. Modulul asigură informaţiile necesare în conformitate cu programa analitica pentru Modului

More information

MODULUL 5.1. BAZELE UTILIZĂRII APLICAŢIILOR PENTRU PREZENTĂRI ELECTRONICE; APLICAŢIA IMPRESS DIN OPENOFFICE

MODULUL 5.1. BAZELE UTILIZĂRII APLICAŢIILOR PENTRU PREZENTĂRI ELECTRONICE; APLICAŢIA IMPRESS DIN OPENOFFICE MODULUL 5.1. BAZELE UTILIZĂRII APLICAŢIILOR PENTRU PREZENTĂRI ELECTRONICE; APLICAŢIA IMPRESS DIN OPENOFFICE 1 CUPRINS 5. BAZELE UTILIZĂRII APLICAŢIILOR PENTRU PREZENTĂRI ELECTRONICE; APLICAŢIA IMPRESS

More information

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu

Proiectarea bazelor de date # 11. PL/SQL Funcții în PL/SQL (partea a II-a) Adrian Runceanu Proiectarea bazelor de date # 11 PL/SQL Funcții în PL/SQL (partea a II-a) 2018 Adrian Runceanu www.runceanu.ro/adrian Curs 11 Funcţii în PL/SQL (partea II) Proiectarea bazelor de date 2 Cuprins Funcţii

More information

LP 02 OPENOFFICE. 1. Prezentare generală

LP 02 OPENOFFICE. 1. Prezentare generală LP 02 OPENOFFICE 1. Prezentare generală OpenOffice reprezintă o suită de aplicaţii de birou disponibile liber şi gratuit, care pot fi utilizate de oricine în limita respectării termenilor de licenţă. Din

More information

SISTEME DE OPERARE WINDOWS

SISTEME DE OPERARE WINDOWS CAPITOLUL 4 SISTEME DE OPERARE WINDOWS 4.1. De la MS-DOS la Windows 4.2. Interfata grafica WINDOWS 4.3. Sesiunea de lucru Windows 4.4. Sistemul de operare Windows XP 4.5. Sistemul de operare Windows 7

More information

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe

Candlesticks. 14 Martie Lector : Alexandru Preda, CFTe Candlesticks 14 Martie 2013 Lector : Alexandru Preda, CFTe Istorie Munehisa Homma - (1724-1803) Ojima Rice Market in Osaka 1710 devine si piata futures Parintele candlesticks Samurai In 1755 a scris The

More information

SGBD Access 2010: Query

SGBD Access 2010: Query SGBD Access 2010: Query Interogarea (Query) este un obiect ce permite vizualizarea informaţiilor obţinute prin selectarea şi prelucrarea datelor din unul sau mai multe tabele (sau interogări) Rezultatul

More information

HTML. De exemplu, considerând pagina web cu structura prezentată în figura 1, Fig. 1

HTML. De exemplu, considerând pagina web  cu structura prezentată în figura 1, Fig. 1 HTML 1. Generalităţi HTML este prescurtarea de la HyperText Markup Language şi reprezintă principalul limbaj de editare a conţinutului paginilor web. Pentru a înţelege mai bine ce face un browser în momentul

More information

SISTEME DE CALCUL. LIMBAJ DE ASAMBLARE. SIMULATORUL QTSPIM UAL DPE. Fig.1. Structura unui sistem de calcul

SISTEME DE CALCUL. LIMBAJ DE ASAMBLARE. SIMULATORUL QTSPIM UAL DPE. Fig.1. Structura unui sistem de calcul SISTEME DE CALCUL. LIMBAJ DE ASAMBLARE. SIMULATORUL QTSPIM I. Sisteme de calcul 1. Arhitectura generală a unui sistem de calcul DPI UCC MEM Canale I/E DPI/E, MEM externe UAL DPE UCP UC Fig.1. Structura

More information

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET

CAIETUL DE SARCINI Organizare evenimente. VS/2014/0442 Euro network supporting innovation for green jobs GREENET CAIETUL DE SARCINI Organizare evenimente VS/2014/0442 Euro network supporting innovation for green jobs GREENET Str. Dem. I. Dobrescu, nr. 2-4, Sector 1, CAIET DE SARCINI Obiectul licitaţiei: Kick off,

More information

Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii

Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii Mulțumim anticipat tuturor acelora care vor transmite critici/observații/sugestii ilincamircea@yahoo.com TEMA III.1 v1 : ORGANIZAREA DATELOR UNUI PROGRAM C/C++ ÎN MO postat 02.11.2016 (sinteză) Coținutul

More information

Proiectarea Sistemelor Software Complexe

Proiectarea Sistemelor Software Complexe Proiectarea Sistemelor Software Complexe Curs 3 Principii de Proiectare Orientată pe Obiecte Principiile de proiectare orientată pe obiecte au fost formulate pentru a servi ca reguli pentru evitarea proiectării

More information

Curs 4 Word curs 4 Word

Curs 4 Word curs 4 Word Curs 4 Word 2007 Cuprins Cum sa realizati o bibliografie in Word?...2 Inserarea citarilor...2 Realizarea bibliografiei...2 Modificarea stilului unei referinte...3 Administrarea referintelor in baza de

More information

Programare în limbaj de asamblare 16. Formatul instrucţiunilor (codificare, moduri de adresare).

Programare în limbaj de asamblare 16. Formatul instrucţiunilor (codificare, moduri de adresare). Platformă de e-learning și curriculă e-content pentru învățământul superior tehnic Programare în limbaj de asamblare 16. Formatul instrucţiunilor (codificare, moduri de adresare). Formatul instrucţiunilor

More information

Editorul Power Point

Editorul Power Point Geoinformatică_Laborator 03 Editorul Power Point Power Point este un editor grafic performant care te va ajuta să-ţi creezi prezentări de proiecte. Elementul de bază a aplicaţiei Power Point este slide-ul

More information

Aplicație de generare a UFI. Ghidul utilizatorului

Aplicație de generare a UFI. Ghidul utilizatorului Aplicație de generare a UFI Ghidul utilizatorului Versiunea 1.1 6.10.2016 Cuprins 1 Introducere... 3 2 Generarea UFI-urilor... 4 2.1 Lansarea aplicației și selectarea limbii... 4 2.2 Generarea unui singur

More information

Subiectele pentru proba practică din cadrul examenului de Paradigme de Programare Sesiunea iunie 2015

Subiectele pentru proba practică din cadrul examenului de Paradigme de Programare Sesiunea iunie 2015 Subiectele pentru proba practică din cadrul examenului de Paradigme de Programare Sesiunea iunie 2015 Considerații generale cu privire la proba practică: La examen studentul va avea acces la cursurile

More information

INTEROGĂRI ÎN SQL SERVER

INTEROGĂRI ÎN SQL SERVER INTEROGĂRI ÎN SQL SERVER Principala operaţie efectuată într-o bază de date este operaţia de extragere a datelor, care se realizează cu ajutorul unei clauze SELECT. SELECT Clauza SELECT are o sintaxă foarte

More information

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul

După efectuarea operaţiilor dorite, calculatorul trebuie închis. Pentru oprirea corectă a sistemului de operare va trebui să folosim butonul Windows Vista Business Pagina 1 1. PRIMII PAŞI ÎN LUCRUL CU CALCULATORUL 1.1. Pornirea calculatorului Orice calculator are pe cutie cel puţin un buton (de pornire) şi, eventual, unul de restartare în caz

More information

Modificarea interliniei în Word. Setarea interliniei (line spacing)

Modificarea interliniei în Word. Setarea interliniei (line spacing) Modificarea interliniei în Word Cea mai rapidă modalitate de a schimba cantitatea de spațiu dintre liniile de text sau între paragrafe pentru un document întreg este să utilizați opțiunea de Paragraph

More information

Sistem Home Theatre. Ghid de pornire HT-XT1

Sistem Home Theatre. Ghid de pornire HT-XT1 Sistem Home Theatre Ghid de pornire HT-XT1 Cuprins Configurare 1 Conţinutul cutiei 3 2 Instalare 4 3 Conectare 6 4 Pornirea sistemului 8 5 Ascultarea sunetului 9 Operaţii de bază Ascultarea efectelor de

More information

Ghid de utilizare Modul CI+

Ghid de utilizare Modul CI+ Ghid de utilizare Modul CI+ www.orange.md Introducere Vă mulțumim că aţi ales modulul CI+. Acesta funcționează împreună cu televizorul Dvs. și vă ajută să vedeți conținutul oferit în cadrul pachetului

More information

INTERPRETOARE DE COMENZI

INTERPRETOARE DE COMENZI Rularea lui determin afişarea mesajului hello world la consola 3.2. Facilităţi ale interpretoarelor de comenzi 3.1. Introducere Capitolul 3 INTERPRETOARE DE COMENZI Interpretorul de comenzi este un program

More information

Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte

Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte 1. Introducere ~ Microsoft Access ~ Baze de Date Baza de date: tabele, date. Componentele unei B.D.: tabele, constrangeri, relatii. Entitati ale unei B.D.: formulare, interogari, rapoarte 2. Crearea unei

More information