Sunteți pe pagina 1din 173

PROGRAMAREA INTERFEELOR GRAFICE C++BUILDER CUPRINS 1. 2. 3. FIIERELE CARE INTR N ALCTUIREA UNUI PROIECT 3.1. Grupul de proiecte 3.2.

2. Proiectul 4.

5. CLASE ABSTRACTE GENERALE 5.1. TObject 5.2. TPersistent 5.3. TComponent 5.4. TControl 5. 5. TWinControl
6.

FERESTRELE APLICAIEI. CLASA TForm

7. BUTOANE 7.1. TButton 7.2. TBitBtn 7.3. TspeedButton 8. ETICHETE 8.1. TLabel 8.2. TStaticText 9. CUTII DE EDITARE 9.1. TStrings 9.2. TStringList 9.3. TEdit 9.4. TMemo 9. 5. TRichEdit 9. 6. TMaskEdit 9. 7. TTextAttributes 10. COMPONENTE PENTRU OPIUNI 10.1. TRadioButton 10.2. TCheckBox

11. GRUPURI DE COMPONENTE 11.1. TGroupBox 11.2. TRadioGroup 11.3. TCheckListBox 12. COMPONENTA TTrackBar (Bara cu cursor) 12.1. TTrackBar 13. COMPONENTA PENTRU PROGRESUL EXECUIEI 13.1. TProgressBar 14. COMPONENTE DE STARE 14.1. TStatusBar 14.2. TStatusPanels 14.3. TStatusPanel 15. CONTROLUL MULTIPAGIN 15.1. TPageControl 15.2. TTabSheet 16. COMPONENTE DE DEFILARE 16.1. TControlScrollBar 16.2. TScrollingWinControl 16.3. TScrollBar 16.4 TScrollBox 17. MENIURI 17.1. TMenu 17.2. TMainMenu 17.3 TMainMenu 17.4. TMenuItem 18. SCURTTURI 18.1. THotKey 19. ITEMURI 19.1. TListBox 19.2. TComboBox 19. 3. TListView 19. 4. TListItems 19. 5. TListItem 19.6. TTreeView 19.7. TTreeNodes 19. 8. TTreeNode 19.9. TList 20. FIIERE I DIRECTOARE
2

TFileListBox TDirectoryListBox 20.3. TDriveComboBox 20.4. TFilterComboBox 20.5. TFileStream 20.6 Structuri i funcii utile pentru lucrul cu fiiere i directoare 21. GRAFIC 21.1. TColor 21.2 Funcii pentru prelucrarea culorilor 21.3. TGraphic 21. 4. TBitmap 21. 5. TIcon TMetaFile TGraphicsObject TBrush TPen TFont TCanvas 21. 12. TGraphicControl 21. 13. TPaintBox 21. 14. TImage 21. 15. TShape 21. 17. TSplitter 21. 18. TlmageList 22. CUTII DE DIALOG 22. 1. TCommonDialog 22. 2. TOpenDialog 22. 3. TSaveDialog 22. 4. TFont Dialog 22.5. TColorDialog 22.6. TFindDialog 22.7. TReplaceDialog 22.8. TPrinterSetupDialog 23. TIMPURI I DATE 23.1. TTimer 23.2.TDate 23.3. TTime 23.4.TDateTime 23.5.TDateTimePicker

1. (ulterior) ============================================ 2. (ulterior) ============================================


3

3. FIIERELE CARE INTR N ALCTUIREA UNUI PROIECT 3.1. Grupul de proiecte Din versiunea trei a mediului C++ Builder s-a introdus noiunea de grup de proiecte. Aceasta nseamna c la un moment dat pot exista deschise mai multe proiecte dintre care doar unul activ. Asupra acestuia se pot face prelucrri. Manipularea proiectelor dintr-un grup se face cu ajutorul lui Project Maneger descris n capitolul anterior. Un grup de proiecte se salveaz cu extensia .bpg. Utilitatea unui grup de proiecte nu este mare, el doar scutete programatorul de a deschide i nchide proiecte separate. 3.2. Proiectul Un proiect este un grup de mai multe fiiere care alctuiesc aplicaia C++ Builder. Fiecare fiier reprezint, pentru aplicaia din care face parte, o resurs care necesit setri speciale pentru a putea fi legat la aplicaia final (DLL sau EXE). Pentru a vedea ce fiiere intr n alctuirea unui proiect, accesai comanda View| Project Manager. Fiierele care intr n alctuirea unui proiect sunt urmtoarele: Fiierul Make Este fiierul care conine opiunile de compilare. Are extensia .mak n versiunile Borland C+ +Builder 1-4 i .bpr n versiunile 5,6 i conine (ntr-un format recunoscut de ctre mediul C++Builder i care poate fi citit i de ctre un om) lista fiierelor proiectului, opiunile de compilare etc. C++Builder folosete acest fiier pentru a determina cum sunt combinate fiierele surs pentru a obine codul executabil final. Se poate afia folosind comanda Wiew| Project|MakeFile. Fiierul cu programul principal Fiierul .cpp (cu numele implicit Project1.cpp) este punctul central al unei aplicaii C+ +Builder. El conine functia WinMain, deci de aici programul i ncepe execuia. O aplicaie cu o singur fereastr are urmtorul program principal: //--------------------------------------------------------------------------4

#include <vcl\vcl.h> #pragma hdrstop //--------------------------------------------------------------------------USEFORM("Unit1.cpp", Form1); USERES("Project1.res"); //--------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } //--------------------------------------------------------------------------Observaie: Acest fiier este meninut automat de ctre mediul C++Builder. Nu este nevoie ca programatorul s l modifice. Fiierul de resurse Este un fiier care folosete formatul standard Windows pentru fiierele de resurse. Are extensia.res. Resursele pot fi icon-uri, bitmap-uri, cursoare, etc. Numele acestui fier este identic cu cel al proiectului, avnd nsa extensia.res. Mediul C++Builder manipulaez singur acest fiier. Rareori este nevoie ca programul s intervin. Fiierele ataate formei Unei forme i sunt ataate trei fiiere cu extensiile .cpp, .h i .dfm. Fiierul .dfm (Definition Module) conine imaginea unei forme, adic valorile unora dintre proprietile ei (i a componentelor de pe ea). Pentru o form pe care este aezat o component de tip TButton, fiierul .dfm este urmtorul: Fiierul.dfm poate fi vizualizat cu ajutorul opiunii (Wiew As Text, respectiv revenirea cu Wiew As Form) din meniul de context ataat unei componente (care apare la click dreapta pe ea). Fiierele .h i .cpp conin declaraia, respectiv implementarea clasei formei. Pentru cazul implicit fiierul .h (Unitl.h) este:

Fiierul unit Este vorba aici despre fiiere care nu au ataate o form. Ele pot fi de dou tipuri: extensia .cpp cu perechea .h, i cu extensia .pas. Ele pot conine clase, funcii si proceduri care pot fi folosite de un program C++Builder. Observaie: Majoritatea acestor fiiere sunt create automat de ctre C++Builder. Dac un fiier ce intr n alctuirea unui proiect nu se afl n acelai director cu acesta, atunci C++Builder-ul va pstra calea spre el.

4. (ulterior) ============================================ 5. CLASE ABSTRACTE GENERALE

VCL (Visual Classes Library) este o bibliotec de clase care au un ascendent comun: TObject. Acesta definete modul n care este instaniat un obiect VCL. Capacitile de atribuire ntre obiecte sunt introduse n TPersistent. Tot aceast clas implementeaz i posibilitatea obiectelor VCL de a-i scrie valorile proprietilor n fiiere. dfm. Mediul C++Builder este un mediu de dezvoltare vizual a aplicaiilor. Orice obiect manipulat de ctre mediu (spre exemplu prin intermediul lui Object Inspector) trebuia s aib anumite caracteristici. Acestea i erau conferite de ctre TComponent. Orice component are o anumit dimensiune, poziie, culoare definite de ctre TControl. Posibilitatea unui control de a primi focus (de a fi activ la un moment dat) fost introdus de ctre TWinControl. Toate clasele descrise aici sunt clase abstracte deci nu se pot declara instanieri ale lor, ci pot fi folosite numai n declarri de pointeri i referine.

5.1.

TObject TObject este strmoul comun al tuturor obiectelor VCL.

Ierarhie TObject Definit n System. hpp

Metode M1. NewInstance virtual TObject*_fastcall NewInstance(TClass cls); Aloc spaiu pentru o instan de tip TObject si returneaz un pointer la acea instan. Toi constructorii apeleaz aceast metod. M2. InstanceSize static long _fastcall InstanceSize(TClass cls); long _fastcall InstanceSize(); Returneaz numarul de octei necesari obiectului cls. Aceast metod este apelata automat de ctre NewInstance. Cea de a doua form este echivlent cu: return InstanceSize(ClassType()); M3. InitInstance static TObject*_fastcall InitInstance(TClass cls, void*instance); M4. FreeInstance Virtual void_fastcall FreeInstance(); Elibereaz spaiul de memorie alocat printr-un apel NewInstance. Toi destructorii apeleaz automat aceast metoda. M5. Free _fastcall Free(); Distruge un obiect i elibereaz zona de memorie alocat pentru el. Nu apelai aceast metod, ci folosii operatorul delete care la rndul lui va apela automat aceast metod. M6. ClassType TClass_fastcall ClassType(); Returneaza RTTI (run-time type information) unui obiect. TClass este un pointer la TMetaClass care simuleaza referina la o clas din Delphi. Referina la o clas (sau TMetaClass n Builder) este necesar atunci cnd se dorete accesul la o clas i nu la o instan a acelei clase. M7. ClassName static ShortString _fastcall ClassName(TClass cls); ShortString_fastcall ClassName(); Returneaz, sub form de ir de caractere tipul unui obiect referit de o variabil, i nu tipul acelei variabile. Astfel codul: ShowMessage(Button1->ClassName()) afieaz mesajul "TButton". Forma a doua este echivalent cu: return ClassName(ClassType());
7

Apelul de mai sus este echivalent cu: M8. ClassNameIs static bool_fastcall ClassNameIs(TClass cls, const AnsiString string); Returneaz true, dac numele clasei cls este string. M9. ClassParent Static TClass_fastcall ClassParent(TClass cls); TClass_fastcall ClassParent(); Returneaz tipul printelui obiectului. Pentru un obiect de tip TObject se returneaz NULL, deoarece aceasta nu are nici un strmo. Forma a doua este echivalenta cu: Return ClassParent (ClassType()); Afiarea clasei i a tuturor claselor strmo ale unui buton se face prin urmatorul cod: M10. Inherits static bool_fastcall InheritsFrom(TClass cls, TClass aClass); bool_fastcall InheritsFrom(TClass aClass); Returneaz true, dac obiectul aClass este strmoul lui cls. M11. AfterConstruction virtual void_fastcall AfterConstruction(); Este apelat dup ce obiectul a fost creat. n TObject aceast metod nu face nimic, de aceea ea va trebui redefinit de ctre programator pentru a se executa anumite instruciuni nainte ca un obiect s fie distrus. Spre exemplu cu aceast metod se implementeaz evenimentul OnCreate a lui TForm. M12. BeforeDestruction Virtual void_fastcall BeforeDestruction(); Este apelat nainte de a fi invocat destructorul obiectului. n TObject aceast metoda nu face nimic, de aceea ea va trebui redefinit de ctre programator pentru a se executa anumite instruciuni nainte ca un obiect s fie distrus. Spre exemplu cu aceast metod se implementeaz evenimentul OnDestroy a lui TForm. M13. Dispatch virtual void_fastcall Dispatch(void *Message); Apeleaz metoda de prelucrare a mesajului Message. Dac nu este gasit nici o funcie care prelucreaz acest mesaj, atunci este apelat metoda DefaultHandler. M14. DefaultHandler virtual void_fastcall DefaultHandler(void* Message); Aceasta metod este apelat automat de ctre Dispatch n cazul n care nu exist o metod special de tratare pentru mesajul Message. Prelucrarea implicit nseamn de obicei generarea mesajului.

5.2. TPersistent
8

Persistena este proprietatea obiectelor de a fi salvate pe disc i apoi rencrcate. TPersistent este o clas abstract din care sunt derivate toate acele obiecte care au proprietatea de a primi valori prin atribuire i de a stoca valorile proprietilor ntr-un fiier .dfm. De aceea TPersistent introduce metodele Assign i AssignTo pentru a efectua aceast atribuire. Ierarhie TObject -> TPersistent Definit n classes.hpp Metode M1. TPersistent __fastcall TPersistent(void); Este constructorul clasei. M2. ~TPersistent __fastcall virtual ~TPersistent(void); Este destructorul clasei. M3. Assign virtual void __fastcall Assign(TPersistent* Source); Copiaz coninutul obiectului Source n obiectul apelant. Apelul este Destination -> Assign(Source) M4. AssignTo virtual void __fastcall AssignTo(TPersistent* Dest); Copiaz coninutul obiectului apelant in obiectul Dest. Cele dou obiecte pot s nu aib acelai tip, dar trebuie s existe compatibilitate de tipuri. Apelul este: Source -> AssignTo(Dest) 5.3. TComponent

Este o clas abstract, strmoul comun al componentelor din C++Builder, ncapsulnd comportamentul de baz al acestora. Toate componentele care figureaz n ComponentPalette, dar i altele, sunt derivate din aceast clas. Caracteristica principal a obiectelor derivate din TComponent este faptul c unele proprieti ale lor pot fi prelucrate la momentul proiectrii aplicaiei utiliznd Object Inspector. Exist i componente non-vizuale care pot fi prelucrate cu Object Inspector, de exemplu componenta ceas i dialogurile. Ierarhie TObject -> TPersistent -> TComponent Definit n classes.hpp Proprieti P1. ComponentCount __property int ComponentCount; Indic numrul de componente care au drept proprietar componentul curent. P2. Components __property TComponent* Components[int Index]; Vectorul cu toate componentele care au ca proprietar componentul curent. Astfel acestea pot fi accesate indexat, ncepnd cu indicele 0. P3. ComponentIndex __property int ComponentIndex Indic poziia componentei n cadrul vectorului de componente al componentei proprietar. Prima component are indexul 0, iar ultima are indexul ComponentCount1. P4. Name __property AnsiString Name; Name conine numele componentei.

10

P5. Owner __property TComponent* Owner; Indic proprietarul unei componente. Forma este componenta proprietar a tuturor componentelor de pe ea. La distrugerea ei vor fi distruse toate componentele de pe ea. Forma este i ea n proprietatea aplicaiei. De aceea, n momentul n care aplicaia este eliberat din memorie, este eliberat i forma. Metode M1. ChangeName void __fastcall ChangeName(const AnsiString NewName); Schimb numele unei componente n NewName. M2. FindComponent TComponent* __fastcall FindComponent(const AnsiString AName); Returneaz componenta care are ca nume AName. Dac nu exist nici o component cu numele dat n cadrul vectorului Components, se returneaz NULL. M3. InsertComponent void __fastcall InsertComponent (TComponent* AComponent); Creaz o nou component (AComponent). Componenta curent devine proprietarul celei create. Cu ajutorul acestei metode pot fi inserate componente manual (n momentul execuiei aplicaiei). M4. RemoveComponent void __fastcall RemoveComponent(TComponent* AComponent); terge componenta specificat din lista componentelor. M5. DestroyComponents void __fastcall DestroyComponents (void); Distruge toate componentele proprii.

11

5.4. TControl Este clasa abstract de baz pentru componentele vizuale, adic acelea care au un corespondent grafic, vizibil pentru utilizator n momentul execuiei. Ea definete evenimente, proprieti i evenimente comune tuturor componentelor vizuale. Ierarhie TObject -> TPersistent -> TComponent -> TControl Definit n controls.hpp Proprieti P1. BoundsRect __property TRect BoundsRect; Returneaz dreptunghiul care ncadreaz controlul. Sistemul de axe de coordonate are originea n colul din stnga sus. Este returnat o structur cu patru componente ntregi (Right, Left, Top, Bottom) reprezentnd distana, fa de marginea superioar a controlului printe (cel pe care controlul curent este situat), a laturii superioare, respectiv a laturii inferioare (Top, respectiv Bottom) i fa de marginea din stnga a controlului printe a laturii din stnga, respectiv a laturii din dreapta (Left, respectiv Right) a controlului curent. Formele, casetele de grupuri (claasa TgroupBox), paginile unui control multipagin (clasa TTabSheet) pot fi controale printe ale altor controale. Componentele Right, Left, Top, Bottom pot fi accesate i prin intermediul proprietilor omonime. P2. ClientRect __property TRect ClientRect; Returneaz dimensiunile (n pixeli) dreptunghiului care reprezint zona client a controloului. Cmpurile Top i Left sunt setate la 0, iar cmpurile Right i Bottom indic dimensiunea zonei client a contrololui. Aceste ultime dou cmpuri pot fi accesate i prin intermediul proprietilor: __property int ClientHeight; __property int ClientWidth; Pentru un obiect de tip TControl proprietatea ClientHeight are aceeai valoare cu Height. Unele clase derivate implementeaz diferit aceast proprietate. De exemplu,

12

pentru o form (clasa TForm) ClientHeight=Height - nlimea barei de titlu marginea redimensionabil - nlimea barelor de defilare. P3. Caption __property AnsiString Caption; Specific titlul unui control. Este o modalitate de identificare a controlului de ctre utilizator. Poate fi modificat att n faza de proiectare (prin intermediul ferestrei Object Inspector), ct i n timpul execuiei. P4. Name __property AnsiString Name; Specific numele unui control aa cum apare el n codul surs. Nu poate fi modificat dect n faza de proiectare prin intermediul ferestrei Object Inspector. Reprezint numele unui pointer la un obiect al clasei derivate creia i aparine controlul. P5. PopupMenu __property TPopupMenu* PopupMenu; Indic meniul popup (numit i meniu de context sau meniu rapid) ataat controlului. Acest meniu este afiat atunci cnd n timpul execuiei se execut clic cu butonul din dreapta al mouse-ului pe control. P6. Color __property TColor Color; Indic culoarea fundalului unui control. Aceast proprietate este legat de proprietatea boolean ParentColor. Dac ParentColor are valoarea true, atunci Color va avea aceeai valoare cu proprietatea Color a controlului printe, astfel nct dac printele i schimb culoarea, se va schimba automat (comportament predefinit) i culoarea controlului. P7. Cursor __property TCursor Cursor; Specific imaginea folosit pentru a reprezenta un cursor de mouse atunci cnd acesta trece pe dceasupra controlului. Valorile standard sunt: crNone, crArrow, crCross, crIBeam, crSize, crSizeNESW, crSizeNS, crSizeNWSE, crSizeWE, crUpArrow,

13

crHourGlass, crDrag, crNoDrop, crHSplit, crVSplit, crMultiDrag, crSQLWait, crNo, crAppStart, crHelp. P8. Enabled __property bool Enabled; Specific dac un control este accesibil, astfel nct poate rspunde la mouse, tastatur, sau, pentru un control ceas (clasa TTimer) la ncheierea intervalului de timp asociat (evenimentul OnTimer). P9. Font __property TFont* Font; Specific atributele caracterelor (fonturilor) nscrise n control. P10. Hint __property AnsiString Hint; Specific textul care apare atunci cnd cursorul de mouse trece peste control, dac proprietatea ShowHint are valoarea true. P11. ShowHint __property bool ShowHint; Stabilete dac textul dat de Hint apare. Are legtur cu proprietatea boolean ParentShowHint, astfel inct, daca aceasta din urm este setat la true, proprietatea Hint a controlului curent este fcut automat egal cu proprietatea Hint a controlului printe. P12. Text __property AnsiString Text; Text conine textul ataat unui control. Implicit are ca valoare numele controlului. P13. Visible __property bool Visible; Specific dac un control este vizibil pe ecran n timpul execuiei aplicaiei. n faza de proiectare orice component este vizibil indiferent de valoarea acestei proprieti. P14. Align
14

__property TAlign Align; Indic modul n care controlul este aliniat n cadrul cotrolului printe. Valori posibile pentru aceast proprietate sunt: Valoare alNone alTop alBottom alLeft alRight alClient Semnificaie Dimensiunile i poziia componentei rmn neschimbate. Componenta se mut n partea de sus a formei i limea ei va deveni egal cu cea a formei. nlimea nu se modific. Componenta se mut n partea de jos a formei i limea ei va deveni egal cu cea a formei. nlimea nu se modific. Componenta se mut n partea stng a formei i nlimea ei va deveni egal cu cea a formei. Limea nu se modific. Componenta se mut n partea stng a formei i nlimea ei va deveni egal cu cea a formei. Limea nu se modific. Componenta se redimensioneaz astfel nct s umple zona client a unei forme . Dac o alt component a ocupat deja o parte din aceast zon, atunci componenta curent ocup restul.

P15. WindowProc __property TWndMethod WindowProc; Este pointer spre procedura de fereastr care trateaz mesajele trimise ctre aceasta. Tipul TWndMethod este definit astfel: typedef void __fastcall (__closure *TWndMethod)( TMessage &Message); TMessage este o structur care descrie formatul standard al mesajelor sistemului. P16. DragCursor __property TCursor DragCursor; Indic tipul de cursor care este afiat n momentul n care un control este "tras" (este "surs" pentru un eveniment de tip drag) P17. DragMode __property TDragMode DragMode; Determin comportamentul controlului in raport cu evenimentul drag over , care modeleaz situaia intuitiv n care controlul (denumit surs a evenimentului) este

15

"tras" peste alt control (care "produce" evenimentul, denumit n declaraia standard a handler-ului Sender ). Valorile posibile sunt: Valoare DmManual dmAutomatic P18. Parent __property TWinControl* Parent; Indic controlul printe, n care va fi afiat cel curent. Metode M1. Hide void __fastcall Hide(void); Face un control s devin invizibil. Proprietile i metodele controlului sunt disponibile i dup apelarea acestei metode. M2. Show void __fastcall Show(void); Face un control s devin vizibil. M3. GetParentComponent virtual TComponent* __fastcall GetParentComponent(void); Returneaz printele unui component. M4. GetTextBuf int __fastcall GetTextBuf(char * Buffer, int BufSize); Copiaz textul ataat unui control ntr-o zon tampon de memorie (Buffer) i returneaz numrul de caractere copiate. Este util pentru compatibilitate cu programele pe 16 bii. M5. GetTextLen int __fastcall GetTextLen(void); Semnificaie Controlul nu poate fi tras dect dup apelarea metodei BeginDrag. Controlul poate fi tras.

16

Returneaz lungimea textului unui control. M6. SetTextBuf void __fastcall SetTextBuf(char * Buffer); Asociaz unui control textul trimis ca parametru. Evenimente E1. OnClick __property TNotifyEvent OnClick; Apare cnd utilizatorul execut clic pe un control. Mai poate aprea cnd: se selecteaz un item dintr-o gril, list sau combo box prin apsarea unei taste sgeat; se apas tasta bar de spaiu n timp ce butonul sau caseta de validare are focus; se apas tasta Enter cnd forma activ are un buton cu proprietatea Default setat true , care are focus; se apas tasta Esc cnd forma activ are un buton cu proprietatea Cancel setat true , care are focus; se apas o tast accelerator pentru un buton sau caset de validare; proprietatea Checked a unui buton radio este setat true; valoarea proprietii Checked a unei casete de validare este schimbat; este apelat metoda Click pentru un buton sau item de meniu. Tipul TNotifyEvent este tipul cel mai simplu al unui handler de eveniment. Este definit astfel: typedef void __fastcall (__closure *TNotifyEvent)( TObject Sender); E2. OnDblClick __property TNotifyEvent OnDblClick; Apare cnd se execut dublu clic pe un control. E3. OnDragDrop typedef void __fastcall (__closure *TDragDropEvent)( TObject * Sender, TObject* Source, int X, int Y); __property TDragDropEvent OnDragDrop;

17

Are loc atunci cnd butonul stng al mouse-ului este eliberat dup realizarea unui eveniment drag-over (descris mai jos), dac handler-ul acestui eveniment permite acest lucru (prin setarea parametrului Accept la true). Sender este obiectul pe care se afl cursorul, iar Source are aceeai valoare cu Source de la handler-ul evenimentului OnDragOver precedent. (X,Y) este punctul dat prin coordonate relative la obiectul Sender n care se afl cursorul. E4. OnDragOver enum TDragState { dsDragEnter, dsDragLeave, dsDragMove }; typedef void __fastcall (__closure *TDragOverEvent)( TObject* Sender, TObject* Source, int X, int Y, TDragState State, bool &Accept); __property TDragOverEvent OnDragOver; Acest eveniment apare n mod repetat la intervale fixe de timp atunci cnd cnd cursorul mouse-ului este micat pe desupra obiectului Sender, butonul din stnga fiind inut apsat, la nceputul acestei acuni cursorul fiind situat deasupra unui obiect care poate fi sursa operaiei de tragere, care devine valoare a parametrului Source, afar de cazul cnd acest parametru primete alt valoare prin executarea handler-ului evenimentului OnStartDrag (tratat mai jos). Parametrul boolean referin Accept poate fi modificat de handler i indic faptul c obiectul Source poate sau nu s fie "lsat s cad", adic evenimentul OnDragDrop (descris mai sus) poate avea loc. TDragState este un tip enumerare descris prin tabelul de mai jos: Valoare dsDragEnter dsDragMove dsDragLeave Semnificaie Cursorul intr n suprafaa controlului. Cursorul se afl deasupra suprafeei controlului. Cursorul iese din suprafaa controlului.

(X,Y) este punctul dat prin coordonate relative la obiectul Sender n care se afl cursorul. E5. OnStartDrag typedef void __fastcall (__closure *TStartDragEvent)(TObject* Sender, TDragObject* &DragObject); __property TStartDragEvent OnStartDrag; Apare cnd s-a nceput o operaie de tip drag-over. Sender este obiectul care a nceput s fie "tras", iar DragObject este un pointer la un obiect al clasei TDragObject cruia handler-ul i poate atribui o valoare care s reprezinte obiectul ce urmeaz s fie tratat n continuare ca sursa evenimentelor drag-over i drag-drop . Clasa TDragObject este definit astfel ca s se poat prelucra ntr-un mod flexibil evenimentele reprezentnd "trageri", permindu-se ca sursele s fie diverse tipuri de date: texte, imagini, etc. DragObject poate de asemenea s conin i modelul de cursor care va aprea pe parcursul operaiei de tragere.

18

E6. OnEndDrag typedef void_fastcall (_closure*TEndDragEvent) (TObject*Sender, TObject*Target, int X int Y); _property TEndDragEvent OnEndDrag; Apare cnd tragerea unui obiect nceteaz, fie prin lsarea lui s cad, fie printr-o metod de Cancel. Sender este obiectul tras, iar Target este obiectul care ar putea accepta operaia drop. E7. OnMouseDawn enum TMouseButton {mbLeft, mbRight, mbMiddle}; typedef void__fastcall (_closure*TMouseEvent) (TObject*Sender, TMouseButton Button, TShiftState Shift, int X, int Y); _property TMouseEvent OnMouseDown; Apare cnd un buton al mouse-ului este apsat. Sender este controlul pe a crui suprafa este apsat mouse-ul. (X, Y) sunt coordonatele, n pixeli, a punctului unde a fost apsat mouse-ul. TMouseButton este un tip enumerare: enum TMouseButton {mLeft, mRight, mbMiddle }; care indic butonul de mouse care a fost apsat. TShiftState este o mulime: enum Classes_1 {ssShift, ssAlt, ssCtrl, ssLeft, SsRight, ssMiddle, ssDouble}; typedef Se<tClasses_1, ssShift, ssDouble > TShiftState; care indic ce alte taste de control au mai fost apsate. E8. OnMouseMove Enum TMouseButton {mbLeft, mbRight, mbMiddle }; typedef void_fastcall (_closure*TMouseEvent) (TObject*Sender, T MouseButton Button,
19

TShiftState Shift, int X, int Y); _property TMouseMoveEvent OnMouseMove; Apare n mod repetat la intervale fixe de timp cnd cursorul de mouse este micat peste obiectul Sender. Parametrii sunt ca la OnMouseDown (bineneles schimbnd apsat cu micat). E9. OnMoseUp Enum TMouseButton {mbLeft, mbRight, mbMiddle}; typedef void_fastcall (_closure*TMouseEvent) (TObejct*Sender, TMouseButton Button, TShiftState Shift, int X, int Y); _ propertyTMouseEvent OnMouseUp; Apare cnd un buton de mouse este eliberat. Parametrii sunt ca i la OnMouseDown (schimbnd bineneles apsat cu eliberat). 5. 5. TWinControl Este o clas abstract pentru toate controalele care au ataat o fereastr. O importan caracteristic a lor este faptul c pot primi focus (deci pot interaciona cu utilizatorul prin intermediul tastaturii). Ierarhie TObject- >TPersistent-> TComponent-> TControl > TWinControl. Definit n controls. hpp. Proprieti P1. Brush _property TBrush*Brush; Specific ce culoare i ce model este folosit pentru a desena fundalul unui control. P2. ClientOrigin _property Point ClientOrigin;

20

Indic coordonatele colului din stnga sus a controlului. P3. ClientRect _property TRect ClientRect; Indic dimensiunile, n numr de pixeli, a ferestrei controlului. P4. ControlCount _property int ControlCount; Indic numrul de componente care sunt fii ai componentei stocat n obiectul this. P5. Controls _property TControl*Controls[ int Index]; P6. Ctl3D _property bool Ctl3D; Indic dac controlul este afiat sau nu 3D. Acest lucru depinde i de valoarea proprietii ParentCtl3D. P7. ParentCtl3D _property bool ParentCtl3D; Este folosit pentru a specifica dac felul n care arat o component (2D sau 3D) depinde sau nu de felul n care arat componenta printe. Dac Parent Ctl3D este true, atunci felul n care arat o component este identic cu felul n care arat componenta printe. Dac ParentCtl3D este false, atunci componenta i va folosi (bineneles schimbnd apsat cu micat)propria proprietate Ctl3D. P8. TabOrder _ property TTabOrder TabOrder; Indic ordinea n care se trece de la un control la altul n cazul n care se apas tasta Tab. Pentru aceasta fiecare control are un numr unic ataat (TabOrder). Dac TabOrder este -1, atunci controlul respective nu poate fi accesat cu ajutorul lui Tab. Iniial aceast ordine este ordinea n care sunt aezate controalele pe form. Metode

