Как сделать управление невидимым, но реагировать на события мыши?

Я хочу создать элемент управления (производный от TCustomControl), который невидим, но реагирует на обычные события (я хочу использовать его, чтобы показать подсказку при наведении мыши на пользовательский элемент). Я думал, что переопределение метода рисования и оставление его пустым сделает эту работу, но, к сожалению, прямоугольник нарисован там, где находится компонент.

Как я могу сделать контроль полностью невидимым?

2 ответа

Решение

Вы можете унаследовать от TGraphicControl вместо от TCustomControlи оставьте обработчик краски пустым. Ничего не будет нарисовано.

Если вам нужен оконный элемент управления, убедитесь, что он не имеет границ и использует родительский фон. Смотрите этот вопрос для получения информации о том, как это сделать. Возможно, вам придется переопределить CreateParams() а также, чтобы удалить биты стиля границы.

Если элемент управления не отображается, обработайте сообщения о кликах в родительском элементе, выполните простой тест для тех, кто находится в прямоугольнике элемента управления, и используйте PostMessage для пересылки сообщения в элемент управления. Такой код может быть более читабельным, чем пустые обработчики рисования. Bri

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