我希望在用户将鼠标移到TDbStringGrid
上时显示提示。它几乎可以工作,但提示显示高位和左侧。
在我的OnMouseMove
中,我收到X& Y,我认为是abosulte screen corrdinates,但我可以使用dbGrid.MouseCoord(X, Y)
来获取数据库网格中的一个点。
当我使用Application.ActivateHint()
显示我的提示时,它会被置于高位和左侧。
知道我做错了吗?
答案 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;