PDFium Delphi Component Docs

FormFieldZOrderAt Método

Componente: TPdfView  ·  Unidad: PDFium
Devuelve el orden de apilamiento del campo AcroForm más alto impactado en el píxel (X, Y) de la vista, o -1

Syntax

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

Parameters

X, YInteger. Coordenadas de píxel relativas al control visor, las mismas coordenadas que reciben los eventos del ratón

Return Value

Integer. El z-order del campo de formulario en el punto probado, o -1 cuando no se impacta ningún campo de formulario o la prueba no puede ejecutarse

Description

Realiza la prueba de impacto de un píxel de pantalla contra las anotaciones widget AcroForm de la página actual e informa la posición de apilamiento de la más alta. El visor primero convierte (X, Y) a coordenadas del espacio de página con DeviceToPage, que tiene en cuenta Zoom, Rotation, el modo de visualización, el relleno de página y el desplazamiento, y luego llama a FPDFPage_FormFieldZOrderAtPoint con el manejador de formulario de la página

Un valor de retorno mayor significa que el widget está apilado más cerca del visor, es decir, dibujado encima de campos con valores menores. El z-order aquí es el orden de prueba de impacto del tope de la pila de anotaciones, no un índice de widget, así que trate los valores como números de comparación opacos

Cuando se solapan un widget de formulario y una anotación de enlace, compare este resultado con LinkZOrderAt: ambos valores provienen del mismo orden de apilamiento de anotaciones, y el mayor identifica la anotación que PDFium considera impactada en ese píxel

El equivalente TPdf TPdf.FormFieldZOrderAtPoint(X, Y: Double) envuelve la misma función de PDFium. Toma directamente coordenadas del espacio de página en Double y lanza una excepción cuando no hay página activa o el entorno de formularios no está inicializado, mientras que el envoltorio TPdfView falla de forma suave y devuelve -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