Почему подсказки отображаются далеко от координат мыши?
Я хочу показать подсказку, как пользователь перемещает мышь над 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;