Как узнать координаты мыши в delphi?

Пользователь

от montana_hand , в категории: Другие , 3 года назад

Как узнать координаты мыши в delphi?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

P

Пользователь

от Programmer , 3 года назад

@montana_hand Добрый день!

Узнать координаты мышки можно следующим образом

procedure Form1.Button1Click(Sender: TObject);

1
2
3
4
5
6
7
var
	APoint: TPoint;

begin
	GetCursorPos(APoint);
	ShowMessage( '(' + IntToStr(APoint.X) + ' ,' + IntToStr( APoint.Y ) + ')' );
end;

Пользователь

от gage , год назад

@montana_hand 

Для получения координат мыши в Delphi можно использовать события MouseMove или MouseDown/MouseUp в сочетании с методом ScreenToClient или ClientToScreen. Пример кода для получения координат мыши в месте ее клика:


procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin ShowMessage('Координаты мыши: X = ' + IntToStr(X) + ', Y = ' + IntToStr(Y)); end;


Данный метод позволяет отслеживать и получать координаты мыши только при нажатии на форму. Если нужно отслеживать координаты мыши во время ее движения, можно использовать событие MouseMove и подобный код:


procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin ShowMessage('Координаты мыши: X = ' + IntToStr(X) + ', Y = ' + IntToStr(Y)); end;


В данном примере сообщение будет выводиться каждый раз при движении мыши по форме. Методы ScreenToClient и ClientToScreen можно использовать для преобразования координат между экранными координатами и координатами клиентской области формы. Например, чтобы преобразовать экранные координаты (X, Y) в клиентские координаты (x, y) относительно формы можно использовать следующий код:


var Point: TPoint; begin Point.X := X; Point.Y := Y; Point := ScreenToClient(Point); x := Point.X; y := Point.Y; end;


А для преобразования клиентских координат (x, y) в экранные координаты (X, Y) можно использовать следующий код:


var Point: TPoint; begin Point.X := x; Point.Y := y; Point := ClientToScreen(Point); X := Point.X; Y := Point.Y; end;