property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt führt einen Hit-Test auf der aktuell aktiven Seite aus und liefert den
TPdfFormFieldInfo-Record, der die Widget-Annotation bei
(X, Y) beschreibt. Koordinaten liegen im PDF-Benutzerraum, mit dem Ursprung in der
unteren linken Ecke der Seite und Punkten als Einheit (1/72 inch). Der Record
spiegelt, was FormFieldInfo[Index] zurückgibt — Feldtyp
(fiTextField, fiCheckBox, …), Feldname, Alternativ-
name, Flags, Options-Labels, Häkchen-Zustand, Export-Wert und Schriftgröße
Landet die Koordinate in keinem Widget-Rechteck, liefert FormFieldInfoAt einen
default-initialisierten TPdfFormFieldInfo —
FieldType = fiUnknown und durchweg leere Zeichenketten. Verwenden Sie
HasFormFieldAt[X, Y] für eine günstige Ja/Nein-Prüfung, bevor Sie den vollen
Record abholen, oder prüfen Sie schlicht den zurückgegebenen FieldType
Die Suche ist O(n) über die Widgets der Seite und dekodiert zusätzlich
Unicode-Feldmetadaten, ist also teurer als HasFormFieldAt. In einem
Mouse-Move-Handler zuerst HasFormFieldAt prüfen; FormFieldInfoAt nur
bei Klick oder Hover-Eintritt aufrufen. Koordinaten aus einer Mausposition zuerst durch
TPdfView.PointToPage leiten, um Geräte-Pixel in Seiteneinheiten zu übersetzen
/Annots gewinnt)FieldType = fiSignature — mit
SignatureCount kombinieren, um den Signaturzustand separat aufzuzählenFormFieldAt macht gecachte Records ungültig;
nach jedem Schreibzugriff neu lesen
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;