PDFium Delphi Component Docs

FormFieldZOrderAt Метод

Компонент: TPdfView  ·  Модуль: PDFium
Возвращает z-order самого верхнего поля AcroForm, попавшего в пиксель просмотра (X, Y), или -1

Syntax

function FormFieldZOrderAt(X, Y: Integer): Integer;

Parameters

X, YInteger. Пиксельные координаты относительно элемента просмотра, те же координаты, что получают события мыши

Return Value

Integer. Z-order поля формы в точке, прошедшей Hit-тест, или -1, когда поле не задето или тест не может выполниться

Description

Выполняет Hit-тест экранного пикселя против виджетных аннотаций AcroForm текущей страницы и сообщает позицию в стеке у самой верхней. Просмотрщик сперва преобразует (X, Y) в координаты пространства страницы через DeviceToPage с учётом Zoom, Rotation, режима отображения, полей страницы и прокрутки, а затем вызывает нативную FPDFPage_FormFieldZOrderAtPoint с форм-хендлом страницы

Большее возвращаемое значение означает, что виджет лежит ближе к зрителю, то есть нарисован поверх полей с меньшими значениями. Z-order здесь — порядок верхнего Hit-теста стека аннотаций, а не индекс виджета, поэтому обращайтесь с этими значениями как с непрозрачными числами для сравнения

Там, где виджет формы и аннотация ссылки перекрываются, сравните этот результат с LinkZOrderAt: оба значения берутся из одного порядка стека аннотаций, и большее указывает на аннотацию, которую PDFium считает задетой в этом пикселе

Аналог на стороне TPdf, TPdf.FormFieldZOrderAtPoint(X, Y: Double), оборачивает ту же функцию PDFium. Он принимает координаты пространства страницы напрямую в Double и возбуждает исключение, когда активной страницы нет или среда форм не инициализирована, тогда как обёртка в TPdfView мягко завершается и возвращает -1

Remarks

Example

procedure TForm1.PdfView1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
  FieldZ, LinkZ: Integer;
begin
  FieldZ := PdfView1.FormFieldZOrderAt(X, Y);
  LinkZ := PdfView1.LinkZOrderAt(X, Y);
  if (FieldZ >= 0) and (FieldZ > LinkZ) then
    Caption := 'form field wins the hit';
end;

See Also

LinkZOrderAt, HasFormFieldAt, FormFieldInfoAt, FormFieldTypeAt, DeviceToPage, AllowFormEvents