• Nu S-Au Găsit Rezultate

Definire termeni

N/A
N/A
Protected

Academic year: 2022

Share "Definire termeni"

Copied!
56
0
0
Arată mai multe ( pagini)

Text complet

(1)

CURS 7

Meniurile unei aplicatii

(2)

Definire termeni

top-level menu = bara de meniu ce apare in partea superioara a ferestrei;

drop down menu;

articole din meniu identificate printr-un ID;

selectia unui articol din meniu = executie comanda;

meniuri popup = meniuri contextuale (WM_CONTEXTMENU)

(3)

Meniu sistem

redimensionare;

mutare;

minimizare;

maximizare;

inchidere fereastra;

restaurare;

(4)

MFC - CMenu - Creare

HMENU = tip de data ce gestioneaza un meniu in Windows; m_hMenu definit in clasa;

Cream un obiect CMenu pe stiva;

Apelam functii membru pentru a lucra cu meniul;

Apelam CWnd::SetMenu() pentru a seta meniul la fereastra;

Apelam functia membru Detach().

(5)

Exemplu

CMenu m_Menu;

m_Menu.LoadMenu(IDR_MENU);

SetMenu(&m_Menu);

m_Menu.Detach();

IDR_MENU ID-ul resursei ce descrie meniul;

(6)

Exemplu de resursa meniu

IDR_MENU MENU PRELOAD DISCARDABLE

BEGIN

POPUP “&File”

BEGIN

MENUITEM “&New\tCtrl+N”, ID_FILE_NEW ...

MENUITEM SEPARATOR END

POPUP “&View”

BEGIN ...

END END

(7)

Functii membru CMenu

BOOL Attach( HMENU hMenu );

Valoarea returnata != 0 pentru succes; altfel 0.

Parametrii: hMenu Specifica un handle la un meniu Windows.

Observatii: Ataseaza un meniu Windows existent la un obiect CMenu. Daca meniul este atasat functia nu trebuie apelata. Handle-rul meniului este memorat in data membru m_hMenu.

Daca meniul este deja asociat cu o fereastra, putem folosi functia CWnd::GetMenu pentru a obtine handle la meniu.

Examplu: (pWnd pointer la fereastra, vezi AfxGetMainWnd()) CMenu meniu;

HMENU hMeniu = pWnd->GetMenu( );

meniu.Attach( hMeniu );

(8)

Functii membru CMenu

HMENU Detach( );

Valoarea returnata: handle, de tip HMENU, la un meniu Windows sau NULL daca operatia esueaza.

Observatie: Detaseaza un meniu Windows dintr-un obiect CMenu si returneaza handle-rul. Data

membru m_hMenu este setata pe NULL.

(9)

CMenu::FromHandle

static CMenu* PASCAL FromHandle( HMENU hMenu );

Valoarea returnata: un pointer la un CMenu; poate fi permanent sau temporar.

Parametrii: hMenu handle la un meniu.

Observatii:

Daca un obiect CMenu nu este deja atasat la obiectul menu

Windows, se creaza un obiect temporar CMenu si se ataseaza. In general obiectele temporare nu pot fi memorate pentru a fi utilizate in viitor in aplicatie. Obiectele temporare sunt sterse cand nu exista mesaje in coada de mesaje a aplicatiei si atunci se executa functia OnIdle().

(10)

CMenu::GetSafeHmenu

HMENU GetSafeHmenu( ) const;

Returneaza HMENU continut in obiectul CMenu, sau valoarea NULL.

(11)

CMenu::CreateMenu

BOOL CreateMenu( );

Valoarea returnata != 0 in caz de succes; 0 in caz contrar.

Observatii: Se creaza un meniu si se ataseaza la obiectul CMenu.

Initial acest meniu este vid. Articolele de meniu pot fi adaugate folosind functiile membru AppendMenu sau InsertMenu.

Daca meniul este atribuit la o fereastra, este automat distrus cand fereastra este distrusa.

Inainte de terminare, o aplicatie trebuie sa elibereze resursele sistem asociate cu un meniu daca meniul nu este atribuit la o fereastra.

Eliberarea resurselor de meniu se face prin apelul functiei membru DestroyMenu. DestroyMenu este apelata de destructorul obiectului

(12)

CMenu::CreatePopupMenu

BOOL CreatePopupMenu( );

Valoarea returnata != 0 in caz de succes; 0 in caz contrar.

