Mouse în delphi

Reshix: Matematică

Vezi deasemenea: Culorile din Delphi Sea Battle DivTimer

/ * TODO: Învățați programarea * /

În Delphi, există două abordări principale pentru a obține informații despre cursorul mouse-ului: printr-un set de funcții și prin intermediul interfeței TMouse (poate mai convenabil). Dar tot am să vă spun despre amândouă. Mai mult, TMouse-ul funcționează prin aceste funcții.







Poziția cursorului

Pentru început este necesar să înțelegem sistemul de coordonate. Este global, cu începutul în colțul din stânga sus al ecranului, axa X este îndreptată spre dreapta, axa Y este în jos. Valoarea maximă a coordonatelor X și Y va fi, respectiv, lățimea și înălțimea ecranului în pixeli. Cea mai ușoară modalitate de a le obține este folosirea ecranului din modulul "Formulare":

Rețineți că coordonatele colțului din dreapta jos depind de rezoluție.

Obținerea coordonatelor

Să ajungem la coordonatele noastre. Pentru aceasta, există funcția GetCursorPos din modulul "Windows":

Poate că nu este foarte convenabil să o folosiți - o variabilă în care sunt scrise informațiile necesare este transmis funcției ca parametru. Cu toate acestea, sunt de acord că este mai convenabil să stocați coordonatele împreună utilizând tipul TPoint. Pentru cei care nu știu cum să lucreze în TPoint (nu este suficient?), Coordonatele se obțin aproximativ în felul următor:

Nu, este încă inconfortabil. Să folosim mai bine a doua metodă: în acest scop, în modulul "Controls" se declară obiectul Mouse.

Este mai plăcut să lucrați cu el, deoarece nu este necesar să creați variabile inutile, deoarece Mouse.CursorPos este deja acea variabilă de tip TPoint. total:

Mutarea cursorului

De data aceasta, poate prima opțiune are un avantaj. Este suficient să luați și pur și simplu să sunați la SetCursorPos. toate din același modul "Windows":

Cu cea de-a doua opțiune, însă, nu apar probleme speciale. Este suficient să convertiți o pereche de numere (x, y) în TPoint și să o salvați:







Este demn de remarcat faptul că nu va fi posibil să se schimbe doar una din coordonate:

Aici, care este foarte convenabil - cursorul se mișcă instantaneu, fără a trece prin punctele intermediare.

Dând clic pe butoanele mouse-ului

Să trecem la acțiuni mai active ale mouse-ului. Luați în considerare funcția mouse_event din modulul "Windows":

În general, aceasta este o funcție destul de complicată, poate și să miște cursorul, dar mă voi limita la presare. Există o descriere mai completă aici.

Apăsarea apare întotdeauna sub cursor, așadar trimiterea coordonatelor aici este inutilă, trebuie doar să vă deplasați la punctul dorit înainte de a apăsa. Iată o listă de constante care determină exact ce vrem să apăsăm:

Unele dintre ele există deja în versiunea dvs. de Delphi în modulul "Windows", aici sunt date în cazul în care ceva lipsește.

Atenție vă rog! Nu uitați să eliberați butoanele!

Total, ceea ce avem: în dwFlags definim acțiunea; dx și dy sunt 0; în codul dwData al butonului X pe care îl apăsăm, altfel 0; dwExtraInfo este, de asemenea, 0. Valorile posibile ale codului X-Button:

Derularea roții

Folosind aceeași funcție mouse_event puteți parcurge roata. Există două constante pentru aceasta:

Aplicația este: dwFlags - cod de eveniment derulant; dx și dy = 0; dwData este valoarea prin care defilarem; dwExtraInfo - 0. Valoarea dwData poate fi fie un multiplu de WHEEL_DELTA:

Ce va defila în trei pași ai roții; astfel încât aceasta poate fi mult mai mică, de exemplu:

Ce face defilare în pasul 1/5. DwData semn determină direcția de defilare: pozitiv înseamnă mișcare ascendentă, de rotație de la utilizator; negativ - în jos, rotația utilizatorului. Cu toate acestea, datorită faptului că această opțiune este specificat DWORD nesemnate (0..4294967295 interval), apoi, dacă nu ai se întâmplă să folosească valori negative - Utilizați tipul DWORD la:

Ascunderea cursorului

Funcția ShowCursor specială a modulului „Windows“, ca un parametru primește un stat care trebuie să preia (Adevărat - vizibil, Fals - invizibil):

Exemplul 1: Deplasați cursorul cu 120 pixeli spre dreapta și 40 spre vârf.

Exemplul 2: Apăsați butonul din stânga dacă cursorul este situat strict în colțul din stânga jos.

Apropo, codul poate fi scurtat un pic, trecând dintr-o dată apăsând și eliberând ca o acțiune:

Nu știu dacă acest lucru este prevăzut, dar munca mea este bine

Materialul acestei pagini este disponibil sub licența CC BY-SA 4.0







Articole similare

Trimiteți-le prietenilor: