В последнее время разработчики, использующие среду Delphi для создания приложений под Windows 8, столкнулись с неожиданной проблемой. При нажатии и удержании пальца на текстовом поле (например, на TMemo) в сенсорных экранах Windows 8, появляется прямоугольник, который должен исчезать сразу же после отпускания пальца и появления контекстного меню. Однако в приложениях, созданных с использованием VCL в Delphi, этот прямоугольник остается на экране до тех пор, пока не закроется само контекстное меню.
Причина проблемы
Delphi по-прежнему использует устаревшие события пользовательского интерфейса, не поддерживающие новые события Windows 8, такие как WM_Pointer. Это приводит к тому, что поведение контекстного меню в приложениях на Delphi отличается от стандартного поведения, наблюдаемого в других приложениях, например, в стандартном Блокноте Windows.
Поиск решения
Для решения этой проблемы было предложено несколько подходов:
Проверить все свойства контролов, чтобы убедиться, что не упущена какая-либо настройка, отвечающая за событие нажатия и удержания.
Попробовать перерисовать контроль перед появлением контекстного меню, используя, например, метод SetRedraw.
Подтвержденное решение
Оказалось, что проблема решается путем добавления параметра toPenTapFeedback в свойство Touch.TabletOptions компонента. Это позволяет корректно обрабатывать события касания и удержания, что приводит к исчезновению прямоугольника сразу после отпускания пальца, как это происходит в стандартных приложениях Windows 8.
Пример кода
procedure TForm1.FormCreate(Sender: TObject);
begin
Touch.TabletOptions := Touch.TabletOptions + [toPenTapFeedback];
end;
Добавление этого кода в обработчик события FormCreate позволит решить проблему неподвижного прямоугольника в приложениях на Delphi.
Заключение
Разработчикам, столкнувшимся с этой проблемой, рекомендуется внести указанные изменения в свойства компонентов, используемых для работы с касаниями. Это позволит обеспечить корректное взаимодействие с пользовательским интерфейсом в соответствии с ожиданиями пользователей, привыкших к стандартному поведению приложений под Windows 8.
Проблема в приложениях на Delphi под Windows 8 связана с неподвижным прямоугольником, возникающим при нажатии и удержании пальца на текстовом поле, которую можно решить, добавив определенный параметр в свойство компонента.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS