Тема: Мышь
Показать сообщение отдельно
  #2  
Старый 27.06.2008, 10:14
san-46 san-46 вне форума
Активный
 
Регистрация: 25.04.2008
Сообщения: 383
Репутация: 33
По умолчанию

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