Перейти к содержанию
Fire Monkey от А до Я
  • 0

Как получить текущее положение пальца на экране?


rareMax

Вопрос

Рекомендуемые сообщения

  • 0
  • Администраторы

Здесь есть два варианта решения:

 

1. Использовать сервис FMX.Types.IFMXMouseService

Этот сервис позволяет получить координаты последнего положения курсора мыши, нажатия или перемещения пальца по экрану. Однако если пользователь оторван палец от экрана, то сервис вернет последнее положение пальца на экране. Этот метод хорош тем, что позволяет узнать положение в любой момент в любом месте экрана. Метод возвращает абсолютные координаты в СК формы. При использовании этого варианта и при частой необходимости получать координаты, сервис лучше сохранить локально в отдельную переменную, чтобы каждый раз не выполнять запрос на получение сервиса. Так как эта функция требует дополнительных ресурсов.

var
  MouseService: IFMXMouseService;
  MousePos: TPointF;
begin
  // MouseService - лучше вынести отдельным полем класса и инициализировать ее например при создании формы.
  if TPlatformServices.Current.SupportsPlatformService(IFMXMouseService, IInterface(MouseService)) then
    MousePos := MouseService.GetMousePos
end;

2. Использовать глобальный объект Screen: TScreen

В FireMonkey есть глобальный объект, который предоставляет информацию о экране. Он внутри использует несколько сервисов.

В частности, у него есть метод:

Screen.MousePos

Который использует 1 подход и вернет такой же результат. Но в отличии от первого способа, тут не нужно запрашивать сервис, это сделано в TScreen.

3. Использовать стандартные события OnMouseDown, OnMouseMove, OnMouseUp

Собственно способ заключается в определении текущего положения пальца через событие OnMouseMove. Однако, этот способ подходит только для контролов, которые могут перехватывать события мыши (HitTest = True). Идея 

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...