21

M1. TWinControl _fastcall virtual TWinControl (TComponent*AOwner); Este constructorul clasei. M2. CanFocus bool-fastcall CanFocus (void); Determin dac controlul poate deveni activ. M3. ContainsControl bool__fastcall ContainsControl(TControl*Control); Indic dac Control este coninut n controlul care a apelat aceast metod. M4. ControlAtPos TControl*_fastcall ControlAtPost(const Point &Pos, bool AllowDisabled); Returneaz controlul flu aflat la poziia Pos. M5. FindNextControl TWinControl*_fastcall FindNextControl(TWinControl*CurControl, Bool GoForward, bool CheckTabStop, bool CheckParent); Specific urmtorul control (este vorba de Tab ordinea) aflat dup CurControl. Dac GoForward este false, atunci cutarea controlului se face invers ordinii Tab. M6. Focused bool_fastcall Focused (void); Indic dac controlul este activ (are focus). M7. GetTabOrderList virtual void_fastcall GetTabOrderList(Tlist*List); Ordinea Tab este returnat ntr-o list. M8. InsertControl

22

void_fastcall InsertControl(TControl*AControl); terge controlul AControl din vectorul proprietii Control. M10. Repaint virtual void_ fastcall Repaint (void) Redeseneaz controlul. M11. ScrollBy void_fastcall ScrollBy (int DeltaX, int DeltaY); Defileaz coninutul ferestrei controlului cu Delta X pixeli orizontal (spre dreapta) i Delta Y pixeli vertical (n jos). Delta X i Delta Y pot avea i valori negative, n acest caz coninutul ferestrei va defila spre stnga, respective n sus. M12. SetFocus virtual void__fastcall SetFocus(void); Controlul devine activ (primete focus). Evenimente E1. OnEnter _property TNotifyEvent OnEnter; Apare cnd o fereastr-control devine activ (cnd primete focus). E2. OnExit _property TNotifyEvent OnExit; Apare cnd o fereastr-control devine inactiv (pierde focus-ul). E3. OnKeyDown typedef Set< Classes_1, ssShift, ssDouble> TShiftState; typedef void__fastcall (_closure*TKeyEvent) (TObject*Sender, unsigned short&Key, TShiftState Shift); _property TKeyEvent OnKeyDown; Apare dac utilizatorul apas o tast n timp ce controlul este activ. Apsarea unei taste poate fi acompaniat i de apsarea unui buton de mouse sau de
23

apsarea tastelor speciale Ctrl, Shift, Alt. E4. OnKeyUp typedef Set< Classes_1, ssShift, ssDouble> TShiftState; typedef void_fastcall_(closure*TKeyEvent) (TObject*Sender, unsigned short&Key, TShiftState Shift); _property TKeyEvent OnKeyUp; Apare n care momentul n care utilizatorul elibereaz o tast pe care a apsat-o ntr-un moment anterior. Semnificaia parametrilor este ca i la OnKeyDown. E5. OnKeyPress typedef void__fastcall (_closure*TKeyPressEvent) (TObject*Sender, char&Key) _property TKeyPressEvent OnKeyPress; Apare cnd utilizatorul apas o singur tast care are codul ASCII normal, deci de exemplu tastele Shift, Ctrl, F1 nu pot genera acest eveniment. 6. FERESTRELE APLICAIEI. CLASA TForm O aplicaiei Windows const dintr-una sau mai multe forme (ferestre). Una dintre ele este fereastra principal i ea va fi afiat n momentul lansrii n execuie a aplicaiei. Componenta care implementeaz caracteristicile i comportamentul unei forme se numete TForm. Aceast component nu are reprezentare n Component Palette i de aceea adugarea unei forme la aplicaie nu se face n acelai mod ca i la celelalte componente, ci prin accesarea comenzii File/New Form. O fereastr este mprit n dou zone principale: - bara de titlu; - zona client. Bara de titlu se afl n partea de sus a formei i conine de la stnga spre dreapta: - meniul system - titlu ferestrei; - trei butoane (Minimizare, Maximizare i nchidere). Zona client are cea mai mare suprafa. Pe ea programatorul aeaz controale cu ajutorul crora definete funcionalitatea unei aplicaii. Ierarhie

24

TObject > Tpersistent >TComponent- >TControl->TWinControl > TScrollingWinControl > TForm. Definit n forms. hpp. Proprieti P1. Active _property bool Active; Determin dac o form este activ sau nu (dac are sau nu focus). La un moment dat doar o form poate avea focus. O form activ este aceea asupra creia culoare utilizatorul actioneaz la momentul current. Se deosebete de toate celelalte forme prin barei de titlu. P2. ActiveControl _property TWinControl*ActiveControl; Indic controlul activ de pe o form (care are focus). La un moment dat, doar un singur control poate avea focus. Dac forma nu este activ, atunci ActiveControl indic componenta care va primi focus n momentul n care forma primete. P3. BorderIcons _property TBorderIcons BorderIcons; Indic tipurile de iconuri ce pot s apar n bara de titlu a unei forme. TBorderIcons este o mulime deci poate lua mai multe valori dintre urmtoarele: Valoare BiSystemMenu Semnificaie Forma are un meniu numit System, care este afiat la apsarea iconului (din colul din stnga sus) cu ajutorul cruia forma poate fi nchis, maximizat, minimizat etc, Forma are un buton de minimizat (n colul din dreapta sus). Forma are un buton de maximizat (n colul din dreapta sus). Forma are un buton de help care are

BiMinimize BiMaximize biHelp

25

desenat pe el un semn de ntrebare. P4. BorderStyle _propertyTFormBorderStyle BorderStyle; Specific tipul de margine pentru o form. Valorile posibile pentru BorderStyle sunt: Valoare bsDialog bsSingle bsNone bsSizeable bstoolWindow bsSizeToolWin Semnificaie Forma nu poate fi redimensionat. Marginea este n form standard. Forma nu poate fi redimensionat. O singur linie ca margine. Forma nu poate fi redimensionat. Nici o linie vizibil ca margine. Forma poate fi redimensionat. La fel ca i bsSingle dar cu un titlu mai mic. La fel ca i bsSizeable dar cu un titlu mai mic.

Apare aici cuvntul de form redimensionabil. Este vorba de schimbarea dimensiunilor formei cu ajutorul mouse-ului n timp ce aplicaia este n execuie. Oricum schimbarea dimensiunilor formei poatefi fcut i n timpul execuiei aplicaiei, dar fr ajutorul mouse-ului, ci cu ajutorul proprietilor ClientHeight i Client Width. P5. Client Height _property int ClientHeight; Specific nlimea n pixeli- zonei client a formei. Pentru a determina ntreaga nlime a formei (+ zona de titlu) accesai valoare proprieti Height a lui TControl. P6. Client Width _ property int ClintWidt; Specific limea n pixeli-zonei client a formei. P7. Position _property TPosition Position: Specific dimensiunile si poziia pe care o va avea forma pe ecran. Valori posibile

26

pentru Position sunt: Valoare poDesigned poDefault poDefaultPosOnly poDefaultSizeOnly poScreenCenter P8. Visible __property Visible; Specific dac o form este vizibil sau nu. Dac Visible este true, atunci forma este vizibil (asta n cazul n care nu este acoperit parial sau total de ctre o alt form). Dac o aplicaie are mai multe forme, atunci cele care au proprietatea Visible setat la true acelea vor fi vizibile(sau parial vizibile dac sunt acoperite de alte forme), iar cele cu proprietatea Visible setat la false nu sunt vizibile. P9. Menu __property TMainMenu*Menu; Specific meniul unei forme. Dac pe form sunt adugate mai multe componente TMainMenu, atunci Menu va avea ca valoare prima dintre acestea. P10. Icon __property TIcon*Icon; Specific iconul formei. P11. WindowState __property TWindowState WindowState; Specific modul n care o form apare pe ecran. Valori posibile pentru WindowState sunt: Semnificaie Forma va apare pe ecran n aceeai poziie i cu aceleai dimensiuni ca i cele setate la timpul proiectrii ei. Windows-ul alege poziia i dimensiunea formei. Windows-ul va alege doar poziia formei, dimensiunile rmnnd cele setate la timpul proiectrii ei. Windows-ul va alege doar dimensiunile formei, poziia rmnnd cea de la proiectare. Forma va avea poziia central pe ecran i dimensiunile cele de la proiectare.

27

Valoare wsNormal wsMinimized wsMaximized P12. FormStyle

Semnificaie Forma apare n stare normal (nici minimizat nici maximizat). Forma apare n stare minimizat. Forma apare n stare maximizat.

__property TFormStyle FormStyle; Indic stilul unei forme. Valori posibile pentru FormStyle sunt: Valoare fsNormal fsMDIChild fsMDIForm fsStayOnTop Semnificaie Forma nu este nici o fereastr MDI printe, nici MDI copil. Forma este o fereastr MDI copil. Forma este o fereastr MDI printe. Forma rmne afiat pe desktop deasupra tuturor celorlalte forme care nu au proprietatea FormStyle setat la aceast valoare.

P13. ModalResult __property TModalResult ModalResult; Specific o valoare care atunci cnd este mai mare dect zero; forma va fi nchis dac este afiat modal. Valori posibile pentru ModalResult sunt: mrNone, mrOK, mrCancel, mrAbort, mrRetry, mrIgnore, mrYes, mrNo, MrAll. P14. Canvas __property TCanvas*Canvas; Furnizeaz acces la suprafaa de desenare a formei. P15. PrintScale Indic modul n care va fi scalat forma pentru a fi tiprit la imprimant. Valori posibile pentru PrintScale sunt:

28

Valoare poNone poProportional poPrintToFit Metode M1. Show

Semnificaie Nu are loc nici o scalare. Forma este scalat astfel nct tiprit s aib cam aceleai dimensiuni ca i pe ecran. Forma este scalat astfel nct s ncap pe pagina pe care este tiprit.

void__fastcall Show(void); Afieaz forma. Show seteaz proprietatea Visible la true. M2. Hide void__fastcall Hide(void); Ascunde forma. Hide seteaz proprietatea Visible la false. M3. ShowModal int__fastcall ShowModal(void); Afieaz forma ca form modal. Asta nseamn c utilizatorul trebuie s nchid aceast form pentru ca aplicaia s poat continua. M4. CloseQuery bool__fastcall CloseQuery (void); Returneaz o valoare boolean pentru a specifica dac o form este nchis sau nu. M5. Close void__fastcall Close (void); Inchide forma. Dac CloseQuery pentru o form returneaz false, atunci operaia de nchidere a formei nu este posibil. Inchiderea formei principale a unei aplicaii duce la terminarea aplicaiei. M6. Release

29

void _fastcall Release (void); Distruge forma i elibereaz spaiul de memorie ocupat de ea. Spre deosebire de Free, Release ateapt pn n momentul n care execuiile tuturor handlerelor de evenimente de pe form sunt terminate. M7. FocusControl

void __fastcall FocusControl (TwinControl *Control); Componenta Control devine noua valoare a proprietaii ActiveControl. M9. SetFocus

void __fastcall SetFocus (void) Face ca forma s devin activ. SetFocus apeleaz metoda SetFocus a controlului indicat de proprietatea ActiveControl. M8. Print

void __fastcall Print (void) Tiprete forma. Evenimente E1. OnActivate

__property TNotifyEvent OnActive; Apare cnd forma este activat (primete focus). E2. OnDezactivate

__property TNotifyEvent OnDezactivate; Apare cnd forma pierde focus-ul. E3. OnShow

__property TNotifyEvent OnShow; Apare cnd proprietatea Visible pentru form este setat la true.

30

E4. OnHide __property TNotifyEvent OnHide; Apare cnd proprietatea Visible este setat la true. E5. OnResize __property TNotifyEvent OnResize; Apare cnd forma este redimensionat. E6. OnClose __property TCloseEvent OnClose; Apare cnd forma este nchis. Tipul TCloseEvent este definit astfel: typedef void __fastcall ( _closure *TCloseEvent ) (TObject *Sender, TCloseAction &Action); Action indic ce aciune va fi ntreprins n momentul n care forma este nchis. Valori posibile pentru Action sunt: Valoare caNone caHide caMinimi ze caFree Semnificaie Forma nu este nchis Forma nu este nchis, ci doar ascuns. Forma nu este nchis, ci doar minimizat. Forma este nchis i memoria alocat este eliberat.

E8. OnCreate __property TNotifyEvent OnCreate; Apare cnd forma este creat. E9. OnDestroy __property TNotifyEvent OnDestroy; Apare cnd forma este distrus.

31

E7. OnPaint __property TNotifyEvent OnPaint; Apare cnd forma trebuie redesenat. 7. BUTOANE Butoanele sunt componente utilizate de obicei pentru iniierea unei aciuni. Propoziiile care ncep cu La apsarea butonului sunt cele mai frecvente n programarea sub Windows. Componentele prezentate n acest capitol sunt urmtoarele: TButton, TBitBtn, TSpeedButton i TUpDown. TButton este un buton simplu. TBitBtn este un buton pe a crui suprafa se poate afisa o imagine. Butoanele de tip TSpeedButton pot fi grupate cu ajutorul proprietii GroupIndex. O alt proprietate a acestor butoane este c ele pot rmne n stare apsat. Doar un singur buton dintr-un grup poate fi la un moment dat apsat. TUpDown este o pereche de dou butoane pe care sunt desenate dou sgei. Aceast component permite incrementarea (sau decrementarea) unei valori ntregi stocat n proprietatea Position. Acest control este de obicei asociat cu un alt control (de exemplu cu o component TEdit ) n care este afiat valoarea din Position. 7.1. TButton imag\im001.jpg Ierarhie TObject->TPersistent->TComponent ->TControl -> TWinControl -> TButtonControl-> TButton. Definit n Stdctrls.hpp. Pagina Standard. Proprieti P1. Cancel __property bool Cancel; Indic dac butonul este sau nu de tip Cancel. Dac este buton Cancel, atunci la apsarea tastei Esc, se execut handlerul de evenimente asociat lui OnClick. Mai multe

32

butoane pot fi butoane Cancel. In acest caz la apsarea tastei Esc primului buton de tip Cancel vizibil i se va executa handlerul de evenimente asociat cu evenimentul OnClick. P2. Default _property bool Default; Indic dac butonul este sau nu de tip Default. Dac este un buton Default, atunci la fiecare apsare a tastei Enter, se execut handlerul de evenimente asociat lui OnClick. Exceptie de la aceasta se face n momentul n care un alt buton are focus (pe el este desenat punctat un dreptunghi ), n acest caz executndu-se handlerul asociat butonului selectat. Dar n cazul n care nici un buton nu este selectat, sau un alt control este activ, atunci la apsarea tastei Enter se execut handlerul de evenimente asociat butonului Default. Cazul cu mai multe butoane Default este tratat ca i n cazul cu mai multe butoane Cancel. P3. ModalResult __property TModalResult ModalResult; Indic dac i cum nchide butonul forma (modal) printe. Cnd butonul este apsat proprietatea ModalResult a formei printe este setat la aceeai valoare ca i proprietatea ModalResult a butonului. Metode M1. Click virtual void __fastcall Click (void); Simuleaz execuia unui click ca i cum utilizatorul l-ar fi executat. Handlerele asociate cu evenimentul OnClick sunt executate de asemenea. 7.2. TBitBtn imag\im002.jpg Este un buton pe suprafaa cruia se poate pune o imagine. Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TButtonControl-> TButton->TBitBtn. Definit n Buttons.hpp.

33

Pagina Aditional. Proprieti P1. Glyph __property TBitmap *Glyph; Specific imaginea de pe suprafaa unui buton. Glyph poate conine un bitmap ce, la rndul lui poate conine maximum patru imagini, de mrimi apropiate de mrimea imaginii grafice a butonului, care vor fi puse pe buton ntr-una din situaiile de mai jos: prima imagine din list se va pune pe buton atunci cnd acesta este neselectat; a doua imagine va fi pus pe buton atunci cnd acesta nu este accesibil utilizatorului; a treia imagine va fi pus atunci cnd butonul este apsat; a patra imagine nu este utilizat (butoanele de tip TSpeedButton, care sunt descrise mai jos, o utilizeaz). Cele maximum patru imagini pe care le poate conine bitmap-ul ataat lui Glyph sunt de aceeai dimensiune i sunt dispuse pe orizontal n cadrul bitmap-ului respectiv. P2. NumGlyph _property ShortInt NumGlyph; Indic numrul de imagini care se gsesc n bitmp-ul proprietii Glyph. P3. Kind _property TBitBtnKind Kind; Indic tipul butonului. Valorile pe care le poate lua Kind mpreun cu descrierea, eticheta, ModalResult i descriere imagine sunt urmtoarele: Valoare Semnificaie Eticheta ModalResult Descriere imagine Valoare Semnificaie bkAbort Buton de tip Cancel Abort mrAbort Un X rou apare lng titlu bkAll Buton OK cu eticheta All. Toate schimbrile aprute pe forma care conine acest buton sunt acceptate, iar apoi forma este nchis. All
34

Eticheta

ModalResult Descriere imagine Valoare Semnificaie Eticheta ModalResult Descriere imagine Valoare Semnificaie Eticheta ModalResult Descriere imagine

mrAll Un semn dublu de bifare apare lng titlu. bkCancel Buton de tip Cancel Cancel mrCancel Un X rou apare lng etichet. bkClose Buton de tip Default Close mrClose O u de culoarea levnicii cu un semn verde de ieire deasupra. bkIgnore Buton folosit pentru a ignora schimbrile i pentru a continua o aciune specificat. Ignore mrIgnore Un om colorat n verde plecnd.

Valoare Semnificaie Eticheta ModalResult Descriere imagine

Valoare Semnificaie

Eticheta ModalResult Descriere imagine

bkHelp Buton cu eticheta Help. Cnd utilizatorul apas acest buton fiierul help ataat aplicaiei devine activ. Fiierul de Help este specificat n proprietatea HelpFile a lui TAplication. Help. mrHelp. Un semn de ntrebare albastru apare lnga titlu. Folosii handlerul de evenimente al acestui buton pentru a apela un fiier Help. bkCustom O putei folosi pentru a v creea

Valoare Semnificaie

35

propriul buton, pe specificai o imagine. Eticheta ModalResult Descriere imagine Valoare Semnificaie Eticheta ModalResult Descriere imagine Valoare Semnificaie Eticheta ModalResult Descriere imagine Valoare Semnificaie

care

bkRetry Forma nu este nchis, datele introduse de utilizator fiind incorecte. Retry mrRetry O sageata circulara verde. bkOK Buton de tip Default OK mrOk Un semn verde de bifare. bkNo Buton de tip Cancel. Nici una din schimbrile care au intervenit pe forma care conine acest buton nu sunt acceptate, iar forma este nchis. No mrNo Un cerc rou tiat. bkYes Buton de tip Default Yes mrYes Un simplu semn de bifare.

Eticheta ModalResult Descriere imagine Valoare Semnificaie Eticheta ModalResult Descriere imagine P4. Layout __property TButtonLayout Layout;

Indic amplasamentul imaginii fa de textul afiat pe buton. Valori posibile pentru Layout sunt: Valoar Semnificatie e BlGlyp Imaginea apare la stnga textului.

36

hLeft BlGlyp hRight BlGlyp hTop BlGlyp hBotto m P5. Spacing; __property int Spacing;

Imaginea apare la dreapta textului. Imaginea apare deasupra textului. Imaginea apare sub text.

Indic numarul de pixeli dintre textul i imaginea de pe buton. Dac este selectat 0 atunci imaginea ncepe chiar lng text. Dac va fi selectat -1 sau numere mai mici dect -1 atunci imaginea i textul vor fi centrate. P6. Margin __property int Margin; Indic numarul de pixeli dintre marginea butonului i imaginea de pe el. Dac este 0 atunci imaginea ncepe chiar din margine. Dac va fi selectat -1 sau numere mai mici dect -1 atunci imaginea va fi centrat. 7.3 TSpeedButton imag\im003.jpg Este un buton care introduce proprieti ce permite lucrul n comun a mai multor componente de acest tip. Ierarhie TObject->TPersistent->TComponent -> TControl -> TGraphicControl -> TSpeedButton. Definit n buttons.hpp. Pagina Aditional. Proprieti P1. Glyph

37

__property TBitmap *Glyph; Specific imaginea de pe suprafaa unui buton. Glyph poate conine un bitmap ce, la rndul lui poate conine maxim patru imagini, de mrimi apropiate de mrimea imaginii grafice a butonului, care vor fi puse pe buton n cele patru situii n care acesta se poate gsi: prima imagine din list se va pune pe buton atunci cnd acesta este neselectat. a doua imagine va fi pus pe buton atunci cnd acesta nu este accesibil utilizatorului. a treia imagine va fi pus atunci cnd butonul este apsat. a patra imagine este pus cnd butonul se afl n starea apsat (proprietatea Down are valoarea true). Cele maxim patru imagini pe care le poate conine bitmap-ul ataat lui Glyph sunt de aceeai dimensiune i sunt dispuse pe orizontal n cadrul bitmap-ului respectiv. P2. NumGlyph _property ShortInt NumGlyph; Indic numrul de imagini care se gsesc n bitmp-ul proprietii Glyph.

P3. Layout __property TButtonLayout Layout; Indic amplasamentul imaginii fa de textul afiat pe buton. Valori posibile pentru Layout sunt: Valoar Semnificaie e BlGlyp Imaginea apare la stnga textului. hLeft BlGlyp Imaginea apare la dreapta textului. hRight BlGlyp Imaginea apare deasupra textului. hTop BlGlyp Imaginea apare sub text. hBotto m P4. Margin __property int Margin; Indic numarul de pixeli dintre marginea butonului i imaginea de pe el. Dac este 0 atunci imaginea ncepe chiar din margine. Dac va fi selectat -1 sau numere mai mici dect -1 atunci imaginea va fi centrat. P5. Spacing;

38

__property int Spacing; Indic numarul de pixeli dintre textul i imaginea de pe buton. Dac este selectat 0 atunci imaginea ncepe chiar lng text. Dac va fi selectat -1 sau numere mai mici dect -1 atunci imaginea i textul vor fi centrate. P6. GroupIndex __property int GroupIndex; Permite butoanelor s lucreze ca un grup. Dac GroupIndex este 0 atunci butonul se comport independent de celelalte butoane. Dac GroupIndex este mai mare dect zero, atunci butoanele vor fi grupate. Apsarea unui buton dintr-un grup va duce automat la deselectarea (ridicarea ) celorlalte din acelai grup. Mai multe informaii gasii la proprietatea AllowAllUp. P7. AllowAllUp __property bool AllowAllUp; Indic dac toate butoanele din acelai grup pot fi neselectate n acelai timp. Dac AllowAllUp este false atunci n fiecare moment, cel puin un buton din grup este apsat (jos). Setarea valorii lui AllowAllUp pentru un buton din grup va aduce la setarea, cu aceeai valoare, a proprietii AllowAllUp, pentru toate butoanele din grup. P8. Down __property bool Down; Indic dac un buton este jos (apsat). 7.4. TUpDown Este un control ce conine dou sgei folosite pentru a incrementa, sau decrementa o valoare numeric. Acest control se poate asocia cu alt control, de exemplu cu o cutie de editare; pentru ca valoarea numeric (care poate fi incrementat sau decrementat) s poat fi vizualizat. Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TCustumUpDown-> TButton. ->TBitBtn. Definit n

39

Comctrls.hpp. Pagina Win 32. Proprieti P1. AlignButton _property TUDAlignButton AlignButton; Determin poziia controlului UpDown fat de controlul cu care este asociat. Valori posibile pentru AlignButton sunt: udLeft controlul updown se aliniaz la partea din stnga a controlului asociat lui; udRight - controlul updown se aliniaz la partea din dreapta a controlului asociat lui; P2. Associate __propertyTWinControl Associate; Specific un control (de tip fereastr) care este asociat cu controlul TUpDown. n aceast fereastra se va afia valoarea numeric pe care controlul TUpDown o poate modifica (incrementa sau decrementa). De exemplu pentru a asocia un control TUpDown (UpDown) cu o cutie de editare (Edit1) scriem linia: UpDown1->Associate=Edit1; Astfel la lansarea in execuie a aplicaiei, la partea dreapta(implicit) a cutiei de editare(Edit1) ne va aprea un control de tip TUpDown, iar n interiorul cutiei Edit1 ne va aprea 0(implicit), care poate fi mrit sau micorat la fiecare apsare a sgeilor controlului UpDown. P3. Position _property short Position; Indic valoarea curent care este reglat de un control TUpDown. Dac controlul are asociat de o cutie de editare atunci valoarea lui Position este cea afiat n respectiva cutie de editare, deci din interiorul cutiei poate fi prelucrat prin intermediul proprietaii Text a lui TEdit. P4. Increment _property int Increment; Indic numrul de uniti adugate sau sczute la valoarea lui Position, n urma unei apsri a sgeilor controlului TUpDown. Valoarea implicit este 1. P5. Max

40

_property short Max; Indic valoarea maxim pe care o poate lua Position. P6. Min _property short Min; Indic valoarea minim pe care o poate lua Position. P7. Orientation; _property TUDOrientation Orientation; Specific orienatarea controlului. Valori posibile: Valoare udHorizontal udVertical P8. Wrap __property bool Wrap; Specific ce se ntampl cu valoarea lui Position dac aceasta este incrementat peste valoarea lui Max sau decrementat sub valoarea lui Min. Daca Wrap este true, atunci Position daca este incrementat peste valoarea lui Max ia valoarea lui Min, -iar daca este decrementat sub valoarea lui Min ia valoarea lui Max. Daca Wrap este false, atunci incrementarea/ decrementarea valorii lui Position peste/sub Max/Min nu va duce la modificarea acesteia. P9. ArrowKeys __property bool ArrowKeys; Specific dac controlul reactioneaz la comenziile lansate de la sgeile tastaturii. Dac este selectat true, atunci n cazul n care este asociat cu alt control ( de exemplu cu TEdit)- controlul rspunde la comenzile sagetilor sus/jos ale tastaturii. Daca este selectat false atunci asupra controlului se poate actiona doar cu mouse-ul. 8. ETICHETE 8.1. TLabel imag\im004.jpg Este un control fr fereastr folosit pentru a afisa text simplu pe o form. Acest text poate fi folosit pentru a eticheta alte componente.
41

Semnificatie Controlul este aliniat orizontal. Controlul este aliniat vertical.

Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TGraphicControl -> TCustomLabel-> TLabel. Definit n Stdctrls.hpp. Pagina Standard. Proprieti P1. Alignment __property TAlignment Alignment; Controleaz aliniamentul textului fa de marginile din stnga respectiv dreapta ale etichetei. Valori posibile pentru Alignment sunt: Valoa re taLeft Justify taRigh tJustif y taCent er P2. AutoSize __property bool AutoSize; Indic dac dimensiunile etichetei se modific automat, n funcie de dimensiunea textului. Dac AutoSize este false, atunci eticheta are dimensiuni fixe, n caz contrar aceasta se poate acomoda n funcie de nlimea i limea textului. P3. FocusControl; __property TWinControl *FocusControl; Indic componenta asociat cu aceast etichet. Dac este specificat un accelerator pentru etichet, atunci, la apsarea lui controlul FocusControl va primi focus. Un accelerator se Semnificatie Textul apare aliniat de-a lungul marginii stngi a etichetei. Textul apare aliniat de-a lungul marginii drepte a etichetei. Textul apare centrat fa de etichet.

42

specific prin amplasarea unui ampersand nainte de un caracter din textul ataat etichetei. Acest caracter va fi subliniat. P4. ShowAccelChar __property bool ShowAccelChar; Indic cum este interpretat un ampersand. Dac ShowAccelChar este true, atunci orice caracter precedat de un ampersand(&) va fi afiat subliniat, iar ampersandul respective nu va fi afat. Pentru a afia un ampersand cnd ShowAccelChar este true, scriei doi ampersanzi unul lng altul (&&). Dac i FocusControl are atribuit o valoare, atunci dac utilizatorul apas litera subliniat controlul va fi trecut la FocusControl. P5. Transparent __property bool Transparent; Specific dac ceea ce se afl n spatele etichetei poate fi vzut de utilizatori prin aceasta. 8.2. TStaticText Este un control care afieaz un text pe o form i are propria lui fereastr. Comportamentul lui este asemntor cu al lui TLabel, doar ca TStaticText deriv din TWinControl i deci are un handle la fereastr. Ierarhie TObject->TPersistent ->TComponent -> TControl -> TWinControl -> TCustomStaticText-> TStaticText Definit n stdctrls.hpp. Pagina Aditional. Proprieti P1. Alignment __property TAlignment Alignment; Controleaz aliniamentul textului fa de marginile din stnga respectiv dreapta ale etichetei. Valori posibile pentru Alignment sunt: Valoa Semnificaie

43

re taLeft Justif y taRig htJust ify taCen ter P2. AutoSize

Textul apare aliniat de-a lungul marginii stngi a etichetei. Textul apare aliniat de-a lungul marginii drepte a etichetei. Textul apare centrat fa de etichet.

__property bool AutoSize; Indic dac dimensiunile etichetei se modific automat, n funcie de dimensiunea textului. Dac AutoSize este false, atunci eticheta are dimensiuni fixe, n caz contrar aceasta se poate acomoda n funcie de nlimea i limea textului P3. BorderStyile __property TStatic BorderAStyle BorderStyle; Indic felul n care apar marginile controlului. Valori posibile pentru BorderStyle sunt: Valo are sbsN one sbsSi ngle sbsSu nken P4. FocusControl; __property TWinControl *FocusControl; Indic componenta asociat cu aceast etichet. Dac este specificat un accelerator pentru etichet, atunci, la apsarea lui controlul FocusControl va primi focus. Un accelerator se specific prin amplasarea unui ampersand nainte de un caracter din textul ataat etichetei. Acest caracter va fi subliniat. P5. ShowAccelChar __property bool ShowAccelChar; Semnificatie Nu apare nici o margine. Margine format dintr-o singura linie. Margine ridicat.

