|
#1
|
|||
|
|||
Мышь
Как получить координаты мыши относительно какого-то объекта на форме ?
|
#2
|
|||
|
|||
Если все происходит, допустим, на форме.
Координаты курсора мыши получают в событии OnMouseMove каждого компонента, включая форму. Это координаты относительно верхнего левого угла компонента. Далее в этом же событии вычисляются требуемые координаты относительно заданного объекта. Например, если от того же левого верхнего угла компонента, то X-AnyObject.Left (или наоборот AnyObject.Left-Х) и Y-AnyObject.Top, где X, Y координаты мыши. При пересечении какого-либо компонента курсором мыши на форме, мышиные координаты надо брать из события OnMouseMove именно этого компонента и преобразовывать их в координаты формы. Код:
//OnMouseMove формы: procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Label1.Caption := 'X:'+IntToStr(X - Image1.Left)+ 'Y:'+IntToStr(Y - Image1.Top) end; //OnMouseMove компонента, находящегося на форме (здесь TLabel) procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var P : TPoint; begin P := TWinControl(Sender).ClientToScreen(Point(X, Y)); P := ScreenToClient(P); Label1.Caption := 'X:'+IntToStr(P.X - Image1.Left)+ 'Y:'+IntToStr(P.Y - Image1.Top) end; Не забывайте делать резервные копии |
#3
|
||||
|
||||
Вот еще один вариант
Код:
var MousePoint:TPoint; begin GetCursorPos(MousePoint); Caption:=Format('Mouse position X=%d Y=%d',[MousePoint.X,MousePoint.Y]); end — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |