PDFium Delphi Component Docs

HasFormFieldAt プロパティ

コンポーネント: TPdf  ·  ユニット: PDFium
フォームフィールドウィジェットが指定されたページ座標を覆う場合に True を返すヒットテストです

構文

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] と組み合わせて 一致したフィールドのレコードを取得してください。このパターンにより、マウス移動イベントのたびに重い情報取得を 行うことを避けられます

備考

例

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;

関連項目

FormFieldAt, FormFieldInfoAt, FormFieldCount, TPdfView.DeviceToPage