property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt voert een hit-test uit op de momenteel actieve pagina en retourneert het TPdfFormFieldInfo-record dat de widgetannotatie op (X, Y) beschrijft. Coördinaten zijn in PDF-gebruikersruimte, met de oorsprong in de linkerbenedenhoek van de pagina en eenheden uitgedrukt in punten (1/72 inch). Het record weerspiegelt wat FormFieldInfo[Index] retourneert — veldtype (fiTextField, fiCheckBox, …), veldnaam, alternatieve naam, vlaggen, optielabels, aangevinkte status, exportwaarde en lettertypegrootte.
Wanneer het coördinaat niet binnen een widgetrechthoek valt, retourneert FormFieldInfoAt een standaard geïnitialiseerd TPdfFormFieldInfo — FieldType = fiUnknown en lege strings door heel het record. Gebruik HasFormFieldAt[X, Y] voor een goedkope ja/nee-test voordat u het volledige record ophaalt, of controleer simpelweg de geretourneerde FieldType.
De opzoeking is O(n) over de widgets van de pagina en decodeert bovendien Unicode-veldmetagegevens, dus is zwaarder dan HasFormFieldAt. In een muis-beweeg-handler controleert u eerst HasFormFieldAt; roep FormFieldInfoAt alleen aan bij klikken of bij hover-enter. Coördinaten vanuit een muispositie gaan eerst door TPdfView.PointToPage om apparaatpixels naar pagina-eenheden te vertalen.
/Annots wint).FieldType = fiSignature — combineer met
SignatureCount om de ondertekeningsstatus afzonderlijk te enumereren.FormFieldAt maakt records in de cache ongeldig;
herlees na elke schrijfactie.
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;