Sunteți pe pagina 1din 5

Lucrarea nr.

Evidenţierea proprietăţilor specifice butoanelor


(de tip TButton).

Proprietatea Cancel

-> După deschiderea mediului Delphi se aduc pe formular două butoane de tip
TButton.

-> Se generează pentru fiecare dintre cele două butoane câte o procedură a
evenimentului OnClick în care se completează instrucţiunile:

showmessage(’Ati apasat pe butonul 1 !’); pentru primul buton şi


showmessage(’Ati apasat pe butonul 2 !’); pentru cel de al doilea buton.

-> Se lansează programul în execuţie.

-> Se încearcă ce se întâmplă la apăsarea tastei Tab. (Focus-ul trece de la o


componentă la alta, în cazul de faţă de la un buton la altul).

-> Se încearcă ce se întâmplă la apăsarea tastei Esc. (Nu se întâmplă nimic).

-> Se opreşte execuţia programului. (Run/ProgramReset)

-> Se trec proprietăţile Cancel ale celor două butoane pe True. (Pentru cazurile în
care aveţi de modificat pentru mai multe componente proprietăţi care sunt comune
şi valorile dorite sunt aceleaşi, se pot selecta deodată toate componentele în cauză
şi se modifică proprietatea comună la valoarea dorită. Acest lucru va avea ca efect
modificarea proprietăţii comune la noua valoare pentru toate componentele
selectate).

-> Se rulează din nou aplicaţia şi se încearcă ce se întâmplă la apăsarea tastei Esc
în timp ce primul buton se află în focar şi apoi în timp ce al doilea buton se află în
focar. Care este concluzia ? (Se încearcă efectul tastei ESC şi în cazul în care
celălalt buton deţine focarul. Mutarea focarului se face cu ajutorul tastei TAB.
Evenimentul care se produce este tot cel asociat primului buton).

-> Se încheie aplicaţia.


Proprietatea Default

-> Se mai adaugă un buton în formular şi se completează procedura evenimentului


OnClick a acestuia cu instrucţiunea:
showmessage(’Ati apasat pe butonul 3 !’);
16
-> Se mai adaugă în formular o componentă Edit. (Tipul acestei componente este
Tedit şi se găseşte în pagina Standard de componente).

-> Se selectează în dreptul proprietăţii ActiveControl, a formularului, componenta


Edit1. (Astfel la pornirea aplicaţiei, Edit1 se va afla în focar).

-> Se lansează programul în execuţie.

-> Se încearcă ce se întâmplă la apăsarea tastei Enter pe rând pentru cazurile în


care se află în focar diferite componente. (Pentru cazul butoanelor se generează
evenimentul OnClick specific butonului aflat în focar şi pentru Edit nu se întâmplă
nimic).

-> Se opreşte aplicaţia şi se trece proprietatea Default a butonului 3 pe True.

-> Se lansează din nou programul în execuţie.

-> Se încearcă ce se întâmplă la apăsarea tastei Enter pe rând pentru cazurile în


care se află în focar diferite componente. (La pornirea aplicaţiei, componenta Edit
deţine focarul, astfel că apăsarea tastei Enter generează evenimentul OnClick al
butonului care are proprietatea Default pe True. Dacă se mută focarul pe un buton
atunci apăsarea tastei Enter generează evenimentul OnClick al butonului care
deţine Focarul).

-> Se remarcă faptul că atunci când în focar se află componenta Edit1, la apăsarea
tastei Enter, se execută procedura OnClick a butonului al treilea. De ce ?
Proprietatea ModalResult

-> Se închide aplicaţia curentă fără salvare şi se creează o nouă aplicaţie.

-> Se aduce un buton pe formular şi se modifică proprietatea Caption a acestuia cu


„Apasa” (nu se trec ghilimelele).

