property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt, hâlihazırda etkin sayfada bir hit-test yapar ve
(X, Y)'deki widget annotation'ını anlatan
TPdfFormFieldInfo kaydını döndürür. Koordinatlar PDF user space'tedir; başlangıç noktası
sayfanın sol alt köşesidir ve birimler point olarak ifade edilir (1/72 inch). Kayıt,
FormFieldInfo[Index]'in döndürdüğü şeyi yansıtır — alan türü
(fiTextField, fiCheckBox, …), alan adı, alternatif
ad, flag'ler, seçenek etiketleri, işaretli durumu, export value ve font boyutu
Koordinat hiçbir widget dikdörtgenine denk gelmezse FormFieldInfoAt
varsayılanla başlatılmış bir TPdfFormFieldInfo döndürür —
FieldType = fiUnknown ve her yerde boş stringler. Tam
kaydı almadan önce ucuz bir evet/hayır yoklaması için
HasFormFieldAt[X, Y]'yi kullanın veya döndürülen FieldType'yı kontrol edin
Arama, sayfanın widget'ları üzerinde O(n) maliyetlidir ve ayrıca
Unicode alan metadata'sını çözer; dolayısıyla HasFormFieldAt'tan daha ağırdır. Bir
mouse-move işleyicisinde önce HasFormFieldAt'ı kontrol edin; FormFieldInfoAt'i
yalnızca tıklamada veya hover-girişinde çağırın. Fare konumundan gelen koordinatlar, aygıt piksellerini sayfa birimlerine çevirmek için
önce TPdfView.PointToPage'den geçer
/Annots'un son girdisi kazanır)FieldType = fiSignature — combine with
SignatureCount to enumerate signing state separately.FormFieldAt invalidates cached records;
re-read after each write.
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;