Как сделать управление невидимым, но реагировать на события мыши?
Я хочу создать элемент управления (производный от TCustomControl), который невидим, но реагирует на обычные события (я хочу использовать его, чтобы показать подсказку при наведении мыши на пользовательский элемент). Я думал, что переопределение метода рисования и оставление его пустым сделает эту работу, но, к сожалению, прямоугольник нарисован там, где находится компонент.
Как я могу сделать контроль полностью невидимым?
2 ответа
Вы можете унаследовать от TGraphicControl
вместо от TCustomControl
и оставьте обработчик краски пустым. Ничего не будет нарисовано.
Если вам нужен оконный элемент управления, убедитесь, что он не имеет границ и использует родительский фон. Смотрите этот вопрос для получения информации о том, как это сделать. Возможно, вам придется переопределить CreateParams()
а также, чтобы удалить биты стиля границы.
Если элемент управления не отображается, обработайте сообщения о кликах в родительском элементе, выполните простой тест для тех, кто находится в прямоугольнике элемента управления, и используйте PostMessage для пересылки сообщения в элемент управления. Такой код может быть более читабельным, чем пустые обработчики рисования. Bri