Документация PDFiumPas

HasFormFieldAt Свойство

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

Синтаксис

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

Описание

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

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

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

Примечания

Пример

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