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.

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.

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)
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)
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