Если все происходит, допустим, на форме.
Координаты курсора мыши получают в событии 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;