Lecția # 2 (manipularea evenimentului, butonul de fugă)

Lecția # 2 (Manipularea evenimentului, butonul de fugă)

În această lecție voi încerca să explic cum este creată procesarea evenimentelor. În primul rând, vă voi explica ce este un eveniment. Eveniment (eveniment în limba engleză) - așa probabil ați ghicit că este o situație când se întâmplă ceva. De exemplu, ați apăsat butonul, iar aici apare procesarea acestui eveniment. În prima lecție a fost exact evenimentul de apăsare a butonului, nu am intrat în detaliu. Mai ales când nu-ți poți aminti totul.

Trebuie să facem o deviere. Sistemul de operare este construit în așa fel încât să proceseze în mod constant mesajele care răspund acțiunilor utilizatorului, apăsând pe tastatură și pe mouse. Foarte des se dovedește că sistemul așteaptă intrarea de la utilizator. Și apoi începe să realizeze anumite acțiuni simple sau nu, poate chiar operații extrem de complicate.

Deci, la anumite acțiuni ale utilizatorului, aplicația dvs. solicită anumite subrutine. Există o mulțime de evenimente din acestea, deci nu vom lua în considerare totul, ci considerăm ca exemplu un exemplu simplu.

Lecția # 2 (manipularea evenimentului, butonul de fugă)
Pentru a face acest lucru, deschideți Delphi cu un nou proiect. Să reducem mărimea formei principale. Vă sugerăm să faceți următoarele setări. Pentru a face acest lucru, în proprietățile formei, setați dimensiunile lățimii (lățimii) și înălțimii (înălțimii) la 300, acest lucru este suficient. Avem o fereastră pătrată. În acesta vom plasa butonul. Proprietatea inscripției (Caption) Vă sugerez să treceți la "ieșire". Veți afla, de asemenea, comanda pentru a închide aplicația. De asemenea, puteți schimba titlul formularului la orice doriți, pentru a nu strica aspectul aplicației noastre. Și ar trebui să obțineți același lucru pe care îl am în imaginea din stânga.

Acum, după ce am terminat proiectarea programului, trebuie să trecem la programarea reală. Desigur, designul este destul de primitiv, dar pentru moment ne vom limita la acest lucru.

Lecția # 2 (manipularea evenimentului, butonul de fugă)
Programarea începe cu faptul că este necesar să evidențiem singurul nostru buton și apoi să mergem la inspectorul de obiecte. în care selectăm fila Evenimente - aceasta este lista de evenimente de la buton, deci este obligatoriu să alegeți butonul. Butonul poate fi selectat în mai multe moduri. Puteți face acest lucru în lista derulantă de la inspectorul de obiecte. Foarte des trebuie să faceți acest lucru atunci când componenta este pierdută pe formular. Motivul poate fi dimensiunea mică sau suprapunerea cu o altă componentă mai mare. Suntem interesați de evenimentul OnClick. În primul exemplu, am folosit deja evenimente, dar probabil că nu ați știut deja acest lucru. Trebuie să faceți dublu clic pe câmpul gol aflat în partea dreaptă a câmpului numit OnClick. Delphi va deschide imediat o fereastră cu codul programului, în care au fost pregătite titlul și sfârșitul și trebuie doar să scrieți codul pe care doriți să-l executați. Rețineți că în locul din inspectorul de obiecte unde ați făcut clic pe mouse, a apărut Button1Click, ceea ce înseamnă că a fost adăugat un eveniment și i sa atribuit numele. Vă sugerez un buton de curse numit ieșire, apoi faceți tot ce se întâmplă pentru a ieși din program. Dacă rulați acum aplicația, puteți face acest lucru fie cu un buton, fie pur și simplu apăsând tasta F9 de pe tastatură. După ce Delphi creează un proiect gata și îl execută și creează instantaneu un astfel de proiect simplu, poți să te asiguri că nu se întâmplă nimic când se face clic pe buton. Închideți programul și să continuăm programarea. Uitați-vă din nou la Inspectorul de obiecte, acolo veți observa că un câmp în care era o inscripție Button1Click goală. Acest lucru este întotdeauna cazul, dacă nu ați adăugat cod executabil, atunci Delphi elimină rutine goale. Programul dvs. ar arăta puțin ușor de citit dacă ar avea toate anteturile pentru toate evenimentele pentru toate obiectele.

Acum trebuie să creați din nou un handler de evenimente pentru evenimentul OnClick. Sper că încă mai ții minte cum se face asta. În textul apărut al subrutinei.

.
procedura TForm1.Button1Click (expeditor: TObject);
începe

Între operatorii încep și la sfârșit, scrieți comanda Închidere;

După aceea, să adăugăm încă un handler de evenimente. De data aceasta va fi OnMouseMove, acest eveniment apare atunci când mouse-ul se deplasează peste buton și, în afară de a apela pur și simplu subrutina acestui eveniment, coordonatele mouse-ului față de marginea superioară stângă a butonului sunt de asemenea transferate acolo. După ce ați creat procedura de tratare a evenimentului, adăugați codul de program următor. Puțin mai târziu voi explica ce înseamnă.

procedura TForm1.Button1MouseMove (Expeditor: TObject; Shift: TShiftState; X,
Y: Integer);
începe
dacă abs (Y - Button1.Height div 2) dacă X - Button1.Width div 2 <0 then Button1.Left := Button1.Left + X
altceva Button1.Left: = Button1.Left - (Button1.Width - X)
altfel
dacă Y - Button1.Height div 2 <0 then Button1.Top := Button1.Top + Y
altceva Button1.Top: = Buton1.Top - (Button1.Height - Y)
se încheie;

După ce adăugați acest cod, executați aplicația și observați cum va ieși butonul din mouse, peste câmpul de formular. cursorul este aproape imposibil să indicați butonul. Acum o mică explicație.

În această subrutină, declarația condiționată if este foarte eficientă. puteți citi despre el în dicționar, altfel se aplică și la acesta. Se utilizează de asemenea proprietăți ale butoanelor, și anume Button1.Width definește lățimea butonului1 și Button1.Height - determină înălțimea acestuia. Operatorul div este folosit pentru a împărți. Coordonatele X și Y sunt coordonatele mouse-ului care sunt transferate în program. abs - funcția modulului de calcul

În cicluri nu există calcule matematice complicate, care la prima vedere arată foarte înfricoșător. Dar înțelegerea a ceea ce face fiecare funcție poate fi ușor înțeleasă. În acest exemplu, am folosit în mod specific pentru a citi proprietățile butonului (Button1.Top Button1.Left.button1.Height.button1.width) pentru a face programul mai universal. A fost posibil să se introducă valori exacte în locul lor. Ar arata foarte bine aici compara:

procedura TForm1.Button1MouseMove (Expeditor: TObject; Shift: TShiftState; X,
Y: Integer);
începe
dacă abs (Y-12) dacă X este 37 <0 then Button1.Left := Button1.Left + X
altceva Button1.Left: = Buton1.Left - (75 - X)
altfel
dacă Y este 12 <0 then Button1.Top := Button1.Top + Y
altceva Button1.Top: = Buton1.Top - (25 - Y)
se încheie;

Codul sursă al proiectului

Articole similare