44

Indic cum este interpretat un ampersand. Dac ShowAccelChar este true, atunci orice caracter precedat de un ampersand (&) va fi afiat subliniat, iar ampersandul respectiv nu va fi afiat. Pentru a afia un ampersand cnd ShowAccelChar este true, scriei doi ampersanzi unul lng altul(&&). Dac i FocusControl are atribuit o valoare, atunci dac utilizatorul apas litera subliniat controlul va fi trecut la FocusControl. 9. CUTII DE EDITARE Cutiile de editare sunt componente n interiorul crora utilizatorul poate scrie text. Principalele componente de editare sunt TEdit, TMaskEdit, Tmemo i TRichEdit. TEdit permite introducerea de text doar pe o singura linie. Textul se stocheaz in proprietatea Text care este de tip AnsiString. TMaskEdit permite validarea textului introdus de utilizator. TMemo permite introducerea de text pe mai multe linii. Textul introdus se stocheaz n proprietatea Lines care este de tip TStrings. TStrings este o list care conine elemente de tip AnsiString. Fiecare element al listei TString este o linie dintr-o component TMemo. TRichEdit este o component care de asemenea permite introducerea de text pe mai multe linii. Spre deosebire de TMemo, textul introdus ntr-o component TRichEdit poate fi formatat. Clasa care conine informaii despre caracteristicile textului dintr-o cutie TRichEdit este TTextAttributes. 9.1. TStrings Este o clas abstract reprezentnd o list de iruri de caractere. Metodele i proprieteile abstracte introduse de TStrings sunt implementate n clasa TStringList. Ierarhie TObject->TPersistent->TStrings Definit n classes.hpp. Proprieti P1. Count __property int Count; Indic numarul de iruri din list. Este o proprietate abstract care trebuie implementat de ctre clasele derivate. P2. Strings

45

__property AnsiString Strings; Strings refer irul cu numarul de ordine Index din list. Primul ir are indexul 0. P3. Text __property AnsiString Text; Text este un ir obinut prin concatenarea tuturor irurilor din list. irurile componente sunt delimitate ntre ele prin CR i LF. Metode M1. Add Virtual int __fastcall Add(const AnsiString S); Adaug un ir la sfritul listei i ntoarce numarul lui de ordine n aceast list. M2. AddStrings Virtual void __fastcall AddStrings(TString *Strings); Adaug o mulime de iruri la sfritul listei curente. M3. Append Void __fastcall Append(const AnsiString S); Adug un ir la sfritul listei. Aceast metod este asemntoare cu Add, singura diferen este c Append nu returneaz numrul de ordine al irului adugat. M4. Clear Virtual void __fastcall Clear (void)=0 Golete o list cu stringuri. Descendenii lui TSrings trebuie sa implementeze aceast metod pentru a terge irurile din list. M5. Delete Virtual void __fastcall Delete (int index)=0; erge irul cu numrul de ordine Index din list. M6. Equals bool __fastcall Equals(TString *Strings);
46

Determin dac dou liste de iruri sunt egale. Intoarce true dac cele dou sunt identice. Intoarce false n urmtoarele cazuri: numrul de iruri din list difer; dou iruri de pe aceeai poziie difer. M7. Exchange Virtual void __fastcall Exchange(int Index1, int Index2); Schimb ntre ele dou iruri din list. Acestea sunt identificate prin poziiile lor n cadrul listei de iruri. M8. IndexOf Virtual int __fastcall IndexOf(const AnsiString S); Returneaz numarul de ordine al unui ir n cadrul listei. Primul ir, din cadrul listei, are numarul de ordine 0. Dac irul nu se gasete n list se returneaza valoarea -1. M9. Insert Virtual void __fastcall Insert( int Index, const AnsiString S); Insereaz irul S, pe pozitia Index n cadrul listei. M10. Move Virtual void __fastcall Move (int Index, intNewIndex); Mut stringul de pe poziia CurIndex pe poziia NewIndex. M11. LoadFromFile Virtual void __fastcall LoadFromFile(const AnsiString FileName) Incarc o list de iruri cu liniile unui fiier avand numele FileName. Fiecare linie din fiier va fi un fiier list. M12. SaveToFile Virtual void __fastcall SaveToFile(const AnsiString FileName) Salveaz irurile dintr-o list ntr-un fiier cu numele FileName. Fiecare string din list va fi pus pe o linie nou n fiier. 9.2. TStringList

47

Implementeaz metodele i proprietile abstracte ale lui TStrings. Totodat introduce metode i proprieti noi. Ierarhie TObject->TPersistent ->TStrings->TStringList Definit n classes.hpp. Proprieti P1. Sorted __property bool Sorted; Indic dac lista de iruri este sortat automat. Daca Sorted este false, atunci irurile pot fi sortate cresctor folosind metoda Sort. Daca Sorted este true atunci metoda Insert ii pierde valabilitatea, n acest caz ns putnd fi folosit metoda Add care adaug irul pe poziia corect astfel nct lista s ramn tot ordonat. P2. Duplicates __property TDuplicates Duplicates; Specific dac iruri duble pot fi adugate la o list sortat. Valori posibile pentru aceast proprietate sunt: Valo are dupIg nore dupE rror dupA ccept Metode M1. Sort Virtual void __fastcall Sort(void); Sorteaz iruri dintr-o lista care are ca proprietate Sorted setat la valoarea false. Semnificatie Nu este permis adaugarea de duplicate n list. Adaugarea n lista a unui ir deja existent genereaz o excepie de clasa EListError Sunt acceptate dubluri de iruri ale listei.

48

9.3. TEdit imag\im005.jpg Este un control care permite afiarea de text ctre utilizator sau permite preluarea textului pe care utilizatorul l tasteaz. Ierarhie TObject->TPersistent->TComponent -> TControl-> TWinControl -> TCustomEdit-> TEdit. Definit n stdclrls.hpp. Pagina Standard. Proprieti P1. AutoSelect __property bool AutoSelect; Dac AutoSelect este true, atunci n momentul n care cutia de editare devine activ, tot textul coninut n ea va fi marcat (selectat), n caz contrar textul nu va fi marcat. P2. AutoSize; __property bool AutoSize; Deterimn dac nlimea cutiei de editare se acomodeaz cu textul din ea. Cu AutoSize true, dimensiunea cutiei se modific dac apare un eveniment care ar determina-o s fac acest lucru. Dac AutoSize este false atunci nlimea cutiei este fix. De exemplu dac mrim fontul cu care este scris textul din interiorul cutiei, iar AutoSize este false, atunci cutia va arta aa: imag\im006.jpg iar dac AutoSize este true atunci la mrimea fontului cutia s-ar acomoda i ea. imag\im007.jpg P3. CharCase __property TEditCharCase CharCase; Determin tipul textului dintr-o cutie de editare. Valori premise pentru CharCase sunt: Valo Semnificatie

49

are ecLo werC ase ecUp perC ase ecNo rmalt

Textul este convertit automat la caractere mici. Textul este convertit la caractere mari. Textul este convertit mixt (caractere mari i mici).

Dac proprietatea CharCase este setat la LowerCase, atunci tentativa de a scrie cu litere mari eueaz, caracterele fiind automat convertite la litere mici. P4. HideSelection __property bool HideSelection; Indic dac marcajul unui text mai este valabil, dup aceea controlul este trecut de alt component. Dac HideSelection este false, atunci chiar dac controlul este la alt component, marcajul unui text din cutia de editare este n continuare vizibil. P5. MaxLenght __property int Maxlenght; Specific lungimea maxim pe care o poate avea un text dintr-o cutie de editare. Dac aceast valoare este 0, atunci nu exist limita privitoare la lungimea textului. In cazul n care lungimea textului, introdus nainte de lansarea n execuie a aplicaiei care conine cutia de editare cu pricina, este mai mare dect MaxLenght textul nu va fi trunchiat. Dac ncercai s introducei un text de lungime mai mare dect MaxLenght nu vei fi lsat. Folosii aceast facilitate pentru a copia textul ntr-un ir de lungime fix. P6. Modified __property bool Modified; Indic dac textul dintr-o cutie de editare a fost modificat. P7. PasswordChar __property char PasswordChar; Indic caracterul care va fi folosit pentru a afia n locul altor caractere. Dac PassswordChar conine caracterul vid, atunci va fi afiat textul normal, n caz contrar fiecare caracter va fi nlocuit cu caracterul din PasswordChar. Aceast facilitate este

50

folosit pentru ca un anumit text s nu fie vzut i de alte persoane. Textul tastat poate fi manipulat bineneles cu proprietatea Text. P8. ReadOnly __property bool ReadOnly; Specific dac utilizatorul poate modifica textul dintr-o cutie de editare. Daca ReadOniy este true, atunci utilizatorul poate doar citi acel text, far a-l putea modifica. P9. SelLenght __property int SelLenght; Indic numrul de caractere care vor fi marcate, ncepnd cu poziia SelStart. Dac SelLenght+SelStart depeste numarul de caractere existent, atunci vor fi marcate toate pn la sfritul textului. P10. SelStart __property int SelStart; Indic poziia primului caracter ce va fi marcat. Primul caracter din text are pozitia 0. Daca nu atribuii lui SelLenght, atunci SelStart va conine poziia cursorului. P11. SelText __property AnsiString SelText; SelText indic textul marcat. Citii aceast valoare pentru a afla textul marcat, sau setai aceast valoare pentru ca textul marcat sa fie nlocuit cu un nou text.

9.4. TMemo imag\im008.jpg

Valoare taLeftJustify taCenter taRightJustify P2. Lines

Semnificaie Textul este aliniat la partea stng a cutiei Textul este aliniat centrat fa de marginile din stanga i dreapta a cutiei. Textul este aliniat la partea dreapt a cutiei.

51

__property TStrings *Lines; Lines conine textul din cutie, sub forma unei liste de stringuri. P3. Scrollbars __property TScrollStyle ScrollBars; Indic dac are scrollbar-uri. Valori posibile pentru Scrollbars sunt: Valoare ssNone ssHorizontal Semnificaie Controlul nu are nici un scrollbar Controlul are un singur scrollbar la marginea inferioar a cutiei. Aceasta va permite defilarea orizontal a textului(n cazul n care limea sa este mai mare dect a cutiei). Controlul are un singur scrollbar la partea dreapt a cutiei. Aceasta va permite defilarea pe vertical a textului din cutie (n cazul n care exist mai multe linii dect sunt posibil de afiat odat n cutie). Controlul are dou scrollbar-uri (orizontal i vertical).

ssVertical

ssBoth

P4. WantReturns __property bool WantReturns Indic dac utilizatorul mai poate introduce caracterul sfrit de linie prin apsarea tastei Enter. Dac WantReturns este false, atunci utilizatorul nu mai poate introduce sfrit de linie tastnd Enter, ci tastnd Ctrl+Enter, iar apsarea tastei Enter este tratat ca un eveniment pentru form. P5. WantTabs __property bool WantTabs; Indic dac utilizatorul poate insera tab-uri n text. Dac WantTabs este false, atunci la apsarea tastei Tab, conrolul este trecut la alt component de pe form. P6. WordWrap; _property bool WordWrap; Specific dac textul care atinge marginea din dreapta a cutiei este rupt pentru a fi trecut la linia urmtoare. Procedeul de rupere a rndurilor const n introducerea unor soft carriage returns, care nu modific numrul de caractere de sfrit de linie reale (introduse de utilizator). Dac WordWrap este true, atunci irurile de caractere mai lungi dect limea cutiei vor fi rupte la partea dreapt i trecute pe rndul urmtor. Dac cutia are scrollbar orizontal, aceast rupere nu se va mai produce.

52

Evenimente E1. OnChange __property TNotifiEvent OnChange; Apare cnd textul din cutia de editare multilinie se schimb. 9. 5. TRichEdit imag\im009.jpg Este un control care afieaz un text n format rich text (rtf). Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl ->TCustomEdit->TCustomMemo-> TCustomRichEdit->TRichEdit. Definit n comctrls.hpp. Pagina Win32 Proprieti P1. HideScrollBars __property boll HideScrollBars; Nu mai afieaz scrollbar-ul atunci cnd nu este nevoie de el (deci textul ncape ntr-o pagin). P2. Lines __property TStrings *Lines; Conine liniile unei cutii cu text rtf. P3. Paragraph __property TParaAttributes *Paragraph; Specific atributele pentru paragraful curent. Paragraful curent este acela care conine textul selectat. Dac nu exist text selectat, atunci paragraful curent este acela care conine cursorul. P4. SelAttributes __property TTextAttributes *SelAttributes; Metode M1. FindText int__fastcall FindText(const AnsiString SearchStr, int StartPost, int Length, TSearch Types Options); Caut textul SeachStr n subsecvena de lungume Length i care ncepe cu litera StartPos. Se poate face o cutare mai special folosind Options, care este o variabil de tip Set, deci poate conine o submulime de valori di urmtoarele posibile: stWholeWord, stMatchCase.
53

M2. Print void__fastcall Print(const AnsiString Caption); Formateaz i tiprete coninutul unei cutii RichEdit. Evenimente E1. OnChangeSelection __property TNotifyEvent OnSelectionChange; Apare cnd o alt poriune de text este selectat. E2. OnProtectChange typedef void__fastcall(_closure *TRichEditProtectChange) (TObject *Sender, int StartPos, int EndPos, AllowChange); _property TRichEditProtectChange OnProtectChange; Apare cnd utilizatorul ncearc s modifice un text protejat.

bool

&

Implemetnd acest eveniment putei modifica poriunile de text protejate. StartPos i EndPos indic poriunea de text asupra creia se vor opera modificri de protecie. Primul caracter din text are numrul de ordine 0. Dac AllowChange se seteaz la true atunci pentru intervalul StartPos. . EndPos se permit modificri n text. 9. 6. TMaskEdit imag\im010.jpg Specific o cutie de editare cu masc. Acest tip de control valideaz textul introdus de ctre utilizator. Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TCustomMaskEdit->TMaskEdit. Definit n Mask.hpp. Pagina Aditional. Proprieti P1. EditMask _property AnsiString EditMask; Reprezint forma textului valid pentru o cutie de editare cu masc. . Acest text va fi validat n momentul introducerii lui. Proprietatea EditMask este folosit pentru a restriciona textul pe care utilizatorul l introduce. D ac aceasta va introduce un caracter invalid, cutia de editare nu va accepta acel caracter.
54

O masc reprezint trei iruri de caractere (cmpuri) separate prin(; ). Prima parte reprezint masca nsi. A doua parte este un caracter care specific dac literalii unei mti sunt salvai mpreun cu aceasta. A treia parte reprezint un caracter care este folosit pentru a specifica caracterele neintroduse (nc) din masc. Caracterele folosite n prima parte a EditMask-ului sunt: Caracter Semnificaie > Dac acest caracter apare ntr-o masc, atunci toate caracterele care urmeaz (pn n momentul n care apare caracterul<)trebuie s fie litere mari. Caracter Semnificaie < Dac acest caracter apare ntr-o masc, atunci toate caracterele care urmeaz (pn n momentul n care apare caracterul <) trebuie s fie litere mici. <> Dac aceste dou caractere apar mpreun, atunci textul va fi reprezentat aa cum l introduce utilizatorul(cu litere mari i mici) \ Caracterul care urmeaz acestui caracter este un literal. Acest caracter este folosit pentru a se utiliza oricare din caracterele speciale ale mtii. L Dac acest caracter apare ntr-o masc, atunci utilizatorul poate s introduc (pe poziia respectiv ) o liter: A-Z, a-z. l A Dac acest caracter apare ntr-o masc, atunci utilizatorul poate s introduc (pe poziia respectiv )o liter: A-Z, a-z. Nu este necesar introducerea literei. Dac acest caracter apare ntr-o masc, atunci utilizatorul trebuie s introduc (pe poziia respectiv ) un caracter alpha-numeric adic o liter: A-Z, a-z, sau ocifr 0-9. Dac acest caracter apare ntr-o masc, atunci utilizatorul poate s introduc (pe poziia respectiv ) un caracter alpha-numeric adic o liter: A-Z, a-z, sau o cifr 0-9. Nu este necesar introducerea caracterului. Utilizatorul poate s introduc un caracter arbitrar pe aceast poziie. Utilizatorul poate s introduc un caracter arbitrar pe aceast poziie. Nu este necesar introducerea caracterului. Utilizatorul trebuie s introduc o cifr pe poziia respectiv. Utilizatorul poate s introduc o cifr pe poziia respectiv. Nu este neaprat necesar introducerea cifrei.

C c 0 9

55

Utilizatorul poate s introduc o cifr pe poziia respectiv. Nu este neaprat necesar introducerea cifrei. # Utilizatorul poate s introduc pe poziia respectiv o cifr sau semnele+ sau-. Nu este neaprat necesar introducerea lor. / Este folosit pentru a separa zilele, lunile i anii. : Este folosit pentru a separa orele, minutele i secundele. ; Este folosit pentru a separa cele trei cmpuri ale unei mti. Acest caracter insereaz automat spaii ntr-un text. Cnd utilizatorul introduce caractere, cursorul trece automat peste caracterul -. Caracterele care nu apar mai sus sunt literale, i ele sunt inserate automat, cursorul trecnd peste ele n momentul editrii. Caracterele care sunt folosite de o masc pot s apar i ele ca i literali, dar cu condiia s fie precedate de caracterul\. Exemple: Masca Exemplu ! \000090000099; 1; _ 045435345542 ! 90/90/00; 1; _ 27/01/97 ! 90: 00: 00>LL; 1; _ 09: 34: 23PM >AAAa; 1; _ 1P2a ! 0000-! 90-90; 1; _ 1997-11-06 ! 99>L<LL\1\900; 1; _ 13Ian 1997 P2. EditText __proprty AnsiString EditText; Indic textul care apare n fereastra cutiei de editare cu masc. P3. IsMasked __property boll IsMasked; Indic dac exist o masc pentru cutia de editare cu masc. Dac nu exist nici o masc, atunci cutia respectiv se va comporta ca o cutie de editare normal. Metode M1. ValidateEdit void__fastcall ValidateEdit(void); Determin dac textul curent introdus este n conformitate cu regulile din EditMask. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd cninutul cutiei se schimb.

56

9. 7. TTextAttributes Reprezint caracteristicile fontului textului marcat dintr-o cutie TRichEdit. Acest obiect poate fi folosit doar n componente care deriv din TCustomRichEdit. Ierarhie TObject->Tpersistent->TTextAttributes. Definit n comctrls.hpp. Proprieti P1. Color __property TColor Color; Specific culoarea textului. P2. Protected _property bool Protected; Indic dac textul reprezentat de TTextAttributes este sau nu protejat mpotriva modificrilor. n caz afirmativ, dac utilizatorul ncearc s l modifice va fi apelat evenimentul OnProtectChange care poate dezafecta protecia. Dac acest handler de eveniment nu exist textul respectiv este de tip readonly. P3. Size _property int Size; Specific nlimea fontului n numr de puncte. P4. Height __property int Height; Specific nlimea fontului n numr de pixeli. Relaia dintre Size i Height este urmtoarea: Height=Size *ScreenPixelsPerInch/72. P5. Style _property TFontStyles Style; Specific modul n care sunt desenate caracterele fontului. Style este o variabil de tip mulime deci are ca valoare o submulime din urmtoarele elemente: Valoare Semnificaie FsBold Text ngroat. fsItalic Text nclinat. FsUnderline Text subliniat. fsStrikeout Text tiat n dou cu o linie orizontal.

57

P6. Pitch __property TFontPitch Pitch; Indic dac toate caracterle fontului au aceeai lime. Valorile permise pentru Pitch sunt: Valoare fpFixed fpVariable fpDefault Semnificaie Toate caracterle au aceeai lime. Acest lucru este folosit la coduri surs. Caracterele au lime variabil. Acest lucru este util la editare de texte. Limea caracterelor depinde de font.

P7. ConsistentAttributes __property TConsistentAttributes ConsistentAttributes; Indic care din proprietile obiectului TTextAttributes sunt valabile pentru textul curent selectat. Tipul TConsistentAttributes este definit astfel: enum TConsistentAttribute { caBold, caColor, caFace, caItalic, caSize, caStrikeOut, caUnderline, caProtected }; typedef Set<TconsistentAttribute, caBold, caProtected> TConsistentAttributes; 10. COMPONENTE PENTRU OPIUNI Componentele de opiuni sunt TRadioButton i TCheckBox. Ele afieaz ctre utilizator o mulime de opiuni dintre care aceasta trbuie s aleag. Diferena dintre cele dou componente const n numrul de opiuni pe care utilizatorul le poate selecta. Pe o form se pot afla oricte componente TCheckBox n starea bifat, dar dintre componentele TRadioButton aflate pe o form doar una dintre ele poate fi selectat la un moment dat. Determinarea dac o component este bifat(selectat) se face la fel: cu ajutorul proprietii Checked. Componenta TCheckBox mai are n plus nc o stare: starea grayed. 10.1. TRadioButton imag\im011.jpg Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TbuttonControl->TradioControl. Definit n stdctrls.hpp.

58

Pagina Standard. Proprieti P1. Alignment __property TLeftRight Alignment; Determin poziia textului ataat butonului fa de aceasta. Posibile valori pentru Alignment sunt: Valoare taLeftJustify taRightJustify Semnificaie Textul apare la partea stng a butonului. Textul apare la partea dreapt a butonului.

P2. Checked __property bool Checked Determin dac un buton este selectat. Valori posibile pentru Checked sunt: Valoare Semnificaie true Un disc negru apare n interiorul butonului, indicnd faptul c acesta a fost selectat. false Nici un disc negru nu apare n interiorul butonului, deci acesta nu este selectat. Un singur buton de radio neselectat (Checked este false)poate fi selectat (Checked s devin true)la executarea unui click pe el. Un singur buton de radio selectat(Checked estetrue)nu poate fi deselectat (Checked s fiefalse)la executarea unui click pe el. 10.2. TCheckBox imag\im012.jpg Ierarhie TObject->TPersistent-TComponent-TControl-> WinControl->TButtonControl->TCustomCheckBox->TCheckBox. Definit n stdctrls.hpp. Pagina Standard. Proprieti P1. Alignment __property TLeftRight Alignment;

59

Specific poziia textului ataat cutiei fa de cutie. Valori posibile pentru Alignment sunt: Valoare Semnificaie taLeftJustify Textul apare la partea stng a butonului. taRightJustify Textul apare la partea dreapt a butonului. P2. AllowGrayed __property bool AllowGrayed; Indic dac cutia de control permite i starea grayed. Dac AllowGrayed este true, atunci cutia de control poate avea trei valori: check(bifat), uncheck(nebifat), grayed(gri). Dac AllowGrayed este false, atunci cutia de controlpoate avea doar dou stri: check i uncheck. Dac cutia de control se afl n starea grayed, atunci un semn de marcare va apare totui n ea, dar acest semn va avea culoarea diferit (gri) de cel care apare n starea bifat. P3. Checked __property bool Checked; Indic dac cutia de control este bifat. Dac Checked este true, atunci semnul de marcare apare n cutie, n caz contrar cutia se poate gsi n starea nebifat sau n starea grayed (dac AllowGrayed este true). P4. State __property TcheckBoxState State; Indic starea cutiei de bifare. Valori posibile pentru State sunt: Valoare Semnificaie CbChecked Specific dac cutia este bifat (utilizatorul a selectat o opiune). n ea va apare un semn de bifare. CbUnchecked Cutia nu este bifat. cbGrayed Cutia nu se afl nici n starea bifat, nici n starea nebifat. n cutie apare un semn de bifare avnd culoare diferit (gri) de culoarea semnului folosit pentru starea bifat. 11. GRUPURI DE COMPONENTE 11.1. TGroupBox imag\im013.jpg Este folosit pentru a grupa componentele de pe o form. Cnd o nou component este adugat la TGroupBox, acesta devine printele ei. Ierarhie TObject->Tpersistent->Tcomponent->TControl-> TWinControl->TCustomControl->TCustomGroupBox->TGroupBox Definit n

60

Extctrls.hpp Pagina Standard 11.2. TRadioGroup imag\im014.jpg Reprezint un grup de butoane radio care funcioneaz mpreun. Pentru a aduga butoane la TRadioGroup folosii proprietatea Items. Prin intermediul acesteia se specific textul ataat fiecrui buton de radio. Contrar unei impresii de moment, proprietatea Items nu pointeaz spre elemente de tip TRadioButton. Elementele ei nu sunt dect nite simple iruri de caractere ce identific eticheta ataat fiecrui buton radio. Cu ajutorul proprietii ItemIndex se poate determina care buton este activ la un moment dat. Butoanele radio, de obicei sunt grupate. Ele pot fi grupate n cinci moduri: -pe o form; -ntrt-un TRadioGroup; -ntr-unTGroupBox; -ntr-un TscrollBox; -ntr-unTPanel. Mai multe butoane aflate n acelai grup nu pot avea starea de activ (un punct negru apare n mijlocul butonului respectiv) n acelai timp. Doar unul dintre ele se poate afla n starea de setat, celelalte fiind atunci nesetate. Dou butoane de pe o form se pot afla n acelai timp n starea setat, doar dac fac parte din grupuri diferite. Ierarhie TObject->Tpersistent->TComponent->TControl->TWinControl-> TCustomControl->TCustomGroupBox->TCustomRadioGroup->TRadioGroup. Definit n stdctrls.hpp. Pagina Standard. Proprieti P1. Columns __property int Columns; Specific numrul de coloane pe care sunt aezate butoanele de radio. Columns poate avea valori de la 1 la 16. Dac Columns este 1, atunci toate butoanele sunt aranjate pe o singur linie vertical. P2. ItemIndex _property int ItemIndex; Specific numrul de ordine al itemului (butonului radio) selectat. Primul buton are numrul de ordine 0. Dac nici un buton nu este selectat, atunci ItemIndex are valoarea 1.
61

P3. Items _property TStrings *Items; n Items este reinut lista butoanelor de radio din TRadioGroup. Prelucrarea butoanelor nseamn de fapt prelucrarea unei componente TStrings. Metode M1. CanModify virtual bool __fastcall CanModify (void); Determin dac utilizatorul poate selecta un alt buton de radio dintr-un grup. Aa cum este implementat n TRadioGroup mrtoda ntoarce ntotdeauna true. Programatorii o pot suprascrie pentru a returna i valoarea false n anumite situaii, cnd utilizatorul nu are voie s selecteze anumite butoane. 11.3. TCheckListBox Este o list de itemuri care au fiecare n partea stng cte o cutie de bifare. Manipularea listei de itemuri se face n acelai fel ca i la TListBox. Ierarhie TObject->Tpersistent->TComponent->TControl-> TWinControl->TCustomListBox->TCheckListBox Definit n Checklst.hpp Pagina Aditional Proprieti P1. AllowGrayed __property bool AllowGrayed; Indic dac cutia de control permite i starea grayed. Dac AllowGrayed este true, atunci cutia de control poate avea trei valori: check(bifat), uncheck(nebifat), grayed(gri). Dac AllowGrayed este false, atunci cutia de controlpoate avea doar dou stri: check i uncheck. Dac cutia de control se afl n starea grayed, atunci un semn de marcare va apare totui n ea, dar acest semn va avea culoarea diferit (gri) de cel care apare n starea bifat. P2. Checked __property bool Checked[int Index]; Este un vector care indic pentru fiecare item al componentei TCheckListBox dac este bifat sau nu. Dac Checked[i] este true, atunci semnul de marcare apare n cutie (n dreptul itemului i ), n caz contrar cutia

62

se poate gsi n strea nebifat sau n starea grayed(dac AllowGrayed este true). P3. State __property TCheckBoxState State[int Index]; Indic starea itemului Indexdin cutia de bifare. Valori posibile pentru State[i] sunt: Valoare cbChecked cbUnchecked cbGrayed Semnificaie Specific dac itemul este bifat. n dreptul lui va apare un semn de bifare. Itemul nu este bifat. Itemul nu se afl n starea bifat, nici n starea nebifat. n cutie apare un semn de bifare avnd culoare diferit(gri) de culoarea semnului folosit pentru stare bifat.

Evenimente E1. OnClickCheck; __property TNotyfyEvent OnClickCheck; Apare cnd utilizatorul bifeaz sau debiteaz un item din componenta TCheckListBox. 12. COMPONENTA TTrackBar (Bara cu cursor) 12.1. TTrackBar imag\im015.jpg

Este o component care conine un cursor care se poate mica pe o rigl marcat. Acest cursor poate fi micat la timpul execuiei programului prin introducerea n codul programului a unor instruciuni pentru modificarea proprietii Position sau n mod interactiv cu ajutorul mouse-ului, cu ajutorul tastelor Up, Down, PgUp, PgDown. Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TTrackBar. Definit n comctrls.hpp. Pagina Win32. Proprieti P1. Position __property int Position;

63

Indic poziia curent a cursorului pe rigl. Aceast poziie poate lua valori doar n intervalul[Min. . Max]. P2. Max __property int Max; Indic poziia maxim pe care o poate avea cursorul. P3. Min __property int Min; Indica poziia minim pe care o poate lua cursorul. P4. Frequency __property int Frequency; Specific din cte n cte uniti s apar marcajele pe rigl. O rigl este mprit n Max-Min+1 uniti. Dac Frequency este 1, atunci pentru fiecare unitate ar fi desenat cte un marcaj. Dac Frequency este 2, atunci cte un marcaj este desenat la fiecare dou uniti. P5. LineSize __property int LineSize; Specific cu cte poziii se va mica cursorul cnd sunt apsate tastele PageUp, sauPageDown. P6. PageSize __property int PageSize; Specific numrul de poziii cu care se va mica cursorul cnd sunt apsate tastele PageUp, sau PageDown. P7. Orientation __property TTrackBarOrientation Orientation; Specific orientarea TrackBar-ului. Valori posibile pentru Orientation sunt: Valoare Semnificaie TrHorizontal TrackBar-ului este orientat orizontal cu Min la stnga lui Max. TrVertical TrackBar-ul este orientat vertical cu Min dreapta lui Max. P8. TickMarks __property TTickMark TickMarks; Un cursor poate fi nsoit opional de ctre o rigl marcat. TickMarks specific tipul de poziia riglei fa de cursor. Valori posibile pentru TickMarks sunt: Valoare Semnificaie tmBottomRight Marcajele se afl sub cursor sau la dreapta cursorului, acest lucru depinznd de proprietatea Orientation. tmTopLeft Marcajele se afl deasupra sau la stnga cursorului, acest lucru depinznd de proprietatea Orientation. tmBoth Marcajele se afl de ambele pri ale cursorului.

64

Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd poziia cursorului se schimb. 13. COMPONENTA PENTRU PROGRESUL EXECUIEI 13.1. TProgressBar imag\im016.jpg O component TProgressBar indic n mod vizual progresul unei operaii n execuie. Pe msur ce aplicaia se execut, componenta TProgressBar se coloreaz, de la stnga la dreapta, cu culoarea standard exprimat de constanta clHightLight. Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TprogressBar. Definit n comctrls.hpp. Pagina Win32. Proprieti P1. Position __property TProgressRange Position; Reprezint poziia curent a dreptunghiului de progres. P2. Max __property TProgressRange Max; Reprezint valoarea maxim pe care o poate lua Position. P3. Min __property TProgressRange Min; Reprerzint valoarea minim pe care o poate lua Position. 14. COMPONENTE DE STARE 14.1. TStatusBar imag\im017.jpg Reprezint o bar amplasat de obicei n partea de jos a ferestrei - i care afieaz informaii despre aplicaia n curs de execuie. Spre exemplu n bara de acest tip aplicaia Microsoft Word afieaz: numrul paginii curente, numrul de pagini din documentul curent, poziia cursorului etc. Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TStatusBar. Definit n

65

Comctrls.hpp Pagina Win32. Proprieti P1. Panels __property TStatusPanels *Panels; Informaia pe un TStatusBar este afiat n panouri (engl. panels) aliniate de obicei la stnga. Proprietatea Panels este o colecie de astfel de panouri. La momentul proiectrii aplicaiei se poate seta numrul panourilor i caracteristicile lor, folosind proprietatea Panels din Object Inspector. Pe ecran va apare: imag\im018.jpg imag\im019.jpg Folosind StatusBarPanlsEditor se pot insera i terge panouri. Totodat panourilor li se poate seta limea, textul care s apar n ele, etc. P2. Canvas __property Tcanvas *Canvas; Furnizeaz acces la suprafaa de desenare a unei componente de tip TstatusBar. P3. SinglePanel __property bool SimplePanels; Indic dac componenta de tip TstatusBar are unul sau mai multe panouri. P4. SimpleText __property AnsiString SimpleText; Reprezint textul care va fi afiat n panoul componentei de tip TstatusBar, cnd aceasta are proprietatea SinglePanel setat la true. Evenimente E1. OnResize __property TNotifyEvent OnResize;

66

Apare cnd componenta de tip TstatusBar este redimensionat la momentul execuiei aplicaiei. E2. OnDrawPanel __property TDrawPanelEvent OnDrawPanel; Apare cnd o component de tip TstatusPanel trebuie redesenat. Tipul TDrawPanelEvent este definit astfel: typedef void __fastcall (_closure *TDrawPanelEvent) (TstatusBar *StatusBar, TstatusPanel *Panel, const Trect &Rect); Rect reprezint noua dimensiune a componentei de Panel de tip TstatusPanel. Acesta apare doar dac proprietatea Style a componentei Panel este setat la PsOwnerDraw. 14.2. TStatusPanels Este o colecie de obiecte de tip TStatusPanel. Ierarhie TObject->TPersistent->TCollection -> TStatusPanels. Definit n Comctrls.hpp Proprieti P1. Items __property TStatusPanel *Items[ int Index]; Este o list indexat cu panourile din colecie. Pentru a afla numrul acestora se poate folosi proprietatea Count a lui TCollection. Metode M1. TStatusPanels __fastcall TStatusPanels(TstatusBar *StatusBar);

67

Este constructorul clasei. M2. Add TstatusPanels *__fastcall Add (void); Adaug o component de tip TStatusPanels la o component de tip TStatusBar. Sunt atribuite valori impicite pentru noul panou. Proprietile lui pot fi setate mai trziu accesndul prin intermediul vectorului Items. 14.3. TStatusPanel Reprezint un singur panou dintr-o component de tip TStatusBar. Ierarhie TObject->TPersistent->TCollectionItem -> TStatusPanel. Definit n Comctrls.hpp Proprieti P1. Alignement __property TAlignment Alignment; Specific cum este afiat textul n interiorul unui panou. Valori posibile pentru aceast proprietate sunt: taLeftJustify, taRightJustify, taCenter. P2. Bevel __property TstatusPanelBevel Bevel; Indic tipul marginii panoului. Valori posibile pentru Bevel sunt: Nume pbNone pbLowered pbRaised P3. Text Semnificaie Panoul nu are nici o margine i pare plat. Panoul are o margine care creeaz impresia c panoul este scobit. Panoul are o margine care creeaz impresia c panoul este ridicat.

68

_property AnsiString Text; Indic textul afiat n panou, dac valoarea proprietii Style este psText. P4. Style _property TStatusPanelStyle Style; Indic felul n care este afiat textul din panou. Valori posibile pentru Style sunt: Nume psText psOwnerDra w P5. Width __property int Width; Indic dimensiunea, n numr de pixeli, (pe orizontal ) a panoului. Semnificaie n panou este afiat irul ataat proprietii Text. Coninutul panoului va fi desenat la momentul execuiei aplicaiei prin intermediul handlerului de evenimente TStatusBar: OnDrawPanel.

15. CONTROLUL MULTIPAGIN 15.1. TPageControl imag\im020.jpg Permite utilizatorului s foloseasc multiple pagini de dialog. Crearea unei noi pagini n cadrul actualului TPageControl se face (la momentul proiectrii aplicaiei) prin click dreapta pe TPageControl-ul respective iar apoi selectarea comenzii NewPage. Fiecare nou pagin se comport ca o form n sensul c pe ea se pot pune componente. Pentru fiecare pagin va apare n partea de sus a lui TPageControl cte un tab prin a crui apsare pagina ataat lui va deveni vizibil. O pagin este un obiect de tipul TTabSheet. Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TCustomTabControl->TPageControl Definit n

69

Comctrls.hpp Pagina Win32. Proprieti P1. ActivePage __property TtabSheet *ActivePage; Indic pagina activ. Prin setarea acestei proprieti ActivePage va deveni pagina vizibil. P2. PageCount __property int PageCount; Numr paginile din TPageControl. P3. Pages __property TtabSheet *Pages[int Index]; In Pages se afl toate paginile lui PageControl. Prin intermediul lui Index se poate accesa fiecare pagin n parte. P4. HotTrack __property bool HotTrack: Indic dac textul nscris pe un tab se lumineaz cnd cursorul de mouse trece pe deasupra lui. P5. MultiLine __property bool MultiLine; Indic dac este permis afiarea tab-urilor pe mai multe linii. In caz contrar, i dac lungimea total a tab-urilor este mai mare dect cea a TPageControl-ului, dou sgei i vor permite utilizatorului s navigheze printer tab-uri. P6. TabPosition

70

__property TTabPosition TabPosition; Indic poziia unde s apar tab-urile unuiTPageControl. Valori posibile pentru TabPosition sunt tpTop i tpBottom.

Metode M1. FindNextPage TtabSheet *_fastcall FindNextPage(TtabSheet *CurPage, bool GoForward, bool CheckTabVisible); Returneaz urmtoarea (precedenta) pagin din cadrul lui TPageConrol. Dac GoForward este true, se va returna o pagin aflat dup curenta, n caz contrar una aflat naintea celei curente. Dac CheckTabVisible este true se va cuta printer paginile care au proprietatea TabVisible true, n caz contrar lundu-se n calcul toate paginile existente. M2. SelectNextPage void__fastcall SelectNextPage(bool GoForward); Permite utilizatorului s selecteze urmtoarea pagin. GoForward are aceeai nsemntate ca la proprietatea precedent. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd un nou tab (component de tip TTabSheet) este selectat. E2. OnChanging __property TTbChangingEvent OnChanging Apare exact nainte de a se selecta o nou pagin. Tipul TtabChangingEvent este definit astfel: typed void _ fastcall (_ closure *TTabChangingEvent) (TObject *Sender, bool &AllowChange); AllowChange indic dac este permis sau nu selectarea acelei pagini. 15.2. TTabSheet Este o pagin individual a lui PageControl

71

Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TTabSheet Definit n Comctrls.hpp Proprieti P1. PageControl __property TpageControl *PageControl Indic componenta de tip TPageControl care conine TTabSheet-ul. P2. PageIndex __property int PageIndex; Furnizeaz acces la numrul de ordine al unei pagini din cadrul lui TPageControl. P3. TabIndex __property int TabIndex; Indic numrul de ordine al tabului paginii curente din cadrul unui vector de taburi vizibile. P4. TabVisible __property bool TabVisible; Indic dac tab-ul obiectului TTabSheet este vizibil n TPageControl. Metode M1. TTabSheet __fastcall virtual TTabSheet(Tcomponent *AOwner); Este constructorul clasei. M2. ~TTabSheet

72

__fastcall virtual ~TTabSheet (void); Este destructorul clasei. Evenimente E1. OnHide _ property TNotifyEvent OnHide; Apare cnd proprietatea Visiblea a paginii este setat la false. E2. OnShow

__property TNotifyEvent OnShow; Apare cnd proprietatea Visible a paginii este setat la true. 16. COMPONENTE DE DEFILARE 16.1. TControlScrollBar Indic felul n care sunt afiate i opereaz scrollbar-urile ataate unei componente. Exemple de astfel de componente care admit defilri ale suprafeei lor sunt TForm i TScrollBox. Ierarhie TObject->TPersistent->TControlScrollBar Definit n forms.hpp Proprieti P1. Size __property int Size; Specific limea (n cazul unui scrollbar vertical), respectiv nlimea (n cazul unui scrollbar orizontal), n pixeli.cealalt dimensiune este stabilit automat n funcie de fereastra la care i este ataat scrollbar-ul. P2. ButtonSize __property int ButtonSize;

73

Specific dimensiunea butoanelor cu sgei ale scrollbar-ului. In cazul unui scrollbar vertical ButtonSize indic nlimea acestor butoane, iar n cazul unui scrollbar orizontal ButtonSize indic limea acestor butoane. P3. ThumbSize __property int ThumbSize; Specific lungimea de defilare.

P4. Color __property TColor Color; Indic culoarea scrollbar-ului. P5. Increment __property Word Increment; Specific numrul de pixeli cu care se deplaseaz butonul de defilare n cazul n care utilizatorul apas unul din cele dou butoane cu sgei. Dac proprietatea Smooth este true atunci Increment nu este luat n considerare. P6. Kind __property TScrollBarKind Kind; Indic tipul scrollbar-ului. Valori posibile pentru Kind sunt: Valoare sbHorizontal sbVertical Semnificatie ScrollBar orizontal. ScrollBar vertacal.

P7. Margin _property Word Margin; Specific numrul minim de pioxeli care despart o component aezat pe o suprafa defilabil de aceasta pentru ca scrollbar-ul sa fie afiat. De exemplu pentru o form aceast valoare este setat la 0, ceea ce nseamna ca scrollbar-ul va fi afisat doar n momentul n care controlul este amplasat chiar la marginea formei (sau mai la dreapta,respectiv jos). Daca din contra setm aceast prioprieate la 100,atunci orice ncercare de a amplasa o component n suprafaa de 100 pixeli lime (respectiv nlime) de la marginea din dreapta,(respectiv jos) a formei se va solda cu afiarea scrollbar-ului, chiar dac aceste componente sunt vizibile n ntregime. P8. Range __property int Range Indic ct de mare este raza de defilare a unui control. Daca Range este mai mica dect nlimea (pentru scrollbar vertical),respectiv ltimea
74

(pentru scrollbar orizontal) controlului asociat(TForm sau TScrollingWindow) atunci scrollbar-ul nu este afiat. n caz contrar distana real (valoarea proprieti Position) pe care o poate parcurge butonul de defilare este diferena de dintre valoarea proprietii Range i dimensiunile ferestrei defilabile. Valoarea acestei proprieti este setat automat la dimensiunile ferestrei defilabile, dar poate fi modificat fie din Object Inspector fie la momentul execuiei. P9. Position __property int Position Este o valoare cuprins ntre 0 i Range indicnd poziia butonului de defilare. P10. TRacking __property bool TRacking; Indic dac forma (sau controlul defilabil) este redesenat atunci cnd butonul de defilare al scrollbar-ului este tras cu ajutorul mouse-ului. Setarea acestei proprieti la true este util atunci cnd dorim s defilm o imagine. Dac setm aceast proprietate la false atunci suprafaa controlului defilabil nu va fi redesenat dect dup eliberarea butonului de mouse. P11. Visible _property bool Visible; Indic dac scrollbar-ul va deveni vizibil cnd un control depete grania setat prin valoarea proprietii Margine. Dac Visible este false atunci scrollbar-ul nu va fi afiat niciodat. 16.2. TScrollingWinControl Este o clas din care deriv componentele ce permit defilarea suprafeei lor. Exemple de astfel de componente sunt TForm i TScrollBox. Ierarhie TObject->TPesistent->TComponent->TControl-> TWinControl->TScrollingWinControl. Definit n forms.h pp. Proprieti P1. AutoScroll __property bool AutoScroll; Indic dac scrollbar-urile apar automat n cazul n care fereastra nu este suficient de mare pentru a afia toate controalele amplasate pe ea.

75

P2. HorzScrollBar __property TControlScrollBar*HorzScrollBar; Reprezint scrollbar-ul orizontal ataat unei ferestre care are capaciti de defilare. P3. VertScrollBar _property TControlScollBar*VertScrollBar; Reprezint scrollbar-ul vertical ataat unei ferestre care are capaciti de defilare. Metode M1. ScrollInView void__fastcall TScrollInView(TContol *AControl); Defileaz coninutul ferestei astfel nct controlul AControl s devin vizibil. 16.3. TScrollBar imag\im021.jpg Este o component care permite defilarea coninutului unei ferestre,forme sau control. Acest control are un cursor sub forma unui ptrat denumit i tab,care se poate deplasa n sus i n jos, respectiv spre stnga i spre dreapta(n funcie de tipul defilrii dorite). Ierarhie TObject->TPersistent->TComponent->TControl-> TWinCntrol->TScrllBar. Definit n stdctrls.h pp. Pagina Standard. Proprieti P1. Kind _property TScrollBarKind; Indic tipul scrollbar-ului. Valori posibile pentru Kind sunt: Valoare sbHorizontal sbVertical P2. Semnificatie ScrollBar orizontal. ScrollBar vertacal.

Max _property int Max; Indic numrul maxim de poziii pe care tabul scrollbar-ului l poate avea n cadrul unui scrollbar.

76

P4.

Min _property int Min; Indic numrul minim de poziii pe care tabul scrollbar-ului l poate avea n cadrul unui scrollbar. P5. Position __property int Position; Indic poziia tabului de scrollbar n cadrul scrollbar-ului.

P6.

LargeChange __property TScrollBarInc LargeChange; Indic ct de departe se misca scrollbar-ul cnd utiliztorul execut un click pe fiecare suprafee din stnga sau dreapta tabului de scrollbar, sau apas tastele PgUp sau PgDown. P7. SmallChange __property TScrollBarInc SmallChange; Indic ct de departe se mic tabul scrollbar-ului cnd utilizatorul execut un click pe pe fiecare sgeat (de sus sau de jos, respectiv de stnga sau de dreapta) a cutiei de scrollbar. LargeChange indic numrul de poziii cu care se va mica cutia de scrollbar n sus sau n jos, atunci cnd se execut click pe sgeile scrollbar-ului, sau se apas sgeata n sus sau n jos. Evenimente E1. OnScroll __property TScrollEvent OnScroll; Apare cnd utilizatorul defileaz aceast component. E2. OnChange __property TNotifyEvent OnChange; Apare imediat dup ce s-a modificat valoarea proprietii Position. 16.4 TScrollBox imag\im022.jpg Este o component folosit pentru a defila o suprafa. Pe aceast suprafa se pot aeza alte controale care pot deveni vizibile doar la defilarea acestei suprafee. Ierarhie

77

TObject-> TPersistent-> TComponent TScrollingWinControl -> TScrollBox. Definit n Forms.hpp. Pagina Aditional Proprieti P1. AutoScroll __property bool AutoScroll;

->

TControl

->

TWinControl

->

Specific dac scrollbar-urile vor aprea automat n momentul n care este nevoie de ele pentru a defila suprafaa. n cazul n care AutoScroll este false, folosii proprietile HorzScrollBar sau VertScrollBar pentru ca respectivele scrollbar-uri s apar. Evenimente E1. OnResize __property TNotifyEvent OnResize; Apare cnd o component TScrollBox este redimensionat. 17. MENIURI Componentele de meniu permit ataarea unui meniu la o form (TMainMenu) sau la o component (TPopUpMenu). Componenta TMainMenu ncapsuleaz bara principal de meniu mpreun cu meniurile drop-down ataate ei. Componenta TPopUpMenu ncapsuleaz un meniu popup (care apare la click dreapta pe o component). Un meniu este alctuit din itemuri de meniu care sunt obiecte de clasa TMenuItem. Accesarea unui item de meniu se face cu ajutorul proprietii Items a TMainMenu i TPopUpMenu. 17.1. TMenu Este clasa de baz pentru meniuri Windows. Din ea deriva TMainMenu i TPopUpMenu.

78

Ierarhie TOject-> TPersistent-> TComponent -> TMenu. Definit n menus.hpp. Proprieti P1. Items __property TMenuItem* Items; Specific item-urile unui meniu. Aceast proprietate este util dac dac dorim s prelucrm meniul n timpul execuiei programului. n momentul proiectrii aplicaiei proprietatea poate fi editat din Object Inspector. P2. Handle __property Hmenu Handle; Este handler-ul la meniu. P3. WindowHandle __property HWND WindowHandle; Este handle-ul la fereastra care folosete acest meniu.
17.2.

TMainMenu imag\im023.jpg

ncapsuleaz o bar de meniu mpreun cu menurile drop-down. Unitatea de baz la un meniu sunt item-urile. De exemplu bara principal de meniu sunt item-urile (File, Edit, Search, View, Run, Project, Component, DataBase, Workgrops, Tools, Optins, Help), iar meniul File are item-uri precum: New, Open, Save, Save As, Pentru a ataa un meniu unei forme, la timpul proiectarii aplicaiei, punei pe form o component de tip TMainMenu, apoi executai dublu clic pe ea, sau selectai Object Inspector | Items, apoi efectuai clic pe butonul de afiare a dialogului ataat, ca n figura de mai jos. imag\im024.jpg Pe ecran va aprea fereastra de dialog a unui utilitar care v va ajuta la crearea unui meniu: imag\im025.jpg

79

Precum vedei exist un cmp marcat, unde putei introduce un nume de item (meniu) principal. S-l denumim File (n Object Inspector, care va avea aspectul artat n figura urmtoare imag\im026.jpg setai proprietatea Caption la valoarea File), aa cum se arat n urmtoarea figur. imag\im027.jpg Pe ecran va aprea: imag\im028.jpg Exist un cmp marcat pentru adugare de item-uri (submeniuri) la meniul File, i un cmp pentru adugarea unui nou item n bara de meniu, deci pe acelai nivel cu File. Lucrurile evolueaz de aici ncolo tot aa, la fiecare pas avei posibilitatea fie s adugai un nou item la bara principal, fie s adugai un item (submeniu) la unul din meniurile existente. Pentru a aduga un item la un subitem existent excutai click dreapta pe respectivul submeniu i alegei Create Submenu. Pentru a insera un item se execut click dreapta pe itemul naintea cruia se dorete inserarea i apoi se apasa Insert. Pentru a terge un item poziionai-v pe el i apoi apsai tasta Delete. Item-urile din bara principal de meniu se acceseaz cu ajutorul proprietii Menu (care este de tip TMainMenu) a lui TForm. Item-urile (submeniurile) se acceseaz cu ajutorul proprietii Items a lui TMainMenu. Fiecare item este o component C++Builder, deci aceasta i va da automat un nume. Acest nume se formeaz adugnd la titlu un numr. De exemplu dac pe form nu mai exist alt component cu numele File, atunci item-ul care se vede n imaginile de mai sus va primi numele de File1. Dac exist mai multe item-uri (componente) cu acelai titlu, ele vor primi n ordinea crerii numele File1, File2, Ierarhie TObject->TPersistent->TComponent->TMenu->TMainMenu. Definit n menus. hpp. Pagina Standard. Proprieti P1. AutoMerge __property bool AutoMerge; Indic dac meniurile de pe alte forme pot fuziona cu meniul de pe forma principal (Form1). Dac dorii ca un meniu de pe o alt form s fuzioneze, n momentul n care aceast form devine activ, cu meniul de pe foma
80

principal, atunci setai proprietatea acestuia (de pe forma secundar) la true. n toate cazurile avei grij ca proprietatea AutoMerge pentru meniul formei principale sa rmn false. Modul n care fuzioneaz meniurile este controlat cu ajutorul proprietii GroupIndex a lui TMenuItem. S presupunem c pe forma principal (Form1) avem o bar de meniu cu itemurile File, Edit, View i Help, iar pe forma secundar (Form2) avem o bar de meniu cu item-urile Run, Compile, Tools i Window. Aceste meniuri le-am creat la momentul proiectrii aplicaiei. Pe forma Form1 mai avem un buton Button1 care va face foma Form2 activ. n urma execuiei programului de mai jos meniul formei Form1 dup apsarea butonului Button1 va avea urmtoarele item-uri astfel: File, Run, Compile, Tools, Windw. Valorile proprietilor obiectelor de forma Form1 sunt: Handlerele de evenimente ale componentelor formei Form1 sunt: Metode M1. Merge void__fastcall Merge(TMainMenu *Menu ); Combin meniul principal al unei forme cu meniul principal al altei forme. Menu este meniul celeilate forme. M2. Unmerge void__fastcall Unmerge(MainMenu *Menu); Este inversa operaiei Merge. FindItem TmenuItem*_fastcall FindItem(int Value,TFindItemKind Kind); Gsete un item i l returneaz. Aceast metod este util pentru a cuta un anumit item ntr-un mediu (inclusiv n submeniuri). Meniul poate fi identificat prin unul din urmatoarele trei lucruri : shortcut, identificatorul mesajului WM_COMMAND, handle. Valori posibile pentru Kind sunt: fkCommand, fkHandle ,fkShortCut .

M3.

17.3. TPopupMenu imag\im029.jpg


Componenta TPopupMenu ncapsuleaz un meniu popup (care apare la click dreapta pe o component) . Un meniu popup se poate ataa unei componente care are proprietatea PopupMenu.Totodat un meniu popup poate fi afiat ntr-o poziie specific cu ajutorul metodei Popup. Ierarhie TObject->TPersistent->TComponent->TMenu->TPopupMenu .

81

Definit in menus.hpp. Pagina Standard. Proprieti P1. Alignment __property TPopupAlignment Alignment ; Specific poziia unde apare cnd utilizatorul execut click dreapta pe un control. Valori posibile pentru Alignment sunt: Valoare paLeft paCenter paRight Implicit este paLeft . P2. AutoPopup __property bool AutoPopup ; Specific dac meniul popup apare cnd se execut click dreapta pe o component . P3. PopupComponent __property Tcomponent *PopupComponent ; Indic ultima component care a afiat meniul popup. Un meniu popup poate fi afisat la mai multe controale, cu ajutorul proprietii PopupMenu a lui TControl . Semnificaie Colul din stnga sus al meniului apare la poziia cursorului de mouse . Centrul marginii de sus a meniului apare la poziia cursorului de mouse . Colul din dreapta sus al meniului apare la poziia cursorului de mouse .

Metode M1. Popup virtual void__fastcall Popup(int X, int Y) ; Afiseaza un meniu Popup n locul specificat de coordonatele(X,Y) .

Evenimente E1. OnPopup __property TNotifyEvent OnPopup; Apare nainte ca meniul popup sa fie afiat.

17.4. TMenuItem

82

Conine proprietile i metodele necesare pentru a prelucra un item de meniu . Ierarhie TObject->TPersistent->TComponent->TMenuItem . Definit n menus.hpp. Proprieti P1. Caption __property AnsiString Caption; Indic textul ataat unui item (meniu) . P2. Hint __property AnsiString Hint; Specific textul care apare cnd cursorul mouse-ului trece pe deasupra item-ului de meniu. Checked __property bool Checked; Indic daca un meniu este selectat sau nu .Daca Checked este true, atunci lng numele meniului apare un semn de bifare . Count __property int Count; Indic numrul de subitem-uri ale unui meniu . Enabled __property bool Enabled ; Indic dac un meniu este sau nu disponibil la un moment dat. Break __property TMenuBreak Break; Indic dac itemul de meniu genereaz o nou coloan n meniu. Valori posibile pentru Break sunt: Valoare mbNone mbBarBreak Semnificatie Nu apare nici o ruptur n meniu. Aceast situaie este implicit. Meniul printe este rupt nc ntr-o coloan. Iitemul curent va fi pus in capul noii coloane. O bar separ noua coloan de cele deja existente . Meniul parinte este rupt inca intr-o noua coloana .Itemul va fi pus in capul noii coloane .

P3.

P4.

P5.

P6.

MbBreak

83

P7.

Items __property TMenuItem *Items[int Index]; Furnizeaz acces la subitem-urile (submeniurile) unui meniu . MenuIndex __property int MenuIndex; Indic numrul de ordine al unui item (meniu) n cadrul meniului printe. Numarul de ordine al primului item (meniu) este 0. Parent __property TmenuItem *Paent; Specific itemul printe al unui meniu . ShortCut __property TShortCut TShortCut ; Determin combinaia de taste pe care utilzatorul trebuie s tasteze pentru a acesa mai rapid un meniu. De obicei aceast combinaie apare scris la dreapta item-ului . Pentru a crea un ShortCut folosii urmtoarea rutin: TShortCut_fastcall ShortCut(Word Key,TShiftState Shift);

P8.

P9.

P10.

Creeaz un ShortCut la momentul proiectarii aplicaiei. ShortCut va fi format dintr-o tast printabil (Key) i o component TShiftState, care fiind de tip mulime poate lua ca valoare o submulime din urmtoarele valori: ssShift, ssAlt, ssCtrl, ssLeft, ssRigh, ssMiddle, ssDouble . De exemplu pentru a ataa la item-ul Close, shortcutul Ctrl+C, atunci vom scrie urmtoarea linie : Close->ShortCut = ShortCut(Word(C),ThiftState()<<ssCtrl) ; void__fastcall ShortCutToKey(TShortCut, Word &Key ,TsiftState &Shift) ; Returneaz tastele unui shortcut. P11. Visible __property bool Visible; Determin dac un item (meniu) este vizibil sau nu. Dac nu este vizibil utilizatorul nu l poate selecta . GroupIndex __property unsignet char GroupIndex; Specific modul n care meniurile diferitelor forme ale unei aplicaii fuzioneaz .
84

P12.

Aceast proprietate este util atunci cnd aplicaia are mai multe forme fiecare dintre acestea avnd un meniu propriu. Dac proprietatea AutoMerge, pentru meniul unei forme difer de forma principal, este true atunci la activarea acestei forme (forma secundar) meniul acesteia va disprea de pe ea i va fuziona cu meniul de pe forma principal. Dac AutoMerge pentru meniul de pe o form secundar este false, atunci la activarea acesteia meniul de pe ea va disprea i nu va fuziona cu meniul de pe forma principal. Fiecare item al meniului are propriul lui GroupIndex. Pentru fuzionarea a dou meniuri nu sunt luate n considerare dect item-urile din bara principl a meniurilor, celelalte item-uri secundare neintrnd n calcul, deci fuzinarea se face doar la nivel de meniuri principale. Implicit fiecare item din bara principal de meniu are GroupIndexul egal cu 0. Dac dorii s le schimbai trebuie s tii c un item din bara principal de meniu are valoarea lui GroupIndex mai mare sau egal dect valoarea GroupIndex a precedentului item. De aici rezult i modul n care dou meniuri fuzioneaz: toate itemurile din bara principal a meniului formei secundare sunt inserate n bara principal de meniu a formei principale, respectndu-se ordinea cresctoare a valorilor GroupIndex. Dac unele item-uri din bara de meniu a formei secundare au acelai GroupIndex cu unele item-uri din bara de meniu a formei secundare, atunci toate aceste itemuri (din meniul formei principale) vor disprea i vor fi nlocuite cu item-urile din forma secundar. P13. RadioItem __property bool RadioItem; Indic dac item-ul de meniu se exclude reciproc cu celelalte itemuri de meniu din acelai grup. n caz afirmativ, doar un item din grup poate fi selectat la un moment dat. n faa lui va aprea un cercule. Metode M1. Add void__fastcall Add(TMenuItem *Item); Adaug un item de meniu la sfritul vectorului Items. M2. Delete void__fastcall Delete(int Index); terge item-ul cu numrul de ordine Index, din cadrul meniului curent. M3. Remove void__fastcall Remove(TMenuItem *Item); terge itemul Item din meniu. M4. Insert void__fastcall Insert(int Index, TMenuItem *Item); Insereaz Item pe poziia Index.

85

