Почему подсказки отображаются далеко от координат мыши?

Я хочу показать подсказку, как пользователь перемещает мышь над TDbStringGrid, Это почти работает, но подсказка показывает высоко и влево.

В моем OnMouseMove, Я получаю X & Y, которые, я думаю, являются абдульскими экранами, но я могу использовать dbGrid.MouseCoord(X, Y) чтобы получить точку в сетке БД.

Когда я показываю свою подсказку, используя Application.ActivateHint(), он расположен высоко и влево.

Есть идеи, что я делаю не так?

1 ответ

Решение

Я бы попробовал использовать 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;
Другие вопросы по тегам