lectii

download lectii

of 173

Transcript of lectii

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

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

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

1

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 DIRECTOARE2

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 #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:

5

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

6

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. TPersistent8

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

9

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. Align14

__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 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 de23

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. All34

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

s

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 caracterulAAAa; 1; _ 1P2a ! 0000-! 90-90; 1; _ 1997-11-06 ! 99>LTpersistent->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 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 cure