property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt は現在アクティブなページに対するヒットテストを実行します。指定された (X, Y) 座標がいずれかの
ウィジェット注釈矩形の内側にある場合に True を返します。座標は PDF ユーザー空間にあります。つまり
PageWidth / PageHeight と同じ座標系で、原点は左下、X は右向き、Y は上向きに増加し、
単位はポイント (1/72 インチ) です
Active が False の場合、ドキュメントに AcroForm ウィジェットがない場合、
または指定された座標がどのウィジェット矩形にも当てはまらない場合、このプロパティは False を返します。
PDFium の FPDFPage_HasFormFieldAtPoint の定数時間ラッパーであり、1 秒間に何度も値が
問い合わせされるビューアのマウス移動 / ホバーフィードバックに適しています
ヒットテストが対象とするのはウィジェット矩形のみであり、アピアランス境界ではありません。表示されるグリフが
ウィジェット矩形より小さいプッシュボタンやチェックボックスでも、矩形全体に対して True を報告します。
ヒットテストでカーソルがフィールド上にあることが確認できたら、FormFieldInfoAt[X, Y] と組み合わせて
一致したフィールドのレコードを取得してください。このパターンにより、マウス移動イベントのたびに重い情報取得を
行うことを避けられます
TPdfView.DeviceToPage で変換するか、逆の Zoom / スクロールオフセットを
自前で適用してくださいFormFieldInfoAt を使用してください
procedure TForm1.PdfView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var PageX, PageY: Double;
begin
PdfView1.DeviceToPage(X, Y, PageX, PageY);
if Pdf1.HasFormFieldAt[PageX, PageY] then
PdfView1.Cursor := crHandPoint
else
PdfView1.Cursor := crDefault;
end;