1

当用户将鼠标移到TDbStringGrid. 它几乎可以工作,但提示显示在高处和左侧。

在我的OnMouseMove中,我收到 X 和 Y,我认为这是绝对的屏幕坐标,但我可以用来dbGrid.MouseCoord(X, Y)在数据库网格中获得一个点。

当我使用 显示我的提示时Application.ActivateHint(),它被放置在高处和左侧。

知道我做错了什么吗?

4

1 回答 1

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;
于 2012-10-29T07:30:16.157 回答