TApplicationグリッド コントロールのOnMouseMoveイベントで新しいヒントを強制的に表示しようとするのではなくCM_HINTSHOW、現在のヒントが正常に表示されるたびにグリッドにメッセージを処理させて、現在のヒントをカスタマイズするのが正しい方法です。
メッセージは、その値 のレコードCM_HINTSHOWへのポインターを提供します。コントロールのクライアント領域内の現在のマウス位置を示すメンバーと、現在のヒントが有効であるべきコントロールのクライアント領域内の四角形を定義できるメンバーがあります (ヒントをさらにカスタマイズするための他のメンバーがあります。テキスト、色、ウィンドウ クラス、表示/非表示のタイムアウトなど)。マウスがその四角形の外側に移動してもコントロールのクライアント領域内にある場合、メッセージが再度生成され、現在のヒントを更新するための新しい情報が取得されます。 THintInfoLPARAMTHintInfoCursorPosCursorRectTHintInfoCM_HINTSHOW
マウスを動かすたびにヒントを更新する必要がある場合は、次のようCursorRectに、現在の のみを含むカスタムを定義できますCursorPos。
type
TMyGrid = class(...)
private
procedure CMHintShow(var Message: TCMHintShow); message CM_HINTSHOW;
end;
procedure TMyGrid.CMHintShow(var Message: TCMHintShow);
begin
with Message.HintInfo^ do
begin
HintStr := Format('Hint Text (%d,%d)', [CursorPos.X, CursorPos.Y]);
CursorRect := Rect(CursorPos.X, CursorPos.Y, CursorPos.X, CursorPos.Y);
end;
end;