Jak wykryć w zdarzeniu OnClick czy kliknięto prawym czy lewym przyciskiem myszki, bo pozycje w PopMenu mają tylko OnClink :( ?
Może zamiast OnClick daj OnMouseUp i odczytaj wartość zmiennej button.
0 to lewy
1 to prawy
2 to trzeci klawisz myszki
Przecież napisałem że mam tylko do dyspozycji OnClick co tylko tam mam sender i nic żadne button :(
Służą do tego na przykład funkcje GetKeyState() i GetAsyncKeyState().
VK_LBUTTON - lewy
VK_RBUTTON - prawy
VK_MBUTTON - środkowy
VK_XBUTTON1 - pierwszy dodatkowy (X1)
VK_XBUTTON2 - drugi dodatkowy (X2)
(dwa ostatnie przyciski są dostępne tylko w Windows 2000/XP lub nowszych)
Coś nie tak :-8
Używam funkcji:
if GetKeyState(VK_LBUTTON) <>0 then
//procedura
else
/procedura2
I jest taka sprawa że co 2 - 3 kliknięcie prawy przycisk myszki działa jak lewy a lewy jak prawy czyli wykonują się na zmianę te procedury.
Dlaczego tak jest ?
Po co kombinujesz? wstaw procedurke:
procedure popupmenu1.click (...);
begin
if key=VK_LBUTTON then begin
//lewy przycisk -tam takie procedurki
end
else if key=VK_RBUTTON then begin
//prawy przycisk myszy - procedurki
end;
end;
Proste i skuteczne
A skąd wezmę key jak mam tylko do dyspozycji Sender typu TObject ??
To jest zdarzenie OnClick i w nim nie ma key :-8