property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt یک آزمون برخورد روی صفحهٔ فعال جاری انجام میدهد و رکورد TPdfFormFieldInfo توصیفکنندهٔ حاشیهنویسی ویجت در (X, Y) را برمیگرداند. مختصات در فضای کاربر PDF هستند، با مبدأ در گوشهٔ پایین-چپ صفحه و واحد بر حسب پوینت (1/72 اینچ). رکورد همان چیزی را بازتاب میدهد که FormFieldInfo[Index] برمیگرداند — نوع فیلد (fiTextField، fiCheckBox، …)، نام فیلد، نام جایگزین، پرچمها، برچسبهای گزینه، حالت انتخاب، مقدار برونبرد و اندازهٔ قلم
وقتی مختصات داخل هیچ مستطیل ویجتی نیفتد، FormFieldInfoAt یک TPdfFormFieldInfo مقداردهیشده با پیشفرض برمیگرداند — FieldType = fiUnknown و رشتههای خالی در سراسر رکورد. پیش از گرفتن رکورد کامل از HasFormFieldAt[X, Y] برای کاوش ارزان بله/خیر استفاده کنید، یا صرفاً FieldType برگشتی را بررسی کنید
این جستوجو O(n) روی ویجتهای صفحه است و بهطور اضافی فرادادهٔ فیلد Unicode را رمزگشایی میکند، پس از HasFormFieldAt سنگینتر است. در گردانندهٔ حرکت ماوس ابتدا HasFormFieldAt را بررسی کنید؛ FormFieldInfoAt را تنها هنگام کلیک یا ورود هاور فراخوانی کنید. مختصات حاصل از موقعیت ماوس ابتدا از TPdfView.PointToPage میگذرند تا پیکسلهای دستگاه به واحدهای صفحه ترجمه شوند
/Annots برنده میشود)FieldType = fiSignature است — برای شمارش جداگانهٔ وضعیت امضا با SignatureCount ترکیب کنیدFormFieldAt رکوردهای ذخیرهشده را نامعتبر میکند؛ پس از هر نوشتن دوباره بخوانید
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;