function FormFieldZOrderAt(X, Y: Integer): Integer;
| X, Y | Integer. Coordenadas de píxel relativas al control visor, las mismas coordenadas que reciben los eventos del ratón |
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
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;