为什么我的工具提示远离鼠标坐标?

时间:2012-10-29 07:20:06

标签: delphi hint tdbgrid mouse-coordinates

我希望在用户将鼠标移到TDbStringGrid上时显示提示。它几乎可以工作,但提示显示高位和左侧。

在我的OnMouseMove中,我收到X& Y,我认为是abosulte screen corrdinates,但我可以使用dbGrid.MouseCoord(X, Y)来获取数据库网格中的一个点。

当我使用Application.ActivateHint()显示我的提示时,它会被置于高位和左侧。

知道我做错了吗?

1 个答案:

答案 0 :(得分:6)

我尝试使用ClientToScreen方法将控件的相对坐标转换为屏幕坐标,因为ActivateHint使用屏幕坐标,OnMouseMove等事件接收控件相对的坐标。在代码中,它可能如下所示:

procedure TForm1.DbStringGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  ScreenRelativePoint: TPoint;
begin
  ScreenRelativePoint := (Sender as TControl).ClientToScreen(Point(X, Y));
  Application.ActivateHint(ScreenRelativePoint);
end;