1

ユーザーがマウスを上に移動すると、ヒントが表示されますTDbStringGrid。ほとんど機能しますが、ヒントが左に高く表示されます。

私のOnMouseMoveでは、X と Y を受け取ります。これは絶対的な画面コーディネイトだと思いますがdbGrid.MouseCoord(X, Y)、DB グリッド内のポイントを取得するために使用できます。

を使ってヒントを表示Application.ActivateHint()すると、左側の高い位置に表示されます。

私が間違っていることは何ですか?

4

1 に答える 1

6

コントロールの相対座標を受け取るようなスクリーン座標とイベントを使用するため、ClientToScreenメソッドを使用してコントロールの相対座標をスクリーン座標に変換しようとします。コードでは、次のようになります。ActivateHintOnMouseMove

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;
于 2012-10-29T07:30:16.157 に答える