{....}privateprocedure WMNCHitTest(varMessage: TWMNCHitTest); message WM_NCHITTEST;
{....}procedure TForm1.WMNCHitTest(varMessage: TWMNCHitTest);
begininherited;
withMessagedobeginif Result = HTCAPTION then
Result := HTNOWHERE;
end;
end;
Here is a translation of the text into Russian:
Код на Delphi, который пытается предотвратить пользователя от изменения размера или перемещения формы, блокируя сообщение HTCAPTION, которое обычно используется для захвата событий мыши над заголовками окон.
Процедура WMNCHitTest - обработчик сообщения WM_NCHITTEST. Это сообщение отправляется окну, когда пользователь кликнул или переместил курсор мыши над ним. Процедура вызывается с записью TWMNCHitTest как параметром, которая содержит информацию о событии мыши.
Код проверяет, является ли результат теста HTCAPTION равным HTCAPTION. Если это так, то он изменяет результат на HTNOWHERE, эффективно предотвращая пользовательский доступ к заголовку.
Обзор кода:
Стatement inherited; вызывает реализацию родительского класса процедуры WMNCHitTest, которая необходима, потому что система обработки сообщений Delphi работает по принципу передачи сообщений вверх по цепочке наследия до обнаружения обработчика.
Блок with Message do создает временную переменную Message, которая ссылается на оригинальный рекорд TWMNCHitTest, переданный процедуре.
Код проверяет, является ли результат теста HTCAPTION равным HTCAPTION. Это будет истинно, если пользователь кликнул на заголовок.
Если результат действительно равен HTCAPTION, то он изменяет результат на HTNOWHERE. Это эффективно предотвращает доступ пользователя к заголовку, таким образом, форма становится "неподвижной" и "неизменяемой".
В целом, этот код достигает своей цели, блокируя доступ пользователя к заголовку формы, тем самым делая форму "неподвижной" и "неизменяемой".
В статье описывается способ блокировки перемещения формы в программе на языке Pascal с использованием процедуры WMNCHitTest и изменения результата сообщения.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS