Aflați dacă butonul este apăsat pe mouse

Cum se interoghează starea butoanelor mouse-ului în evenimentul OnMouseMove?

F1 + ultimul paragraf

procedura TForm1.FormMouseMove (expeditor: TObject; Shift: TShiftState; X,
# xA0; Y: Integer);






începe
dacă (GetKeyState (VK_LBUTTON) ȘI 128) = 128
apoi Caption: = "Butonul apăsat
altceva Caption: = "Butonul nu este apăsat";
se încheie;

Că I.Pavel: mulțumesc foarte mult!

dacă butonul este apăsat înainte ca cursorul să intre în control, atunci nu va exista deloc o mausmuva.

iar dacă butonul este apăsat peste butonul de control, este suficient să vedeți butoanele shiftstate care sunt fixate.

Și totuși, "128" nu este frumos de scris, deoarece entitatea booleană nu este afișată.


> Dacă butonul este apăsat înainte ca cursorul să intre în control, atunci Mausmuva
> nu va exista deloc.

Este un fel doar pentru butonul din stânga, nu?

în orice caz, șifonierul

const
b128 = 128;

dacă GetAsyncKeyState (VK_LBUTTON) și 8000 $ <> 0
# xA0; apoi Caption: = "Butonul apăsat"






# xA0; altceva Caption: = "Butonul este apăsat";


> În orice caz, shifister-ul este suficient

este suficient doar dacă există (de exemplu, a fost trecut ca argument).


> este suficient doar dacă este

Dacă trageți direct agentul de procesare a evenimentelor, atunci acest lucru, pentru al face ușor, înseamnă, de asemenea, că ar trebui să vă gândiți la arhitectură.

Shiftstate - aceasta este și o soluție, dar pentru că a fost exprimată în [1], am decis să propun o alternativă.


> despre materia înaltă și formele ideale este deja în spiritul lui Vasisualia
> Lokhankina.

În general, a fost suficient pentru el să aibă trei forme non-ideale și cele cu un conținut scăzut de material: pui, lumină în toaletă și Varvara.

dar de ce 128 (0x80). Nu este primul care merge mouse-ul?

> Și de ce 128 (0x80). Nu este primul care merge mouse-ul?

Bitul mic determină dacă butonul este "comutat" (de exemplu, dacă CapsLock este aprins) și cel mai vechi - dacă este apăsat butonul:

Dacă bitul de înaltă ordine este 1, cheia este în jos; în caz contrar, este în sus.
Dacă bitul de ordin mic este 1, cheia este comutată. O cheie, cum ar fi tasta CAPS LOCK, este activată dacă este pornită.
Cheia este dezactivată și dezactivată dacă bitul pentru ordine redusă este 0.
O lumină indicatoare a tastei de comutare (dacă există) de pe tastatură va fi aprinsă atunci când tasta este comutată și dezactivată atunci când cheia este dezactivată.

Memorie: 0,76 MB
Durată: 0,056 secunde







Articole similare

Trimiteți-le prietenilor: