(de tip TButton).
-> După deschiderea Delphi se aduc pe formular două butoane.
-> Se generează pentru fiecare dintre ele 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 (tabulator).
-> Se încearcă ce se întâmplă la apăsarea tastei Esc (escape).
-> Se opreşte execuţia programului.
-> Se trec proprietăţile Cancel ale celor două butoane pe True;
-> 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 încheie aplicaţia.
-> Se mai adaugă un buton în formular şi se completează procedura evenimentului OnClick a acestuia cu instrucţiunea:
showmessage(’Ati apasat pe butonul 3 !’);
-> Se mai adaugă în formular o componentă Edit (de tip TEdit);
-> Se selectează în dreptul proprietăţii ActiveControl, a formularului, componenta Edit1.
-> 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.
-> Se opreşte aplicaţia şi se trece proprietatea Default a butoanului 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.
-> 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 ?
-> Se execută File/CloseOll fără salvare.
-> Se execută File/NewApplication.
{Aceste două comenzi au ca efect închiderea aplicaţiei vechi, fără salvarea acesteia, şi deschiderea uneia noi.}
-> Se adaugă un buton pe formular.
-> Se execută File/NewForm.
{Această instrucţiune are ca efect adăugarea unui nou formular la proiect.}
-> Se completează codul lui unit1, în dreptul cuvântului cheie uses cu “unit2”, respectându-se sintaxa (se adaugă virgula despărţitoare).
{Practic se face legătura ferestrei unit1 cu fereastra unit2}
-> Se trece proprietatea Visible, a formularului Form2, pe False;
-> Se adaugă pe formularul Form2 două butoane de tip TBitBtn (pe care le găsiţi în pagina de componente Additional).
-> Se modifică proprietatea Kind a primului buton pe bkOK.
-> Se modifică proprietatea Kind a celui de al doilea buton pe bkCancel.
{Practic am creat un nou formular, iniţial invizibil, pe care am 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ă:
{î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');
-> Se adaugă pe formularul Form1 un buton (de tip TBitBtn) şi se modifică proprietatea Kind a acestuia la bkClose.
-> Se rulează programul şi se analizează modul de funcţionare.
-> Se execută File/CloseOll fără salvare.
-> Se execută File/NewApplication.
-> Se adaugă trei butoane pe formular.
{Se pune problema ca prin folosirea unei singure proceduri, asociată evenimentului OnClick al primului buton, să se depisteze ce buton a fost apăsat}
-> 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 asociază evenimentului OnClick al celui de al treilea buton procedura Button1Click prin selectarea acesteia în desfăşurătorul evenimentului respectiv.
{Astfel la apăsarea oricărui buton dintre cele trei se va executa procedura 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 de tratare a evenimentului OnClick) a primului buton.
Parametrul Sender va transmite procedurii Button1Click valoarea Button1 daca 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:
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.
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”.