-> Se execută File/NewForm. (Această operaţie are ca efect adăugarea unui nou
formular la proiect. În acest moment aplicaţia va avea două formulare şi două
ferestre de cod, câte una pentru fiecare formular. Comutarea între cele două
formulare se face trecând prin fereastra de cod cu tasta F12. Dacă una dintre
ferestrele de cod este vizibilă atunci cea de-a doua fereastră de cod se află
ascunsă în spatele acesteia. Aducerea ei în faţă se face prin apăsarea paginii
Unit1, respectiv Unit2 din stânga sus a ferestrei de cod. Trecerea la formularul
corespunzător ferestrei de cod active se face din nou cu tasta F12).

-> Se completează fereastra de cod Unit1, în dreptul cuvântului cheie uses cu


“unit2”, respectându-se sintaxa. (Se adaugă virgula despărţitoare. Cuvântul
“unit2” se trece fără nici un fel de ghilimele. Această instrucţiune informează
17
prima parte a aplicaţiei că proiectul mai are o a doua parte care face parte şi ea
din aplicaţie. Practic se face legătura ferestrei unit1 cu fereastra unit2 ).

-> Se trece proprietatea Visible, a formularului Form2, pe False. (Acest lucru are
ca efect ascunderea formularului al doilea odată cu lansarea în execuţie a
aplicaţiei).

-> Se adaugă pe formularul Form2 două butoane de tip TBitBtn. (Acest tip de
butoane este diferit de tipul TButton standard prin faptul că ele au nişte facilităţi
în plus. Componenta BitBtn se găseşte în pagina Additional de componente).

-> Se modifică proprietatea Caption a formularului 2 cu “Fereastra formularului 2”


şi se ajustează dimensiunile formularului 2 (astfel încât să fie absolut evidentă
deosebirea dintre cele două formulare şi la rulare, la apariţia formularului 2 să fie
parţial vizibil în spatele acestuia şi formularul 1).

-> Se modifică proprietatea Kind a primului buton pe bkOK. (Butonul va primi un


aspect special specific. Acest tip de butoane returnează ferestrei proprietar, în
momentul în care sunt apăsate, variabila ModalResult care conţine denumirea
tipului de buton apăsat: în acest caz mrOK).

-> Se modifică proprietatea Kind a celui de al doilea buton pe bkCancel. (Acest


buton va primi, de asemenea, un aspect special specific. Variabila ModalResult va
returna pentru acest tip de buton valoarea mrCancel).

Practic, se creează un nou formular, iniţial invizibil, pe care s-au


poziţionat două butoane, care nu fac altceva decât returnează formularului
principal un parametru care conţine tipul butonului apăsat.

-> Se generează evenimentul OnClick corespunzător butonului de pe formularul


Form1 şi se completează după cum urmează (Este necesară trecerea de la un
formular la altul.):

{înainte de begin, declaraţiea de variabilă } var raspuns:integer;


{între begin şi end codul:}

raspuns:=Form2.ShowModal;
if raspuns=mrOK then
showmessage('Ati apasat OK')
else
showmessage('Ati apasat Cancel');

(Declaraţia de variabilă alocă spaţiu de memorie pentru variabila răspuns de tip


integer. Această variabilă va apela metoda ShowModal a formularului Form2 şi
va lua valoarea returnată de aceasta. Valoarea returnată de metoda ShowModal
este mrOK dacă utilizatorul a răspuns cu OK la apariţia ferestrei Form2, sau
18
mrCancel dacă utilizatorul a răspuns cu Cancel. În momentul în care este invocată
metoda ShowModal, fereastra Form2 devine vizibilă şi nu va lăsa utilizatorul să
execute alte acţiuni până nu răspunde prin apăsarea unuia dintre cele două
butoane. Apăsarea unuia dintre cele două butoane duce la ascunderea ferestrei
Form2 şi returnarea valorii rezultat).

-> Se adaugă pe formularul Form1 un buton (de tip TBitBtn) şi se modifică


proprietatea Kind a acestuia la bkClose. (Această acţiune conferă butonului un
aspect special, potrivit unui buton de închidere şi totodată îi asociază funcţia de
închidere a aplicaţiei. Dacă s-ar folosi un buton obişnuit pentru închiderea
aplicaţiei atunci, spre deosebire de butonul bkClose de tip TBitBtn, ar trebui
adăugată în procedura evenimentului OnClick al acestuia instrucţiunea:
Application.terminate).

-> Se rulează programul şi se analizează modul de funcţionare. (La rularea


programului apare fereastra primului formular cu cele două butoane: Apasa şi
Close. La apăsarea butonului Apasa va apărea, deasupra primului formular,
formularul al doilea cu cele două butoane OK şi Cancel. Prezenţa acestui
formular împiedică accesul la primul formular şi respectiv la componentele
acestuia. La apăsarea unuia dintre cele două butoane ale formularului 2, acesta
devine invizibil şi evenimentul butonului Apasa al primului formular, cel care a
generat apariţia formularului 2, va interpreta în continuare rezultatul transmis de
formularul 2 prin intermediul variabilei ModalResult. Dacă rezultatul este mrOK
atunci ne este afişat mesajul pentru OK, daca rezultatul este mrCancel atunci ne
este afişat mesajul pentru Cancel. Apăsarea butonului Close al primului formular
va avea ca efect închiderea aplicaţiei).

Exerciţiu: Prin folosirea unei singure proceduri, asociată evenimentului


OnClick al primului buton, să se depisteze ce buton a fost apăsat.

-> Se închide aplicaţia curentă fără salvare şi se creează o nouă aplicaţie.

-> Se adaugă trei butoane pe formular.

-> Se generează evenimentul OnClick al primului buton

-> Se asociază evenimentului OnClick al celui de al doilea buton procedura


Button1Click prin selectarea acesteia în desfăşurătorul evenimentului respectiv. (Se
activează butonul al doilea astfel încât datele din inspectorul de obiecte să se
refere la acesta. Se activează pagina de evenimente a inspectorului de obiecte şi se
face un click pe evenimentul OnClick al butonului al doilea. In partea dreaptă a
evenimentului va apare o mică săgeată cu vârful îndreptat în jos. Se face click pe
această săgeată şi se selectează din listă Button1Click. Acest lucru înseamnă că
atunci când se va genera evenimentul OnClick al butonului al doilea se va executa
procedura Button1Click care aparţine primului buton.)

19
-> Se asociază evenimentului OnClick al celui de al treilea buton procedura
Button1Click prin selectarea acesteia în desfăşurătorul evenimentului respectiv.
(similar)

{Astfel la apăsarea oricărui buton dintre cele trei se va executa aceeaşi procedură
Button1Click a primului buton}

Explicaţie:
La generare, evenimentul unei componente transmite procedurii pe care o
apelează un parametru numit Sender care conţine numele componentei căreia îi
aparţine evenimentul.

În cazul nostru, la apăsarea oricăruia dintre cele trei butoane, se generează


evenimentul OnClick al butonului respectiv, evenimente care sunt, toate, conectate
cu aceeaşi procedură (procedura Button1Click de tratare a evenimentului OnClick
a primului buton).

Parametrul Sender va transmite procedurii Button1Click valoarea Button1


dacă a fost apăsat primul buton, valoarea Button2 dacă a fost apăsat cel de al doilea
buton sau valoarea Button3 dacă a fost apăsat cel de al treilea buton.

-> Se completează codul cu instrucţiunile următoare (În cadrul procedurii


Button1Click, între begin şi end.):

if Sender=Button1 then
showmessage('Ati apasat butonul 1')
else
if Sender=Button2 then
showmessage('Ati apasat butonul 2')
else
showmessage('Ati apasat butonul 3')

-> Se poate rula aplicaţia.

Exerciţiu:

Să se realizeze forma următoare:

în care primul buton realizează colorarea formei în roşu, al doilea în verde şi al


treilea în albastru. Numărul butonului apăsat trebuie afişat in bara de titlu! Înainte
de apăsarea vreunui buton, în bara de titlu trebuie să scrie “Nu s-a apasat nici un
buton”.
20

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