我正在创建一个用户组件,在按钮上添加一些额外的标签(使用代码),但当点击标签时,按钮的onClick事件不会触发。如何仅使TWinControl显示并让其父级处理所有鼠标事件?
为这些标签创建所有与鼠标相关的事件并将它们指向按钮的事件是很麻烦和无效的。
是否有更简单的方法让按钮处理所有那些鼠标事件,就像那些标签不存在一样?
实际情况要复杂得多,标签是TJvLinkLabel用于简单的标记呈现,所以只需在按钮上绘制文本对我来说不是一个好选择。
感谢您的善意帮助。
编辑: 更具体一点。有一个按钮阵列,每个表格信息的表格记录。它们每个都有2个TJvLinkLabel作为页眉和页脚,它具有简单标记的标题以显示各个领域的信息和1个TJvLabel(alClient,shadow,wordwrap)来显示主要描述。每个按钮可以是不同的颜色,甚至有背景图片,这就是为什么需要阴影才能将文本带出。按钮自己的标题始终设置为空。
我其实只需要视觉效果(标记渲染,阴影),并且不需要这些标签的任何交互。我只是想让按钮像没有其他组件一样托管。
当我搜索到stackoverflow时,我看到C#似乎将hittest设置为false或类似,但我无法在Delphi中找到类似的设置。
编辑2: 更简单地说,有没有办法让父母(在这种情况下,按钮)处理所有的鼠标消息,并不传递给它的孩子(在这种情况下标签)。谢谢。
编辑3: 我已经远远地继承了标签类,并将Click,DblClick,MouseDown,MouseUp过程传递到按钮并跳过其他事件。我想知道是否有更好的解决方案。谢谢。
您是否在这些标签上使用超链接?你想要处理那些人,按钮或标签。任何屏幕截图的帮助我们可视化的机会? – 2012-03-01 17:14:32
如果你不能分配OnClick的标签..可能你可以创建TJvLinkLabel后代类,重写'Click'到'parent.click',并使用它? – teran 2012-03-01 20:15:38
@DavidHeffernan他们没有使用超链接,我只希望标签的视觉效果能够替换原始单个素描标题。 – Justmade 2012-03-01 23:49:18