PDFium Delphi Component Docs

HasFormFieldAt Свойство

Компонент: TPdf  ·  Модуль: PDFium
Hit-test, который возвращает True, когда виджет поля формы покрывает заданную координату страницы

Syntax

property HasFormFieldAt[X, Y: Single]: Boolean; // read only

Description

HasFormFieldAt выполняет hit-test на текущей активной странице: возвращает True, когда заданная координата (X, Y) попадает внутрь прямоугольника любой widget-аннотации. Координаты — в пользовательском пространстве PDF, той же системе, что у PageWidth / PageHeight: начало внизу слева, X растёт вправо, Y — вверх, единицы — пункты (1/72 дюйма)

Свойство возвращает False, когда Active равно False, когда в документе нет виджетов AcroForm или когда переданная координата проходит мимо всех прямоугольников виджетов. Это обёртка постоянного времени над FPDFPage_HasFormFieldAtPoint из PDFium — идеально для feedback при mouse-move / hover во вьювере, где значение запрашивается много раз в секунду

Hit-test учитывает только прямоугольник виджета — не границы appearance. Кнопки или чекбоксы, чей видимый глиф меньше прямоугольника виджета, всё равно дают True на всём прямоугольнике. В паре с FormFieldInfoAt[X, Y]: как только hit-test подтвердил, что курсор над полем, получайте запись найденного поля — этот паттерн избавляет от более тяжёлого запроса данных на каждом mouse-move

Remarks

Example

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;

See Also

FormFieldAt, FormFieldInfoAt, FormFieldCount, TPdfView.DeviceToPage