当用户将鼠标移到TDbStringGrid
. 它几乎可以工作,但提示显示在高处和左侧。
在我的OnMouseMove
中,我收到 X 和 Y,我认为这是绝对的屏幕坐标,但我可以用来dbGrid.MouseCoord(X, Y)
在数据库网格中获得一个点。
当我使用 显示我的提示时Application.ActivateHint()
,它被放置在高处和左侧。
知道我做错了什么吗?
当用户将鼠标移到TDbStringGrid
. 它几乎可以工作,但提示显示在高处和左侧。
在我的OnMouseMove
中,我收到 X 和 Y,我认为这是绝对的屏幕坐标,但我可以用来dbGrid.MouseCoord(X, Y)
在数据库网格中获得一个点。
当我使用 显示我的提示时Application.ActivateHint()
,它被放置在高处和左侧。
知道我做错了什么吗?
我会尝试使用该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;