property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo;// solo lectura
FormFieldInfoAt realiza una prueba de impacto en la página actualmente activa y devuelve el registro TPdfFormFieldInfo que describe la anotación de widget en (X, Y). Las coordenadas están en el espacio de usuario PDF, con el origen en la esquina inferior izquierda de la página y las unidades expresadas en puntos (1/72 de pulgada). El registro refleja lo que devuelve FormFieldInfo[Index] — tipo de campo (fiTextField, fiCheckBox, …), nombre de campo, nombre alternativo, marcas, etiquetas de opción, estado de marcado, valor de exportación y tamaño de fuente
Cuando la coordenada no cae dentro de ningún rectángulo de widget, FormFieldInfoAt devuelve un TPdfFormFieldInfo inicializado por defecto — FieldType = fiUnknown y cadenas vacías en todo. Use HasFormFieldAt[X, Y] para una sonda sí/no barata antes de recuperar el registro completo, o simplemente compruebe el FieldType devuelto
La búsqueda es O(n) sobre los widgets de la página y además decodifica los metadatos de campo Unicode, por lo que es más pesada que HasFormFieldAt. En un manejador de movimiento del ratón compruebe HasFormFieldAt primero; solo llame a FormFieldInfoAt en clic o al entrar con el puntero. Las coordenadas de una posición del ratón pasan por TPdfView.PointToPage primero para traducir los píxeles de dispositivo a unidades de página
/Annots gana)FieldType = fiSignature — combine con SignatureCount para enumerar el estado de firma por separadoFormFieldAt se invalidan los registros en caché; vuelva a leer después de cada escritura
procedure TForm1.PdfView1Click(Sender: TObject);
var Info: TPdfFormFieldInfo;
PageX, PageY: Double;
begin
PdfView1.PointToPage(Mouse.CursorPos.X, Mouse.CursorPos.Y, PageX, PageY);
Info := Pdf1.FormFieldInfoAt[PageX, PageY];
if Info.FieldType <> fiUnknown then
ShowMessage(Info.Name);
end;