我想创建一个不可见的控件(从TCustomControl派生)但对正常事件做出反应(我想用它来显示在自定义元素上移动鼠标时的提示)。我认为重写paint方法并将其留空会完成这项工作但不幸的是在组件所在的位置绘制了一个矩形。
如何让控件完全不可见?
答案 0 :(得分:9)
您可以从TGraphicControl
而不是TCustomControl
继承,并将绘制处理程序留空。什么都不会被吸引。
如果你需要一个窗口控件,那么你应该确保它没有边框并使用父背景。有关如何执行此操作的信息,请参阅this question。您可能还需要覆盖CreateParams()
,以删除边框样式位。
答案 1 :(得分:1)
如果控件不可见,则处理父对象中的单击消息,对控件矩形中的对象进行简单测试,并使用PostMessage将消息转发给控件。此类代码可能比空绘制处理程序更具可读性。 BRI