Observatii: Creaza un meniu pop-up si il ataseaza la un obiect CMenu.

Initial meniul este vid. Articole de meniu pot fi adaugate folosind functiile membru AppendMenu sau InsertMenu.

Aplicatia poate adauga meniul pop-up la un meniu existent sau un meniu pop-up.

Functia TrackPopupMenu poate fi folosita pentru a afisa un meniu contextual.

Aceleasi observatii privitoare la distrugerea meniului ca si la CreateMenu.

(13)

CMenu::LoadMenu

BOOL LoadMenu( LPCTSTR lpszResourceName );

BOOL LoadMenu( UINT nIDResource );

Valoarea returnata != 0 in caz de succes; 0 altfel.

Parametrii:

lpszResourceName Puncteaza la un sir de caractere terminat cu null, sir ce contine numele resursei de meniu ce trebuie incarcata.

nIDResource ID-ul meniului ce trebuie incarcat.

Observatii: Incarca o resursa de meniu din fisierul executabil al aplicatiei si o ataseaza la obiectul CMenu.

Aceleasi observatii privitoare la distrugerea meniului ca si la CreateMenu.

(14)

CMenu::LoadMenuIndirect

BOOL LoadMenuIndirect( const void*

lpMenuTemplate );

Parametrii: lpMenuTemplate puncteaza la un sablon de meniu ce contine o singura structura MENUITEMTEMPLATEHEADER si o

colectie de una sau mai multe structuri MENUITEMTEMPLATE.

(15)

CMenu::DeleteMenu

BOOL DeleteMenu( UINT nPosition, UINT nFlags );

Valoarea returnata != 0 in caz de succes; 0 altfel.

Parametrii: nPosition Specifica articolul de meniu ce va fi sters, functie de valorile lui nFlags.

nFlags Determina pozitia articolului de meniu.

MF_BYCOMMAND = nPosition specifica ID-ul articolului de meniu.

MF_BYPOSITION = nPosition furnizeaza pozitia articolului de meniu. Prima pozitie este la index zero.

Observatii: Ori de cate ori un meniu al unei ferestre este schimbat, aplicatia trebuie sa apeleze functia CWnd::DrawMenuBar.

(16)

CMenu::AppendMenu

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

BOOL AppendMenu( UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );

(17)

AppendMenu - parametri

nFlags = starea noului articol de meniu, cand este adaugat la meniu (MF_OWNERDRAW, MF_STRING,

MF_SEPARATOR).

nIDNewItem specifica fie ID-ul comenzii noului articol de meniu sau handle la un meniu pop-up (HMENU) daca

nFlags are valoarea MF_POPUP. Daca nFlags =

MF_SEPARATOR, atunci nIDNewItem este ignorat.

lpszNewItem = specifica continutul noului articol de

meniu. lpszNewItem se interpreteaza functie de valorile lui nFlags.

(18)

nFlags si lpszNewItem

MF_OWNERDRAW – vezi mesajele

WM_MEASUREITEM si WM_DRAWITEM. Valoarea asociata meniului se gaseste in itemData din structura ce insoteste mesajul WM_DRAWITEM. In acest caz

lpszNewItem contine o valoare pe 32 biti gestionata de aplicatie.

MF_STRING lpszNewItem contine textul comenzii.

MF_SEPARATOR lpszNewItem este ignorat.

pBmp Puncteaza la un obiect CBitmap ce va fi utilizat ca articol de meniu.

(19)

nFlags- starea articolelor de meniu

MF_CHECKED, MF_UNCHECKED MF_ENBLE, MF_DISABLE

MF_GRAYED

(20)

nFlags- starea articolelor de meniu

MF_MENUBARBREAK Plaseaza articolul pe o noua linie intr-un meniu static sau o noua coloana intr-un meniu pop-up. Coloana din noul meniu pop- up va fi separata de vechea coloana de o linie verticala.

MF_MENUBREAK Plaseaza articolul pe o noua linie in meniurile statice sau in o noua coloana in meniurile pop-up. Nu exista linie de divizare intre coloane.

MF_OWNERDRAW Articol desenat de proprietar. Optiunea nu este valida pentru articole de meniu top-level.

MF_POPUP Specifica faptul ca articolul de meniu are un meniu pop-up asociat cu el. Parametrul ID specifica un handle la un meniu pop-up ce va fi asociat cu articolul. Aceasta este folosita pentru adaugarea fie a meniurilor pop up top-level sau a unui meniu pop-up ierarhic la un articol de meniu pop-up.

(21)

Alte functii

CheckMenuItem Plaseaza sau sterge un check mark pe un articol de meniu intr-un meniu pop up.

CheckMenuRadioItem EnableMenuItem

GetMenuItemCount

(22)

CMenu::GetSubMenu

CMenu* GetSubMenu( int nPos ) const;

Valoarea returnata: un pointer la un obiect CMenu a carui data membru m_hMenu contine un handle la un meniul pop-up, daca un meniu pop-up exista la pozitia data; altfel NULL. Daca un obiect Cmenu nu exista, se creaya unul temporar. Pointerul returnat

nu poate fi memorat pentru utiliyari viitoare.

Parametrii: nPos – specifica pozitia meniului pop- up continuta in meniu. Indexul incepe cu zero.

(23)

CMenu::InsertMenu

BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem = NULL );

BOOL InsertMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );

Insereaza un nou articol de meniu la pozitia specificata de nPosition. Vezi MSDN pentru informatii suplimentare.

Asemanator cu AppendMenu.

(24)

CMenu::ModifyMenu

BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem = 0, LPCTSTR lpszNewItem =

NULL );

BOOL ModifyMenu( UINT nPosition, UINT nFlags, UINT nIDNewItem, const CBitmap* pBmp );

Schimba un articol de meniu existent la pozitia specificata de nPosition. Aplicatia specifica noua stare a articolului

de meniu setand valori pentru nFlags.

(25)

Meniuri multiple

Create(NULL, _T(“aplicatie”));

m_menuLong.LoadMenu(IDR_LONGMENU);

m_menuShort.LoadMenu(IDR_SHORTMENU);

SetMenu(m_bShortMenu ? &m_menuShort,

&m_menuLong);

(26)

Comutarea intre meniuri

Ca raspuns la o comanda a utilizatorului:

m_bShortMenu = TRUE;

SetMenu(&m_menuShort);

DrawMenuBar();

(27)

Raspunsuri la comenzi din meniu

Cind utilizatorul selecteaza un art. de meniu

(bara de meniuri) fereastra primeste o serie de mesaje:

WM_INITMENU ce notifica ferestrei ca un articol al meniului superior (top-level menu item) a fost selectat.

(28)

Raspunsuri ...

WM_INITMENUPOPUP, locul unde ar putea fi actualizate (enable, disable, checked, etc.) articolele meniului, meniul inca nu este afisat.

Cind parcurgem articolele unui meniu drop down (popup), fereastra primeste mesajul

WM_MENUSELECT, mesaj ce poate fi tratat, in special in SDK, prin afisarea unui text in

bara de stare (scurt help).

(29)

Raspunsuri ...

WM_COMMAND trimis cind utilizatorul selecteaza un articol de meniu.

LOWORD(wParam) pastreaza ID-ul comenzii (art. din meniul popup) si in SDK se face

practic switch pe LOWORD(wParam) pentru a identifica care comanda a fost selectata.

(30)

Raspunsuri ...

In MFC se adauga in harta de mesaje a clasei respective macroul ON_COMMAND care trateaza mesajul WM_COMMAND.

ON_COMMAND are doi parametri, primul indica ID_ul comenzii, iar al doilea indica

handlerul comenzii (functia ce va fi apelata la selectia acestei comenzi).

(31)

Raspunsuri ...

Exemplu:

ON_COMMAND(ID_FILE_SAVE, OnFileSave);

Functiile ce trateaza comenzile de meniu nu nu au au parametriparametri si au tipul void.void

(32)

Intervale pentru comenzi

Sunt folosite pentru a trata un grup de articole de meniu cu o singura functie.

Pp. ca avem definit un meniu cu urmatoarele articole:Rosu, Verde, Albastru;

Pp. ca pastram culoarea intr-o variabila din clasa definita astfel:

int m_nCuloare; // 0 = R, 1 = V, 2 = A

(33)

Harta de mesaje

ON_COMMAND(IDM_ROSU, OnRosu);

ON_COMMAND(IDM_VERDE, OnVerde);

ON_COMMAND(IDM_ALBASTRU, OnAlbastru);

Observati ID-urile comenzilor din meniu.

(34)

Functiile ...

void CXView::OnRosu() { m_nCuloare = 0;}

void CXView::OnVerde() { m_nCuloare = 1;}

void CXView::OnAlbastru() { m_nCuloare = 2;}

(35)

Neajunsuri

Daca adaugam o noua culoare va trebui sa facem urmatoarele modificari in cod:

(.h) prototip functie pentru noua culoare;

(.cpp) modificare harta de mesaje si scriere cod pentru noua functie.

In total trei modificari.

(36)

Prima imbunatatire - o singura functie

Grupam aceste comenzi (ID-uri secventiale);

Obtinem ID-ul comenzii selectate si scadem din acesta ID-ul primei comenzi din meniu (IDM_ROSU).

(37)

Harta de mesaje pentru o singura functie

ON_COMMAND(IDM_ROSU, OnCuloare);

ON_COMMAND(IDM_VERDE, OnCuloare);

ON_COMMAND(IDM_ALBASTRU, OnCuloare);

(38)

Codul functiei OnCuloare

void CXView::OnCuloare() UNIT nID = (UINT)

LOWORD(GetCurrentMessage()->wParam);

m_nCuloare = nID – IDM_ROSU;

(39)

O singura functie, o singura intrare in harta de mesaje

In harta de mesaje:

ON_COMMAND_RANGE(IDM_ROSU, IDM_ALBASTRU, OnCuloare);

Retineti ca avem ID-uri secventiale de comenzi, iar variabila m_nCuloare se

calculeaza ca diferenta intre ID comanda si primul ID al comenzilor grupate

(IDM_ROSU).

(40)

Actualizarea articolelor intr-un meniu

Metoda 1: actualizare in momentul cind articolul este selectat

void CXView::OnCuloare()

{ CMenu* pMenu = GetMenu();

pMenu->CheckMenuItem(m_nCuloare + IDM_ROSU, MF_UNCHECKED);

pMenu->CheckMenuItem(nID, MF_CHECKED);

m_nCuloare = nID – IDM_ROSU;}

(41)

Actualizarea articolelor ...

Metoda 2: mutam codul care actualizeaza meniul in

tratarea mesajului WM_INITMENUPOPUP iar functia este OnInitMenuPopup. Aici actualizarea se face

inainte ca meniul sa fie afisat. Aceasta functie are trei parametri: un pointer de tip CMenu ce pointeaza la submeniul care va fi afisat, un UINT – valoare ce da indexul art din submeniu si o var. BOOL care este # 0 daca mesajul este al meniului sistem si 0 altfel.

(42)

Actualizarea articolelor ...

In harta de mesaje avem:

ON_WM_INITMENUPOPUP()

iar functia: (COLOR_MENU_INDEX este o

variabila ce specifica pozitia meniului Color in bara de meniu a aplicatiei) este:

(43)

Actualizarea articolelor ...

void CMainFrame::OnInitMenuPopup(CMenu* pPopupMenu, UINT nIndex, BOOL bSysMenu)

{if (!bSysmenu && (nIndex == COLOR_MENU_INDEX))

pPopMenu->CheckMenuItem(IDM_ROSU, MF_UNCHECKED);

pPopMenu->CheckMenuItem(IDM_VERDE, MF_UNCHECKED);

pPopMenu->CheckMenuItem(IDM_ALBASTRU, MF_UNCHECKED);

pPopMenu->CheckMenuItem(m_nCuloare + IDM_ROSU, MF_CHECKED);

(44)

Actualizarea articolelor ...

Un alt mecanism este tot la mesajul WM_INITMENUPOPUP si consta in a completa harta de mesaje cu handleri pentru

comenzi, handleri ce vor fi apelati inainte ca meniul sa fie

vizibil si inaintea fiecarei selectii din meniu. Fiecarui handler de actualizare ii este pasat un pointer la un obiect CCmdUI ale carui functii membru pot fi folosite pentru a modifica

articolul de meniu. Acesti handleri pot fi utilizati si pentru

actualizarea butoanelor din toolbar si alte obiecte ale interfetei UI.

(45)

Actualizarea articolelor ...

ON_COMMAND_UPDATE_UI(IDM_ROSU, OnUpdateRosu)

ON_COMMAND_UPDATE_UI(IDM_VERDE, OnUpdateVerde)

ON_COMMAND_UPDATE_UI(IDM_ALBASTRU, OnUpdateAlbastru)

void CMainFrame::OnUpdateRosu(CCmdUI* pCmdUI) { pCmdUI->SetCheck(m_nCuloare);}, etc.

(46)

Alte metode din CCmdUI

Metode din CCmdUI: Enable, SetCheck, SetRadio (nu are echivalent in SDK), SetText.

(47)

Creare meniu in momentul executiei

Crearea meniului programatic (at run time) CMenu menuMain;

menuMain.CreateMenu();

Cmenu menuPopup;

menuPopup.CreatePopupMenu();

menuPopup.AppendMenu(MF_STRING, IDM_ROSU, “&Rosu”);

menuMain.AppendMenu(MF_POPUP, (UINT) menuPopup.Detach(), “&Culori”);

menuPopup.CreatePopupMenu();

menuPopup.AppendMenu(MF_STRING, IDM_EXIT, “&Exit”);

menuMain.AppendMenu(MF_POPUP, (UINT)menuPopup.Detach(), “&Sesiune”);

SetMenu(&menuMain);

menuMain.Detach();

(48)

Modificarea programatica

Functiile necesare pentru modificare sunt:

AppendMenu, InsertMenu, ModifyMenu, DeleteMenu, RemoveMenu

Inainte de a modifica un meniu, trebuie sa obtinem un pointer la acel meniu cu functia CWnd::GetMenu. In top-level menu,

articolele sunt referite prin indici ce incep cu 0 (zero) – cel mai din stinga.

(49)

Operatii

CMenu* pMenu = GetMenu();

pMenu-DeleteMenu(1, MF_BYPOSITION); sau

pMenu->DeleteMenu(IDM_CULORI, MF_BYCOMMAND);

sau item-uri din meniuri

CMenu* pMenu = GetMenu()-GetSubMenu(1);

pMenu->DeleteMenu(IDM_VERDE, MF_BYCOMMAND);

(50)

sau echivalent

CMenu* pMenu = GetMenu();

pMenu->DeleteMenu(IDM_VERDE, MF_BYCOMMAND);

(51)

Meniul sistem

CMenu* pSysMenu = GetSystemMenu(FALSE);

FALSE = inseamna ca dorim un pointer la o copie a

meniului sistem pe care vrem sa-l modificam. TRUE = reseteaza meniul sistem la starea sa implicita.

pSysMenu->AppendMenu(MF_SEPARATOR);

pSysmenu->AppendMenu(MF_STRING, IDM_COMANDA_NOUA, _T(“&Comanda adaugata”));

(52)

Meniul sistem

in harta de mesaje avem:

ON_WM_SYSCOMMAND()

(.cpp) void CMainFrame::OnSysCommand(UINT nID, LPARAM lPram)

{ if ((nID & 0xFFF0 ) == IDM_COMANDA_NOUA) { // ceva }

CFrameWnd::OnSysCommand(nID, lParam);}

(53)

Meniuri contextuale

CMenu::TrackPopupMenu afiseaza un asemenea meniu.

BOOL TrackPopupMenu(UINT nFlags, int x, int y, CWnd* pWnd, LPRECT lpRect = NULL)

x, y = locatia pe ecran (coordonate ecran) unde va apare meniul;

nFlags = informatii despre alianiamentul relativ la x

(TPM_LEFTALIGN, TPM_CENTERALIGN, TPM_RIGHTALIGN) si care buton este utilizat in continuare pt a face o selectie

(TPM_LEFTBUTTON, TPM_RIGHTBUTTON).

pWnd = identifica fereastra care va primi mesajul dupa selectia unei comenzi din meniu;

lpRect = dimensiunea unui dreptunghi (coord. ecran) in care utilizatorul poate face clic fara a anula meniul afisat.

(54)

Meniu contextual

CMenu menu;

menu.LoadMenu(IDR_CONTEXTMENU);

CMenu* pContextMenu = menu.GetSubMenu(0);

pContextMenu->TrackPopupMenu

(TPM_LEFTALIGN | TPM_LEFTBUTTON, point.x, point.y, AfxGetMainWnd());

(55)

WM_CONTEXTMENU

in harta de mesaje avem macroul:

ON_WM_CONTEXTMENU si functia

afx_msg OnContextMenu(CWnd* pWnd, CPoint point);

pWnd = identifica fereastra in care s-a facut clic si point coordonatele punctului unde s-a facut clic.

(56)

WM_CONTEXTMENU

Procesarea comenzilor. Flagul TPM_RETURNCMD = folosit la obtinerea unui raspuns la apelul unui meniu contextual.

int nCmd = (int) pContextMenu->TrackPopupMenu(TPM_RETURNCMD...

switch(nCmd) {

case IDM_CONTEXT_1:

break;

...

}

Un meniu afisat in acest mod va genera mesaje WM_COMMAND cind un articol este selectat.

Referințe

DOCUMENTE SIMILARE

În definitiv, eroul lui Bonciu devine – în acest context – un personaj, iar ipoteza lui Karl Kraus, aceea potrivit căreia omul real, Peter Altenberg, se confundă cu masca pe care

• Returneaza: In caz de succes returneaza un pointer la hostent, ce contine numele oficial al host-ului ; In caz de eroare NULL, iar. variabila h_errno indica

• Daca un fragment al unei datagrame e pierdut, acea datagrama e distrusa (se trimite la expeditor un mesaj ICMP – Internet Control Message Protocol). • Mecanismul de fragmentare

Dans Chant pour Manou 2 , la conversion fait du poème intitulé Séparation 3 un texte à part, une structure assimilable à un intertexte dont la séquence entière est

Cand GC determina ca un obiect trebuie eliminat din memorie, acesta apeleaza metoda Finalize a obiectului, daca aceasta exista - in sensul ca fost scris cod

Augustin : Animus vere, quia spiritus est, in sicco habitare non potest » (C, p. La grandeur de l’homme tient dans l’imperfection de sa double nature et dans

La prise en considération du contexte où Hegel traite des idées relatives à la nature et à l’essence de l’Etat, nous révèle une toute autre facette, à savoir que sa philosophie

Les recherches portant sur la Th´ eorie de l’Approximation, l’Analyse Num´ e- rique et la Th´ eorie de la Convexit´ e, ainsi que sur leurs ramifications dans d’autres domaines

The extent of structural (or enthalpic) relaxation occurred when the glass held at a constant annealing temperature (T a ) can be determined by heating the sample through T g at

fapt despre care se poate demonstra atât c  este adev rat, cât ³i c  este fals4. Székely [Paradoxes in Probability Theory and Mathematical Statistics, Springer, 1987] dene³te

Idee (Sir Tim Berners-Lee la CERN – 1989) integrarea unor sisteme informaționale.. disparate într-un

Si Vladimir Poutine veut que la Russie connaisse un véritable bouleversement économique qui la placera comme un acteur incontournable sur la scène internationale, il faut que

In cazul in care operatorul == este aplicat asupra referintelor la obiecte, acesta stabileste daca cele doua referinte refera acelasi obiect. In cazul stringurilor,

Cadrul de lucru memoreaza un pointer la obiectul document asociat, in data membru m_pDocument din vizualizare si expune acest pointer prin functia GetDocument().. CView –

un proces apeleaza un client DNS numit resolver, care trimite un pachet (UDP) celui mai apropiat server DNS care cauta numele si returneaza adresa IP; daca nu gaseste apeleaza la

Tal como era el caso para los contextos de localización (§4.2.2), Vallcorba (1978) delimita el uso de estar con adjetivos o participios en el catalán actual en base a

Idee (Sir Tim Berners-Lee la CERN – 1989) integrarea unor sisteme informaționale.. disparate într-un

Ceea ce încerc să pun în evidenţă este străinătatea in - timă din mine, care este viaţa mea, faptul simplu că viaţa mea, pe care nu pot nici să o opresc, nici să o zo resc,

Străbătea campusul pentru ultima oară pe ziua aceea, de data aceasta spre parcarea unde Milly reintra în posesia singurului lucru care atesta că nu era o angajată chiar atât

După un prim contact cu frontul (este şi rănit de câteva ori, dar superfi cial, am specifi cat şi vom reveni), Horaţiu Apolzan se îndepărtează şi/ sau este îndepărtat

a) O delimitare conceptuală a noţiunii de nume propriu (respectiv de antroponim) realizată din perspectiva considerării criteriilor grafic, referenţial, semantic sau/şi

• Un ultim parametru atunci cand este adaugat un eveniment este “use weak reference” de tip Boolean. Daca obiectul caruia

nunta.. tânără şi frumoasa.. dânsa de harn icia fetii.. 'lsvâ rltau toat e oscioarele vacii. După şi tale vaca.. ei cea frumoasa ca bunica dracului nu pute. Pu!intica