![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
![]() Собственно, сабж. Надо определить координаты курсора мыши, но с одним "но": не относительно ВСЕГО экрана, а относительно определенного компонента (в моем случае это TImage), так что GetCursorPos в данном случае не подходит. Кто нибудь может подсказать, что делать?
|
#2
|
|||
|
|||
![]() У всех визуальных компонентов есть метод пересчета экранных коордитан в локальные - ScreentoClient.
|
#3
|
||||
|
||||
![]() TControl.OnMouseMove
Occurs when the user moves the mouse pointer while the mouse pointer is over a control. type TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState; X, Y: Integer) of object; property OnMouseMove: TMouseMoveEvent; Description Use the OnMouseMove event handler to respond when the mouse pointer moves after the control has captured the mouse. Use the Shift parameter of the OnMouseDown event handler, to determine to the state of the shift keys and mouse buttons. Shift keys are the Shift, Ctrl, and Alt keys or shift key-mouse button combinations. X and Y are pixel coordinates of the new location of the mouse pointer in the client area of the Sender. |
#4
|
|||
|
|||
![]() OnMouseMove работает не всегда стабильно.
Например, при быстром перемещении мыши зачастую пропускаются промежуточные точки. Хотя, собственно, все зависит от задачи. В любом случае пара методов ClientToScreen и ScreenToClient дает возможность перевести координаты в любом случае, если они не в той "системе координат". |