TApplication
グリッド コントロールのOnMouseMove
イベントで新しいヒントを強制的に表示しようとするのではなくCM_HINTSHOW
、現在のヒントが正常に表示されるたびにグリッドにメッセージを処理させて、現在のヒントをカスタマイズするのが正しい方法です。
メッセージは、その値 のレコードCM_HINTSHOW
へのポインターを提供します。コントロールのクライアント領域内の現在のマウス位置を示すメンバーと、現在のヒントが有効であるべきコントロールのクライアント領域内の四角形を定義できるメンバーがあります (ヒントをさらにカスタマイズするための他のメンバーがあります。テキスト、色、ウィンドウ クラス、表示/非表示のタイムアウトなど)。マウスがその四角形の外側に移動してもコントロールのクライアント領域内にある場合、メッセージが再度生成され、現在のヒントを更新するための新しい情報が取得されます。 THintInfo
LPARAM
THintInfo
CursorPos
CursorRect
THintInfo
CM_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;