Odczyt X,Y myszki na kompunencie przy wciśniętym butonie myszki

0

Potrzebuję w ciągły sposób odczytywać położenie X i Y, gdy myszka znajduje się nad komponentem. Odczyt musi być tylko wtedy gdy jest wciśnięty przycisk myszki.

Na formie mam komponent Panel, który jest polem nad którym ma być odczyt.

Dane odczytuję poprzez: MouseMove:

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if (Shift = [ssLeft]) then
  Edit1.Text := IntToStr(mouse.CursorPos.X);
end;

Ok, gdy klikam poza panelem nic się nie dzieje.
Gdy klikam na Panelu zaczyna się odczyt i jest ok, gdy puszczam guzik odczyt się zatrzymuje i to też jest ok!

Ale gdy nie puszczę guzika myszki wciśniętego na panelu i wyjadę poza niego odczyt się nie kończy i wartości dalej się zmieniają, aż do chwili zwolnienia przycisku myszki.

Jak ograniczyć odczyt tylko do tego żądanego pola nad komponentem?

0

Może za pomocą warunku który przerwie odczyt gdy X lub Y opuszczą komponent???
Tak, wiem, trudne.

0

Może spróbuj tak:

if (Shift = [ssLeft]) then
  if (X>panel1.left)and(X<(panel1.left+panel1.width)) then      
    Edit1.Text := IntToStr(mouse.CursorPos.X);
0

Dzięki! Z Warunkami działa. Myślałem że można jakoś z automatu to zrobić, bądź coś źle robię.
Y oczywiście też obliczam, tu był tylko jako przykład zastosowania podany jedynie X.
Dzięki raz jeszcze

1 użytkowników online, w tym zalogowanych: 0, gości: 1