property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt esegue un hit-test sulla pagina attualmente attiva e restituisce il
record TPdfFormFieldInfo che descrive l'annotazione widget a
(X, Y). Le coordinate sono in user space PDF, con l'origine
nell'angolo in basso a sinistra della pagina e unità espresse in punti (1/72 di pollice). Il record
rispecchia ciò che restituisce FormFieldInfo[Index] — tipo di campo
(fiTextField, fiCheckBox, …), nome del campo, nome alternativo,
flag, etichette delle opzioni, stato di selezione, valore di export e dimensione font
Quando la coordinata non cade dentro nessun rettangolo widget, FormFieldInfoAt
restituisce un TPdfFormFieldInfo inizializzato di default —
FieldType = fiUnknown e stringhe vuote ovunque. Usa
HasFormFieldAt[X, Y] come sonda sì/no economica prima di recuperare il record
completo, oppure verifica semplicemente il FieldType restituito
La ricerca è O(n) sui widget della pagina e in più decodifica
i metadati Unicode del campo, quindi è più pesante di HasFormFieldAt. In un
gestore di mouse-move verifica prima HasFormFieldAt; chiama
FormFieldInfoAt solo al click o all'hover-enter. Le coordinate di una posizione del mouse passano prima da
TPdfView.PointToPage per tradurre i pixel device in unità pagina
/Annots)FieldType = fiSignature — combina con
SignatureCount per enumerare separatamente lo stato di firmaFormFieldAt invalida i record in cache;
rileggili dopo ogni scrittura
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;