核心提示:在下图显示,窗口中有两个控件A和B,而B控件中间部分则被A控件挡住了。正常情况下挡住的部分我们用鼠标是点不到B控件的,但有时候我们是需要点到B控件划线部分时(可以想像这两个控件是透明的,只显示连线),...
在下图显示,窗口中有两个控件A和B,而B控件中间部分则被A控件挡住了。正常情况下挡住的部分我们用鼠标是点不到B控件的,但有时候我们是需要点到B控件划线部分时(可以想像这两个控件是透明的,只显示连线),可以在控件中实现如下方法:
600) this.width = 600;">
procedure CMHitTest(var Message: TCMHitTest); message CM_HITTEST;
procedure CMHitTest(var Message: TCMHitTest);
begin
if Canvas.Pixels[Message.XPos, Message.YPos] <> clFuchsia then
Message.Result := HTCLIENT
else
Message.Result := HTNOWHERE;
end;
这个方法同时支持MouseMove事件,也就是说,如果鼠标不在连线位置时,是不会触发MouseMove事件的。