Sunteți pe pagina 1din 28

Introducere in Delphi

1.Introducere
Lucrarea este destinata celor care doresc sa dezvolte aplicatii Windows utilizand
mediul de programare Delphi. Am ales Delphi-ul deoarece este usor de invatat, fiind
foarte asemanator cu limbaul !ascal care este predat in liceu. "n alt motiv pentru
care am ales mediul Delphi este ca in urma compilarii programelor se obtin
e#ecutabile mici ce ruleaza rapid si nu necesita librarii ca sa poata rula$un program
similar scris in %isual &asic necesita cca. ' (egab)tes de librarii*.
!entru a putea intelege si folosi acest manual este necesar ca utilizatorul sa cunoasca
bine limbaul !ascal, deoarece Delphi-ul este practic limbaul !ascal orientat pe obiect.
+u toate ca Delphi-ul este un limba orientat pe obiect nu este necesara cunoasterea
principiilor programarii intr-un astfel de limba pentru realizarea unor programe simple.
Daca se doreste realizarea unor componente pentru Delphi sau modificarea unora dintre
cele e#istente atunci este necesara cunoasterea principiilor programarii intr-un limba
orientat pe obiect.
Am ales pentru prezentare Delphi ' ,nterprise ,dition deoarece este varianta cea mai
completa, celelalte variante -!rofessional ,dition, .tandard ,dition fiind variante
prescurtate, care nu contin toate facilitatile variantei ,nterprise.
/+!" - !entium 01 (2z, recomandabil 133 (2z
/Windows 0#4(e, 5111, 678 cu .ervice !ac9 : sau mai nou /(emorie - :5 (b ;A(,
recomandabil 38 (b /2DD - <1 (b $instalare minima*, recomandabil 5'1 (b /(onitor
%=A, recomandabil .%=A cuorezolutie de <11#311 /(ouse ;esursele necesare instalarii si
rularii Delphi-ului sunt-
/+D-;>(
5. !rezentarea mediului D,L!2I '
La pornirea Delphi-ului acesta va arata ca in figura de mai os-
&ara de meniuri &are butoane !aleta de componente!agini ale paletei de componente
Inspectorul de obiecte?ereastra proiectului nou inceput
Din bara de meniuri pot fi accesate meniurile Delphi-ului, bara de butoane permitand
accesul rapid la principalele comenzi.!aleta de comenzi permite accesul rapid la cele peste
511 de componente ale mediului Delphi. !entruomai buna gestionare a componentelor
acestea sunt impartite pe mai multe pagini, e#istand si posibilitatea adaugarii unor pagini
noi si a unor componente noi.In partea stanga a imaginii poate fi observat inspectorul de
obiecte $obect inspector*
cu autorul caruia pot fi modificate proprietatile obiectelor$!roperties* si pot fi stabilite
ce rutine $proceduri* vor fi e#ecutate in momentul aparitiei unor evenimente$,vents*.
5.1 !rincipalele meniuri si comenzi$bara de meniuri*
(eniul ?ile
.e utilizeaza a deschide, salva, inchide, tipari proiecte sau fisiere noi sau e#istente,
pentru adaugarea unor noi ferestre$form* sau unitati de program$unit* proiectului deschis In
meniu putem gasi urmatoarele optiuni-
/6ew - deschideofereastra de dialog de unde putem alege ce obiect dorim sa cream,
sau putem selecta un vraitor $wizard* care sa ne aute la crearea unui nou obiect.
/6ew Application - creeaza un nou proiect care contineofereastra goala, un unit si un
fisier de proiect.
/6ew ?orm - creeazaofereastra goala sioadauga proiectului curent
/6ew ?rame - creeaza un nou frame $fereastra invizibila destinata componentelor
nevizuale aflate in proiect, se utilizeaza pentruomai buna gestiune a componentelor
folosite in cadrul proiectului* pentru proiectul curent
/>pen - deschideofereastra de dialog pentru incarcarea unui proiect, fereastra, unit sau
fisier te#t.
/>pen !roect - deschideofereastra de dialog pentru incarcarea unui proiect e#istent $ fisiere
cu e#tensia &!; sau &!@*
/;eopen - deschide un meniu care contine cele mai noi proiecte sau module utilizate /.ave -
salveaza fisierul curent
/.ave As - salveaza fisierul curent utilizand un nume nou
/.ave !roect As - salveaza proiectul curent cu un nume nou /.ave All - salveaza toate
fisierele deschise
/+lose - inchide proiectul curent si toate fisierele asociate /+lose All - inchide toate fisierele
deschise
/"se "nit - adauga unit-ul selectat la clauza uses a modulului activ /!rint - tipareste fisierul
curent
/,#it - inchide proiectul si paraseste mediul Delphi
(eniul ,dit
.e utilizeaza pentru a manipula te#t sau componente in timpul crearii programului. In meniu
pot fi gasite urmatoarele optiuni-
/"ndo4"ndelete - anuleaza ultima actiune sau stergere /;edo - anuleaza ultima operatie de
undo
/+ut - muta obiectul selectat in +lipboard
/+op) - copiaza obiectul selectat in +lipboard
/!aste - copiaza continutul +lipboard-ului la pozitia cursorului /Delete - sterge obiectul
selectat
/.elect All - selecteaza toate componentele de pe fereastra $form*
/Align to =rid - Aliniaza componentele selectate la cel mai apropiat punct din grila /&ring to
?ront - muta componenta selectata in fata /.end to &ac9 - muta componenta selectata in spate
/Align - aliniaza componentele
/.ize - redimensioneaza componentele selectate
/.cale - redimensioneaza proportional toate componentele din fereastra /7ab >rder - modifica
ordinea in care se sare apasand tasta 7ab /+reation >rder - modifica ordinea in care sunt
create componentele nevizuale
/?lip +hildren - muta obiecte Ain oglindaA e util pentru cazul in care nu se citeste de la stanga
la dreapta ci invers
/Loc9 +ontrols .ecures - AintepenesteA toate componentele in pozitiile curente
/Add to interface - definesteonoua metoda, un nou eveniment,onoua proprietate
pentruocomponenta ActiveB
(eniul .earch
(eniul se utilizeaza pentru a cauta te#t, obiecte, erori, unit-uri, variabile si simboluri
in editorul de cod$fereastra in care se editeaza codul*. In acest meniu putem gasi optiunile-
/?ind - cauta un te#t specificat si marcheaza prima aparitie a acestuia in editorul de cod /?ind
in ?iles - cauta te#tul specificat si afiseaza fiecare potrivire in fereastra aflata sub
/;eplace - cauta te#tul specificat si-l inlocuiese cu un altul /.earch Again - repeta ultima
cautareeditorul de cod
/Incremental .earch - cauta te#tul pe masura ce este scris /=o to Line 6umber - muta cursorul
la linia specificata /?ind ,rror -cauta ultima eroare de rulare
/&rowse .)mbol - cauta dupa un anumit simbol
(eniul %iew
.e utilizeaza pentru a afisa sau ascunde diverse elemente ale mediului Delphi. In meniu putem
gasi urmatoarele optiuni-
/!roect (anager - afiseaza managerul de proiect, acesta poate fi utilizat pentru a
naviga prin fisierele proiectului, pentru a le copia, sterge, adauga, salva.
/7ranslation (anager - afiseaza managerul pentru traduceri
/>bect Inspector - afiseaza inspectorul de obiecte /7o-Do List - face vizibila lista cu ceea ce
trebuie facut in proiect
/Alignment !alette - afiseazaofereastra in care se gasesc optiuni destinate alinierii
obiectelor
/&rowser - afiseazaofereastra in care pot fi vizualizate unit-urile si clasele utilizate in proiect
/+ode ,#plorer - face vizibil editorul de cod
/+omponent List - afiseazaolista cu toate componentele Delphi-ului
/Window List - face vizibilaolista cu toate ferestrele Delphi-ului care sunt deschise
/Debug Windows - afiseaza un meniu din care pot fi alese ce ferestre pentru depanarea
programului vor fi afisate $puncte de intrerupere, apeluri ale subprogramelor,
variabile, fire de e#ecutie, module, +!", ?!" *
/Des9tops - permite afisarea, salvarea sau stergerea diverselor moduri de asezare a
ferestrelor
/7oggle ?orm4"nit - comuta intre fereastra si unit-ul corespunzatoe /"nits - afiseazaolista cu
toate unit-urile proiectului /?orms - afiseazaolista cu toate ferestrele$form* e#istente in proiect
/7)pe Librar) - afiseaza editorul pentru librarii de tipuri $7)pe Librar)*, util pentru a
crea tipuri de informatii pentru controale ActiveB, obiecte (7. si alte obiecte +>(
/6ew ,dit Window - deschide inca un editor de cod
/7oolbars - deschide un meniu din care pot fi selectate ce bare de butoane vor fi afisate
(eniul !roect
,ste utilizat pentru a compilaoaplicatie. !entru ca optiunile din meniu sa poata fi
folosite e necesar sa fie deschis un proiect.
In meniu avem urmatoarele comenzi-
/Add to !roect - adauga un fisier proiectului
/;emove from !roect - elimina un fisier din proiect
/Import 7)pe Librar) - afiseazaolista cu librariile de tipuri inregistrate in sistem
/Add to ;epositor) - adauga proiectul la lista de obiecte ce pot fi create, din meniul
?ile optiunea 6ew.pentru a fi adaugate la proiect.
/%iew .ource - afiseaza sursele proiectului in editorul de cod
/Languages - permite adaugarea, eliminarea sau reinnoirea DLL-urilor pentru limba /Add
6ew !roect - adauga la proiectonoua aplicatie, un nou DLL ... /Add 6ew !roect - adauga la
proiect un altul e#istent /+ompile proect - compileaza doar acele fisiere care au fost
modificate de la ultima
/&uild proect - compileaza toate modulele proiectului
/.)nta# +hec9 proect - verifica sintactic toate modulele proiectului compilare
/Information for proect - afiseaza informatii despre proiectul compilat $nr. de linii,
dimensiunea programului rezultat ...*
/+ompile All !roects - compileaza toate fisierele care au fost modificate de la ultima
compilare in toate proiectele din grupul de proiecte
/&uild All !roects - compileaza toate fisierele in toate proiectele din grupul de
proiecte
/Web Deplo)ment >ption - se utilizeaza pentru a configura controalele ActiveB sau
Active?orm in vederea adaugarii lor la serverul web.
/Web deplo) - adauga controalele ActiveB sau Active?orm, dupa configurarea acestora
/>ptions - afiseazaofereastra de dialog in care se modifica optiunile pentru compilare,
lin9editare etc.
(eniul ;un
(eniul permite depanarea programelor. In acest meniu se afla urmatoarele optiuni-
/;un - compileaza si e#ecuta aplicatia
/Attach to !rocess - afiseazaolista cu procesele care pot fi depanate
/!arameters - de aici se pot specifica- parametrii cu care va fi lansata in e#ecutie
aplicatia, e#ecutabilul corespunzator unu DLL, un calculator pentru depanarea la
distanta
/;egister ActiveB .erver - adaugaointrare in registrii Windows-ului pentru controlul
ActiveB , e valabila comanda atunci cand avem un proiect ActiveB.
/"nregister ActiveB .erver - sterge intrarea in registrii Windows-ului pentru controlul
ActiveB , e valabila comanda atunci cand avem un proiect ActiveB.
/Install (7. >bect - Instaleaza obiectele (7. din proiect intr-um pachet (7.,
comanda valabila doar daca proiectul curent este un obiect (7.$(icrosoft transaction server*
/.tep over - e#ecuta un program linie cu linie, sarind peste proceduri, tratandu-le ca
fiindosingura instructiune
/7race Into - e#ecuta un program linie cu linie, intrand in proceduri
/7race to 6e#t .ource - e#ecuta un program, oprindu-se la urmatoarea linie e#ecutabila din
program
/;un 7o +ursor - ,#ecuta programul curent pana la pozitia cursorului din editorul de
cod
/;un "ntil ;eturn - e#ecuta procesul pana la iesirea din functia curenta /.how ,#ecution
!oint - pozitioneaza cursorul la linia care se e#ecuta /!rogram !ause - opreste temporar
e#ecutia programului ce ruleaza
/!rogram ;eset - termina e#ecutia programului ce ruleaza si elibereaza memoria
ocupata de catre acesta
/Inspect - deschideofereastra in care putem scrie numele variabilei ce se inspecteaza
/,valuate4(odif) - afiseazaofereastra in care putem evalua sau modifica valoarea
/Add Watch - afiseazaofereastra in care putem scrie mai multe variabile a caror valori dorim
sa le urmarimunei e#presii.
/Add &rea9point - afiseaza un meniu din care putem adauga, modifica puncte de
intrerupere
(eniul +omponent
Din acest meniu se pot gestiona componentele instalate. >ptiunile acestui meniu sunt-
/6ew +omponent - deschideofereastra cu autorul careia se pot crea noi componente /Install
+omponent - instaleazaonoua componenta e#istenta /Import ActiveB +ontrol -
adaugaolibrarie de tipuri de controale ActiveB /+reate +omponent 7emplate - salveaza
componente modificate ca sabloane cu un nou
/Install !ac9ages - instaleaza un pachet de componente
/+onfigure !alette - deschideofereastra din care se poate configura paleta de nume,onoua
icoana, peonoua pagina
componente, se pot sterge, ascunde, muta componente dintr-opagina in alta
(eniul Database
Din acest meniu se pot crea, modifica, urmari si vizualiza bazele de date. (eniul contine
urmatoarele optiuni-
/,#plore - lanseaza in e#ecutie Database ,#plorer sau .CL ,#plorer, cu autorul
carora se pot crea si manipula baze de date
/.CL (onitor - lanseaza .CL (onitor cu autorul caruia se pot urmari
alocarea resurselor si starea comenzilor date prin .CL Lin9s
/?orm Wizard - se utilizeaza pentru crearea rapida a unor ferestre de vizualizare a
bazelor de date
(eniul 7ools
(eniul tools se utilizeaza pentru-
-A vizualiza sau modifica configuratia mediului de programare -A vizualiza sau modifica
configuratia depanatorului -A modifica obiectele ce pot fi create cu Delphi-ul -A modifica
lista programelor ce apar in acest meniu -A crea sau modifica tabele ale bazelor de date -A
crea sau modifica pachete de componente -A crea sau modifica imagini
In acest meniu putem avea-
/,nviroment >ptions - specifica configuratia dorita, caile catre librarii, paleta de
/,ditor >ptions - de aici se configureaza editorul de cod $culori, taste rapide, indentari
etc*componente
/Debugger >ption - configurare program de depanare
/;epositor) - gestioneaza modul de organizare a obiectelor ce pot fi create cu optiunea
/7ranslation ;epositor) - afiseaza translation repositor), cu care por fi facute traduceri
/+onfigure 7ools - cu autorul aceste optiuni pot fi adaugate, sterse sau modificate
6ew din meniul ?ile
optiuni ce apar in acest meniu "nelte optionale-
/Database Des9top -lanseaza un utilitar cu autorul caruia putem crea, vizualiza, sorta,
modifica si interoga baze de date.
/!ac9age +ollection ,ditor - editor de pachete
/Image ,ditor - lanseaza un utilitar cu autorul caruia putem edita fisiere de resurse,
/7eam .ource - lanseaza un program destinat gestionarii unor proiecte dezvoltate de
catre grupuri de programatori.icoane, bitmap-uri si cursoare care sa fie folosite in aplicatii
(eniul 2elp
.e utilizeaza pentru a accesa help-ul sistemului. In acest meniu putem gasi urmatoarele
optiuni-
/Delphi 2elp - deschide help-ul Delphi-ului
/Delphi 7ools - deschide help-ul destinat uneltelor din Delphi.
/Windows A!I4.D@ 2elp - deschide help-ul pentru apelurile A!I Windows /&orland 2ome
!age - salt la pagina web a &orland-ului $Inprise-ului* /Delphi 2ome !age - salt la pagina
web a Delphi-ului /Delphi Developer .upport - salt la pagina web destinata programatorilor
/Delphi Direct - legatura directa catre pagina Delphi-ului /+ustomize - permite gestionarea
help-ului
/About - informatii despre cop)right si versiune
5.5 &ara de butoane
!e bara de butoane se afla scurtaturi catre cele mai utilizate comenzi.
>pen proect ;emove from proect
6ew >pen ;eopen .ave .ave all Add to proect 2elp
"nits ?orms 7oggle 6ew form ;un !ause 7race into .tep over
5.: !aleta de componente
!aleta de componente a Delphi-ului este impartita in mai multe pagini, in interiorul
fiecarei pagini e#istand un numar variabil de componente. .tructura paginilor
poate fi schimbata, utilizatorul avand posibilitatea sa creeze pagini noi, componente
noi, poate sa stearga componente sau poate sa le reordoneze.
!entru a obtine informatii generale despre pagina activa utilizatorul poate apasa tasta
?1. Dacaocomponenta este selectata in momentul apasarii tastei ?1 atunci vor fi
afisate informatii despre componenta respectiva.
+omponentele pot sa fie- /%izibile - componenta este vizibila, sau poate fi facuta vizibila
in timpul rularii programului, spre e#emplu butoanele
/Invizibile - componenta apare sub forma unei imagini la scrierea programului, dar in timpul
rularii nu e vizibila, spre e#emplu timer-ul
?iecare componenta are anumite atribute cu autorul carora controlam aplicatia -
/!roprietatile$properties* - ne permit accesul la metodele sau campurile unei
clase.
/(etode$methods* - proceduri si functii asociate unui obiect
/,venimentele$events* - sunt actiuni ale utilizatorului, e#. apasarea unui buton,
sau ale sistemului de operare recunoscute de catre componenta. ?iecare
componenta areolista de evenimente pe care le recunoaste si la care poate raspunde.
,#ista posibilitatea de a asocia un cod care sa se e#ecute fiecarui eveniment.
In tabelul de mai os sunt prezentate paginile paletei de componente, precum sio descriere
scurta a continutului fiecarei pagini.
6ume
Descriere
.tandard
+ontroale standard- butoane, meniuri, etichete
Additional
+ontroale specializate- butoane ce pot contine imagini, liste derulante
Win:5
+ontroale pentru Windows0#467- calendar, bare de stare,
.)stem
+omponente si controale destinate lucrului cu sistemul- timer, media pla)er
Data Access
+omponente invizibile cu autorul carora se poate realiza conectarea la diferite
baze de date utilizand &orland Database ,ngine $&D,*
Data +ontrols
+omponente vizuale destinate accesului$vizualizare, stergere, modificare, adaugare date* la
bazele de date
AD>
+omponente ce permit conectarea la baze de date folosind ActiveB Data >bects
$AD>*
Interbase
+omponente ce permit conectarea la un server Interbase fara &D, sau AD>
(idas
+omponentele din aceasta pagina permit lucrul cu baze de date distribuite
Internet,#press +omponenteledin aceastapagina aplicatii Internet,#press care sunt
simultan aplicatii Web .erver si clienti pentru baze de date distribuite permit construirea
de
Internet
.uport pentru crearea aplicatiilor pentru Internet
?ast6et
>feraovarietate de protocoale de acces la Internet
Decision +ube
+omponente care vizualizeaza datele din bazele de date autand la luarea deciziilor
Cuic9 ;eport
+omponente ce auta la crearea unor rapoarte
Win:.1
+omponente pentru compatibilitatea inapoi cu Delphi 1 $a nu se folosi*
.amples
,#emple de componente $sursele lor se gasesc- Delphi'sourcesamples*
ActiveB
+omponente model de tip ActiveB
.ervers
+omponente destinate accesului la diferite servere
5.8 Inspectorul de obiecte $obect inspector*
Inspectorul de obiecte este utilizat pentru a modifica proprietatilesi a scrie rutinele de
tratare a evenimentelor. Acesta este prevazut cu doua pagini- obiectelor
/!roperties - care permite stabilirea
/,vents - destinata gestionarii evenimentelor legate de componente.proprietatilor
obiectelor
!agina !roperties
,ste prevazuta cu doua coloane-
pe coloana stanga sunt listate denumirile proprietatilor
pe coloana dreapta avem valorile actuale ale acestora Atribuirea unei valori se poate face in
trei moduri-
prin linia de editare aferenta proprietatii$e#. +aption*
prin lista derulanta$e#. &order.t)le*
prin intermediul unei ferestre de dialog$e#. ?ont*
Anumite proprietati $e#. +olor* admit doua modalitati de atribuire a unei valori, prin
lista derulanta, sau daca se da dublu clic, prin fereastra de dialog.
La unele proprietati $e#. &orderIcons, +onstrains* numele este precedat de un semn
plus. In aceste cazuri proprietatea respectiva desemneazaolista de proprietati.
!agina ,vents
,ste prevazuta cu doua coloane-
pe coloana stanga sunt listate denumirile evenimentelor
pe coloana dreapta avem procedurile ce trateaza evenimentele Atribuirea unei valori se poate
face in doua moduri-
prin linia de editare, se da dublu clic pe coloana din dreapta, corespunzatoare
evenimentului pe care dorim sa-l tratam, iar Delphi-ul deschide editorul de cod si ne
permite scrierea codului ce se doreste a fi e#ecutat la aparitia evenimentului respectiv. Antetul
procedurii$metodei* de tratare a evenimentului este scris automat de catre editor. Daca
procedura aferenta unui eveniment nu contine niciolinie de cod aceasta va fi stearsa.
prin lista derulanta, din care se poate alegeoprocedura care a fost definita de
programator anterior, daca de doreste sa se e#ecute aceeasi rutina pentru mai multe
evenimente.
:. =estiunea componentelor
:.1 Asezarea componentelor peoforma$form*
!entru a asezaocomponenta se poate proceda astfel- - .e efectueaza un clic de mouse pe
simbolul grafic al componentei
- .e efectueaza un clic in pozitia in care se doreste plasarea coltului stanga
sus a componentei.
> alta posibilitate de a asezaocomponenta, dar de aceasta data in centrul ferestrei este de a da
dublu clic pe aceasta.
Daca se doreste adaugarea mai multor componente identice atunci se procedeaza astfel- -
.e apasa tasta .2I?7
- .e efectueaza clic pe simbolul grafic al componentei dorite, dupa ace se poate
elibera tasta .2I?7
- .e pozitioneaza obiectul in pozitiile dorite
- !entru revenirea la normal se va efectua un clic pe simbolul sagetii, aflat in partea din
stanga a paginii cu componente.
Delphi-ul contine si anumite componente destinate gruparii mai multor
componente- =roup&o#, ;adio=roup si !anel. Aceste componente container permit
gestionare mai usoara a componentelor continute- se pot muta simultan, pot fi
modificate anumite proprietati simultan$font, culoare*
:.5 (anipularea componentelor asezate
>peratiile se pot e#ecuta asupra unei componente doar daca aceasta este selectata. !utem
selectaocomponenta in mai multe moduri-
.e efectueaza clic in interiorul componentei
.e alege obiectul din lista derulanta a inspectorului de obiecte
Daca focarul este pe fereastra se poate trece de laocomponenta la alta cu tasta 7A& In anumite
cazuri este necesara realizarea unei operatii asupra mai multor componente.
!entru aceasta este necesara selectarea obiectelor asupra carora se va efectua operatia.
!utem selecta un grup de obiecte in doua moduri-
- +u tasta .2I?7 apasata e#ecutam clic pe fiecare din componentele dorite
- ;ealizam un dreptunghi imaginar prin apasarea butonului stang al mouse-ului si
miscarea acestuia astfel incat sa cuprindem in interiorul dreptunghiului
componentele dorite.
Daca de doreste selectarea tuturor obiectelor se poate alege optiunea .elect All din
meniul ,dit.
/+ut - muta obiectele selectate in clipboard
/+op) - copiaza obiectele selectate in clipboard /!aste - copiaza din clipboardAsupra
obiectelor selectate se pot aplica comenzile$ce se gasesc in meniul ,dit*-
/Delete - sterge obiectele selectate
/Align to =rid - aliniaza toate componentele la cele mai apropiate puncte de retea /&ring to
?ront - deplaseaza componentele selectate in fata celorlalte componente /.end to bac9 -
deplaseaza componentele selectate in spatele celorlalte componente /Align -
afiseazaofereastra de dialog cu autorul careia un grup de componente pot fi
/.ize - afiseazaofereastra de dialog cu autorul careia se pot redimensiona
componentele selectate$la dimensiunea celei mai mari, celei mai mici componente ...*aliniate
$dupa cea mai din stanga, cea mai din dreapta, cea mai de sus ...*
/.cale - se pot scala $mari sau micsora*procentual componentele selectate
/7ab >rder - afiseazaofereastra de dialog cu autorul careia putem schimba ordinea de
parcurgere a componentelor, acesta se parcurg in ordine cu 7ab sau cu .hiftD7ab in
ordine inversa
/+reation >rder - afiseazaofereastra de dialog din care putem schimba ordinea de
creare a obiectelor
/Loc9 - blocheaza4deblocheazaocomponenta
+omenzile Align to =rid, &ring to ?ront, .end to &ac9, Align, .ize, .cale, 7ab
>rder, +reation >rder mai pot fi gasite si in meniul care apare daca e#ecutam clic
dreapta pe un obiect.
Daca se doreste se poate face vizibilaopaleta de comenzi destinate alinierii
obiectelor$ meniul %iew optiunea Alingment !alette*.
8 !rogramarea in Delphi
8.1 Lectia 1 - !rogramarea orientata pe obiect $>>!*
6otiunea de obiect. +aracteristici.
Ideea >>! este de a pune la un loc, intr-un singur container, atat datele cat si partea de
cod$proceduri si functii, care poarta denumirea de metode* . +ontainerul se numeste obiect.
>biectul releva utilizatorului $programatorului care utilizeaza obiectul* doar ceea ce este
necesar, astfel incat utilizarea obiectului sa fie cat mai usoara. 7oate mecanismele interne pe
care utilizatorul nu are nevoie sa le cunoasca sunt ascunse. >>! permiteoabordare
modulara a programarii, ceea ce ne fereste de necesitatea rescrierii unor parti de cod.
> alta caracteristica importanta a obiectelor este mostenirea. !rin mostenire se intelege acea
proprietate a obiectelor prin care un obiect nou construit preia datele si metodele unui alt
obiect, parinte. Aceasta caracteristica ne permite scrierea rapida si usoara a unor
obiecte asemanatoare, care au unele date si metode comune.
.e poate intampla ca anumite metode a unei clase sa fie rescrise, astfel incat, chiar
dacaoclasa descendenta are metode cu acelasi nume, sa faca cu totul altceva. Aceasta
caracteristica poarta denumirea de polimorfism.
6otiunea de clasa. +aracteristici.
> clasa sau un tip de clasa definescostructura ce contine campuri, metode si
proprietati. Instanta unui tip de clasa poarta denumirea de obiect1.
"n camp este de faptovariabila care face parte dintr-un obiect. La fel ca si campurile
unui record, campul unei clase reprezintaodata care e#ista in fiecare instanta a unei clase. >
metoda esteoprocedura sauofunctie asociata cuoclasa. (aoritatea metodelor
opereaza asupra obiectelor, care sunt instante ale claselor.
> proprietate esteointerfata pentru data asociata unui obiect$data care de obicei este
stocata intr-un camp*. !roprietatile au specificatori de acces care determina modul in
care datele pot fi citite sau modificate. Din program, din afara obiectului,oproprietate
apare cel mai adesea la fel ca un camp.
!entru obiecte se aloca dinamic blocuri de memorie a caror structura este determinata
de tipul de clasa. ?iecare obiect areocopie unica a fiecarui camp definit in clasa, dar
toate instantele unei clase impart aceleasi metode. >biectele sunt create si distruse cu autorul
unor metode speciale numite constructori si destructori.
+onstructorul esteometoda utilizata pentru crearea unei instante a unei clase. Are rolul
de a initializa unele campuri, de a aloca memorie, sau a face tot ceea ce este necesar
initializarii obiectului. 6u este obligatoriu sa definim un constructor, daca acesta nu a
fost definit se utilizeaza constructorul implicit +reate.
Destructorul esteometoda speciala care este apelata automat la distrugerea obiectului.
De obicei destructorul este vazut ca fiind inversul constructorului, el ocupandu-se
de dezalocarea memoriei alocate clasei. 6u este obligatoriu ca fiecare clasa sa aiba un
destructor.
%izibilitatea membrilor unei clase.
?iecare membru a unei clase are un atribut denumit vizibilitate, care este indicata de
unul dintre cuvintele rezervate- private, protected, public, published. %izibilitatea determina
modul in care membrii pot fi accesati-
In !ascal standard notiunea de clasa nu e#ista, ea fiind inlocuita cu cea de obiect, de aici pot
aparea anumite confuzii. Definitia de mai sus e valabila pentru Delphi, nu si pentru !ascal.1
/!rivate - un membru private este invizibil in afara clasei in care este declarat, altfel
spusometoda declarata ca fiind private nu poate fi apelata din alt modul, iar un camp sau
proprietate nu pot fi citite sau scrise din alt modul
/!rotected - un membru protected este vizibil doar in clasa in care a fost declarat si in
toate clasele descendente.
/!ublic - un membru public este vizibil in e#teriorul clasei.
/!ublished - acest mod de acces este utilizat atunci cand se scriu componente. 7oti
membrii declarati in aceasta zona vor fi vizibili in >bect Inspector.
In scrierea programelor Delphi este utilizata foarte mult >>! deoarece se utilizeaza in
special componente. Aceste componente suntsunt componenteE* care fie sunt create de
utilizator, fie sunt venite impreuna cu Delphi-ul, si pot fi reutilizate in orice alt program.
obiecte$dar nu toate obiectele
!rezint mai osocomponenta 7Animate5 derivata din 7animate -
t)pe
7Animate5 F class$7Animate* private
G !rivate declarations, tot ceea ce e declarat mai os nu e vizibil in afara claseiH
fhintimage-7bitmapI
fhintcolor-7colorI fshowimage-booleanI G !roceduri si functiiH
procedure .et2intImage$v-7bitmap*I procedure .et2int+olor$v-7color*I
procedure setshowimage$v-boolean*I procedure afisimg$.ender-7>bect*I
procedure +(2int.how$var (essage- 7(essage*I message +(J2I67.2>WI protected
G !rotected declarations H public
G !ublic declarations H
constructor +reate$A>wner-7+omponent*IoverrideI destructor Destro)IoverrideI
published
G !ublished declarations H
Gpentru a citi proprietatea 2intImage se citeste din variabila fhintimage, iar pentru
aoscrie se foloseste procedura .et2intImageH
propert) 2intImage-7bitmap read fhintimage write .et2intImageI
Gproprietatea de mai os are definita siovaloare implicita$clwhite - culoarea alba*H propert)
2int7ransparent+olor-7color read fhintcolor write .et2int+olor default clwhiteI propert)
.how2intImage-boolean read fshowimage write .et.howImage default falseI propert) activeI
propert) alignI propert) AnchorsI propert) AutosizeI
propert) &orderWidthI propert) +enterI
propert) +olorI propert) +ommonA%II propert) +onstraintsI
propert) +ursorI propert) ?ile6ameI propert) 2eightI
propert) 2elp+onte#tI propert) 2intI
propert) LeftI
propert) 6ameI propert) !arent+olorI
propert) !arent.how2intI propert) ;epetitionsI
propert) .how2intI propert) .tart?rameI
propert) .top?rameI propert) 7agI
propert) 7imersI propert) 7opI
propert) 7ransparentI propert) %isibleI
propert) WidthI GKKKKKKKK,venimenteH propert) >n+loseI
propert) >n>penI propert) >n.tartI
propert) >n.topI propert) >n+lic9I
propert) >n(ouse(oveI endI
In e#emplul de mai sus ati observat ca a aparut override, care ne indica ca acea metoda poate
fi rescrisa, astfel incat intr-oclasa derivata metoda respectiva va putea e#ecuta un cu totul
alt cod. Daca se doreste ca utilizatorul sa fie obligat sa rescrie metoda atunci se poate
adauga virtual in dreptul metodei.
Intrebari si probleme
1. +e este un obiectL
5. +um pot ascundeometoda, dar clasele derivate saopoata apelaL
:. +e esteoclasaL
8. +are este diferenta dintre clasa si obiectL
'. Din ce cauza avem metode si campuri privateL
3. +and este apelat destructorul unei claseL
8.5 Lectia 5 - ?orm$7?orm*
!entru descrierea formelor pot fi utilizate '1 de proprietati, care pot fi stabilite in
perioada de elaborare a proiectului prin intermediul inspectorului de obiecte. ?ormele
pot sa AreactionezeA la :8 de evenimente. .copul acestui capitol este prezentarea celor
mai importante proprietati, metode si evenimente referitoare la forme. .e mentioneaza
faptul, ca maoritatea proprietatilor si evenimentelor formelor sunt identice cu
proprietatile si evenimentele referitoare la maoritatea componentelor. Astfel, de e#emplu,
atributul Width al unei forme descrie latimea formei, iar in conte#t cuocomponenta acest
atribut se va referi la latimea componentei. ,venimentul >n+lic9 in conte#tul formelor se
refera la efectuarea unui clic pe forma, iar in conte#t cu componentele evenimentul se refera
la efectuarea unui clic pe componenta.
!roprietatile formelor
!roprietatea Action
,ste utilizata pentru centralizarea raspunsurilor la comenzile date de
utilizator. (aoritatii componentelor li se poate asociaoactiune, actiunile fiind
centralizate si gestionate folosind componenta ActionList din pagina standard.
!roprietatea Active+ontrol
,ste utilizata atunci, cand pe forma au fost asezate mai multe componente si se
doreste specificarea componentei care sa fie in focar, in momentul initial. !rin
efectuarea unui clic pe butonul Asageata osA situat in coloana de valori se poate
deschideolista, care contine numele tuturor componentelor formei, care pot fi in focar.
Din lista afisata, printr-un clic, se poate selecta componenta necesara. La un moment dat
numaiosingura componenta poate sa fie in focar. !roprietatea Active+ontrol poate fi
utilizata si in e#ecutie. Daca in aceasta proprietate se incarca un alt nume de
componenta, atunci componenta respectiva va fi pusa in focar. !rin testarea valorii atasata
acestei proprietati se poate decide care anume componenta este in focar la un moment dat.
Daca forma nu este in focar, componenta memorata in Active+ontrol desemneaza acea
componenta, care va aunge in focar in momentul in care forma va reobtine focarul.
!roprietatea Align
.e utilizeaza pentru a alinia componentele sus, la stanga, os sau la dreapta peoforma
sau panel, acestea ramanand pe pozitie chiar daca forma sau panelul se redimensioneaza.
%aloarea implicita este al6one, ceea ce inseamna ca obiectul ramane acolo unde a fost
pozitionat.
!roprietatea Anchors
.e utilizeaza pentru a ne asigura ca obiectul isi pastreaza pozitia relativ la marginile
parintelui$a componentei careocontine*, chiar daca componenta parinte este redimensionata.
+and parintele este redimensionat obiectul isi pastreaza pozitia relativ la marginile de
care a fost ancorat.
!roprietatea Auto.croll $boolean*
.e refera la modul de utilizare a barelor de defilare atasate formei. In cazul in care
se alege valoarea 7rue, care este si valoarea implicita, atunci in caz de nevoie, in e#ecutie,
forma va fi prevazuta cu bare de defilare. Aceste bare vor apare atunci cand utilizatorul a
redimensionat forme pri care componentele asezate pe forma devin invizibile. Daca
se alege valoarea ?alse, nu se vor aseza in mod automat bare de defilare la forma
redimensionata. In acest caz atasarea barelor de defilare poate fi realizata prin
intermediul proprietatilor 2orz.croll&ar.
!roprietatea Auto.ize$boolean*
.e utilizeaza atunci cand se doreste ca obiectul sa se redimensioneze automat. Daca e
pusa pe true atunci se redimensioneaza automat daca continutul se schimba.
!roprietatea &idi(ode
!ermite austarea modului de afisare si a comportamentului automat atunci cand
aplicatia ruleaza intr-ozona in care se citeste de la dreapta la stanga si nu de la stanga la
dreapta.
!roprietate compusa &orderIcons
.e refera la e#istenta in linia de titlu a formei meniului sistem si a butoanelor de
minimizare si ma#imizare. Aceasta proprietate este de tip multime, valorile posibile
fiind urmatoarele-
%aloare
.emnificatie
bi.istem(enu
?orma este prevazuta cu meniul sistem $control*
bi(inimize
?orma este prevazuta cu un buton de minimizare
bi(a#imize
?orma este prevazuta cu un buton de ma#imizare
bi2elp
Daca proprietatea &order.t)le contine valoarea bsDialog sau daca sunt e#cluse
valorile bi(inimize si bi(a#imize, atunci in bara de titlu va apare un semn de
intrebare. Daca se efectueaza un clic pe acest semn, cursorul de mouse va avea forma
definita de comanda cr2elp.
%aloarea implicita a proprietatii &orderIcons este $bi.)stem(enu, bi(inimize,
bi(a#imize*.
!roprietatea &order.t)le
.e refera la stilul chenarului formei. %alorile posibile ale acestei proprietati sunt
urmatoarele-
%aloare
.emnificatie
bsDialog
+henar neredimensionabilI chenarul standard al ferestrelor de dialog.
bs.ingle
+henar neredimensionabil, desenat cuolinie simpla.
bs6one
+henar neredimensionabil, desenat cu linie invizibila.
bs.izeable
+henar redimensionabil standard.
bs7oolWindow
.imilar cu bs.ingle, dar este prevazut cu un mic titlu.
bs.ize7oolWin
.imilar cu bs.izeable, dar este prevazut cu un mic tilu.
!roprietatea &orderWidth$de tip word*
.e utilizeaza pentru controlul bordurii. &ordura este zona din imediata apropiere
a marginilor in care niciocomponenta nu poate fi plasata.
!roprietatea +apiton $de tip string*
.pecifica un sir de caractere care este afisat in linia de titlu al formei, de e#emplu ?orm 1. In
cazul componentelor aceasta proprietate desemneaza eticheta atasata componentei. In acest
ultim caz litera precedata de caracterul AMA este litera de selectie a componentei
$litera de selectie este subliniata si componenta poate fi selectata prin combinatia Alt -
litera subliniata*.
!roprietatile +lient2eight si +lientWidth $de tip integer*
.e refera la inaltimea si latimea zonei client a formei. Aceste valori sunt specificate
in puncte. Nona client este aria utilizabila in interiorul chenarului formei.
!roprietatile +olor $de tip 7colorFlongint*
.tabileste culoarea de fond a formei. !entru initializarea valorii acestei proprietati pot fi
folosite constante predefinite sau valori returnate de functia ;=&. %aloarea implicita
este cl&tn?ace. Daca pentru proprietatea !arent+olor corespunzatoare
unei componente se ia valoarea 7rue, si se modifica valoarea proprietatii
+olor corespunzatoare formei proprietar al componentei, aunci se va modifica
automat si
culoarea componentei.
!roprietatea +onstraints
.e utilizeaza pentru a stabili dimensiunea minima si ma#ima pentruocomponenta.
Aceste dimensiuni nu pot fi depasite.
!roprietatea +tl:D $de tip boolean*
Determina daca forma sau componenta are aspect tridimensional $pentru 7rue* sau
aspect bidimensional $pentru ?alse*. %aloarea implicita este 7rue. Daca pentru
proprietatea !arenttl:D corespunzatoare unei componente se ia valoarea 7rue, si se
modifica valoarea proprietatii +tl:D corespunzatoare formei proprietar
al
componentei, atunci se va modifica automat si aspectul componentei.
!roprietatea +ursor
.tabileste imaginea utilizata pentru reprezentarea cursorului mouse-ului.
!entru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere a
cursorului. %aloarea implicita este constanta crDefault.
!roprietatea Default(onitor
.tabileste pe care monitor va fi afisata forma, in cazul aplicatiilor multimonitor.
!roprietatea Doc9.ite
.tabileste daca forma poate fi tinta unei operatii drag-and-doc9$trage si stabileste*
!roprietatea Drag@ind
.e foloseste pentru a stabili daca se iau obiecte de pe control$drag* sau se pot pune
pe el$doc9*.
!roprietatea ,nabled $de tip boolean*
.e refera la accesibilitatea formei sau componentei. Daca se alege varianta 7rue, care
este si valoarea implicita, atunci forma sau componenta va reactiona la diferitele
evenimente referioare la mouse, tastatura si ceas. Daca se alege varianta ?alse, forma
sau componenta va fi inhibata si nu va raspunde la evenimentele echipamentelor de
intrare. %aloarea acestei proprietati de regula este modificata in e#ecutie, de e#emplu
pentru a interzice utilizarea unor butoane de comanda in conte#tul respectiv. ,ticheta
unei componente inhibate este afisata cu caractere estompate. > componenta inhibata
ulterior poate fi reactivata, moment in care eticheta componentei va fi afisata
cu caractere negre.
!roprietatea compusa ?ont
.tabileste fontul utilizat la te#tele care sunt afisate pe obiectul +anvas al
formei precum si la te#tele aferente componentelor asezate pe forma. ?ontul utilizat
poate fi definit in perioada de elaborare a proiectului, insa poate fi modificat in
e#ecutie, prin redefinirea subproprietatilor +olor $culoare*, 2eight $inaltime*, 6ame
$nume*, !itch $latimea caracterelor*, .ize $dimensiune*, sau .t)le $stil*.
!roprietatea ?orm.t)le
.tabileste stilul formei. %alorile posibile ale acestei proprietati sunt urmatoarele-
%aloare
.emnificatie
fs6ormal
?orma creazaofereastra normala $nici (DI copil, nici (DI parinte*. %aloare
implicita.
fs(DI+hild
?orma creazaofereastra (DI copil
fs(DI?orm
?orma creazaofereastra (DI parinte
fs.ta)>n7op
?orma va fi afi at deasupra celorlalte forme utilizate n proiect
!roprietatile 2eight si Width $de tip integer*
.abilesc inaltimea, respectiv latmea formei sau componentei. Aceste valori sunt
e#primate in puncte care include si dimensiunile rezervate chenarelor.
!roprietatea 2elp+onte#t
.e foloseste pentru a stabili un numar folosit in apelarea autorului$2elp* conte#t-
senzitiv, pentru a determina care fereastra de autor este afisata daca utilizatorul apasa
tasta ?1. Daca 2elp+onte#t are valoarea 1 atunci va fi afisata fereastra de autor
corespunzatoare parintelui.
!roprietatea 2elp?ile
.pecifica fisierul in care se afla autorul.
!roprietatea 2int $de tip string*
.pecifica un te#t e#plicativ care va fi afisat atunci cand cursorul de mouse este asezat
deasupra unei forme sau componente. Acest te#t este afisat
numai aunci cand proprietatea .how2int $de tip boolean* este initializata cu valoarea 7rue.
!roprietatile compuse 2orz.croll&ar si %ert.croll&ar
.tabilesc daca forma este prevazuta sau nu cu bare de defilare orizontale si4sau
verticale. .ubproprietatile barelor de defilare sunt centralizate in tabelul urmator-
!roprietate Descriere
Increment
$o valoare cuprinsa intre 1 si :5O3O, valoarea .tabileste distanta de deplasare a
imaginii din forma in momentul in care utilizatorul efectueaza un clic pe unul din
butoanele cu sageti situate in e#tremitatile barelor de defilare.
implicita este <*
(argin $de tipimplicita este 1* word, valoarea .tabileste momentul de afisare
al barei de defilare. Aceasta proprietate determina numarul minim de puncte care
separa componentele formei si muchia formei. In e#ecutie, dacaocomponenta aunge
laodistanta mai mica decat (argin
puncte de la muchie, si daca proprietatea %isible are valoarea 7rue, atunci se
afiseazaobara de defilare.
!osition
$de tip integer, valoarea implicita este 1* +omunica pozitia actuala a
cursorului glisant al barei de defilare. Aceasta valoare este actualizata automat in
e#ecutie, in functie de defilare.
;ange
$de tip integer, valoarea implicita este 1* Dimensiunea ma#ima de defilare,
e#primata in puncte. La bara de defilare verticala aceasta valoare trebuie sa fie mai
mare decat valoarea proprietatii 2eight $in caz contrar bara verticala este invizibila*. La
bara
de defilare orizontala aceasta valoare trebuie sa fie mai mare decat valoarea
proprietatii +lientWidth $in caz contrar bara orizontala este invizibila*. De e#emplu,
daca proprietatea ;ange a unei bare orizontale contine valoarea '11, latimea formei este
511, atunci valorile proprietatii !osition pot fi in intervalul $1, :11*.
7rac9ing $de avand valoarea implicita ?alse* tip boolean, Daca se alege
valoarea 7rue, imaginea din forma se deplaseaza impreuna
cu butonul de glisare tras de utilizator. Daca se alege valoarea ?alse, imaginea ramane
statica atata timp cat utilizatorul trage butonul de glisare, deci actualizarea imaginii
defilate va avea loc numai in momentul eliberarii butonului glisant al barei de defilare.
%isible $deav nd valoarea implicita 7rue* tip boolean, .e refera la vizibilitatea
barei de defilare. Daca se alege valoarea 7rue, si
daca componenta se afla laodistanta mai mica decat (argin puncte de muchia formei,
atunci bara de defilare devine vizibila.
!roprietatea Icon
.pecifica simbolul grafic care va fi utilizat atunci cand forma este minimizata.
!roprietatea @e)!review $de tip boolean*
.e refera la modul de gestiune a evenimentelor referitoare la utilizarea tastaturii
$>n@e)Down, >n@e)!ress si >n@e)"p*. Daca pentru aceasta proprietate se alege
valoarea 7rue, atunci evenimentele referitoare la tastatura sunt gestionate de forma
actuala, si nu de componentele asezate pe forma, chiar daca in momentul respectiv in
focar se aflaocomponenta. De e#emplu, sa presupunem ca forma contine un buton de
comanda care este in focar. Daca utilizatorul apasaotasta, evenimentele aferente
tastarii vor fi gestionate de procedurile formei si nu de procedurile butonului
de comanda. Daca proprietatea este initializata cu valoarea ?alse, care este si valoarea
implicita, atunci evenimentele referitoare la tastare vor fi gestionate de procedurile
componentei active, si nu de procedurile formei.
!roprietatile Left si 7op $de tip integer* .tabilesc abscisa, respectiv ordonata-
/?ormei fata de coltul stanga sus al ecranuluiI
/+omponentei fata de coltul stanga sau al formei proprietarI
/+omponentei fata de coltul stanga sus al unei componente de tip container. %alorile acestor
proprietati sunt date in puncte.
!roprietatea (enu $de tip 7main(enu*
.tabileste componenta de meniu principal care este utilizat de forma la un moment dat. In
perioada de elaborare a proiectului aceasta proprietate este initializata automat cu prima
componenta (ain(enu asezata pe formaI in e#ecutie valoarea acestei proprietati poate fi
modificata, printr-oinstructiune de atribuire, astfel caoforma poate sa foloseasca mai
multe componente (ain(enu.
!roprietatea 6ame
6umele componentei. >rice componenta trebuie sa aiba un nume unic.
!roprietatea >bect(enuItem
.e utilizeaza pentru a afla sau a precizaooptiune dintr-un meniu care devine activa sau
inactiva atunci cand un obiect >L, de pe formular este selectat sau deselectat.
!roprietatea !arent&idi(ode$boolean*
.tabileste daca controlul foloseste aceeasi valoare pentru &idi(ode ca si parintele.
!roprietatea !arent?ont$boolean*
.tabileste daca controlul foloseste acelasi font ca si parintele
!roprietatea !i#el!erInch
.e utilizeaza in timpul rularii programului pentru a modifica scara de marire a formei la
rezolutia curenta. Daca valoarea este modificata fata de valoarea implicita, forma nu va avea
aceleasi proportii la diferite rezolutii. !entru a avea efect trebuie ca proprietatea .caled
sa fie true.
!roprietatea !opup(enu $de tip 7popup(enu*
Identifica componenta de meniu flotant care este utilizata de forma la un moment dat.
.e mentioneaza faptul ca aceasta propeietate nu este initializata automat cu
componenta !opup(enu asezata pe forma. In e#ecutie valoarea acestei proprietatipoate fi
modificata, printr-oinstructiune de atribuire, astfel caoforma poate sa foloseasca mai
multe componente !opup(enu.
!roprietatea !osition
.e refera la dimensiunea formei si al locul de plasare a acesteia la e#ecutie, fata de
locul si dimensiunea care au fost utilizate in momentul realizarii proiectului. %alorile posibile
sunt-
%aloare
.emnificatie
poDesigned
?orma va avea aceeasi pozitie si dimensiuni ca in momentul elaborarii
proiectului.
poDefault
!ozitia si dimensiunea ferestrei vor fi stabilite de catre Windows
poDefault!os>nl)
!ozitia este stabilita de catre Windows, se pastreaza dimensiunile.
poDefault.ize>nl)
!ozitia este pastrata, Windows-ul alege dimensiunile.
po.creen+enter
Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ecranului. .e fac austari
pentru aplicatiile multimonitor.
po
Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ecranului. 6u se fac austari
pentru aplicatiile multimonitor.
!o(ain?orm+enter Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ferestrei
principale a aplicatiei. 6u se fac austaripentru aplicatiile
multimonitor.
!o>wner?orm+enter Dimensiunile ferestrei se pastreaza, plasandu-se in centrul ferestrei
specificate de proprietatea >wner.
!roprietatea !rint.cale
.e utilizeaza pentru a afla sau stabili proportiile ferestrei tiparite. %alorile posibile
sunt- %aloare
.emnificatie
po6one
6u se scaleaza deloc.
po!roportional
?ereastra este scalata astfel incat imaginea tiparita are apro#imativ aceeasi dimensiune ca
si pe ecran.
po!rint7o?it
?orma este tiparita folosind aceleasi proportii ca pe ecran, dar modificate astfel
incat sa incapa pe pagina.
!roprietatea .caled
.pecifica daca forma va fi redimensionata in functie de valoarea !i#els!erInch
!roprietatea .how2int
Daca are valoarea true atunci va fi afisataoscurta informatie$2int* despre obiectul
deasupra caruia s-a oprit mouse-ul.
!roprietatea 7ag
"tilizata pentru memorarea unei valori intregi. 6u are un rol predestinat.
!roprietatea "seDoc9(anager
.tabileste daca se utilizeaza un manager pentru operatia de drag-and-doc9.
!roprietatea %isible
Daca este true atunci componenta este vizibila.
!roprietatea Window(enu
.e foloseste pentru a alfa sau stabili ce meniu se utilizeaza pentruofereastra parinte
in cazul aplicatiilor (DI$multiple document interface*.
!roprietatea Window.tate
.e refera la modul de afisare pe ecran a ferestrei. !oate avea urmatoarele valori
%alori
.emnificatie
ws6ormal
?ereastra este afisata normal.
ws(inimized
?ereastra este afisata miminizata
ws(a#imized
?ereastra este afisata ma#imizata.
(etode
(etoda &ring7o?ront Aduce forma in fata.
(etoda +lose
.e utilizeaza pentru inchiderea formei.
(etoda 2ide Ascunde forma.
(etoda ;efresh, ;epaint ;edeseneaza forma.
(etoda .caled&)$(, D-integer*
.caleaza toate obiectele de pe forma de (4D ori. .pre e#emplu daca (F1' si DFO
dimensiunile tuturor componentelor se vor inmulti cu valoarea 1'4O, dimensiunile
fonturilor vor fi modificate de asemenea.
(etoda .end7o&ac9
7rimite forma in spatele tuturor ferestrelor e#istente pe ecran.
(etoda .et?ocus
.e utilizeaza pentru a selecta obiectul$controlul*.
(etoda .how
?ace vizibila forma.
,venimente
!entru fiecare dintre evenimentele prezentate mai os Delphi-ul ne permite sa scriemo
rutina care sa trateze evenimentul respectiv. Daca in >bect Inspector e#ecutam dublu clic
pe
unul dintre evenimente Delphi-ul va deschide editorul de cod in care a scris dea
antetul procedurii care va trata evenimentul, noi urmand sa scriem partea de cod
care va trata evenimentul. !rocedura de tratare a evenimentului va avea cel
putin un parametru .ender-7>bect care ne va indica cine a generat evenimentul,
parametru care in general nu e folosit. Daca mai sunt necesari anumiti parametri pentru a
trata evenimentul atunci acestia vor fi inclusi, spre e#emplu pentru evenimentul >n@e)!ress,
care apare la apasarea unei taste, va fi transmis ca parametru si tasta$caracterul* care a care a
fost apasata.
,venimentul >nActivate
Apare atunci cand forma devine activa.
,venimentul >n+an;esize
Apare atunci cand se redimensioneaza controlul. Avem posibilitatea sa stabilim noile
dimensiuni $6ewWidth, 6ew2eight -Integer* si sa stabilim daca suntem de acord
cu redimensionarea $;esize-&oolean*
,venimentul >n+lic9
Apare atunci cand utilizatorul e#ecuta clic pe forma.
,venimentul >n+lose
Apare la inchiderea formei. (odificand parametrul Action avem posibilitatea de a
decide ce se va e#ecuta. !arametrul Action poate avea valorile- %aloare Descriere
ca6one ?orma nu are voie sa se inchida, deci nu se intampla nimic.
ca2ide?orma va fi ascunsa. Aplicatiaomai poate accesa.
ca?ree ?orma este inchisa, iar memoria alocata ei va fi eliberata
ca(inimize ?orma va fi minimizata.
,venimentul >n+loseCuer) Apare cand metoda+lose a fost apelata. !rin
modificarea parametrului
+an+lose-&oolean decidem daca forma se poate inchide sau nu.
,venimentul >n+onstrained;esize
Apare imediat dupa evenimentul >n+an;esize. .e utilizeaza pentru aplicarea
limitarilor dimensiunilor, parametrii (inWidth, (in2eight, (a#Width, (a#2eight
stabilind lungimea minima, inaltimea minima, lungimea ma#ima, inaltimea ma#ima. La
iesirea din procedura de tratare a evenimentului vor fi aplicate constrangerile si se vor
obtine noile dimensiuni, dupa care va apare evenimentul >n;esize care va permite austarile
finale.
,venimentul >n+onte#t!opup
Apare la clic dreapta. !arametrul (ouse!os-7point ne va indica pozitia mouse-ului ,
iar valoare pe careovom atribui parametrului 2andle-&oolean va decide daca va fi
afisat
meniul$daca 2andleFfalse, si proprietatea Auto!opupFtrue* sau daca nu se va e#ecuta
nimic $2andleFtrue*.
,venimentul >n+reate Apare la crearea formei.
,venimentul >nDbl+lic9
Apare atunci cand utilizatorul e#ecuta dubclu clic pe forma.
,venimentul >nDeactivate
Apare cand forma pierde focusul.
,venimentul >nDestro)
Apare cand forma este distrusa.
,venimentul >nDoc9Drop
Apare cand un obiect este depus pe forma prin operatia de drag-and-doc9. +a
parametri vom avea .ource care ne va indica de unde a fost luat obiectul, si pozitia
la care a fost lasat B, P.
,venimentul >nDoc9>ver
Apare cand un obiect este tras peste forma pentruooperatie de drag-and-doc9. +a
parametri vom avea .ource care ne va indica de unde a fost luat obiectul, pozitia la
care se afla B, P si Accept care daca are valoarea true se accepta operatia, altfel nu.
,venimentul >nDragDrop
Apare cand utilizatorul da drumul obiectului adus prin operatia de drag-and-drop. +a
parametri vom avea .ource care ne va indica de unde a fost luat obiectul, si pozitia
la care a fost lasat B, P.
,venimentul >nDrag>ver
Apare cand un obiect este tras peste forma pentruooperatie de drag-and-drop. +a
parametri vom avea .ource care ne va indica de unde a fost luat obiectul, pozitia la
care se afla B, P si Accept care daca are valoarea true se accepta operatia, altfel nu.
,venimentul >n,ndDoc9
Apare cand operatia de tragere s-a terminat. .e utilizeaza pentru a trata situatia in care
operatia de drag-and-doc9 s-a terminat.
,venimentul >n=et.iteInfo
Apare inainte de >nDoc9Drop daca proprietate Doc9.ite este true.
,venimentul >n2elp
Apare cand forma primesteocerere de autor $2elp*.
,venimentul >n2ide
Apare atunci cand forma este ascunsa$spre e#emplu daca %isible ia valoarea false*
,venimentul >n@e)Down
Apare la apasarea unei taste, daca componenta$in acest caz forma* este selectata.
!arametrul @e) ne da codul tastei apasate, iar parametrul .hift, care poate avea
valorile ss.hift, ssAlt, ss+trl, ne indica care dintre tastele .hift, +trl sau Alt a mai
fost apasata odata cu tasta. !entru tastele care nu sunt litere sau cifre se pot
folosi codurile virtuale $e#. %@J!A".,, %@J;,7";6, %@J,.+A!, ... *
,venimentul >n@e)!ress
Apare daca utilizatorul apasaotasta care genereaza un singur caracter. !arametrul
@e) contine caracterul tastei apasate. Daca a fost apasataocombinatie de taste, spre e#.
.hiftD?1, nu provoaca acest eveniment.
,venimentul >n@e)"p
Apare la eliberarea unei taste, daca componenta$in acest caz forma* este selectata.
!arametrul @e) ne da codul tastei apasate, iar parametrul .hift ne indica care dintre
tastele .hift, +trl sau Alt a mai fost apasata odata cu tasta. !entru tastele care nu sunt litere
sau cifre se pot folosi codurile virtuale $e#. %@J!A".,, %@J;,7";6, %@J,.+A!, ... *
,venimentul >n(ouseDown
Apare la apasarea unui buton al mouse-ului. !arametrul &utton poate avea valorile
mbLeft, mb;ight, mb(iddle si ne indica care dintre butoanele mouse-ului au fost
apasate. !arametrul .hift ne indica care dintre butoanele +trl, .hift sau Alt au
fost apasate, iar parametrii B, P ne indica pozitia mouse-ului.
,venimentul >n(ouse(ove
Apare la miscarea mouse-ului peste un control$in acest caz forma*. !arametrul .hift ne
indica care dintre tastele .hift, Alt, +trl au fost apasate, iar parametrii B, P ne indica
pozitia mouse-ului.
,venimentul >n(ouse"p
Apare la eliberarea unui buton al mouse-ului. !arametrul &utton poate avea valorile
mbLeft, mb;ight, mb(iddle si ne indica care dintre butoanele mouse-ului au fost
apasate. !arametrul .hift ne indica care dintre butoanele +trl, .hift sau Alt au
fost apasate, iar parametrii B, P ne indica pozitia mouse-ului.
,venimentul >n(ouseWheel
Apare cand rotita mouse-ului este rotita, daca evenimentul nu este tratat $parametrul
2andle are valoare ?alse* atunci apare evenimentul >n(ouseWheel"p sau
evenimentul >n(ouseWheelDown, in functie de directia in care este invartita rotita.
!arametrul .hift ne indica care dintre tastele +tlr, Alt sau .hift au fost apasate,
parametrul WheelDelta ne indica de cate ori a fost invartita rotita.
,venimentul >n(ouseWheelDown
Apare la invartirea rotitei in os, daca evenimentul >n(ouseWheel nu a fost tratat.
!rocedura are aceesi parametri ca si cea ce trateaza evenimentul >n(ouseWheel
,venimentul >n(ouseWheel"p
Apare la invartirea rotitei in sus, daca evenimentul >n(ouseWheel nu a fost tratat.
!rocedura are aceesi parametri ca si cea ce trateaza evenimentul >n(ouseWheel
,venimentul >n!aint
Apare atunci cand forma este redesenata.
,venimentul >n;esize
Apare la redimensionarea formei.
,venimentul >n.hort+ut
Apare la apasarea unei taste inainte de evenimentul >n@e)Down. .e utilizeaza pentru
a trata short-cut-urile inainte de a trata apasarile obisnuite de taste.
,venimentul >n.how
Apare atunci cand forma este facuta vizibila.
,venimentul >n.tartDoc9
Apare atunci cand utilizatorul incepe sa traga un obiect peste control, iar proprietatea
Drag@ind are valoarea d9Doc9.
,venimentul >n"nDoc9
Apare atunci cand utilizatorul incearca sa ia un obiect ce se afla pe forma. !arametrul
+lient ne indica obiectul ce va fi luat, parametrul 6ew7arget ne indica unde
va fi dus obiectul, iar parametrul Allow il folosim pentru a permite operatia $daca ii
atribuim true*, sau aointerzice.
!robleme si intrebari
1. +um putem face invizibile butoanele sistemL
5. +um putem realiza o forma de dimensiune 111#111 care sa
nu poata fi
redimensionataL
:. .crietioaplicatie care sa afiseze pozitia mouse-ului ca titlu a formei.
8. .crietioaplicatie care sa se inchida daca se apasa butonul stang al mouse-ului pe
forma.
'. .crietioaplicatie care sa aibaoforma$fereastra* care sa AfugaA de mouse-ul
utilizatorului ori de cate ori acesta aunge cu mouse-ul pe ea.
8.: Lectia : - &utonul
&utonul este des utilizat pentru a initia diverse actiuni la apasare. In Delphi e#ista trei
tipuri de butoane-
Imagine 7ip buton Descriere
&utton
butonul standard
&it&tn
denumirea vine de la &itmap &utton si permite asezarea unui bitmap $imagini* in interiorul
butonului. ,#ista posibilitatea de a stabili cateoimagine pentru fiecare stare a butonului-
ridicat, apasat, dezactivat.
.peed&utton
permite adaugarea unei $a unor* imagini care poate $pot* acoperi intreg butonul.
&utoanele de acest tip se pot grupa.
Deoareceomare parte din proprietatile, metodele si evenimentele butoanelor sunt comune cu
cele de la form voi trata doar ceea ce apare nou.
8.:.1 &utton$7&utton*
.e utilizeaza pentru a pune un buton standard pe form.
!roprietatile butonului
!roprietatea Action
,ste utilizata pentru centralizarea raspunsurilor la comenzile date de utilizator.
(aoritatii componentelor li se poate asociaoactiune, actiunile fiind centralizate si gestionate
folosind componenta ActionList din pagina standard.
!roprietatea Anchors
.e utilizeaza pentru a ne asigura ca obiectul isi pastreaza pozitia relativ la marginile
parintelui$a componentei careocontine*, chiar daca componenta parinte este redimensionata.
+and parintele este redimensionat obiectul isi pastreaza pozitia relativ la marginile de
care a fost ancorat.
!roprietatea &idi(ode
!ermite austarea modului de afisare si a comportamentului automat atunci cand
aplicatia ruleaza intr-ozona in care se citeste de la dreapta la stanga si nu de la
stanga la dreapta.
!roprietatea +ancel$boolean*
Daca are valoarea true atunci la apasarea butonului ,scape va avea loc evenimentul
>n+lic9
!roprietatea +apiton $de tip string*
.pecifica un sir de caractere care este afisat pe buton, de e#emplu &utton1. In cazul
componentelor aceasta proprietate desemneaza eticheta atasata componentei. In acest
ultim
caz litera precedata de caracterul AMA este litera de selectie a componentei $litera de
selectie este subliniata si componenta poate fi selectata prin combinatia Alt - litera subliniata*.
!roprietatea +onstraints
.e utilizeaza pentru a stabili dimensiunea minima si ma#ima pentruocomponenta.
Aceste dimensiuni nu pot fi depasite.
!roprietatea +ursor
.tabileste imaginea utilizata pentru reprezentarea cursorului mouse-ului.
!entru selectarea unei imagini se vor folosi diferitele constante predefinite de descriere
a cursorului. %aloarea implicita este constanta crDefault.
!roprietatea Default
Daca are valoarea true atunci la apasarea tastei ,nter va avea loc evenimentul
>n+lic9.
!roprietatea Drag+ursor
.pecifica ce imagine sa fie utilizata pentru buton atunci cand acesta este tras $dragg*
!roprietatea Drag@ind
.e foloseste pentru a stabili daca se iau obiecte de pe control$drag* sau se pot pune
pe
el$doc9*.
!roprietatea Drag(ode
.tabileste daca utilizatorul poate e#ecuta operatia de drag$tragere*. Daca
valoarea
proprietatii este dn(anual utilizatorul nu poate e#ecuta operatia, iar daca valoarea proprietatii
este dmAutomatic atunci poate e#ecuta operatia de drag.
!roprietatea ,nabled $de tip boolean*
.e refera la accesibilitatea componentei. Daca se alege varianta 7rue, care este si
valoarea implicita, atunci componenta va reactiona la diferitele evenimente referitoare
la mouse, tastatura si ceas. Daca se alege varianta ?alse, componenta va fi inhibata si
nu va raspunde la evenimentele echipamentelor de intrare. %aloarea acestei proprietati
de regula este modificata in e#ecutie, de e#emplu
pentru a interzice utilizarea unor butoane de comanda in conte#tul respectiv.
,ticheta unei componente inhibate este afisata cu caractere estompate. > componenta
inhibata ulterior poate fi reactivata, moment in care eticheta componentei va fi
afisata cu caractere negre.
!roprietatea compusa ?ont
.tabileste fontul utilizat la te#tele care sunt afisate pe obiectul +anvas al
formei
precum si la te#tele aferente componentelor asezate pe forma. ?ontul utilizat poate fi
definit in perioada de elaborare a proiectului, insa poate fi modificat in e#ecutie, prin
redefinirea subproprietatilor +olor $culoare*, 2eight $inaltime*, 6ame $nume*,
!itch $latimea
caracterelor*, .ize $dimensiune*, sau .t)le $stil*.
!roprietatile 2eight si Width $de tip integer*
.abilesc inaltimea, respectiv latmea formei sau componentei. Aceste valori sunt
e#primate in puncte care include si dimensiunile rezervate chenarelor.
!roprietatea 2elp+onte#t
.e foloseste pentru a stabili un numar folosit in apelarea autorului$2elp* conte#t-
senzitiv, pentru a determina care fereastra de autor este afisata daca utilizatorul apasa
tasta ?1. Daca 2elp+onte#t are valoarea 1 atunci va fi afisata fereastra de autor
corespunzatoare parintelui.
!roprietatea (odal;esult
!roprietatea se poate utiliza pentru a inchideofereastra modala $care a fost facuta
vizibila cu metoda .how(odal*, returnand valoarea din (odal;esult in campul (odal;esult
al ferestrei modale. 6u este necesar sa scriem cod care sa trateze apasarea butonului.
!entru clarificare vezi ,#emplul 1.
!roprietatea poate avea mai multe valori- +onstanta %aloare +e face
mr6one 1 6imic
(r>9 id>@ "tilizatorul a iesit apasand butonul >@
mr+ancel id+ancel "tilizatorul a iesit apasand butonul +A6+,L
mrAbort idAbort "tilizatorul a iesit apasand butonul A&>;7
mr;etr) id;etr) "tilizatorul a iesit apasand butonul ;,7;P
mrIgnore idIgnore "tilizatorul a iesit apasand butonul I=6>;,
(rPes idPes "tilizatorul a iesit apasand butonul P,.
(r6o id6o "tilizatorul a iesit apasand butonul 6>
!roprietatea !arent.how2int$boolean*
.e utilizeaza pentru a ne asigura ca fie toate componentele afiseaza 2int-ul fie toate nu
il afiseaza. Daca !arent.how2int e true atunci obiectul foloseste .how2int-ul parintelui,
altfel decizia de a afisa 2int-ul va fi luata in functie de .how2int-ul propriu.
!roprietatea 7ab>rder
!oate lua valori in intervalul -1..:5O3O si stabileste la a cata apasare a tastei 7ab se
aunge la obiectul$controlul* respectiv. !rimul obiect adaugat are valoarea
proprietatii 7ab>rder 1, urmatorul 1, al treilea 5 s.a.m.d.
!roprietatea 7ab.top$boolean*
.e foloseste pentru a permite sau interzice accesul la control prin folosirea tastei 7ab.
(etode
(etoda +lic9
.imuleaza apasarea butonului.
,venimente
,venimentul >n,nter
Apare atunci cand controlul$in cazul nostru butonul* primeste focus-ul, spre e#emplu
cand se aunge cu 7ab pe el.
,venimentul >n,#it
Apare atunci cand controlul pierde focus-ul, spre e#emplu cand un alt control de pe
fereastra primeste focus-ul. !entru lamuriri vezi e#emplul 5.
,#emple
,#emplul 1
"rmatoarea aplicatie va folosi proprietatea (odal;esult a butonului.
+reationoua aplicatie care are doua form-uri$ferestre*- ?orm1 si ?orm5.
!e ?orm1 puneti un buton a carui eveniment >n+lic9 e tratat de procedura-
procedure 7?orm1.&utton1+lic9$.ender- 7>bect*I begin
if form5..how(odalFmro9 then
form1.+aption-FQ>@Q
else form1.+aption-FQ6oQI
endI
!e ?orm5 puneti doua butoane, unul avand
(odal;esultFmr>9, iar celalaltavand
(odal;esultFmr6o.
+ompilati, lansati in e#ecutie si testati functionarea programului apasand succesiv pe
cele doua butoane din fereastra a doua$?orm5*.
,#emplul 5
!entru a ilustra folosirea evenimentelor >n,nter si >n,#it creationoua aplicatie pe a
carei fereastra puneti doua butoane- &utton1 si &utton5, iar pentru &utton5 scrieti
codul urmator pentru tratarea evenimentelor >n,nter si >n,#it-
procedure 7?orm1.&utton5,nter$.ender- 7>bect*I begin
button5.+aption-FQ,nterQI endI
procedure 7?orm1.&utton5,#it$.ender- 7>bect*I begin
button5.+aption-FQ,#itQI endI
+ompilati programul, lansati-l in e#ecutie dupa care treceti de la un buton la altul
folosind tasta 7ab.
8.:.5 &it&tn$7&it&tn*
Are aceleasi proprietati, metode si evenimente ca si butonul clasic, in plus adaugandu- se
posibilitatea de a aveaoimagine$bitmap* pe buton.
!roprietati
!roprietatea =l)ph
+are stabileste ce imagine va fi afisata pe buton. !utem avea ma#im patru imagini in
fisierul bitmap, toate imaginile fiind de aceeasi dimensiune, asezate pe aceeasi linie una langa
cealalta. !e buton va fi afisata una dintre imagini in functie de starea butonului.
!ozitia imaginii
.tarea butonului
Descriere
!rima
.us
Aceasta imagine apare daca butonul e in pozitia ridicat. Daca nu e#ista alte imagini
atunci aceasta imagine este utilizata si pentru celelalte stari.
A doua
Dezactivat
Apare daca butonul nu poate fi selectat $proprietatea enable F false*
A treia
Apasat
Apare cand s-a facut clic pe buton.
A patra
Ros
Apare daca butonul a ramas os.
!roprietate @ind
.tabileste ce imagine se va afisa pe buton, precum si valoarea (odal;esult. !oate
avea urmatoarele valori- %aloare &uton Descriere
b9+ustom %a fi afisata imaginea din =l)ph, valoarea (odal;esult trebuie stabilita
manual
.e poate utiliza pentru anularea unei actiuni.
b9Abort
b9All ,ste recomandat a se utiliza pentru selectia a mai multor optiuni.
b9+ancel %aloarea proprietatii +ancel este setata automat la valoarea true, (odal;esult
va avea valoarea mr+ancel
La apasarea butonului fereastra se va inchide. %aloarea
b9+lose
proprietatii Default este true.
La apasarea butonului va fi apelat 2elp-ul programului.
b92elp
,ste recomandat a se utiliza daca a aparut o eroare iar
b9Ignore
utilizatorul doreste sa continue operatia
b96o %aloarea proprietatii +ancel este setata automat la valoarea true, (odal;esult va avea
valoarea mr6o
b9>9 %aloarea proprietatii Default este pusa automat pe valoarea true, (odal;esult va avea
valoarea mr>9
,ste recomandat a se utiliza daca a aparut o eroare iar
b9;etr)
utilizatorul doreste sa reincerce operatia.
b9Pes %aloarea proprietatii Default este pusa automat pe valoarea true, (odal;esult va avea
valoarea mr>9
!roprietatea La)out
.tabileste pozitia imaginii pe buton. !oate avea urmatoarele valori-
%aloare
Descriere
bl=l)phLeft
!une imaginea in partea stanga a te#tului.
&l=l)ph;ight
!une imaginea in partea dreapta a te#tului.
&l=l)ph7op
!une imaginea deasupra te#tului.
&l=l)ph&ottom
!une imaginea sub te#t.
!roprietatea (argin
.tabileste distanta, in pi#eli, intre imagine si marginea butonului. Daca valoarea este - 1
$valoare implicita* atunci imaginea si te#tul vor fi centrate
!roprietatea 6um=l)phs
Indica numarul de imagini care se afla in bitmap-ul memorat in =l)ph. 6umarul de
imagini poate fi intre 1$valoare implicita* si 8.
!roprietatea .pacing
.tabileste numarul de pi#eli dintre imagine si te#t, implicit are valoarea 8. Daca are
valoarea -1 atunci te#tul va fi centrat intre imagine si marginea butonului.
!roprietatea .t)le
Determina modul in care este afisata imaginea pe buton. !oate avea urmatoarele
valori- %aloare
Descriere
bsAutoDetect
Daca folosim Windows :.1 bitmap-ul va avea infatisarea din Windows :.1, altfel va
avea noua infatisare.
bsWin:1
%a folosi infatisarea standard din Windows :.1
bs6ew
%a folosi noua infatisare
8.:.: .peed&utton$7.peed&utton*
?ata de butonul clasic 7.peed&utton-ul introduce proprietati care sa-i permita lucrul in
grupuri de butoane, spre e#emplu in bare de butoane.
!roprietati
!roprietatea AllowAll"p
Determina daca toate butoanele ce fac parte dintr-un grup pot sa fie toate ridicate
simultan sau nu. Daca are valoare true atunci butoanele ce fac parte din acelasi grup
pot fi toate ridicate, altfel unul dintre butoane va fi apasat, iar la apasarea unui alt
buton butonul apasat se va ridica. Daca campul =roupInde# este 1 atunci AllowAll"p nu are
nici un efect.
!roprietatea Down
.e foloseste pentru a afla daca butonul este apasat sau nu. !roprietatea este valabila
doar daca proprietatea =roupInde# este diferita de 1.
!roprietatea ?lat
Daca are valoarea true butonul nu va fi afisat :D. Daca proprietatea are valoarea true
putem folosi imagini$bitmap* care sa ilustreze starea butonului.
!roprietatea =roupInde#
!ermite sa selectam din ce grup face parte butonul. Daca are valoarea 1 atunci fiecare
buton actioneaza separat, iar daca areovaloare mai mare ca 1 atunci desemneaza
numarul grupului din care face parte butonul. Daca utilizatorul apasa un buton din grup
acesta ramane apasat pana cand un alt buton din grup va fi apasat.
!roprietatea 7ransparent
.pecifica daca fundalul butonului este transparent sau nu.
Intrebari si probleme
1. +um procedam ca un buton sa nu poata fi selectat decat cu mouse-ulL.
5. .a se scrieoaplicatie care afisandofereastra pe care se afla un buton care AfugeA ori
de cate ori utilizatorul a auns cu mouse-ul pe el, dar nu poate iesi in afara ferestrei.
:. .a se scrieoaplicatie care afiseazaofereastra pe care se afla trei butoane din care
unul singur poate fi selectat la un moment dat si care afiseaza un mesa, ca titlu al
ferestrei, in functie de ce buton este apasat.
8. .a se scrieoaplicatie care are butoane ce au alta culoare decat a ferestrei.
8.8 Lectia 8 -,dit
.e utilizeaza pentru a permite programului sa preia un te#t de la utilizator. .e poate
utiliza si pentru a afisa un te#t.
!roprietati
!roprietatea Auto?ocus
Daca are valoarea true atunci te#tul va fi selectat cand controlul va primi focus-ul. .e
pune pe valoarea true daca e mai probabil ca utilizatorul sa inlocuiasca te#tul e#istent decat sa
adauge ceva la el.
!roprietatea Auto.ize
Daca are valoarea true atunci controlul isi va modifica inaltimea daca inaltimea
te#tului se schimba, daca nu e#ista posibilitatea ca te#tul sa fie trunchiat.
!roprietatea &order.t)le
Determina daca controlul va aveaobordura, si atunci are valoarea bs.ingle, sau nu, si
atunci are valoarea bs6one.
!roprietatea +har+ase
Determina ce fel de litere se pot folosi$mari, mici sau combinat*. !roprietatea poate
lua urmatoarele valori- %aloare
Descriere
ecLower+ase
Literele sunt transformate in litere mici
ec6ormal
.e pot utiliza atat litere mari cat si litere mici
ec"pper+ase
Literele sunt transformate in litere mari
!roprietatea 2ide.election
Determina daca te#tul ramane selectat atunci cand controlul pierde focusul. Daca are
valoare false atunci la pierderea focusului te#tul ramane selectat. .e poate accesa
te#tul selectat prin intermediul proprietatii .el7e#t. !ozitia de inceput a selectiei este
memorata in proprietatea .el.tart, iar lungimea te#tului selectat e memorata in .elLength.
!roprietatile Ime(ode si Ime6ame
.e utilizeaza pentru a stabili anumite optiuni pentru editorul I(, ce se utilizeaza
pentru limbile asiatice.
!roprietatea (a#Length
.tabileste numarul ma#im de caractere ce poate fi introdus. Daca are valoarea 1 atunci
nu e#ista nici un fel de limitare.
!roprietatea >,(+onvert
Daca are valoare true atunci caracterelor vor fi AtraduseA din A6.I in >,( si invers
pentru a elimina caracterele ce nu pot fi folosite la denumirea unui fisier.
!roprietatile !arent&iDi(ode, !arent+olor, !arent+tl:D, !arent?ont, !arent.how2int
Au valoarea true daca se doreste ca proprietatea a carei nume apare dupa !arent sa
aiba aceeasi valoare ca si a parintelui$cu a componentei pe care se afla asezat*
!roprietatea !assword+har
.pecifica ce caracter se va afisa daca se doreste citirea unei parole care nu trebuie sa
apara pe ecran. Daca are valoarea S1 atunci caracterele se vor afisa normal.
!roprietatea ;ead>nl)
Daca are valoarea true nu se va putea modifica continutul ,dit-ului.
!roprietatea 7e#t
+ontine te#tul ce se afiseaza in ,dit. !roprietatea poate fi utilizata pentru a prelua ceea
ce a tastat utilizatorul.

S-ar putea să vă placă și