![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Как сделать, чтобы орган управления, например, сложная линия, хваталась только за некий контур, и пропускала мышь под себя в других местахDelphi , Компоненты и Классы , Создание компонентКак сделать, чтобы орган управления, например, сложная линия, хваталась только за некий контур, и пропускала мышь под себя в других местахАвтор: Nomadic Надо обpабатывать сообщение CM_HITTEST (Это сообщение получают даже потомки от TGraphicsControl, не имеющего своего HWND). Hапpимеp, так:
Для органов управления Windows, если Вы не используете VCL, требуется обрабатывать сообщение WM_NCHITTEST. Here's the translation of the content into Russian: Проблема, с которой вы столкнулись, является общей проблемой при попытке поймать события мыши для custom-контрола, такого как линия, в Delphi. Решение, которое вы предложили, используя событие
Вот пример реализации:
Перезаписав Помните, что это реализация предполагает, что ваш контролл линии имеет свой собственный окон (HWND). Если он не имеет, вам нужно будет адаптировать код соответствующим образом. Автор Nomadic предлагает обрабатывать сообщения CM_HITTEST для TGraphicsControl и WM_NCHITTEST для организаций управления Windows, чтобы реализовать функцию захвата только за определенный контур линии и пропуска мыши под себя в других местах. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта. :: Главная :: Создание компонент ::
|
|||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |