我有以下代码尝试显示提示:
procedure TMyGrid.OnGridMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
aPoint: TPoint;
begin
inherited;
//Application.Hint := 'Hint Text';
//Application.ShowHint := True;
Grid.Hint := 'Hint Text';
Grid.ShowHint := True;
aPoint.X := X;
aPoint.Y := Y;
Application.ActivateHint(aPoint);
end;
但是没有任何提示出现。怎么了?
最佳答案
ActivateHint
希望您的点位于屏幕坐标,而不是客户端坐标。
从文档:
ActivateHint将控件或菜单项定位在CursorPos指定的位置,其中CursorPos表示以像素为单位的屏幕坐标。找到控件后,ActivateHint在提示窗口中显示控件的提示。
因此,您必须像这样更改方法:
procedure TMyGrid.OnGridMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
aPoint: TPoint;
begin
inherited;
//Application.Hint := 'Hint Text';
Grid.Hint := 'Hint Text';
Grid.ShowHint := True;
aPoint.X := X;
aPoint.Y := Y;
aPoint := ClientToScreen(aPoint);
Application.ActivateHint(aPoint);
end;