U trendu

Delphi – Praćenje aktivnosti miša

Da li se miš nalazi iznad komponente? Da li je dugme pritisnuto, i koje? Da li je korisnik otpustio dugme? Da li je korisnik prešao pokazivačem van naše forme? Delphi (kao i Windows) konstantno prati šta korisnik radi sa mišem. Naravno moguće je detektovati svaku akciju. Kada Delphi detektuje akciju mišem, poziva se tzv. upravljač događajima koji smo mi definisali za određeni događaj.

Postoje četiri akcije mišem na koje možete odgovoriti u vašim aplikacijama. Tri su jedinstvene akcije miša: pritisnuto dugme miša, miš pomeren i otpušteno dugme miša. Četvrta vrsta akcija je „klik“ tj. kompletna akcija pritisnuto-otpušteno dugme, koja je malo drugačije vrste, tj. ova akcija je kompatibilna sa pritiskom i otpuštanjem tastera na tastaturi (kao npr. pritisak na taster Enter u modalnom prozoru).

Delphi komponente prepoznaju događaje miša samo ako se pokazivač miša nalazi iznad same komponente. Znači, kada je npr. taster miša pritisnut i zadržan iznad komponente ili forme, objekat će uhvatiti događaj miša. Ovo znači da nijedan drugi objekt neće reagovati sve dok se ne otpusti pritisnuti taster. Tri osnovna upravljača događajima (even handlers) su: OnMouseDown, OnMouseMove, i OnMouseUp. MouseUp i MouseDown imaju pet istih parametara, a to su:

  • Sender – ovo je objekat koji je detektova akciju mišem.
  • Button – ovaj parametar govori o kom dugmetu se radi: mbLeft, mbMiddle, ili mbRight.
  • Shift – indicira stanje tastera Alt, Ctrl i Shift, i stanje dugmadi miša kada se događaj desio.
  • X, Y – piksel koordinate pokazivača miša u klijentskom prostoru objekta Sender.

U sledećem primeru videćemo kako se obrađuju događaji miša. Kada korisnik pritisne dugme, desiće se događaj „OnMouseDown“ koji dolazi od objekta iznad koga se nalazi pokazivač miša. Da bi videli kako radi obrađivač događaja, sledeći kod dodelite proceduri OnMouseDown:


procedure TForm1.FormMouseDown(Sender: TObject;_
Button: TMouseButton; Shift: TShiftState;_
X, Y: Integer);
begin
Canvas.Ellipse (x-20,y-20,x+20,y+20);
end;

Kada pokrenete ovu malu aplikaciju, možete pritiskati taster miša kada se pokazivač miša nalazi iznad forme i videćete da se sa svakim klikom iscrta krug veličine 20 sa centrom u tački klika. Primer koristi parametre X i Y, onda se poziva metoda „Ellipse“ koja „crta“ krug na našem platnu-formi (canvas).

Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.