M5. IndexOf int__fastcall IndexOf(TMenuItem *Item); Returneaz numrul de ordine al unui item n cadrul listei de itemuri a printelui su. M6. Click virtual void__fastcall Click(void); Simuleaz execuia unui click de mouse ca i cum utilizatorul l-ar fi executat. Handlerele de evenimente corespunztoare acestui eveniment sunt executate i ele. Evenimente E1. OnClick __property TNotifyEvent OnClick; Apare cnd se execut click pe un item de meniu.

18. SCURTTURI 18.1. THotKey Este un control care permite utilizatorului s introduc o combinaie de taste ce va fi folosit ulterior pe post de hotkey sau scurttur. Un hotkey este o combinaie de taste pe care utlizatorul o testeaz pentru a efectua rapid o aciune. O combinaie de taste const dintr-o tast modificator (CTRL, SHIFT, ALT) i o alt tast oarecare. Ierarhie Tobject->TPersistent->TComponent->TControl-> TWinControl->TCustomHotKey->THotKey. Definit n comctrls. hpp. Pagina Win32. Proprieti P1. HotKey __property TShortCut HotKey; Conine combinaia curent de taste. P2. InvalidKeys __property THKInvalidKeys; Permite specificarea anumitor cominaii de taste care vor fi considerate invalide. Valori posibile pentru InvalidKeys sunt din mulimea:

86

Valoare HcNone HcShift hcCtrl hcAlt HcShiftCtrl hcShiftAlt hcCtrlAlt hcShiftCtrlAlt

Semnificaie Tastele simple, fr modificatori, nu pot fi folosite pe post de hotkey. Combinaiile Shift+Tast sunt invalide. Combinaiile Ctrl+Tast sunt invalide. Combinaiile Alt+Tast sunt invalide. Combinaiile Shift+Ctrl+Tast sunt invalide. Combinaiile Shift+Alt+Tast sunt invalide. Combinaiile Ctrl+Alt+Tast sunt invalide. Combinaiile Shift+Ctrl+Alt+Tast sunt invalide

P3. Modifiers __property THKModifiers Modifiers; Specific tastele care vor fi folosite pe post de modificatori. Utilizatorul nu va mai fi obligat s introduc ntreaga combinaie de taste, ci doar tasat nemodificator. Valori posibile pentru Modifiers sunt una sau mai multe din urmtoarea mulime: Valoare HkShift HkCtrl hkAlt Semnificaie Tasta Shift va fi folosit drept modificator. Tasta Ctrl va fi folosit drept modificator. Tasta Alt va fi folosit drept modificator. 19. ITEMURI Cuvntul item eticheteaz o larg categorie de obiecte, iruri de caractere, imagini etc. Mediul C++Builder pune la dispoziia programatorului componente cu ajutorul crora acesata poate prelucra i afia aceste item-uri. Dintre acestea enumerm: TListBox, TComboBox, TListView, TTreeView, TList. TListBox este o component care afieaz itemuri dintr-o list de iruri de caractere. Accesarea itemurilor se face cu ajutorul proprietii Items. Se poate specifica numrul de coloane pe care acestea vor fi afiate cu ajutorul proprietii Columns. TComboBox combin o cutie de editare cu o list drop-down. Lista drop-down se acceseaz prin apsarea butonului-pe care este desenat o sgeat -aflat la dreapta cutiei. Utilizatorul poate selecta un item din list sau poate scrie direct n cutia de editare. TListView permite afiarea de item n mai multe moduri. TListView manipuleaz lista cu itemuri prin intermediul clasei TListItems. Fiecare element al listei este un obiect de tip TListItem. 19.1. TListBox Este un control care permite afiarea i prelucrarea unei liste cu item-uri. Aceste itemuri pot fi prelucrate, att la momentul proiectrii aplicaiei(cu ObjectInspector care va afia un String List Editor), prin intermediul proprietaii Items, ct si la momentul execuiei aplicaiei, tot cu ajutorul acestei proprieti.

87

Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TCustomListBox->TListBox. Definit n stdctrls. hpp. Pagina Standard. Proprietai P1. Columns __property int Columns; Specific numrul de coloane vizibile fra a avea scrollbar orizontal. Imlicit este 0 ceea ce nseamn c nu este permis afisarea pe mai multe coloane. Dac Columns este diferit de zero atunci nu mai este nevoie de scroller vertical, itemurile fiind amplasate pe coloane. De exemplu pentru Clumns=2, ListBox-ul va arta c n figura alturat. P2. Items __property TString *Items; Specific itemurile sub forma unor iruri de caractere. Acest proprietate este folosit pentru a aduga, insera, terge itemuri dintr-o list de itemuri. Folosii proprietile i metodele lui TString pentru a manipula aceste itemuri.

P3. Sorted __property bool Sorted; Specific dac itemurile din lista sunt sortate alfabetic. Folosii Sorted pentru a sorta alfabetic item-urile din lista de item-uri. Dac Sorted este true, atunci la adugare sau la inserarea unui item, acesta va fi introdus pe acea poziie, astfel ncat s se respecte ordinea alfabetic. P4. IntegralHeight __property bool IntegralHeight; Specific dac se pot afia i itemuri sunt doar parial vizibile. Dac IntegralHeight este false, atunci se poate afisa doar o parte din item. De exemplu dac un item nu incape s fie afiat ntreg n partea de jos a cutiei, atunci el va fi afiat doar parial, putnd fi fcut n ntregime vizibil pin acionarea barei de defilare vertical. P5. ItemIndex __property int ItemIndex; Indic numrul de ordine al itemului selectat (marcat) din lista de itemuri. Dac nici un item nu este selectat, atunci ItemIndex intoarce 1 . Primul item din list are indexul 0. Dac atribuii o valoare lui ItemIndex
88

(n timpul execuiei programului), atunci itemul avnd numrul de ordine specificat va fi selectat. Dac sunt permise multiselecii, atunci ItemIndex va ntoarce numrul de ordine al itemului activ. P6. TopIndex __property int TopIndex Indic numrul de ordine al celui mai de sus item afiat. P7. MultiSelect __property bool MultiSelect; Specific dac utilizatorul poate selecta la un moment dat mai multe item-uri. P8. ExtendedSelect __prorerty bool ExtendedSelect; Specific dac utilizatorul poate selecta mai multe item-uri consecutive. Dac MultiSelect este false, atunci ExtendedSelect nu are nici un efect. P9. SelCount __property int SelCount; Returneaz numrul de item-uri selectate, dac sunt permise multiselecii. SelCount este ReadOnly. P10. Selected __property bool Selected[int index]; Determin dac itemul cu numrul de ordine Index este selectat. n caz afirmativ se returneaz true, iar n caz contrar se returneaz false.

Metode M1. Clear void__fastcall Clear(void); terge toate item-urile dintr-o cutie de listare(ListBox). M2. ItemRect TRect_fastcall ItemRect(int Index); Returneaz dreptunghiul ce nconjoar un itemul cu numrul de ordine Index. M3. ItemAltPos int__fastcall ItemAltPos(cnst POINT &Pos, bool Existing); Specific indexul itemului aflat la punctul Pos. Dac punctul Pos este mai jos de ultimul item i dac Existing este true, atunci ItemAltPos returneaz 1, iar dac Existing este false, atunci se returneaz indexul ultimului item +1.

89

Evenimente E1. OnDrawItem __property TDrawItemEvent OnDrawItem; Apare cnd un item trebuie afiat. enum StdCtrls_9{odSelected, odGrayed, OdDisabled, odChecked, odFocused}; typedef Set<StdCtrls_9{odSelected, odFocused> TOwnerDrawState; typed void__fastcall (_closure *TdrawItemEvent) (TWinControl *Control, int Index, const Trect&Rect, TOwnerDrawState State); E2. OnMeasureItem __property TMesureItemEvent OnMeasureItem; Apare cnd un item trebuie afiat. Tipul TMeasureItemEvent este definit astfel: typedef void_ fastcall(_closure *TMeasureItemEvent) (TWinControl *Control, int Index, int&Height); 19.2. TComboBox Combin o cutie de editare cu o list de item-uri care se poate defila. Utilizatorul poate alege un item din lista, sau poate scrie direct n cutia de editare. Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TCustomComboBox->TComboBox. Definit n stdctrls. hpp. Pagina Standard. Prorietai P1. DropDownCount __property int DropDownCount; Inidic numrul maxim de item-uri care pot fi afiate fr a fi nevoie de un scrollbar vertical. P2. DroppedDown __property bool DroppedDown; Indic dac lista drop-down este afiat. La momentul execuiei ea poate fi
90

afiat prin execuia unui click pe sgeata din dreapta controlului.

P 3. ItemIndex _property int ItemIndex; Indic numrul de ordine al item-ului curent selectat (cel care este afiat n cutia de editare). Primul item din list are indicele 0. Dac nici un indice nu este selectat, atunci ItemIndex returneaz 1. P 4. Items __property TStrings *Items; Specifi item-urile din list ce se poate defila. Se pot aduga sau terge itemuri folosind proprietile lui TStrings.

P 5. Style __property TComboBoxStyle Style; Specific modul de comportare a componentei ComboBox. Valorile pe care le poate lua Style sunt: Valoare csDropDown csDropDownList csSimple csOwnerDrawFixed Semnificaie List drop-down avnd o cutie de editare. Utilizatorul are posibilitatea introducerii de text n cutia de editare. List drop-down avnd o cutie de editare n care utilizatorul nu poate introduce manual un text. Cutie de editare avnd o component TListBox sub ea. Dimensiunea acesteia depinde de proprietatea Height. List drop-down avnd o cutie de editare. Utilizatorul are posibilitatea introducerii de text n cutia de editare. Itemurile au dimensiunea specificat de proprietatea ItemHeight. Cnd trebuie s fie afiat lista, drop-down, cu itemuri apare evenimentul OnDrawItem. List drop-down avnd o cutie de editare. Utilizatorul are posibilitatea introducerii de text n cutia de editare. Itemurile au dimensiune variabil.
91

csOwnerDrawVariabl e

Cnd trebuie s fie afiat lista, drop-down, cu itemuri, apar evenimentele. OnDrawItem i OnMensureItem.

P 6. Sorted __property bool Sorted; Indic dac itrm-urile din lista Items sunt sortate alfabetic Setarea acestei propriati la true, va sorta alfabetic aceste item-uri. P 7. MaxLenght __property int MaxLenght; Indic numrul maxim de caractere pe care utilizatorul le poate introduce n cutia de editare a ComboBox-ului. P 8. SelText __property AnsiString SelText; Reprezint textul selectat din cutia de editare ataat ComboBox-ului. Poziia primului caracter selectat precum i numrul de caractere selectate sunt returnate cu ajutorul proprietilor SelStart, SelLength . P 9. Canvas __property TCanvas *Canvas; Furnizeaz accesul la suprafaa de desenare n momentul n care proprietatea Style are una din valorile csOwnerDrawVariable sau csOwnerDrawFixed. Metode M 1. TComboBox __fastcall virtual TComboBox (TComponent *AOwner); Este constructorul clasei. M 2. Clear void__fastcall Clear (void);

92

terge toate item-urile din lista drop-down. M 3. SelectAll void__fastcall SelectAll (void); Selectez ntrgul text al cutiei de editare. Evenimente E 1. OnChange __property TNotifyEvent OnChange; Apare n momentul n care un alt item este selectat, sau un text este introdus n cutia de editare. E 2. OnDropDown __property TNotifyEvent OnDropDown; Apare cnd se execut click pe sgeata din dreapta a unei componente TComboBox. In acest moment se deschide lista drop-down. E 3. OnDrawItem __property TDrawItemEvent OnDrawItem; Apare cnd un item trebuie afiat. enum StdCtrls _ 9{odSelected, odGrayed, odDisabled, odChecked, odFocused}; typedef Set<StdCtrls _ 9, odSelected, odFocused>TOwner DrawState; typedef void__fastcall ( _closure *TDrawItemEvent) (TWinControl *Control, int Index. const TRect&Rect, TOwnerDrawState State); E 4. OnMesureItem __property TMesureItemEvent OnMesureItem; Apare cnd un item trebuie afiat. typedef void__fastcall ( _closure *TMeasureItemEvent) (TWinControl *Control, int Index, int & Height); 19. 3. TListView

93

Este o component care permite afiarea de item-uri n mai multe feluri. Ierarhie TObject->TPersistent->TComponent -> TControl -> TWinControl -> TCustomListView->TListView Definit n Comctrls. hpp Pagina Win32. Proprieti P1. Column __property TList Column *Column[int Index]; Indic coloana cu numrul de ordine Index. P 2. ColumnClick __property bool ColumnClick; Specific dac headerul unei coloane se comport ca un buton. P 3. Columns _property TListColumns *Columns; Faciliteaz lucrul cu coloane. Pentru a se permite lucrul cu coloane, trebuie ca proprietatea ViewStyle s fie setat la vsReport. Coloanele pot fi adugate i n momentul proiectarii aplicaiei cu ajutorul lui ListView Columns Editor care apare pe ecran la dublu click pe proprietatea Columns din ObjectInspector. P 4. ItemFocused __property TListItem *ItemFocused; ItemFocused conine itemul care este selectat i este nconjurat de un dreptunghi din linie punctat (itemul care are focus). Dac nici un item nu este selectat atunci se returneaz NULL. La un moment dat un singur item poate avea aceast proprietate.

94

P 5. Items __property TListItems *Items; Items conine lista itemurilor unei componente TListView. Aceste itemuri pot fi prelucrate i n momentul proiectrii aplicaiei prin dublu click pe proprietatea Items din ObjectInspector. Pe ecran va apare List View Items Editor. P 6. LargeImages __property TImageList *LargeImages; Specific care list cu imagini este ataat ListView-ului curent. Aceast proprietate este valabil doar cnd proprietatea ViewStyle este setat la vsIcon. Dac LargeImages este diferit de NULL, atunci fiecare item are ataat o imagine. P 7. SmallImages __property TImageList *SmallImages; Specific care list cu imagini este ataat ListView-ului curent. Aceast proprietate este valabil doar cnd proprietatea ViewStyle este setat la vsSmallIcon. Dac SmallImages este diferit de NULL, atunci fiecare item are ataat o imagine. P 8. MultiSelect __property bool MultiSelect; Indic dac utilizatorul poate selecta mai multe itemuri la un moment dat. Implicit este false. P 9. SelCount __property int SelCount; Indic numrul de itemuri selectate la un moment dat. P 10. Selected _ property TListItem *Selected; Returneaz primul item selectat dintr-o component TListView. P 11. ShowColumnHeaders
95

__property bool ShowColumnHeaders; Este valabil doar dac ViewStyle este vsReport, i indic dac taburile reprezentnd headere de coloane sunt afiate. P 12. TopItem __property TListItem *TopItem; Returneaz cel mai de sus item vizibil. Acesta poate s nu fie cel mai de sus item al TListView, dac acela nu este vizibil. P 13. ViewStyle __property TViewStyle ViewStyle; Specific modul n care sunt afiate itemurile unui ListView. Valori posibile pentru ViewStyle sunt: Valoare VsIcon VsSmallIcon VsList VsReport Semnificaie Fiecare item apare ca un icon cu textul ataat lui sub el. Utilizatorul l poate muta n orice alt poziie n interiorul TListView-ului curent. Fiecare item apare ca un icon cu textul ataat la dreapta lui. Utilizatorul l poate muta n orice alt poziie n interiorul TListView-ului curent. Fiecare item apare ca un icon cu o etichet la dreapta lui. Itemurile sunt aranjate n coloane i nu pot fi mutate n orice loc din cadrul TListView-ului curent. Fiecare item este afiat pe propria lui linie. Cea mai din stnga coloan conine icon-ul itemului mpreun cu textul ataat lui. Iar apoi urmtoarele coloane conin urmtoarele subitemuri(se tie c un subitem nu poate avea la rndul su subitem-uri).

P 14. SortType __property TSortType SortType; Indic felul n care sunt aranjate itemurile dintr-un TListView. Valori posibile pentru SortType sunt:

96

Valoare stNone stData stText stBoth

Semnificaie Nici o sortare nu are loc. Itemurile sunt sortate cresctor pe baza proprietii Data a lui TListItem. Va trebui implementat evenimentul OnCompare. Itemurile sunt sortate conform proprietii Caption a lui TListItem. Itemurile sunt sortate cresctor pe baza proprietilor Data i Caption a lui TListItem. Dac evenimentul OnCompare nu este implementat atunci el va fi ignorat.

P 15. HotTrack __property bool HotTrack; Indic dac itemurile sunt luminate n momentul n care cursorul de mouse trece pe deasupra lor. Metode M 1. Arange void__fastcall Arrange(TListArrangement Code); Aranjeaz itemurile ntr-o component ListView. Valori posibile pentru Code sunt: Valoare arAlignBottom arAlignLeft arAlignRight arAlignTop M 2. FindCaption TListItem *__fastcall FindCaption(int StartIndex, AnsiString Value, bool Partial, bool Inclusive, bool Wrap); Returneaz care este ataat etichetei Value. Cutarea se face ncepnd de la itemul StartIndex. Dac itemul nu este gsit, atunci se returneaz NULL. Dac Wrap este true, atunci dac itemul nu este gsit, cutarea se continu de la nceputul listei. Semnificaie Aliniaz itemurile de-a lungul muchiei inferioare a ferestrei. Aliniaz itemurile de-a lungul muchiei din stnga a ferestrei Aliniaz itemurile de-a lungul muchiei din dreapta a ferestrei Aliniaz itemurile de-a lungul muchiei superioare a ferestrei

97

M 3. GetItemAt TListItem *__fastcall GetItemAt(int x, int y ); Returneaz itemul aflat la poziia (x, y) fa de colul stnga sus al cutiei TListView-ului. M 4. GetItemIndex Int__fastcall GetItemIndex(TListItem. *Value); Returneaz indexul( poziia n cadrul vectorului Items) itemului Value. M 5. GetNearestItem TListItem *__fastcall GetNearestItem(const POINT&Point, TsearchDirection Direction); Returneaz cel mai apropiat item de puctul Point. Cutarea se poate face n direciile: n sus (sdAbove), n jos(sdBellow), la dreapta(sdRigth), la stnga (sdLeft), sau n toate direciile (sdAll). M 6. Scroll void __fastcall Scroll(int DX, int DY ); Defileaz coninutul ferestrei cu DX respectiv DY pixeli. M 7. UpdateItem void__fastcall UpdateItems(int FirstIndex, int LastIndex ); Redeseneaz itemurile avnd indexul n intervalul [FirstIndex, LastIndex ]. M 8. IsEditing bool__fastcall IsEditing(void); Indic dac un item oarecare este n curs de editare. Evenimente E1. OnChange enum TitemChange{ctText, ctImage, ctState}; typedef void__fastcall ( _closure *TLVChangeEvent)
98

(TObject *Sender, TListItem *Item, TitemChange Change); __property TLVChangeEvent OnChange; Apare cnd un nou item este selectat, sau proprietile State, Text, Image sunt modificate. E 2. OnDeletion typedef void__fastcall ( _closure *TLVDeletedEvent) (TObject *Sender, TListItem *Item); __property TLVDeletedEvent OnDeletion; Apare cnd un item este ters. E 3. OnInsert typedef void__fastcall ( _closure *TLVDeletedEvent) (TObject *Sender, TListItem *Item); __property TLVDeletedEvent OnInsert; Apare cnd un nou item este inserat. E 4. OnCompare __property TLVCompareEvent OnCompare; Apare cnd dou itemuri trebuie comparate pentru sortare. Tipul TLVCompareEvent este definit astfel: typedef void__fastcall ( _closure *TLVCompareEvent) (TObject *Sender, TListItem *Item1, TListItem *Item2, int Data, int &Compare); Itemurile comparate sunt Item1 i Item2. Dac Item1 este mai mic dect Item2 atunci valoarea lui Compare trebuie setat la o valoare negativ. Dac Item1 este egal cu Item2 atunci valoarea lui Compare trebuie setat la valoarea zero. Dac Item1 este mai mare dect Item2, atunci valoarea lui Compare trebuie setat la o valoare strict pozitiv.

E 4. OnEditing __property TLVEditingEvent OnEditing;

99

Apare cnd utilizatorul ncepe s editeze eticheta ataat unui item. Tipul TLVEditingEvent este definit astfel: typedef void__fastcall ( _closure *TLVEditingEvent) (TObject *Sender, TListItem *Item, bool &AllowEdit); Pentru a preveni editarea unui item setai la false valoarea lui AllowEdit. 19. 4. TListItems Este lista de itemuri ce apar ntr-o ListView. Ierarhie TObject->TPersistent ->TListItems Definit n Comctrls. hpp Proprieti P 1. Count __property int Count; Indic numrul de itemuri din cadrul vectorului Items. P 2. Item __property TListItem *Item[int Index]; Furnizeaz acces la itemurile unei liste prin intermediul numrului de ordine al itemului. Primul item are numrul de ordine 0. P 3. Owner __property TCustomListView *Owner; Returneaz componenta TListView manipuleaz itemurile din TListItems. Metode M 1. Add void__fastcall Add(void);

100

Adaug un item la sfritul listei. M 2. Delete void__fastcall Delete(int Index); terge itemul cu numrul de ordine Index, din cadrul listei curente. M 3. Clear void__fastcall Clear(void); terge toate itemurile, din cadrul listei cu itemuri curente. M 4. Insert void__fastcall Insert(int Index); Insereaz un item pe poziia Index. Acesta va putea fi apoi accesat cu ajutorul proprietii Items. M 5. IndexOf int__fastcall IndexOf(TListItem *Value); Returneaz numrul de ordine al unui item n cadrul listei de itemuri. 19. 5. TListItem Sunt itemurile unei TListItems. Ierarhie TObject->TPersistent ->TListItem. Definit n Comctrls. hpp Proprieti P 1. Caption __property AnsiString Caption;

101

Indic textul care eticheteaz un item. P 2. Data __property void *Data; Reprezint nite date asociate itemului. P 3. Checked __property bool Checked; Indic dac un semn de bifare apare n stnga itemului. P 4. Focused __property bool Focused; Indic dac itemul are focus. P 5. ImageIndex __property int ImageIndex; Specific numrul de oedine a imaginii (n cadrul unei componente TImageList) care este ataat ca icon itemului curent. Dac proprietatea TListView: : ViewStyle este vsIcon, atunci ImageIndex este indicele imaginii din lista ataat proprietii TListView: : LargeImages, n caz contrar indicele este din lista TListView: : SmallImages. P 6. Index __property int Index; Indic numrul de ordine al unui item n cadrul TListItems. Primuk item are Numrul de ordine 0. P 7. Selected __property bool Selected; Specific dac itemul este selectat. P 8. SubItems __property TStrings *SubItems;
102

Specific lista de subitemuri ataate itemului curent. Folosii proprietile lui TStrings pentru a o manipula. P 9. ListView __property TCustomListView *ListView; Indic componenta de tip TListView care conine itemul curent. Proprietatea este ReadOnly. P 10. Owner __property TCustomListItems *Owner; Indic componenta de tip TListItems care conine itemul curent. Proprietatea Este ReadOnly. P 11. StateIndex __property int StateIndex; Indic care imagine din TlistView: : StateImages este asociat cu itemul curent. Metode M 1. Delete void__fastcall Delete(void); terge itemul care o apeleaz. M 2. GetPosition POINT__fastcall GetPosition(void); Returneaz coordonatele colului din stnga sus a unui item n cadrul unei componente TListView. M 1. SetPosition void__fastcall SetPosition(void); Seteaz colul din stnga sus al itemului la poziia Value n cadrul componentei TListView. Controlul trebuie s aib proprietatea ViewStyle setat la vsIcon sau vsSmallIcon.
103

M4. MakeVisible void __fastcall MakeVisible(bool PartialOK); Defileaz lista cu item-uri pn cnd item-ul care apeleaz aceast metod devine vizibil/parial vizibil. M5. Update void __fastcall Update(void); Redeseneaz un item. Acest lucru este necesar dac item-ul i-a schimbat Proprietile (Icon, Caption. . ) . M6. BeginEdit bool __fastcall EditCaption(void); Incepe editarea etichetei unui item. M7. CancelEdit void __fastcall CancelEdit(void); Anuleaz editarea etichetei unui item. M8. DisplayRect TRect __fastcall DisplayRect(void); Returneaz dreptunghiul care mrginete item-ul. Valori posibile pentru Code sunt: Valoare DrBounds DrIcon DrLabel DrSelectBounds Semnificaie Retuneaz dreptunghiul care mrginete ntrg item-ul inclusive icon-ul i eticheta. Retuneaz dreptunghiul care mrginete icon-ul itemului. Retuneaz dreptunghiul care mrginete eticheta itemului. Retuneaz dreptunghiul care mrginete ntrg item-ul inclusive icon-ul i eticheta, excluznd coloanele n cazul ViewStyle este vsReport.

104

19.6. TTreeView Permite afiarea unei structuri ierarhice de item-uri, ca de exemplu structura de directoare de pe un disc. Fiecare nod din structur are asociat un text i eventual un bitmap. Totodat un nod poate avea subnoduri care pot fi expandate, sau colapsate printr-un click pe printele lor. Structura poate fi prelucrat cu ajutorul componentei TTreeNodes care are ca i componente obiecte de tipul TTreeNode. Ierarhie TObject->TPersistent->TComponent ->TControl -> TWinControl -> TCustomTreeView->TTreeView Definit n Comctrls.hpp Pagina Win32. Proprieti P1. Indent __property int Indent; Indic numrul de pixeli care sunt folosii pentru indentare n cazul expandrii unor subnoduri. Implicit este 19. P2. Items __property TTreeNodes *Items; Conine nodurile care apar ntr-un TreeNodView. Aceste noduri sunt obiecte de tipul TTreeNode, pe care l vom prezenta la sfritul capitolului. Un arbore poate fi construit i la momentul proiectrii aplicaiei cu ajutorul TreeView Items Editor, care este afiat la dublu click pe proprietatea Items din Object Inspector: Butoanele NewItem i NewSubItem adaug cte un nod frate/fiu la nodul current selectat.

P3. Selected

105

__property TTreeNode *Selected; Specific nodul selectat din TreeViewNode. Nodul selectat este ncadrat ntr-un dreptunghi. P4. RightClickSelect __property bool RightClickSelect; Indic dac proprietazea Selected returneaz nodurile cu butonul din dreapta al mouse-ului. P5. ShowButtons __property bool ShowButtons; Indic dac butoanele (+) , (-) apar n partea stng a fiecrui nod care are subnoduri. Dac ShowButtons este true, atunci aceste butoane vor aprea i la apsarea lor nodul respective se va expanda sau colapsa. P6. ShowLines __property bool ShowLines; Indic dac apar liniile care leag un nod printe de nodurile fii. P7. ShowRoot __property bool ShowRoot; Indic dac apar liniile care leag nodul root (rdcin) de restul nodurilor. P8. TopItem __property TTreeNodes *TopItem; Indic cel mai de sus nod vizibil. P9. Images __property TImageList *Images; Reprezint lista cu bitmap-uri ce se afieaz la stnga nodurilor unui TtreeView. Unui nod i se poate ataa o imagine fie la momentul proiectrii aplicaiei (prin intermediul lui TreeView Items Editor) sau la momentul execuiei aplicaiei
106

prin intermediul proprietii TtreeNode::ImageIndex. Metode M1. AlphaSort bool __ fastcall AlphaSort(void); Sorteaz nodurile n ordine alfabetic dup eticheta ataat fiecruia. M2. FullCollapse void __ fastcall FullCollapse(void); Colapseaz toate nodurile dintr-o structur arborescent, rmnnd doar nodurile de pe primul nivel. Instruciunea TreeView1->FullCollapse (); va colapsa arborele din cutia TreeView1. M3. FulExpand void __ fastcall FullExpand(void); Expandeaz toate nodurile. Fiecare (sub) nod apare sub nodul printe. Dac ShowButtons este true, atunci toate (+) sunt transformate n (-) Instruciunea: TreeView1->FullExpand (); va expanda arborele din cutia TreeView1. M4. LoadFromFile void __ fastcall LoadFromFile(const AnsiString FileName); Incarc o structur de noduri dintr-un fiier cu numele FileName. M5. SaveToFile void __ fastcall SaveToFile(const AnsiString FileName); Salveaz o structur de noduri ntr-un fiier cu numele FileName. Forma n care se salveaz arborele este urmtoarea (un fiu apare indentat fa de printele lui:
107

a aa ab aba abb abc ac M5. GetNodeAt TTreeNode * __ fastcall GetNodeAt(int X, intY); Returneaz nodul gsit la poziia (X, Y) . Coordonatele sunt calculate fa de colul din stnga sus a cutiei TTreeView (care are coordonatele (0, 0) ) . M5. GetHitTestInfoAt THitTests __ fastcall GetHitTestInfoAt(int X, intY); Returneaz poziia punctului de coordonate (X, Y) fa de controlul TTreeView i fa de nodurile din arborele pe care l conine. Valoare htAbove htBelow htToRight htToLeft htNowhere htOnItem htOnButton htOnIcon htOnIndent htOnLabel htOnRight Semnificaie Punctul se gsete deasupra controlului TTreeView. Punctul se gsete sub controlul TTreeView. Punctul se gsete la dreapta controlului TTreeView. Punctul se gsete la stnga controlului TTreeView. Punctul se gsete n interiorul controlului TTreeView, dar sub ultimul nod. Punctul se gsete pe bitmap-ul sau pe eticheta asociat unui nod. Punctul se gsete pe butonul asociat nodului. Punctul se gsete pe bitmap-ul asociat nodului. Punctul se gsete pe indentarea unui nod. Punctul se gsete pe eticheta (textul) ataat nodului. Punctul se gsete la dreapta unui nod.

Evenimente E1. OnColapsing __property TTVCollapsingEvent OnCollapsing;

108

Apare cnd un nod este pe cale s fie colapsat. Tipul TTVCollapsingEvent este definit astfel: typedef void __ fastcall ( __closure *TTVCollapsingEvent) (TObject *Sender, TTreeNode *Node, bool &AllowCollapse); Setai AllowCollapse la false pentru a nu permite colapsarea nodului Node. E2. OnCollapsed __property TTVExpendedEvent OnCollapsed; Apare dup ce un nod al arborelui a fost colapsat. Tipul TTVExpendedEvent este definit astfel: typedef void __ fastcall ( __closure *TTVExpendedEvent) (TObject *Sender, TTreeNode *Node); E3. OnExpanding __property TTVExpandingEvent OnExpanding; Apare cnd un nod este pe cale de a fi expandat. Tipul TTVExpandingEvent este definit astfel: typedef void __ fastcall ( __closure *TTVExpandingEvent) (TObject *Sender, TTreeNode *Node, bool &AllowExpansion); Setai AllowExpansion la false pentru a nu permite expandarea nodului Node. E4. OnExpanded __property TTVExpandedEvent OnExpanded; Apare cnd un nod al arborelui este expandat (dac are fii) . E5. OnDeletion __property TTVExpandedEvent OnDeletion; Apare cnd un nod este ters. E6. OnEditing
109

__property TTVEditingEvent OnEditing; Apare cnd textul ataat unui nod (proprietatea TTreeNode::Text) este pe cale s fie editat. Tipul TTVEditingEvent este definit astfel: typedef void __ fastcall ( __closure *TTVEditingEvent) (TObject *Sender, TTreeNode *Node, bool &AllowEdit); Setai AllowEdit la false pentru a nu permite editarea textului ataat nodului Node. E7. OnEdited __property TTVEditedEvent OnEdited; Apare dup ce textul ataat unui nod fost editat. Tipul TTVEditedEvent este definit astfel: typedef void __ fastcall ( __closure *TTVEditedEvent) (TObject *Sender, TTreeNode *Node, AnsiString&S); Node este nodul al crui text a fost editat, iar S este noua valoare a textului ataat nodului. E8. OnChanging __property TTVChangingEvent OnChanging; Apare cnd selectai (focusul) este pe cale s se schimbe de la un nod la altul Tipul TTVChangingEvent este definit astfel: typedef void __ fastcall ( __closure *TTVChangingEvent) (TObject *Sender, TTreeNode *Node, bool &AllowChange); Setai AllowChange la false pentru a nu permite editarea ca nodul actual s fie deselectat. E9. OnChanged __property TTVChangedEvent OnChange;
110

Apare dup ce un alt nod a fost selectat. Tipul TTVChangedEvent este definit astfel: typedef void __ fastcall ( __closure *TTVChangedEvent) (TObject *Sender, TTreeNode *Node); Node este noul nod selectat. 19.7. TTreeNodes Conine o list cu nodurile unei structuri arborescente. Ierarhie TObject->TPersistent->TTreeNodes Definit n Comctrls.hpp Proprieti P1. Count __property int Count; Numr nodurile unei structuri arborescente. P2. Item __property TTreeNode *Item[int Index]; Returneaz un nodul cu numrul de ordine Index. P3. Owner __property TCustomTreeView *Owner; Indic componenta TTreeView, proprietar a listei curente de noduri. Metode M 1. Add TTreeNode * __fastcall Add(TTreeNode *Node,

111

const AnsiString S ); Adaug un nod arbore la sfritul listei de noduri din care face parte Node (pe acelai nivel n arbore) . Dac Node este fiu al root-ului, atunci nodul adugat va fi ultimul element al listei nodurilor fiu a root-ului, deci pe acelai nivel cu Node. S este valoarea proprietii Text al nodului nou adugat. M 2. AddFirst TTreeNode * __fastcall AddFirst(TTreeNode *Node, const AnsiString S ); Adaug Node ca prim element al listei nodurilor din care face parte(deci pe acelai nivel n arbore ca i Node ) . M 3. AddChild TTreeNode * __fastcall AddChild(TTreeNode *Node, const AnsiString S ); Nodul Node este adugat ca i ultim fiu al lui Node. M 4. AddFirstChild TTreeNode * __fastcall AddChildFirst(TTreeNode *Node, const AnsiString S ); Nodul Node este adugat ca i prim fiu al lui Node. M 5. Insert TTreeNode * __fastcall Insert(TTreeNode *Node, const AnsiString S ); Insereaz nodul care apeleaz aceast metod dup nodul Node, pe acelai nivel. M 6. Delete void __fastcall Delete(TTreeNode *Node); terge nodul specificat, mpreun cu fii si. M 7. BeginUpdate void __fastcall BeginUpdate(void);

112

Blocheaz redesenarea cutiei care afiaz un arbore n cazul unei modificri (inserare, tergere) aprute n structura acestuia. Acest lucru ajut la mrirea vitezei de lucru n cazul prelucrrii arborilor. Repermiterea redesenrii arborelui se face cu EndUpdate. M 8. EndUpdate void __fastcall EndUpdate(void); Repermite desenarea arborelui dup o executarea unor operaii de modificare a acestuia. Se apeleaz neaprat dup BeginUpdate. 19. 8. TTreeNode Este clasa care ncapsuleaz proprietile i metodele unui nod din cadrul listei cu noduri a unei componente TTreeNodes. Ierarhie TObject->TPersistent->TTreeNode. Definit n comctrls. hpp. Proprieti P1. AbsoluteIndex __property int AbsoluteIndex; Indic indicele absolut al unui nod n lista de noduri. Primul nod din list are indexul 0. P2. Count __property int Count; Indic numrul de copii ai unui (sub) nod arbore. P3. Expanded __property bool Expanded; Specific dac nodul este expanadat. P4. Focused __property bool Focused; Indic dac nodul curent este focalizat, adic dac este nconjurat de un dreptunghi trasat cu linie punctat. La un moment dat numai un nod poate avea aceast proprietate, dar selectate pot fi mai multe noduri. P5. HasChildren __property bool HasChildren; Indic dac nodul care a apelat aceast proprietate are copii.

113

P6. Index __property int Index; Aceast proprietate identific n mod unic un nod n cadrul listei nodurilor copii ai nodului printe. P7. IsVisible __property bool IsVisible; Indic dac un nod este vizibil ntr-o cutie de afiare. Un nod se consider a fi vizibil dac are indicele 0, sau dac toi prinii lui sunt expandai. P8. Item __property TTreeNode *Item[int Index]; Furnizeaz acces la un nodul cu indicele Index din cadrul listei de noduri fiu al nodului curent. P9. Level __property int Level; Indic nivelul n arbore al nodului care a apelat aceast proprietate. Nodul cel mai de sus (root) are nivelul 0, iar toi fii lui au nivelul 1, amd. P10. Parent __property TTreeNode *Parent; Pointer care indic nodul printe al nodului care a apelat aceast proprietate. P11. Selected __property bool Selected; Determin dac nodul este selectat. P12. Text __property AnsiString Text; Indic textul asociat unui nod. P13. Data __property void *Data; Pointeaz spre o structur de date asociat nodului. P14. TreeView __property TCustomTreeView *TreeView; Indic component TtreeView care afieaza acest nod. Metode M1. Collapse void __fastcall Collapse(bool Recurse); Colapseaz un nod. Dac Recurse este true, toi fii acestui nod sunt colapsai, iar la urmatoarea expandare a nodului respectiv, fii vor fi colapsai. Dac Recurse este false, fii nu sunt colapsai, iar la urmatoarea expandare a

114

nodului respectiv, fiii acestuia vor avea aceeai stare ca i nainte de apelul Collapse. M2. Expand void __fastcall Expand(bool Recurse); Expandeaz un nod. Dac Recurse este true, atunci toi fii acestui nod sunt expandai. M3. Delete void __fascall Delete(void); terge nodul care o apeleaz. M4. DeleteChildren void __fastcall DeleteChildren(void); terge toi fii nodului care o apeleaz. M5. getFirstChild TTreeNode *__fastcall getFirstChild(void); Returneaz primul fiu al nodului care o apeleaz. Dac aceasta nu are fii, se returneaz NULL. M6. GetLastChild TTreeNode *__fastcall GetLastChild(void); Returneaz ultimul fiu al nodului care o apeleaz. M7. GetNext TTreeNode *__fastcall GetNext(void); Returneaz urmtorul nod al listei de noduri, indiferent dac acesta este sau nu vizibil. M8. GetPrev TTreeNode *__fastcall GetPrev(void); Returneaz precedentul nod al listei de noduri, indiferent dac acesta este sau nu vizibil. M9. GetNextSibling TTreeNode *__fastcall getNextSibling (void); Returneaz urmtorul nod (vizibil sau nu ) aflat pe acelai nivel cu cel care apeleaz aceast metod. M10. GetPrevSibling TTreeNode *__fastcall getPrevSibling(void); Returneaz precedentul nod (vizibil sau nu) aflat pe acelai nivel cu cel care apeleaz aceast metod. M11. GetNextVisible TTreeNode *__fastcall GetNextVisible(void); Returneaz urmtorul nod vizibil.

115

M12. GetPrevVisible TTreeNode *__fastcall GetPrevVisible(void); Returneaz precedentul nod vizibil. M13. HasAsParent bool __fastcall HasAsParent(TTreeNode *Value); Returneaz true dac nodul care o apeleaz are ca printe nodul Value. M14. IndexOf int __fastcall IndexOf(TTreeNode *Value); Dac Value este fiu al nodului care a apelat aceast metod, atunci IndexOf returneaz indicele acestuia. Primul copil are indicele 0. Dac nu, se returneaz 1. M15. MakeVisible void __fastcall MakeVisible(void); Face un nod vizibil. Dac acesta nu este vizibil, atunci toi prinii si vor fi expandai pentru ca acest nod s fie vizibil. M16. MoveTo void __fastcall MoveTo(TTreeNode *Destination, TNodeAttachMode Mode); Mut un nod. Modul n care se face aceast mutare depinde de valoarea lui Mode: Valoare NaAdd NaAddFirst NaAddChild NaAddChildFirst naInsert Semnificaie Adaug nodul care o apelez la sfritul listei de noduri, conform metodei Add. Adaug nodul care o apeleaz la nceputul listei conform metodei AddFirst. Adaug nodul care o apeleaz la sfritul listei nodurilor fii ai nodului Destination, conform metodei AddChild. Adaug nodul conform metodei AddFirstChild. Insereaz nodul conform metodei Insert.

M17. AlphaSort bool __fastcall AlphaSort(void); Sorteaz cresctor nodurile copii ale nodului curent. Sortarea se face pe baza proprietii Text. M18. DisplayRect TRect __fastcall DisplayRect(bool TextOnly); Returneaz dreptunghiul care mrginete un nod din arbore. Dac TextOnly este true atunci este returnat doar dreptunghiul care nconjoar textul unui nod, n caz contrar este returnat ntreaga linie (din cadrul lui TTreeView) pe care se afl nodul curent.

116

19.9

TList

Furnizeaz un mod uor de lucru cu o list de obiecte de tip nespecificat. Se pot face adugri, inserri, tergeri, cutri, sortri etc de elemente. Ierarhie TObject->TList. Defini n closses.hpp. Proprieti P1. Items __property void *Items[int Index]; Items este lista cu pointerii la obiecte. P2. Count __property int Count; Returneaz numrul de obiecte din list. Metode M1. Add int __fastcall Add(void *Item); Adaug un nou obiect la sfritul listei. M2. Insert void __fastcall Insert (int Index, void *Item); Insereaz un obiect pe poziia Index n list. Primul element are numrul de ordine 0. M3. Delete void __fastcall Delete (int Index); terge din list elementul de pe poziia Index. M4. Remove int __fastcall Remove(void *Item); terge din list prima apariie a obiectului Item. M5. Clear void __fastcall Clear(void); terge toate obiectele din list. M6. IndexOf int __fastcall IndexOf(void *Item); Returneaz numrul de ordine al primei apariii a obiectului Item n list. Dac lista nu conine un asmenea obiect, atunci se returneaz 1.

117

M7. Move void __fastcall Move(int CurIndex, int NewIndex); Schimb poziia itemului de pe poziia CurIndex pe poziia NewIndex. M8. Sort void __fastcall Sort(TListSortCompare Compare); Aplic algoritmul de sortare QuikSort asupra elementelor unei liste. Funcia care compar dou obiecte din list are tipul TListSortCompare i trebuie furnizat de ctre programator. Tipul ei este: typedef int __fastcall( *TListSortCompare) (void *Item1, void *Item2); Funcia de comparare trebuie s ntoarc: valoare mai mic dect zero dac Item1 este mai mic dect Item2; zero dac Item1 este egal cu Item2; valoare mai mare dect zero, dac Item1 este mai mare dect Item 2. 20. FIIERE I DIRECTOARE Mediul C++Builder ofer componente care permit: - afiarea unitilor de disc (TDriveComboBox); - afiarea structurii directoarelor de pe un anumit disc (TDirectoryListBox); - afiarea fiierelor dintr-un anumit director (TFileListBox); Pentru fiiere se pot specifica filtre cu ajutorul componentei TFilterComboBox. Aceste componente se pot lega ntre ele pentru a se putea afia directoare, fiiere dintr-o anumit locaie i cu anumite extensii. Componente enumerate mai sus doar afieaz discuri, directoare i fiiere dar nu permit modificri asupra lor (tergere, redenumire etc). Operaiile asupra fiierelor i directoarelor se fac cu ajutorul unor funcii definite n SysUtils. hpp. 20.1. TFileListBox Este o cutie folosit pentru afiarea fiierelor dintr-un director. Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TCustomListBox->TFileListBox. Definit n filectrl. hpp. Pagina Win3. 1.
118

Proprieti P1. Directory __property AnsiString Directory; Determin directorul curent pentru cutia cu lista de fiiere. Pentru a afia din directorul dorit, modificai proprietatea Directory. P2. Drive __property char Drive; Specific pentru care unitate de disc afieaz fiierele. Dac se schimb unitatea, se va schimba i directorul curent al crui fiiere sunt afiate. P3. FileEdit __property TEdit *FileEdit; Indic cutia de editare (componenta de tip TEdit) n care sunt afiate numele fiierelor selectate. P4. FileName __property AnsiString FileName; Indic numele i calea fiierului selectat. P5. FileType __property FileType FyleType; Specific atributele fiierelor care vor afiate ntr-o cutie cu lista de fiiere. Deoarece FileType este o mulime, atunci valorile ei vor fi submulimi ale urmtoarei mulimi: . Valoare Semnificaie ftReadOnly Se afiseaz fiierele cu atributul read-only. ftHidden Se afiseaz fiierele cu atributul hidden. ftSystem Se afiseaz doar acele fiiere cu atributu system ftVolumeID Se afiseaz doar numele de volum. ftDirectory Se afiseaz directoare. ftArchive Se afieaz fiierele cu atributul archive. FtNormal Se afieaza fiiere fr nici un atribut. P6. Mask __property AnsiString Mask; Specific fiierele care pot fi afiate. Mask este o masc, pentru fiiere, ce poate include i caractere wildcard (de exemplu .cpp). Se pot specfica mai multe mti, care trebuie s fie desprite prin ; (de exemplu *.cpp; *.pas).

119

P7. ShowGlyphs __property bool ShouGlyphs; Indic dac lng numele fiierului poate aprea i un bitmap. Pe lng aceste proprieti TFileListBox mai motenete i din proprietile lui TcustomListBox, proprieti pe care le-am ntalnit i la TListBox. Atenie: Fiierele dintr-un TFileListBox nu pot fi prelucrate (terse, create) cu ajutorul proprietii Items. Metode M1. Update void __fastcall Update(void); Renoiete lista cu fiiere afiate. Aceast operaie este necesar atunci cnd un fiier este ters, sau creat. Evenimente E1. OnChange __property TNodifyEvent OnChange; Apare cnd coninutul cutiei se schimb.
20.2.

TDirectoryListBox Permite afiarea unei structuri de directoare.

Ierarhie TObject->TPersistent->TComponent->TControl-> TWinControl->TCustomListBox->TDirectoryListBox. Definit n Filectrl.hpp. Pagina Win3.1. Proprieti P1. Directory __property AnsiString Directory; Indic directorul a crui structur este afiat. P2. DirLabel __property TLabel *DirLabel; Numele directorului curent este titlu pentru eticheta DirLabel. P3. Drive
120

__property char Drive; Determin unitatea de disc creia aparine directorul a crui structur este afiat. P4. FileList __property TFileListBox *FileList; Leag o cutie cu lista de directoare (TDirectoryListBox) cu o cutie cu lista de fiiere (TFileListBox). Dup realizarea unei asemenea legturi, n TFileListBox vom avea fiiere din directorul curent selectat n TDirectoryListBox. Metode M1. GetItemPath AnsiString __fastcall GetItemPath(int Index); Returneaz calea unui director care are, n lista cu directoare (a cutiei TDirectoryListBox), numrul de ordine Index. Primul director din list are indicele 0. M2. OpenCurrent void __fastcall OpenCurrent(void); Deschide directorul curent. Metoda este echivalent cu executarea a dublu click pe directorul respectiv. M3. Update void __fastcall Update(void); Realizeaz lista de directoare, pentru a reflecta ultimele modificri. Evenimente E1. OnChange __property TNotifyEvent Onchange; Apare cnd un nou director este ales. 20.3. TDriveComboBox Permite afiarea tuturor unitilor de disc disponibile n sistem. Ierarhie TObject->TPersistent->TComponent ->TControl -> TWinControl -> TCustomComboBox->TDriveComboBox. Definit n

121

Filectrl.hpp. Pagina Win 3.1 Proprieti P1. DirList __property TDirectoryListBox *DirList; Face legtura ntre o cutie cu lista de directoare i o cutie de divere (TDriveComboBox). Cnd o noua unitate este aleas, lista de directoare afiat este cea a noului disk. P2. Drive __property char Drive; n Drive se afl unitatea de disc curent. Metode M1. Clear void __fastcall Clear( void); terge tot coninutul unei componente TDriveComboBox. M2. SelectAll void __fastcall SelectAll (void); Selecteaz toate variantele din cutia cu drivere curent. Evenimente E1. On Change __property TNotifyEvent OnChange; Apare cnd utilizatorul alege o nou unitate. E2. OnDropDown

122

__property TNotifyEvent OnDropDown; Apare cnd utilizatorul apas sgeata din dreapta a componentei afind astfel o list drop- down.

20.4. TFilterComboBox D posibilitatea utilizatorului s creeze filtre pentru fiiere. Ierarhie TObject->TPersistent->TComponent ->TControl -> TWinControl -> TCustomComboBox-> TFilterComboBox. Definit n Filectrl.hpp. Pagina Win3.1. Proprieti P1. FileList __property TfileListBox *FileList; Conecteaz o cutie filtru cu o cutie cu list fiiere (TFileListBox). P2. Filter __property AnsiString Filter; Specific un filtru de fiiere. Pentru a crea un asemenea filtru sunt necesari urmtorii pai:

Introducei un text semnificativ pentru tipil de fiiere pe care l dorii ( de exemplu Fiiere CPP). Introducei carcacterul l. Nu lsai nici un spaiu ntre ceea ce este nainte sau ceea ce este dup acest caracter, tastai masca de fiiere (de exemplu *.cpp). De exemplu pentru fiierele de tip cpp Filter poate conine urmtorul ir: Fisiere CPP\ *.cpp

123

Dac dorii mai multe mti separai-le prin intermediul caracterului ; . De exemplu n C++ Bulider la deschiderea unui fiier (meniu Open) avem o TComboListBox care poate deschide printre altele i fiire C ce pot avea extensiile.cpp *.c; *.hpp, *h. Pentru a obine acest lucru Filter trebuie sa conin textul C files\ *.cpp; *.hpp; *.c; *.h\Text files\ *. txt Dac dorii mai multe filtre, atunci separai-le cu caracterul l (de exemplu dac dorim s avem dou filtre, una pentru fiiere C ( cu extensiile *.cpp *.c; *.hpp, *.h) i una cu fiiere text(cu extensia. txt), atunci Filter treuie s conin sirul C files\ *.cpp; *.hpp; *.c; *.h\Text files\ *. txt

Extensia implicit este *. *. P3. Mask __property AnsiString Mask; Returneaz stringul care e folosit ca filtru. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd un nou filtru este ales.

20.5. TFileStream Este o clas care permite citirea i scrierea datelor ntr-un fiier pe disc. Ierarhie TObject->TStreamt->THandleStream ->TFileStream. Definit n classes.hpp. Proprieti P1. Position

124

__property int Position; Specific poziia capului de citire scriere n cadrul fiierului. Primul octet din fiier are Position = 0. P2. Size __property long Size; Indic lungimea fiierului n octei. Metode M1. Read virtual long __fastcall Read(void *Buffer, long Count); Citete Count octei din fiier n irul Buffer. Octeii sunt citii ncepnd din poziia indicat de proprietatea Position. Dup citire Position se va mri cu Count(n cazul n care nu se ajunge la sfrit de fiier). M2. Write virtual long __fastcall Write(const void *Buffer, long Count); Scrie n fiier Count octei din irul Buffer. M3. Seek virtual long __fastcall Seek(long *Offset, unsigned short Origin); Schimb valoarea lui Position. Origin indic felul n care trebuie interpretat valoarea din Offset. Valori posibil pentru Origin sunt: Valoare soFromBeginning soFromCurrent soFromEnd Semnificaie Offset este mai mare sau egal cu 0 i este luat de la nceputul fiierului. Position va avea valoarea lui Offset. Position va deveni Positon+Offset Offset este mai mic sau egal cu 0 i este luat fa de sfritul fiierului, deci Position va deveni Size- Offset..

M4. TFileStream

125

__fastcall TFileStream(const AnsiString FileName, unsigned short Mode ); Este constructorul clasei. FileName este numele fiierului care urmeaz s fie prelucrat. Mode este tipul prelucrrii i are ca valoare rezultatul aplicrii operatorului OR ntre modul de deschidere i modul de partajare. Modul de deschidere poate lua una din valorile: Valoare fmCreate fmOpenRead fmOpenWrite fmOpenReadWrite Semnificaie Creeaz un fiier. Dac acest fiier exist, atunci este deschis la scriere. Deschide un fiier la citire. Deschide un fiier la scriere. Un fiier deschis la scriere este mai nti vidat. Deschide un fiier i pentru citire i pentru scriere.

Modul de partajare poate lua una din valorile: Valoare fmShareExclusive fmShareDenyWrite fmShareDenyRead fmShareDenyNone M4. ~TFileStream __fastcall virtual ~TFileStream(void); Este destructorul clasei. Semnificaie Alte aplicaii nu pot deschide fiierul. Alte aplicaii pot deschide fiierul la citire dar nu i pentru sciere. Alte aplicaii pot deschide fiierul pentru scriere, dar nu i pentru citire. Alte aplicaii pot citi sau scrie acest fiier fr nici o restricie.

20.6 Structuri i funcii utile pentru lucrul cu fiiere i directoare struct TSearchRec { int Time; int Size; int Attr; AnsiString Name; int ExcludeAttr; int FindHandle; _WIN32_FIND_DATAA fINDdATA;

126

}; unde: Time-reprezint tampila de timp a fiierului; Size-este lungimea, n octei, a fiierului; Name- este numele fiierului n format 8.3; Attr- sunt atributele fiierului. Un fiier poate avea unul sau mai multe atribute dintre urmtoarele (se combin cu ajutorul operatorului AND): Valoare faReadOnly faHidden faSysFile faVolumeID faDirectory faArchive faAnyFile Valoare numeric $00000001 $00000002 $00000004 $00000008 $00000010 $00000020 $0000003F Semnificaie Fiier Read-Only. Fiier ascuns. Fiier sistem. Identificator de volum. Director. Fiier arhiv. Orice alt fiier

FindData include informaii suplimentare la fiier. F1. FileAge int __fastcall FileAge (const AnsiString FileName); Returneaz data crerii fiierului FileName. F2. FileExists bool __fastcall FilExists (const AnsiString FileName); Returneaz true dacexist fiierul FileName. F3. FileGetAttr int __fastcall FileGetAttr (const AnsiString FileName); Returneaz atributele fiierului FileName. Dac a aprut o eroare se returneaz 1. F4. FileSetAttr int __fastcall FileSetAttr (const AnsiString FileName, int Attr); Seteaz atributele fiierului FileName la valoare Attr.

127

F5. FndFirst int __fastcall FindFirst (const AnsiString Path int Attr, TSearchRec&F ); Returneaz primul fiierdin calea Path, care are atributele specificate de Attr. Rezultatul este returnat n F. Funcia ntoarce valoarea 0 dac operaia a reuit. F6. FindNext int __fastcall FindNext (TsearchRec &F); Returneaz urmtoarea apariie a unui fiier care are atributele specificate de Anteriorul apel al lui FindFirst. Funcia ntoarce valoarea 0 dac operaia a reuit. F7. FindClose void __fastcall FindClose (TSearchRec&F); Termin o secven de instruciuni FindFirst / FindNext. Dup FindClose, apelul lui FindNext este invalid.

F8. DeleteFile bool __fastcall DeleteFile(const AnsiString FileName); terge fiierul cu numele specificat. Returneaz true dac operaia reuete. F9. RenameFile bool __fastcall RenameFile (const AnsiString OldName const AnsiString NewName ); Redenumete numele fiierului OldName cu OldName. Returneaz true dac operaia reuete. F10. ChangeFileExt AnsiString __fastcall ChangeFileExt (const AnsiString FileName const AnsiString Extension ); Schimb extensia fiierului FileName la Extension. F11. ExtractFilePath

128

AnsiString __fastcall ExtractFilePath (const AnsiString FileName ); Returneaz calea fiierului FileName, inclusiv caracterele (: ) i (\). F12. ExtractFileDir AnsiString __fastcall ExtractFileDir(const AnsiString FileName ); Returneaz calea fiierului FileName, ultimele caractere vor fi diferite de (: ) i (\). F13. ExtractFileDrive AnsiString __fastcall ExtractFileDrive(const AnsiString FileName ); Returneaz driverul pe care se afl fiierul FileName. F14. ExtractFileName AnsiString __fastcall ExtractFileName(const AnsiString FileName ); Returneaz numele unui fiier dintr-un ir ce conine i calea i drive-ul. F15. ExtractFileExt AnsiString __fastcall ExtractFileExt(const AnsiString FileName ); Returneaz extensia unui fiier. F16. ExpandFileName AnsiString __fastcall ExpandFileName(const AnsiString FileName ); Returneaz numele i calea complet a fiierului FileName. Acest lucru se face prin concatenarea directorului curent la numele fiierului dat ca parametru. F17. ExtractRelativePath AnsiString __fastcall ExtractRelativePath (const AnsiString BaseName const AnsiString DestName ); Returneaz cale relativ a fiierului DestName la calea BaseName. Acest lucru se face prin eliminarea subirului comun lui DestName i BaseName i nlocuirea lui cu irul '.. \'.

129

F18. ExtractShortPathName AnsiString __fastcall ExtractShortPathName(const AnsiString FileName ); Convertete numele i calea fiierului la format 8.3, adic cel n care numele fiierelor i directoarelor aveau 8 caractere, iar extensiile erau de 3 caractere. F19. FileSearch AnsiString __fastcall FileSearch (const AnsiString Name const AnsiString DirList ); Caut fiierul cu numele Name n lista de directoare DirList. Directoarele din aceast list trebuie s fie separate ntre ele prin (; ). Dac este gsit un fiier atunci este returnat mpreun cu calea complet despre el. F20. GetCurrentDir AnsiString __fastcall GetCurrentDir (void); Returneaz directorul curent. F21. SetCurrentDir bool __fastcall SetCurrentDir (const AnsiString Dir); Seteaz directorul curent la Dir. F22. CreateDir bool __fastcall CreateDir (const AnsiString Dir); Creaz directorul Dir. F23. RemoveDir bool __fastcall RemoveDir (const AnsiString Dir); terge directorul Dir. 21. GRAFIC Sistemul de operare Windows este n sine un mediu grafic. El ofera o biblioteca standard cu ajutorul creia programatorul deseneaza ferestre, butoane, cutii de editare, butoane radio etc. Acesta este un prim nivel. Programatorul nu poate interveni aici; sistemul de operare se ocup singur de desenarea acestor obiecte.
130

Nivelul doi n grafica sub Windows furnizeaz programatorului posibilitatea de a desena pe suprafaa anumitor obiecte. Nu pe orice obiect se poate desena, ci doar pe acelea care furnizeaz o suprafa de desenare. De exemplu o cutie de editare nu furnizeaz o suprafa de desenare. O form furnizaz o suprafa de desenare accesibil prin intermediul proprietii Canvas. Accesul la o suprafade desenare se face de asemenea la mai multe nivele. Cel mai simplu const n posibilitatea de a afia o imagine (un bmp). Apoi urmeaz accesul la nivel de pixel. Programatorul, prin intermediul unor primitive cum ar fi dreapta, arcul de cerc, poligonul, etc poate desena figuri complexe. n C++Buider exist trei tipuri de clase care lucrez cu grafic: suprafee de desenare (eng. Canvas) Exemple de obiecte care au Canvas: TForm, TImage, TPaintBox. Trebuie reinut faptul c o suprafa de desenare nu este ceva de sine stttor; ea este ntotdeauna asociat cu un obiect(TForm, TImage, TPaintBox). Acel obiect are o proprietate Canvas, care furnizeaz acces la suprafaa lui de desenare.
-

- Grafice Graficele cele mai uzuale sunt bitmap, icon i metafile. De obicei ele sunt stocate ntr-un fiier ( cu una din extensiile. bmp, icon, emf) sau ntr-un fiier de resurse ( cu extensia. res).
- tablouri (engl. Picture) Un tablou poate conine orice grafic(bitmap, icon, metafile sau grafic definit de utilizator: jpb, gif). Aplicaia poate aceesa toate aceste grafice n acelai fel, prin intermediul clasei TPicture.

Rezumnd: Un tablou ( componenta TPicture) poate conine un grafic (bmp, ico, emf, jpg). Dintre grafice doar clasa TBitmap are o suprafa de desenare (Canvas) Desenarea se face de obicei pe trei obiecte: TForm, TImage, TPaintBox. TFormI are o suprafa de desenare accesibil prin intermediul proprietii Canvas. TPaintBox are acceai utilitate din punct de vedere al graficelor ca i TForm. El nu furnizeaz altceva dect o suprafa de desenare accesibil tot prin intermediul proprietii Canvas. TImage este o component care indic felul n care este afiat (centrat, transparent, ntins pe toat suprafaa) un grafic stocat ntr- un TPicture. TPicture nu este o component pe care s o putei selecta din Component Palette. Ea este proprietate a unui alt obiect, n cazul nostru a lui TImage. Clasa TPicture implementeaz metode care permit ncrcarea unei imagini stocate ntr-un fiier. Un Canvas furnizeaz metode care permit desenarea de obiecte grafice. Dintre ele amintim: Arc, Ellipse, LineTo, Rectangle, Polyline etc. Setarea proprietilor liniilor trasate se face cu ajutorul obiectului TPen. El are proprieti care indic grosimea liniei, culoarea, stilul ei. Clasa TCanvas are proprietatera Pen. n urma apelrii unor metode a lui TCanvas rezult obiecte poligonale nchise ale cror interior este haurat. Felul haurrii este setat cu ajutorul obiectului TBrush. Clasa TCanvas are proprietatea Pen.
131

21.1. TColor enum Tcolor{clMin=-0x7fffffff-1, clMax=0x7fffffff}; Definit n graphics.hpp Specific culoarea unui obiect. Sunt definite constante de culoare care se potrivesc fie cu paleta sistem de culori (clAqu, clBlack, clBlue, clDkGray, clFuchsia, clGray, clGreen, clLime, clLtGray, clMaroon, clNavy, clOlive, clPurple, clRead, clSilver, clTeal, clWhite, clYellow), fie cu sistemul de culori definit de ControlPanel (clActiveBorder, clActiveCaption, clAppWorkSpace, clbackground, clBtnFace, clBtnHighlight, clBtnShadow, clBtnText, clCaptionText, clGrayText, clHighlight, clHighlightText, clInactiveBorder, clInactiveCaption, clInactiveCaptionText, clMenu; clMenuText, clScrollBar, clWindow, clWindowFrame, clWindowText). Totodat o culoare se poate specifica sub forma unui numr pe 4 octei. Ultimii trei octei specific intensitile pentru sistemul RGB(Red, Green, Blue), astfel valoarea 00FF0000 reprezint albastru cu intensitate maxim, 0000FF00 reprezint verde cu intensitate maxim, 00FFFFFF reprezint culoarea alb, 00000000 reprezint culoarea neagr. 21.2 Funcii pentru prelucrarea culorilor F1. ColorToIdent bool __fastcall ColorToIdent (int Color AnsiString &Ident); Dup apel Ident va conine numele culorii Color. Dac culorii respctive nu-i este ataat o constant atunci funcia returneaz false. F2. IdentToColor bool __fastcall IdentToColor (const AnsiString Ident, int&Color); Dup apel Color va conine culoareareinut n Ident sub forma unui ir de caractere reprezentnd numele constantei de culoare (clWhite). F3. ColorToRGB int __fastcall ColorToRGB ( TColor Color); Returneaz culoarea Color n formatRGB. Asta nseamn neglijarea Informaiei stocate n cel mai important octet al tipului TColor. F4. ColorToString AnsiString __fastcall ColorToString ( TColor Color);
132

Returneaz numele culorii Color sub forma unui ir de caractere. Dac exist o constant (clWhite)cares identifice culoarea Color, atunci este returnat aceasta. n caz contrar este returnat sub form de ir valoarea hexazecimal a lui Color. F5. StringToColor TColor __fastcall StringToColor ( const AnsiString S); Returneaz culoarea stocat sub form de ir de caractere. S poate conine fie numele constantei de culoare, fie o valoare hexazecimal. 21.3. TGraphic Este o clas abstract, de baz pentru obicte precum icoane, bitmap i metafile. Ierarhie TObject->TPersistent->TGraphic. Definit n Graphics.hpp. Proprieti P1. Height __property int Height; Specific nlimea n pixeli a imaginii. Fiecare obiect grafic trebuie s ii defineasc propriile lui funcii de tip Get i Set pentru accesarea i setarea valorii acestei proprieti. P2. Width __property int Width; Specific limea n pixeli a imaginii. Fiecare obiect grafic trebuie s ii defineasc propriile lui funcii de tip Get i Set pentru accesarea i setarea valorii acestei proprieti. P3. Empty __property bool Empty;

133

Indic dac obiectul are o imagine ncrcat n el. Proprietatea este Read Only. Fiecare obiect grafic, descendent din TGraphic trebuie s ii defineasc propria lui metod de tip Get pentru a accesa valoarea acestei proprieti. Metode M1. TGraphic __fastcall virtual TGraphic(void); Este constructorul clasei. M2. ~TGraphic __fastcall virtual ~TGraphic(void); Este destructorul clasei. M3. LoadFromFile virtual void __fastcall LoadFromFile(const AnsiString FileName); Citete fiierul cu numele FileName i ii ncarc coninutul ntr-un obiect grafic. M4. SaveToFile virtual void __fastcall SaveToFile(const AnsiString FileName); Salveaz imaginea grafic ntr-un fiier. M5. LoadFromClipboardFormat virtual void __fastcall LoadFromClipboardFormat (Word A Format, int A Data, HPALETTE APalette)=0; ncarc un obiect grafic cu coninutul Clipboard-ului. Fiecare descendent al acestei clase trebuie s ii defineasc propria metod LoadFromClipboardFormat. M6. SaveToClipboardFormat virtual void __fastcall SaveToClipboardFormat (Word &A Format, int &A Data, HPALETTE &APalette)=0;
134

Salveaz coninutul unui obiect grafic n Clipboard. Fiecare descendent al acestei clase trebuie s ii defineasc propria metod SaveToClipboardFormat. M7. LoadFromStream virtual void __fastcall LoadFromStream(Tstream *Stream)=0; ncarc un obiect grafic dintr-un stream. Fiecare descendent al acestei clase trebuie s i defineasc propria metod LoadFromStream. M8. SaveToStream virtual void__fastcall SaveToStream(Tstream*Stream)=0; Salveaz un obiect grafic ntr-un stream. Fiecare descendent al acestei clase trebuie s i defineasc propria metod SaveToStream. Evenimente E1. OnChange __property Classes: TNotifyEvent OnChange; Apare de fecare dat cnd imaginea grafic se schimb. E2. OnProgress __property TProgressEvent OnProgress; Apare cnd imaginea grafic se schimb ncet (ncrcare, transformare etc). Tipul TProgressEvent este definit astfel: void__fastcall (_closure*TProgressEvent)(TObject*Sender, TProgressStagee Stage, Byte PercentDone, bool RedrawNow, const TRect&R, const AnsiString Msg ); unde:

Stage este definit astfel: enum TProgressStage {psStarting, psRunning, psEnding}; i indic dac ne aflm la nceputul schimbarii, n timpul schimbrii, sau la sfritul schimbrii; PercentDone indic aproximativ cam ct la sut din transformare s-a realizat; RedrawNow, indic dac imaginea poate fi desenat pe ecran; R specific poriunea din imagine care s-a schimbat i trebuie redesenat; Msg conine un mesaj specificnd tipul de transformare care este executat.

135

Descendenii acestei clase pot genera evenimentul OnProgress prin apelarea metodei Progress (care este de tip protected). Deoarece TGraphic nu are reprezentare n Component Palette, programatorul trebuie s atribuie el nsui un handler de evenimente la momentul execuiei aplicaiei. 21. 4. TBitmap

Un bitmap este un obiect grafic folosit pentru a crea, manipula i stoca imagini pe disc. Din punctul de vedere al utilizatorului un bitmap (n traducere hart de pixeli) este o matrice de pixeli care formeaza o imagine vizual. TBitmap este o component care stocheaz o imagine n format bitmap. Ierarhie TObject->TPersistent->TGraphic->TBitmap. Definit n graphics. hpp. Proprieti P1. Canvas _property TCanvas*Canvas; Canvas furnizeaz acces la suprafaa de desenare a bitmap-ului. P2. Monochrome __property bool Monochrome; Indic dac bitmap-ul va afia monocrom imaginea pe care o conine. P3. Handle __property HBITMAP Handle; Este un handle-la obiectul de tip bitmap- folosit n apeluri ale funciilor API. P4. HandleType __property TBitmapHandleType HandleType; Indic dac bitmap-ul este de tip DDB (Device Dependent Bitmap). Bitmapurile de tip DDB se deseneaz rapid pe ecran, dar cele de tip DIB sunt stocate n memorie ntr-un format standard recunoscut de ctre toate dispozitivele, inclusiv imprimante. P5. ScanLine __property void*ScanLine[int Row];

136

Pentru o imagine care este stocat n formatul bitmap ca o matrice de pixeli este posibil accesarea prin intermediul proprietii ScanLine a fiecrei linii a matricii. Proprietatea este folosit doar pentru bitmap-uri de tip DIB. Metode M1. LoadFromResource void__fastcall LoadFromResourceID(int Instance, int ResID); ncarc un bitmap dintr-o resurs ntr-un obiect de tip TBitmap. Identificatorul de resurs, pentru bitmap, n cadrul modulului executabil Instance este ResID. M2. LoadFromResourceName void__fastcall LoadFromResourceName(int Instance, int const AnsiString ResName); ncarc un bitmap dintr-o resurs ntr-un obiect de tip TBitmap. Resursa, de tip bitap, n cadrul modulului executabil Instance este ResName. 21. 5. TIcon Un icon este o imagine bitmap combinat cu o masc penru a crea zone transparente. TIcon ncapsuleaz o icoan (HICON) Windows. Ierarhie TObject -> TPersistent -> TGraphic ->TIcon Definit n graphics.hpp

Proprieti P1. Handle __property HICON Handle Este un handle la obiectul de tip icon folosit n apeluri ale funciilor API. 21.6. TMetaFile O imagine poate fi stocat n dou modaliti: bitmap i metafile. Bitmap-ul este n majoritatea caurilir o reprezentare ineficient a unei imagini. pur i simplu stocheaz
137

culoarea fiecrui pixel n parte. Metafile, din contr, este o metod vectorial de stocare a unei imagini. Aceasta nseamn c imaginile nu mai sunt stocate punct cu punct, ci cu ajutorul unor primitive (cerc, elips, dreptunghi etc) care combinate dau imagine metafile este independent de dispozitivul folosit pentru creare i afiare. Intern, un metafile este un vector de structuri care conin primitivele folosite pentru desenarea imaginii. TMetaFile ncapsuleaz un metafile mbuntit. Ierarhie TObject->TPersistent->TGraphic->TMetaFile. Definit n graphics. hpp. Proprieti P1. MMHeight __property int MMHeight; Indic nlimea obiectului metafile n uniti de 0, 01 milimetrii. Aceast proprietatea ofer o mai mare acuratee i o independen fa de dispozitivul cu care a fost creat imagine metafile. P2. MMWidth __property int MMWidth; Indic limea obiectului metafile n uniti de 0, 01 milimetrii. Aceast proprietatea ofer o mai mare acuratee i o independen fa de dispozitivul cu care a fost creat imaginea metafile. P3. Handle __property int Handle; Este un handle la obiectul de tip metafile folosit n apeluri ale funciilor API. P4. CreatedBy __property AnsiString CreatedBy; Indic numele aplicaiei sau al programatorului care a creat acest metafile. Proprietatea este Read-Only. 21.7. TGraphicsObject

Este o cals abstract, de baz pentru obiectele care ncapsuleaz o unelt grafic Windows precum TPen, TBrush, TFont. Metode

138

M1. TGraphicsObject __fastcall TGraphicsObject(void): Classes: TPesistent(); Este constructorul clasei. M2. ~TGraphicsObject __fastcall virtual ~TGraphicsObject(void); Este destructorul clasei. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd un obiect grafic se schimb. Deoarece odiectul TGraphicsObject nu are reprezentare n Component Palette, programatorul trebuie s-i atribuie singur un handler de evenimente la momentul execuiei programului. Vom exemplifica acest lucru pentru obiectul TPen. 21.8. TBrush

Reprezint culoarea i modelul folosite pentru a umple suprafee nchise. TBrush ncapsuleaz obiectul pensul (HBRUSH) din Windows. Ierarhie TObject->TPersistent->TGraphicsObject->TBrush. Definit n graphics. hpp. Proprieti P1. Bitmap __property TBitmap *Bitmap; Specific o imagine care este folosit drept model. Aceast imagine trebuie s fie un ptrt cu latura de 8 (opt) pixeli. Dac este mai mare atunci se va folosi un ptrat de 8x8 din colul din stnga sus al imaginii asignate acestei proprieti. P2. Color __property TColor Color; Specific culoarea pensulei. P3. Style __property TBrushStyle Style;

139

Specific stilul de haurare. Valori posibile pentru Style sunt: bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross. Dac proprietatea Bitmap are atribuit o valoare, atunci valoarea proprietii Style nu are nici un efect. P4. Handle __property HBRUSH Handle; Handle-ul Windows pentru acest obiect. 21.9. TPen

Reprezint culoarea i stilul folosit pentru a trasa curbe. TPen ncapsuleaz obiectul stilou(HPEN) din Windows. Ierarhie TObject->TPersistent->TGraphicsObject->TPen. Definit n graphics. hpp. Proprieti P1. Color __property TColor Color; Specific culoarea liniei. P2. Style __property TPenStyle Style; Specific stilul liniei. Valori pentru Style sunt:

Valoare psSolid psDash psDot psDashDot psDashDotDot psClear P3. Mode

Semnificaie Linie continu. Linie alctuit dintr-o serie de liniue mai mici. Linie punctat. Linie n care alterneaz liniuele i punctele Linie alctuit dintr-o serie de combinaii liniu, punct, punct. Nici o linie nu este desenat.

__property TPenStyle Style;

140

Specific modul n care culorile pensulei i culorile canvasului interacioneaz. Valori pentru Mode sunt: Valoare Semnificaie pmBlack ntotdeauna negru. pmWhite ntotdeauna alb. pmNot Inversul culorii fundalului. pmCopy Culoarea specificat n proprietatea Color. pmNotCopy Inversul culorii specificat n proprietatea Color. pmXor Se aplic operatorul XOR ntre culoarea fundalului i cea a creionului. P4. Width __property int Width; Specific limea maxim a pensulei. P5. Handle __property HPEN Handle; Reprezint handle-ul Windows la acest obiect. S atam n momentul execuiei aplicaiei-obiectului Pen un handler de evenimente pentru evenimentul OnChange. Definim mai nti prototipul acestui handler de evenimente (n fiierul. h la seciunea public): void __fastcall Dup(TObject *Sender); Implementrile din fiierul. cpp sunt urmtoarele: 21.10. TFont Specific fontul pentru un text. Ierarhie TObject->TPersistent->TGraphicsObject->TFont. Definit n graphics. hpp. Proprieti P1. Color __property TColor Color; Specific culoarea textului. P2. Size

141

__property int Size; Specific nlimea fontului n numr de puncte. P3. Height __property int Height; Specific nlimea fontului n numr de pixeli. Relaia dintre Size i Height este urmtoarea: Height=Size *ScreenPixelsPerInch/72. P4. Style __property TFontStyles Style; Specific modul n care sunt desenate caracterele fontului. Style este o variabil de tip mulime deci are ca valoare o submulime din urmtoarele elemente: Valoare fsBold fsItalic fsUnderline fsStrikeout P5. Pitch __property TFontPitch Pitch; Indic dac toate caracterele fontului au aceeai lime. Valorile permise pentru Pitch sunt: Valoare fpFixed fpVariable fbDefault P6. Name __property TFontName Name; Identific numele unui font. P7. Handle __property HFONT Handle; Este un handle la un obiect de tip font. Observaie: Toate aceste proprieti sunt puse la dispoziia utilizatorului ntr-o form atractiv prin intermediul componentei TfontDialog. 21.11. TCanvas Semnificaie Toate caracterele au aceeai lime. Acest lucru este folosit la coduri surs. Caracterele au lime variabil. Acest lucru este util la editare de texte. Limea caracterelor depinde de font. Semnificaie Text ngroat. Text nclinat. Text subliniat. Text tiat n dou cu olinie orizontal.

142

Furnizeaz saiul de desenare pentru obiecte care-i pot desena o imagine pe fa. Ierarhie TObject->TPersistent->TCanvas. Definit n graphics. hpp. Proprieti P1 Brush __propertyTBrush *Brush Specific culoareai modelul de haurare pentru suprafee nchise sau fundale. P2. Font __property TFont *Font; Specific fontul folosit cnd se va scrie un text pe o imagine. P3 Pen __property TPen *Pen; Specific creionul de desenare(engl. pen) folosit. P4 PenPos __property POINT PenPos; Specific poziia curent a creionului de desenare. P5 ClipRect __property TRect ClipRect; Specific marginile suprafeei de desenare. Operaiile de desenare executate n afara acestui dreptunghi sunt invalide.

P6 CopyMode __property long CopyMode; Specific modul n care imaginea se va comporta cnd va fi pus pe canvas. Valori posibile pentru CopyMode sunt: Valoare Semnificaie cmBlackness Umple dreptunghiul destinaie cu negru cmDstInvert Inverseaz imaginea de pe ecran i ignor

143

cmMergePaint cmSrcAnd cmSrcCopy cmSrcErase cmSrcInvert cmSrcPaint cmWhiteness P7. Pixels

imaginea surs. Combin imaginea de pe Canvas i cea din bitmap-ul surs folosit operatorul OR. Combin imaginea de pe Canvas i cea din bitmap-ul surs folosind operatorul AND. Copiaz imaginea surs pe Canvas. Inverseaz imaginea de pe Canvas i rezultatul l combin cu cea din bitmap-ul surs folosind operatorul Boolean OR. Combin imaginea de pe Canvas i cea din bitmap-ul surs operatorul Boolean OR. Combin imaginea de pe Canvas i cu cea din bitmap-ul surs folosind operatorul Boolean OR. Umple dreptunghiul destinaie cu alb.

__property TColor Pixels[int X][int Y]; Specific culoarea fiecrui pixel din interiorul spaiului de desenare. P8. Handle __property HDC Handle; Reprezint un handle la un device context. P9. TextFlags __property int TextFlags; Indic felul n care textul este desenat pe Canvas. Valori posibile pentru TextFlags sunt(ele pot fi combinate cu operatorul or): Valoare Semnificaie ETO_CLIPPED Are ca efect doar cnd textul este tiprit cu metoda TextRect(), i va trunchia textul la dimensiunea dreptunghiului. ETO_OPAQUE n spatele textului tiprit se va desena un fundal care va astupa poriunea din imaginea peste care s-a suprapus dreptunghiul textului. Metode M1. Arc void __fastcall Arc(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);

144

Deseneaz un arc, de-a lungul unei elipse. Elipsa este mrginit de dreptunghiul care are coordonatele punctele din colurile stnga sus i dreapta jos egale cu (X1, Y1) respectiv (X2, Y2). Arcul este delimitat de interseciile dreptelor care trec prin centrul elipsei i prin punctele(X3, Y3)-prima dreapt, respectiv (X4, Y4)- a doua dreapt. Arcul este desenat de-a lungul perimetrului elipsei n sensul acelor de ceasornic, pornind de la primul punct(cel obinut din intersecia elipsei cu dreapta care trece prin(X3, Y3) i prin centrul elpsei) i terminnd cu cel de al doilea punct (cel obinut din intersecia elipsei cu dreapta care trece prin (X4, Y4) i prin centrul elipsei). M2. Chord void__fastcall Chord(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4); Deseneaz o figur nchis, delimitat de o elips(mrginit de dreptunghiul(X1, Y1)-(X2, Y2)) i de dreapta determinat de punctele (X3, Y3), (X4, Y4). Arcul de elips care face parte din figur este luat de-a lungul perimetrului elipsei, n sensul acelor de ceasornic, plecnd de la (X3, Y3)i pn la (X4, Y4). Dac (X3, Y3), (X4, Y4)nu se afl pe perimetrul elipsei, atunci se vor considera cele mai apropiate puncte de pe elips i care se afl i pe dreapta curent. M3 Draw void __fastcallDraw(intX, intY, Tgraphic *Graphic); Copiaz un desen, specificat de parametrul Graphic, pe canvas, n poziia de coordonate(X; Y). Imaginea copiat poate s fie bitmap, icon sau metafile, i va fi desenat ntr-un dreptunghi cu colul din stnga sus de coordonate(X, Y), conform strilor lui CopyMode. M4. StretchDraw void __fastcall StretchDraw(constTRect&Rect, TGraphic *Graphic); Copiaz un desen, specificat de parametrul Graphic, pe canvas, n dreptunghiul Rect. Imaginea copiat poate s fie bitmap, icon sau metafile, i va fi redimensionat astfel nct s umple n ntregimedreptunghiul Rect. M6. Pie void __fastcall Pie(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4); Deseneaz un sector de elips. Elips este ncadrat n dreptunghiul de coordonare (X1, Y1), (X2, Y2). Seciunea desenat este determinat de dou drepte care trec prin centrul elipsei i prin punctele de coordonare(X3, Y3), (X4, Y4). M7. FillRect void __fastcall FillRect( const TRect&Rect); Specific un dreptunghi care va fi haurat cu modelul i culoarea curente.
145

M8. FloodFill void __fastcall FloodFill(int X, int Y, TColor Color, TFillStyle TFillStyle); Haureaz o suprafa, care nu este neaprat dreptunghiular. Suprafaa care au toate culoarea Color sau toate nu au culoare Color. Valori posibile pentru FillStyle sunt: Valoare Semnifcaie fsSurface Haureaz suprafaa care are culoarea Color. procesul este oprit cnd toate punctele care urmeaz s fie colorate nu au culoare Color. fsBorder Haureaz supafaa care nu are culoarea indicat de parametrul Color. procesul este oprit n momentul n care toate punctele care urmeaz s fie colorate cu culoarea Color. M9. FrameRect void __fastcall FrameRect(const TRect *Rect); Deseneaz un dreptunghi. Marginea are limea 1 i este desenat cu setrile proprietii Brush. Interiorul dreptunghiului nu este afectat. M10. LineTo void __fastcall LineTo(int X, int Y); Deseneaz o linie din poziia PenPos pn n poziia (X, Y). penPos devine (X, Y). M11. MoveTo void __fastcall MoveTo(int X, int Y); Mut cursorul grafic n poziia(X, Y). M12. Polygon void __fastcall Polygon (const tag, POINT *Points, const intPoints_Size); Deseneaz o linie poligonal nchis avnd Points_Size puncte. Ultimul punct este unit automat cu primul. M13. PolyLine void __fastcall Polyline(constPOINT *Points, const int Points_Size); Deseneaz o linie poligonal deschis. M14. Rectangle void __fastcall Rectangle(intX1, intY1, intX2, intY2); Deseneaz un dreptunghi. Marginea va fi desenat conform cu setrile proprietii Pen, iar interiorul conform setrilor proprietiiBrush.

146

M15. DrawFocusRect void __fastcall DrawFocusRect(const Windows: TRect&Rect); Deseneaz un dreptunghi care d senzaia c are focus. Acest lucru se realizeaz folosind operatorul XOR. M16. TextOut int __fastcall TextOut(int X, int Y, const AnsiString Text); Deseneaz irul de caractere Text n poziia (X, Y). cursorul grafic este poziionat la sfritul irului. M17. TextWidth void __fastcall TextWidth(const AnsiString Text); Returneaz lungimea, n pixeli, a unui ir de caractere. Aceast metod este util pentru a testa dac un ir de caractere ncape ntr-o imagine. M18. TextHeight int __fastcall TextHeight(const AnsiString Text); Returneaz nlimea, n pixeli, a unui ir de caractere. Aceast metod este util pentru a testa dac un ir de caractere ncape ntr-o imagine. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare dup ce o imagine s-a schimbat. Acest eveniment este generat dup ce a fost apelat una din metodele care schimb coninutul Canvas-ului. E2. OnChanging __property TNotifyEvent OnChanging; Apare nainte de a schimba o imagine. Acest eveniment este generat nainte de a fi apelat una din metodele care schimb coninutul Canvasului. Deoarece componenta TCanvas nu are propria ei reprezentare n Component Pallete, programatorul trebuie s-i asigneze el nsui un handler de evenimente. 21. 12 TGraphicControl Este o clas de baz pentru toate controalele care nu au propria lor fereastr. Scopul acestor obiecte este de a afia texe i imagine pe suprafaa lor. Ele nu pot primi focus. Ierarhie TObject ->TPersistent-> TComponent-> TControl->TGaphicControl.

147

Definit n Controls. hpp. Proprietai P1. Canvas _property TCanvas* Canvas; Furnizeaz, controlului grafic, o suprafa pentru desenare. Proprietatea este ReadOnly. Metode M1. Paint Virtusl void __fastcall Paint (void); La primirea mejasului WM_ PAINT, control iniializeaz canvas-ul i apeleaz metoda Paint. n acest clas Paint nu face nimic, dar descendenii trebuie s o redefineasc pentru a indica modul n care se deseneaz suprafaa unui control. 21. 13. TPaintBox Furnizeaz o component TCanvas n interiorul unui dreptinghi, prevenind desenarea n afara marginilor acestuia. Ierarhie TObject->TPersistent->TComponent->TControl-> TGraphicControl->TPaintBox. Definit n Graphics. hpp. Pagina System. Proprieti P1. Canvas __propertyTCanvas*Canavas; Reprezint suprafaa de desenare.
148

21. 14. TImage Permite afisarea unei imagini pe ecran. Aceast imagine este valoarea propriettii Picture. Poate fi icon, bitmap, metafile, sau orice alt obiect grafic definit de utilizator. Ierarhie TObject->TPersistent- > TC omponent->TControl->TGraphic->TImage. Definit n Extetrls. hpp. Pagina Additional. Proprieti P1. AutoSize _ property bool AutoSize; Dac AutoSize este true, atunci controlul n interiorul cruia se afiseaz imaginea se va redimensiona n funcie de dimensiunile acesteia. P2. Stretch _property bool Stretch; Indic dac imagine trebuie s se redimensioneze astfel nct s ocupe ntreaga suprafa a controlului. P3. Center __property bool Center Indic dac imaginea trebuie centrat n interiorul controlului. Aceast proprietate nu are nici un efect dac proprietile AutoSize sau Stretch sunt setate la true. P4. Picture _property TPicture*Picture; Specific imaginea afiat. 21. 15. TShape

149

Reprezint o curb care poate fi trasat pe o form. Ierarhie TObject -. > TPersistent-. > TComponent -> TControl -> TGraphicControl_-> TShape Definit n Extctrls. hpp. Pagina Additional. Prorietti P1. Brush _property TBrush*Brush; Specific culoarea i modelul de haurare pentru curb. P2. Pen __property TPen* Pen; Specific tipul de creion de desenare folosit pentru a trasa marginea curbei. P2. Shape __property TShapeType Shape; Specific curba care apare pe form. Valori posibile pentru Shape sunt: Valoare siCircle stEllipse stRectangle stRoundRect stRoundSuart stSquare Semnificaie Curba este un cerc. Curba este o elips. Curba este un dreptunghi. Curba este un dreptunghi cu colurile rotunjite. Curba este un ptrat cu colurile rotunjite Curba este un ptrat.

21. 16. TBevel Este un chenar cu contur. Ierarhie TObject->TPersistent->TComponent> TControl-> TGraphicControl-> TBevel.

150

Definit n Extrctrls. hpp. Pagina Additional. Proprieti P1. Style _property TBevelStyle Style; Indic stilul chenarului. Valori posibile pentru Style sunt: Valoare bsLowered bsRaised P2. Shape __property TbevelShape Shape; Indic forma curbei. Valori posibile pentru Shape sunt: Valoare bsBox bsFram bsTopLine bsBottomLine bsRightLine 21. 17. TSplitter Imparte zona client n dou panouri redimensionabile la momentul execuiei programului. Pentru a obine cele dou panouri redimensionabile, procedai astfel: Aezai pe form primul panou, i aliniai-l la stnga ( proprietatea Align va fi setat la valoarea alLeft). Aezai pe form ( la drapta primului panou) o component TSplitter. Ea se va alinia automat la stnga ( va fi lipit de marginea din dreapta a primului panou). Aezai pe form cel de al doilea panou i aliniai-l astfel nct s ocupe ntreaga zon client rmas disponibil(proprietatea Align va fi setat la valoarea alClient). Acum componenta Tsplitter se va afla ntre cele dou panouri. Rulai aplicaia. Cele dou panouri pot fi redimensionate automat la momentul execuiei programului. Observaie: Semnificaie ntrega component apare ridicat s-au scobit, n funcie de valoarea proprietii Style. ntrega margine a componentei apare ridicat s-au scobit Doar marginea de sus a componentei este aiat. Doar marginea de jos a componentei este afiat. Doar marginea dreapt a componentei este afiat. Seminificaie Cherarul este scobit Chenarul este ridicat

151

Nu doar panourile pot fi folosite, ci orice alt control ce poate fi aliniat( are proprietatea Align)! Ierarhie TObject-> TPersistent->TComponent->TGraphicControl-> TSplitter. Definit n Extctrls. hpp. Pagina Additional. Proprieti P1. Beveled _property bool Beveled; Indic dac splitter-ul are sau nu un chenar. P2. MinSize _property int MinSize; Indic care trebuie s fie dimensionea minim a panourilor pentru ca acestea s fi redimensiomate. Pentru dimensiuni mai mici de MinSize, panourile nu se modific. P3. ResizeStyle _property TResizeStyle; Indic felul n care se face redimesionarea panourilor. Valori posibile pentru ResizeStyle sunt: Valoare rsNone rsLine rsUpdate Evenimente E1. OnCanRezize _property TCanResizeEvent OnCanResize; Apare cnd utilizatorul ncearc s mite splitter-ul. Semnificaie Nu are loc nici o redimensionare. O linie este deswenat pentru a indica noua poziie a splitterului. redimensionarea efectiv se face doar dup ce sete eliberat butonul de mouse. Redimensionarea panourilor i mutarea splitter-ului se face concomitent cu micarea mouse-lui.

152

E2. OnMoved _property TnotifyEvent OnMoved; Apare dup ce utilizatorul a terminat de mutat splitter-ul. E3. OnPaint _property TnotyfyEvent OnPaint Apare cnd splitter-ul trebuie s se redeseneze. 21. 18. TlmageList Este o colecie de imagini de aceeai dimensiune, fiecare dintre acestea putnd fi accesat prin intermediul unui indice. Dac ncercai s adugai la lista de imagini o imagine cu dimensiuni mai mari dect cele setate cu ajutorul proprietilor Height i Width, aceast imagine va fi rupt n imagini mai mici care vor fi adugate la list. Deci n loc de o imagine vei avea mai multe. Dac din contr ncercati s adugai la list o imagine cu dimensiunile mai mici dect cele specificate cu ajutorul proprietilor Height i Width atunci lista va rmne nemodificat, la ea neadugnduse nimic. De aceea este foarte important s setai corect aceste dimensiuni, iar apoi s adugai doar imagini de acest fel. Acest lucru l putei face ncrcnd n prealabil imaginia nu direct n list ci ntr-un obiect de tip TBitmap-de unde i putei citi dimensiunile iar apoi dup ce setai corespunztor dimensiunile listei s o adugai la ea. Schimbare dimensiunilor imaginilor listei la momentul execuiei programului va duce la pierderea informailor din ea. ncrcarea unei imagini ntr-o list se poate face i la momentul proiectrii aplicaiei, astfel: - punei pe o form o component TImageList; - executai dublu click pe ea. Pe ecran va apare un ImageListEditor care v permite s prelucrai o list cu imagini la timpul proiectrii aplicaiei: Cu acest editor pot fi ncrcate i imagini de diferite dimensiuni, dar nu se va putea vedea dect o parte din ele(conform cu Options). Ierarhie TObject -> TPersistent-> TComponent -> TCustomImageList-> TImageList Definit n Controls. hpp. Pagina Win 32. Proprietti P1. Count

153

__ property int Count; Indic numrul de imagini dintr-o list. P2. Height __property int Height; Indic nlimea n pixeli a unei imagini. Datorit faptului c n list fi stocate doar imagini de aceeai dimensiune, la schimbarea acestei valori, lista va fi vidat. P3. Width __property int Width Indic laimea n pixeli a unei imagini. Datorit faptului c n list pot fi stocate doar imagini deaceeai dimensiune, la schimbarea acestei valori, lista va fi vidat.

P4. BlendColor __property Graphic: : TColor BleandColor; Specific culoarea care este folost n momentul n care proprietatea DrawingStyle are una din valorile dsFocus sau dsSelectd. P5. DrawingStyle __property TD rawingStleyDrawingStyle: Indic felul n care va fi desenat o imagine de ctre metodele obiectului TImageList. Valori posibile pentru DrawingStyle sunt: Valoare dsFocus dsSelected dsNormal dsTransparent Metode M1. TImageList Semnificaie Deseneay imaginea amestecat 25% cu culoare specificde ctre Belend Color. Deseneaz imaginea amestecat 50% cu culoare specificat de ctreBlendColor. Deseneaz imaginea folosind doar culoare de fundual (proprietatea BkColor). Deseneaz imaginea nend cont de proprietatea BkColor.

154

_fastcall virtual TImage List(TComponent* AOwner); Este constructorul clasei. M2. Add int__fastcall Add (TBitmap*Image, TBitmap*Mask); Adaug imaginea Image mpreun cu masca Mask la lista cu imagini. Mask poate s nu fie NULL. M3. AddIcon int__fastcall AddIcon (TIcon*Image); Adaug un icon la lista cu imagini. M4. AddImages void__fastcall AddImages (TCustomImageList*Value); Adaug imagini dintr-o alt list cu imagini. M5. Clear void__fastcall Clear (void); terge toate imaginile din list. M6. Delete void__fastcall Delete(int Index); terge imaginea cu numrul de ordine Index din list. M7. Draw void__fastcall Draw(TCanvas*Canvas, int X, int Y, int Index); Deseneaz imaginea cu numrul de ordine Index pe suprafaa canvas la poziia (X, Y). Aceast imagine este desenat n conformitate cu proprietatea DrawingStyle. M8. File Load bool__fastcall FileLoad(TresType ResType, AnsiString Name, TColor MaskColor); ncarc, n lista cu imagini, din fiierul Name, tipul de resrs specificat. Valori posibile pentru ResType sunt: rtBitmap, rtIcon, rtCursor. M9. GetBitmap void__fastcall GetBitmap(int Index, TBimap*Imagine); Returneaz imaginea cu numrul de ordine Index din lista cu imagini.

155

M10. GetIcon void__fastcall GetIcon(int Index, TIcon*Image); Returneaz imaginea cu numrul de ordine Index, sub forma unui icon. M11. Insert void__fastcall Insert(int Index, TBimap*Image, TBitmap*Mask); Insereaz un bitmap i masca ataat lui pe poziia Index a unei liste cu imagini. M12. InsertIcon void__fastcall InsertIcon(int Index, TIcon*Image); Insereaz un icon pe poziia Index +1 a unei liste cu imagini. M13. Move void__fastcall Move (int CurIndex, int NewIndex); Mut imaginea de pe poziia CurIndex n poziia NewIndex. M14. Replace void__fastcall Replace (int Index, TBitmap*Image, TBitmap*Mask); nlocuiete imaginea cu numrul de ordine Index din lista cu o alt imagine (Image) mpreun cu masca asociat. ei. M15. ReplaceIcon void__fastcall ReplaceIcon(int Index, TIcon*Image); nlocuiete imaginea de pe poziia Index cu un Icon. Evenimente E1. OnChange __property TNotifyEvent OnChange; Apare cnd coninutul listei de imagini se schimb (o imagine este adugat, tears, . ). 22. CUTII DE DIALOG

156

22. 1. TCommonDialog Este strmoul comun al tuturor componentelor ce reprezint o cutie de dialog. Din el deriv TOpenDialog, TSaveDialog, TPrintDialog, TColorDialog, TOpenPictureDialog, TSavePictureDialog, TFontDialog, TPrinterSetupDialog, TFindDialog, TReplaceDialog. Ierarhie TObject - >TPersistent - >TComponent - > TCommonDialog Definit n Dialogs. hpp. Metode M1. Executate virtual bool__fastcall Executate(void) = 0; Afieaz cutia de dialog. Toate cutiile de dialog enumerate mai sus sunt vizibile doar la momentul execuiei aplicaiei, dup ce s-a executat metoda Executate. Fiecare component va suprascrie n aceast metod pentru afiarea propriei cutii de dialog. Evenimente E1. OnShow _ property TNotifyEvent OnShow; Apare cnd cutia de dialog este afiat. E2. OnHide _ property TNotifyEvent OnClose; Apare cnd cutia de dialog este nchis. 22. 2. TOpenDialog Afieaz o cutie de dialog pentru a selecta fiiere ce urmeaz a fi deschise. Pe ecran este afiat. Ierarhie TObject - >TPersistent - >TComponent - > TCommonDialog - >TOpenDialog

157

Definit n Dialogs. hpp Pagina Dialogs. Proprieti P1. DefaultExt __property AnsiString DefaultExt; Specific extensia implicit pentru un fiier. Acest lucru este util n momentul n care utilizatorul tasteaz un nume de fiier fr extensie. Atunci la acest fiier este adaugat extensia DefaultExt. Spre exemplu dac extensia a fost setat la cpp (Open Dialog 1-> DefaultExt=cpp), atunci dac utilizatorul tasteaz numele fiierului far extensie (de exemplu unit 1), atunci implicit este unit1. cpp. P2. FileName __property AnsiString FileName; Indic numele i calea ultimului fiier selectat. P3. Files __property TStrings*Files; Returneaz o list cu numele i cile fiierelor selectate. Selectarea mai multor fiiere este posibil numai n cazul flagul ofAllowMultiSelect din cadrul proprietii Options este true. P4. Filter __property AnsiString Filter; Specific un filtru pentru selecia de fiiere. Filtru este creat la fel ca i la TCombolListBox. P5. FilterIndex __property int Filter Index; Specific care filtru s fie ales cnd se deschide o cutie de dialog. Filtrele n cadrul proprietii Filter au ataate numere de ordine. Primul filtru are numrul de ordine 1, al doilea 2, etc. Dac se ncearc accesarea unui filtru care are numrul de ordine mai mare dect numrul total de filtre, atunci este ales primul fitru (cel cu numrul de ordine 1).

158

P6. HistoryList __property TStrings*HistoryList; Este o list cu fiierele care au fost deja deschise. P7. IniialDir __property AnsiString InitialDir; Indic directoral current care va aprea implicit cnd se deschide o cutie de dialog. Dac nu se specific nici un director, atunci IniialDir va fi directorul curent de lucru. E1. OnCanClose __property TcloseQueryEvent OnCanClose typedef void__fastcall (_closure*TCloseQueryEvent ) (Tobject*Sender, bool &CanClose); Apare cnd utilizatorul nchide cutia de dialog printr-o operaie diferit de Cancel. Acest eveniment este util atunci cnd selecia unui nume de fiier este incorect. Acest eveniment trebuie s i spun utilizatorului de ce cutia de dialog nu poate fi nchis. Pentru a preveni nchiderea dialogului setai variabil CanClose la false. E2. OnFolderChange __property TNotifyEvent OnFolderChange; Apare cnd utilizatorul schimb directorul al crui coninut este curent afiat n cutia de dialog. E3. OnTypeChange __property TNotifyEvent OnTypeChange; Apare cnd utilizatorul selecteaz un alt filtru pentru fiierele afiate n cutia de dialog. E4. OnSelectionChange __property TNotifyEvent OnSelectionChange; Apare cnd utilizatorul modific coninutul cutie de dialog. Acestlucru include: selectarea unui fiier sau director, selectarea unui nou filtru, crearea unui director etc. 22. 3. TSaveDialog Afieaz o cutie de dialog asemntoare cu cea de tipul Save As. Utilizatorul poate specifica aici
159

modul i locul de salvare al unui fiier. Ierarhie TObject - >TPersistent - >TComponent - > TCommonDialog - >TOpenDialog - >TSaveDialog Definit n dialogs. hpp. Pagina Dialogs. Observaie: Componenta TSaveDialog nu introduce proprieti, metode sau evenimente noi fa de cele ntlnite la TOpenDialog. Mai exist nc dou componente speciale pentru ncrcat i salvat fiiere cu imagini (care au una din extensiile. bmp, . ico, . emf, . wmf. Ele se numesc TOpenPictureDialog i TSavePictureDialog i au acelai proprietui ca i componentele TOpenDialog i TSaveDialog. Componentele pentru ncrcat/salvat imagini au n plus specificate filtre pentru extensie. 22. 4. TFont Dialog Afieaz o cutie de dialog pentru selectarea unui font: Ierarhie TObject - >TPersistent - >TComponent - > TCommonDialog - >TFontDialog Definit n dialogs. hpp. Pagina Dialogs. Proprieti P1. Font __property TFont*Font; Specific fontul selectat. Cnd utilizatorul alege un font i apas butonul OK, fontul selectat este valoarea proprietii Font.
160

P2. MaxFontSize __property int MaxFontSize; Indic valoarea maxim pe care o poate lua dimensiunea unui font. Nu este disponibil pn n momentul n care utilizatorul seteaz fdLimitSize. P3. MinFontSize __property int MinFontSize; Indic valoarea minim pe care o poate lua dimensiunea unui font. Nu este disponibil pn n momentul n care utilizatorul seteaz fdLimitSize.

Evenimente E1. OnApply typedef void__fastcall (closure*TFDApplyEvent) (Tobeject*Sender, HWND Wnd); __property TFDApplyEvent OnApply; Apare cnd utilizatorul apas butonul Apply.

22.5. TColorDialog Genereaz un dialog pentru selectarea unei culori: Ierarhie TObject->TPersistent->TComponent-> TCommonDialog->TFindDialog. Definit n dialogs.hpp. Pagina Dialogs Proprieti P1. Color __property TColor Color; Returneaz culoarea selectat. P2. CustomColors __property TStrings*CustomsColor;

161

Indic care dintre culorile prelucrate sunt disponibile n cutia de dialog. Fiecare culoare prelucrat este specificat printr-un ir de forma ColorX=ValoareHexa. Se pot specifica cel mult 16 culori prelucrate.

22.6 TFindDialog Afieaz o cutie de dialog care permite introducerea unui text care va fi cutat ntr-un fiier . Ierarhie TObject->TPersistent->TComponent-> TCommonDialog->TFindDialog Definit n dialogs.hpp. Pagina Dialogs Proprieti P1. FindText _propertyAnsiString FindText; La apsarea lui FindNext ,FindText va primi ca valoare textul introdus n cutie de ctre utilizator. Options _property TfindOptions Options; Seteaz modul de comportare a cutiei de FindDialog. TfindOptionseste untip mulime ,deci Options va fi o submulime din urmatoarele valori : Valoare Semnificaie frDown Selecteaz butonul de radio Down . Cnd aceast valoare nu este inclus n Options , nseamn c butonul radio Up este selectat frFindNext Acest flag este setat cnd utilizatorul apas pe butonul FindNext. frMatchCase Selecteaz cutia de control Match Case frReplace Se aplic numai la TReplaceDialog .Acest flag indic faptul c aplicaia trebuie s nlocuiasc doar prima apariiea lui FindText . frReplaceAll Se aplic numai la TReplaceDialog . Acest flag indic faptul c aplicaia

P2.

162

feWholeWord frShowHelp Metode M1.

trebuie s nlocuiasc toateapariiile lui FindText Selecteaz cutia de control Match WholeWord . Afieaz un buton de Help .

CloseDialog void__fastcall CloseDialog(void); nchide cutia de dialog , lsnd ns toate proprietile acesteia neschimbate .

Evenimente E1. OnFind __property TNotifyEvent OnFind; Apare cnd butonul FindNext este apsat . n acest handler de evenimente utilizatorul poate scrie ce trebuie s se ntmple cnd este apsat butonul FindNext. La prima vedere s-ar prea c ,cutarea unui text poate fi fcut cu aceast component . Acest lucru este total greit , aceast component oferind un mijloc mai plcut n care utilizatorul poate introduce irul pe care l caut. Programatorului i revine sarcina de a specifica ce se ntmpl cnd butonul FindText este apsat .

22.7.

TReplaceDilog Afieaz o cutie de dialog:

Ierarhie TObject->TPersistent->TComponent-> TCommonDialog->TFindDialog->TReplaceDialog. Definit n dialogs.hpp. Pagina Dialogs Proprieti P1. ReplaceText __property AnsiString ReplaceText; conine textul care trebuie s nlocuiasc FindText .

163

Observaie : Celelalte metode i proprieti sunt preluate de la TFindDialog. Evenimente E1. OnReplace __property TNotifyEvent OnReplace; Apare cnd butoanele Replace sau ReplaceAll sunt apsate. Aici programatorul trebuie s scrie o secven de cod prin care specific ceea ce se ntmpl cnd acest eveniment apare.

22.8 TPrinterSetupDialog Genereaz o cutie de dialog pentru configurarea imprimantei . Ierarhie TObject->TPersistent->TComponent-> TCommonDialog->TPrintDialog. Definit n dialogs.hpp. Pagina Dialogs Proprieti P1. Copies __property int Copies; Indic numrul de copii care trebuie fcute . Dac Copies este 0 sau 1 , atunci csua cu Number of Copies din cutia de dialog va indica 1. P2. FromPage __property int FromPage; Indic numrul paginii din care s nceap s fac listarea. ToPage __property int ToPage; Indic numrul paginii pn la care s se fac listarea. MaxPage __property int MaxPage; Indic numrul maxim al unei pagini pe care utiliyatorul o poate introduce. Acest lucru este posibil doar dac flagul poPageNums este setat. MinPage __property int MinPage; Indic numrul minim al unei pagini pe care utilizatorul o poate introduce.

P3.

P4.

P5.

164

P6.

PrintToFile __property bool PrintToFile; Indic dac cutia de control Print To File este bifat. PrintRange __property TPrint PrintRange; Valoarea lui PrintRange corespunde cutiei cu butoane de radio PtintRange cu cele trei butoane: All, Selection i Pages. Valori posibile pentru PrintRange sunt: Valoare prAllPages prSelection prPageNums Semnificaie Butonul All este selectat,deci toate paginile fiierului vor fi tiprite. Butonul Selection este selectat,deci se listeaz selecia curent a textului. Butonul Pages este selectat,deci utilizatorul poate introduce intervalul de pagini care vor fi tiprite.

P7.

P8.

Collate __property bool Collate; Indic dac cutia de control Collate este selectat. Aceast cutie este util dac se listeaz maimulte copii ale unui document. Dac aceast opiune este setat, atunci se listeaz prima copie, etc. ,n caz contrr se listeaz toate copiile primei pagini, apoi toate copiile celei de a doua pagini, etc. 23. TIMPURI I DATE

23.1. TTimer ncapsuleaz funciile API ale timer-elor Windows. Un timer este o rutin care msoar repetat scurgerea unui interval de timp. Dup scurgerea acestui interval de timp- a crui valoare este indicat de ctre propritatea Interval- sistemul este notoficat pri apelarea evenimentului OnTimer. Datorit faptului c timer-ul depinde de ct de repede sunt prelucrate mesajele din coada de mesaje, intervalul scurs va fi aproximativ. Ierarhie TObject->TPersistent->TComponent->TTimer. Definit n extctrls.hpp.

165

Pagina System Proprieti P1 Enable __property boll Enabled ; Specific dac timpul rspunde la evenimentul OnTimer . Dac Enable este true , atunci controlul rspunde normal la acest eveniment , n caz contrar evenimentul nu va fi apelat. Interval Property unsigned int Interval ; Specific numrul de milisecunde dintre dou apeluri consecutive ale handlerului de evenimente OnTimer.

P2.

Evenimente E1. OnTimer __property TNotifyEvent OnTimer; Apare de fiecare dat cnd trec Interval milisecunde de la ultimul eveniment OnTimer.

23.2 TDate este un tip care ncapsuleaz o dat calendaristic (zi,lun,an).n unitul system.h este definit astfel: typedef System :TDateTime TDate ; 23.3TTime Este un tip care ncapsuleaz un moment din zi ( or, minut , secund, milisecund).n unitul system.h este definit astfel : typedef System:TDateTime TTime ; 23.4TDateTime Este o clas care ncapsuleaz o dat calendaristic (lun,zi, an), un moment din timpul zilei (or, minut, secund, milisecund) mpreun cu funciile care prelucreaz aceste valori. Intern , o valoare TDateTime este reprezentat de o variabil double. Partea ntreag reine data , iar partea fracionar reine timpul . Mai precis , n partea ntreag este reinut numrul de zile care au trecut din data de 12/30/1899.n partea fracionar este reinut ct la sut au trecut din cele 24 de ore ale unei zile .Acest procent este calculat la nivel de milisecunde: Constructori C1. __fastcall TDateTime

166

Creeaz un obiect TDateTime pe care l iniializeaz cu 0. Aceast valoare corespundedatei 12/30/1899 ,12:00 AM. C2. __fastcall TdateTime (const TDateTime &src) Creeaz o copie a obiectului src. C3. __fastcall TDateTime (const double src) Creeaz un obiect TDateTime pe care l iniializeaz cu o valoare double .Acest lucru este posibil din cauza modului de stocare a unui astfel de obiect . __fastcall TDateTime (unsigned short year, unsigned short month,unsigned short day); Creeaz un obiect TDateTime pe care l iniializeaz cu valorile pentru an, lun i zi. n cazul n care acestea nu sunt corecte este generat o excepie de clas EConvertError. __fastcall TDateTime (unsigned short hour , unsigned short min, unsigned short sec , unsigned short msec) Creeaz un obiect TDateTime pe care l iniializeaz cu valorile pentru or , minut , secund i milisecund . n cazul n care acestea nu sunt corecte este generat o excepie de clas EConvertError . Metode M1. CurrentDate static TDateTime __fastcall CurrentDate (); Returneaz data curent . CurrentTime static TDateTime__fastcall CurrentTime(); Returneaz timpul curent . CurrentDateTime static TDateTime__fastcall CurrentDateTime(); Returneaz data i timpul curent. DateString AnsiString_fastcall DateString() const; Returneaz data, stocat n obiectul this, sub forma unui ir de caractere. TimeString AnsiString_fastcall TimeString() const; Returneaz timpul, stocat n obiectul this, sub forma unui ir de caractere. DateTimeString
167

C4.

C5.

M2.

M3.

M4.

M5.

M6.

AnsiString__fastcall DateTimeString() const; Returneaz data i timpul, stocat n obiectul this, sub forma unui ir de caractere. M7. DayOfWeek int__fastcall DayOfWeek() const; ntoarce o valoare ntreag cuprins ntre 1 i 7 indicnd numrul de ordine al zilei din sptmn. Duminic are numrul de ordine 1. DecodeDate void__fastcall DecodeDate(unsigned short* year, unsigned short* month, unsigned short*day)const; Decodific data stocat n obiectul this n valorile componente:an(year); lun(month) i zi(day). M9. DecodeTime void__fastcall DecodeTime(unsigned short*hour, unsigned short*min, unsigned short*sec, unsigned short*msec) const; Decodific timpul stocat n obiectul this n valorile componente:or(hour), minut(min), secund(sec) i milisecund(msec). M10. FormatString AnsiString_fastcall FormatString(const AnsiString& format); Returneaz data i timpul sub forma unui ir de caractere formatat dup anumite specificaii transmise funciei prin parametrul format. Operatori O1. Operatorul + TDateTime_fastcall operator+(const TDateTime& rhs) const; Adun valoarea stocat n this la valoarea rhs i returneaz rezultatul. TDateTime_fastcall operator +(const double rhs) const; Adun valoarea stocat n this la valoarea de tip double rhs i returneaz rezultatul.Acest lucru este posibil, deoarece am spus anterior c un obiect de tip TDateTime opereaz asupra unei date interne de tip double. O2. Operatorul+ = TDateTime&_fastcall operator + =(const TDateTime& rhs); Adaug valoarea din rhs la valoarea din obiectul this. Operatorul TDateTime_fastcall operator-(const TDate& rhs) const;
168

M8.

O3.

Scade dou valori de tip TDateTime i returneaz rezultatul.Acesta reprezint timpul scurs ntre cele dou date. TDateTime_fastcall operator (const double rhs) const; Returneaz diferena dinte data stocat n this i rhs. O4. Operatorul= TDateTime&_fastcall operator=(const TDateTime& rhs); Scade valoarea stocat n rhs din valoarea reinut n this. Operatorul + + TDateTime& operator + +() Incrementeaz data curent stocat cu ozi. TDateTime operator++(int) Incrementeaz data curent stocat cu numrul de zile transmis ca parametru. Operatorul TDateTime& oerator (); Decrementeaz data curent cu o zi. TDateTime operator (int); Decrementeaz data curent stocat cu numrul de zile transmis ca parametru. O7. Operatorul = TDateTime&_fastcall operator=(const TDateTime& rhs); Atribuie obiectul this valoarea stocat n rhs. TDateTime&_fastcall operator=(const double rhs); Atribuie obiectului this valoarea de tip double stocat n rhs. O8. Operatorii <,<=,>,>=, = =,!= bool__fastcall operator<(const TDateTime& rhs)const; bool__fastcall coperator<=(const TDateTime& rhs)const; bool__fastcall operator >(const TDateTime& rhs)const; boll__fastcall operator>=(const TDateTime&rhs)const; Returneaz true dac valoarea stocat n obiectul this este mai mic (mai mic sau egal , mai mare ,mai mare sau egal , egal , diferit)dect valoarea stocat n obiectul rhs. O9. Operatorul AnsiStrig __fastcall operator AnsiStrig()const ; Convertete valoarea stocat n this ntr-un ir de caractere . Operatorul double __fastcall operator double()const; Convertete valoarea stocat n this la double.

O5.

O6.

O10.

23.5.TDateTimePicker
169

Ierarhie TObject->TPersistent->TComponent ->TControl-> TWinControl->TDateTimePicker. Definit n comctrls,hpp. Pagina Win32. Proprieti P1. CalColors __property TMonthCalColors*CalColors; Indic culorile folosite pentru fiecare parte din calendar . ClasaTMonth CalColors are urmtoarele proprieti : MonthBackColor, TextColor ,TitleBackColor , TitleTextColor , TrailingTextColor care indic culorile pentru fundalul principal (acolo unde sunt afiate datele), textul cu care aceste date sunt afiate (n cazul n care fac parte din luna curent selectat ), fundalul de titlu (acolo unde sunt afiate numele lunii i anul), textul de titlu (care indic numele lunii i anul ), textul cu care sunt afiate datele care nu fac parte din luna curent selectat . Kind Enum TDateTimeKind{dtkDate , dtkTime}; __property TDateTimeKind Kind ; Indic dac componenta TDateTimePicker este folosit ca selector dedat sau de timp . DateMode enum TDateTimeMode{dmComboBox, dmUpDown}; __property TDTDateMode DateMode; Dac valoarea lui DateMode este dmComboBox, atunci componenta afieaz (n cadrul n care Kind este setat la dktDate) un calendar din care utilizatorul poate selecta data dorit. Dac valoarea lui DateMode este dmUpDown, atunci componenta nu mai afieaz calendarul prietenos, ci permite utilizatorului s selecteze data (sau timpul) cu ajutorulunei componente TUpDown. Date __property TDate Date; Indic data selectat de utilizator. Time __property Ttime Time; Indic timpul setat de ctre utilizator. DateTime
170

P2.

P3.

P4. P5. P6.

P7.

__property TDateTime DateTime; Indic data i timpul setate de ctre utilizator. MaxDate __property TDate MaxDate; Indic data maxim pn la care utilizatorul poate parcurge calendarul. MinDate __property TDate MinDate; Indic data minim de la care utilizatorul poate parcurge calendarul. DateFormat enum TDTDateFormat{dfShort,dfLong}; _property TDTDateFormat DateFormat; Indic modul n care este afiat o dat. Dac aceasta dfShort, atunci se folosete formatul scurt (ex. 7/11/1999), iar dac este dfLong se folosete formatul lung (ex. 7 noiembrie 1999). ParseInput __property bool ParseInput; OnChange __property TNotifyEvent OnChange; Apare cnd utilizatorul introduce o dat sau un tip nou. OnDropDown __property TNotifyEvent OnDropDown; Apare cnd este afiat calendarul din care utilizatorul i poate selecta o dat. OnCloseUp __property TNotifyEvent OnCloseUp; Apare cnd calendarul din care utilizatorul i selecteaz o dat este nchis.

P8.

P9.

P10. Evenimente E1.

E2.

E3.

23.6. Funcii Pe lng tipurile i clasele prezentate anterior, mediul C++Builder pune la dispoziia progarmatorului un set de funcii care prelucreaz i returneaz valori de tip TDateTime. Funcii F1. F2. F3. Date TDateTime_fastcall Date(void); Returneaz data curent. Time TDateTime_fastcall Time(void); Returneaz timpul curent. Now
171

F4.

F5.

TDateTime_fastcall Now(void); Returneaz data i timpul curent. DayOfWeek int__fastcall DayOfWeek(TDateTime Date); ntoarce o valoare ntreag cuprins ntre 1 i 7 indicnd numrul de ordineal zilei din sptmn. Duminic are numrul de ordine 1. IncMonth TDateTime_fastcall IncMonth(const TDateTime Date, int NumberOfMonths); Adaug NumberOfMonths la data Date i retuneaz dat rezulatat. NumberOfMonths poate fi i neagativ semnific ntoarcerea la o dat precedent lui Date.

F6.

IsLeapYear bool__fastcall IsLeapYear(Word Year); Returneaz true dac anul Year este an bisect. DecodeTime void__fastcall DecodeTime(TDateTime Time,Word&Hour, Word&Min,Word&Sec, Word&MSec); Decodific timpul stocat n obiectul Time n valorile componente:or (hour), minut (min), secund (sec) i milisecund(msc).

F7.

F8.

DecodeDate void__fastcall DecodeDate(TDateTime Date, Word&Year, Word &Month, Word&Day); Codific data stocat n obiectul Date n valorile componente:an(year), lun(month) i zi(day).

F9.

EncodeDate TDateTime_fastcall EncodeDate(Word Year, Word Month, Word Day); Codific valorile Year,Month, Day ntr-un obiect de tip TDateTime pe care l returneaz. EncodeTime TDateTime_fastcall EncoreTime(Word Hour, Word Min, Word Sec, Word Msec); Codific valorile Hour, Min, Sec, Msec, ntr-un obiect TDateTime pe care l returneaz.

F10.

F11.

StrToTime
172

F12.

TDateTime_fastcall StrToTime(const AnsiString S); Convertete o valoare AnsiString care conine valori pentru or, minut, secund, milisecund, ntr-un obiect TDateTime. StrToDate TDateTime_fastcall StrToDate(const AnsiString S); Convertete o valoare AnsiString care conine valori pentru an, lun ,zi,ntr-un obiect TDateTime. StrToDateTime TDateTime_fastcall StrToDateTime(const AnsiString S); Convertete o valoare AnsiString care conine valori pentru an, lun, zi, or, minut, secund, milisecund, ntr-un obiect TDateTime. DateTimeTOStr AnsiString_fastcall DateTimeToStr(TDateTime DateTime); Returneaz data i timpul, stocate n obiectul DateTime, sub forma unui ir de caractere. DateToStr AnsiString_fastcall DateToStr(TDateTime Date); Returneaz data, curent stocat n obectul Date, sub forma unui ir de caractere. TimeToStr AnsiString_fastcall TimeToStr(TDateTime Time); Convertete timpul Time la ir de caractere i returneaz. irul va conine ore, minutul i secunda.

F13.

F14.

F15.

F16.

173