property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // nur lesbar
FormFieldInfoAt führt auf der aktuell aktiven Seite einen Hit-Test durch und gibt
den TPdfFormFieldInfo-Datensatz für die Widget-Annotation bei
(X, Y) zurück Die Koordinaten liegen im PDF-Benutzerraum, mit dem
Ursprung in der linken unteren Ecke der Seite und Einheiten in Punkten
(1/72 Zoll) Der Datensatz spiegelt wider, was FormFieldInfo[Index]
zurückgibt — Feldtyp (fiTextField, fiCheckBox, …),
Feldname, alternativer Name, Flags, Optionsbeschriftungen, Aktivierungsstatus,
Exportwert und Schriftgröße
Wenn die Koordinate in kein Widget-Rechteck fällt, gibt FormFieldInfoAt einen
standardmäßig initialisierten TPdfFormFieldInfo-Datensatz zurück
— FieldType = fiUnknown und überall leere Zeichenketten Verwenden
Sie HasFormFieldAt[X, Y] für eine günstige Ja/Nein-Prüfung, bevor Sie
den vollständigen Datensatz abrufen, oder prüfen Sie einfach den zurückgegebenen
FieldType
Die Suche ist O(n) über die Widgets der Seite und dekodiert zusätzlich
Unicode-Feldmetadaten, ist also schwerer als HasFormFieldAt In einem
Mouse-Move-Handler prüfen Sie zuerst HasFormFieldAt; rufen Sie
FormFieldInfoAt nur bei Klick oder Hover-Eintritt auf Koordinaten aus einer
Mausposition laufen zuerst durch TPdfView.PointToPage, um
Gerätepixel in Seiteneinheiten umzuwandeln
/Annots gewinntFieldType = fiSignature —
kombinieren Sie es mit SignatureCount, um den Signaturstatus
separat aufzulistenFormFieldAt machen zwischengespeicherte
Datensätze ungültig; lesen Sie nach jedem Schreibvorgang neu
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;