TImage中的Delphi鼠标滚轮事件未对齐

TImage中的Delphi鼠标滚轮事件未对齐,delphi,delphi-10.1-berlin,Delphi,Delphi 10.1 Berlin,在Delphi中,当我捕获TImage的鼠标滚轮事件时,我发现滚轮事件不是在我的TImage上创建的,而是向上和向左偏移(但更小)。换句话说,如果将鼠标放在图片的右下角,我就不会看到任何事件。但我确实看到了TImage左侧和上方的事件。我如何捕捉这些事件似乎没有什么不同。我尝试了简单的劫持添加onmouseheel属性。我尝试创建一个子组件,公开onmouseheel。我试着控制方向盘。我试着钩住WndProc()并捕获WM_鼠标轮。所有的结果都是一样的。好吧,这是一个漫长的过程。所有其他窗口功

在Delphi中,当我捕获TImage的鼠标滚轮事件时,我发现滚轮事件不是在我的TImage上创建的,而是向上和向左偏移(但更小)。换句话说,如果将鼠标放在图片的右下角,我就不会看到任何事件。但我确实看到了TImage左侧和上方的事件。我如何捕捉这些事件似乎没有什么不同。我尝试了简单的劫持添加onmouseheel属性。我尝试创建一个子组件,公开onmouseheel。我试着控制方向盘。我试着钩住WndProc()并捕获WM_鼠标轮。所有的结果都是一样的。

好吧,这是一个漫长的过程。所有其他窗口功能似乎都正常工作。我将我的组件切换为继承自TCustomControl,并添加了TImage所需的功能,效果更好。

请显示我们可以重现问题的最小代码,请注意。将图像添加到wincontrol上,如具有相同尺寸的面板,并在该控件上显示车轮操纵。作为graphiccontrol的后代,图像不会传递任何类型的滚动消息。
TImage
是一个图形控件,而不是窗口控件。鼠标输入首先由窗口化父对象接收,然后委托给最近的非窗口化子对象。因此,接收到的坐标是相对于父对象的,而不是相对于图像的。听起来家长在委派时没有正确调整坐标。但是如果没有MVCE,没有人能告诉你为什么会这样。好吧,这是一个长期的尝试。所有其他窗口功能似乎都正常工作。我将我的组件切换为从TCustomControl继承,并添加了TImage所需的功能,因此工作得更好。谢谢。这个问题怎么回答?