Есть ли способ определить, была ли нажата форма?

Delphi XE

Есть ли способ определить, получила ли форма щелчок мышью? Событие OnClick в форме вызывается только в пустых частях формы. Любые части, которые имеют элементы управления, не будут отвечать.

1 ответ

Решение

Вам нужно будет отфильтровать сообщения в очереди для обнаружения событий мыши на глобальном уровне.

  1. Добавить обработчик для TApplication.OnMessage,
  2. Слушать WM_MOUSEDOWN или же WM_MOUSEUP как вам угодно, и ответьте, если дескриптор целевого окна - это дескриптор формы или дочерний элемент управления.
  3. Убедитесь, что вы оставили параметр Handled сообщения как False, чтобы сообщение доставлялось его цели.

Если вы действительно пытаетесь обнаружить активацию формы, используйте OnActivate,

Другие вопросы по тегам