property HasFormFieldAt[X, Y: Single]: Boolean; // للقراءة فقط
ينفذ HasFormFieldAt اختبار إصابة على الصفحة النشطة حاليًا: يعيد True عندما يقع الإحداثي (X, Y) المعطى داخل أي مستطيل تعليق أداة. الإحداثيات في فضاء مستخدم PDF — نظام الإحداثيات نفسه مثل PageWidth / PageHeight، مع الأصل عند أسفل اليسار، و X يتزايد يمينًا، و Y يتزايد لأعلى، والوحدات بالنقاط (1/72 بوصة).
تُرجع الخاصية False عندما تكون Active تساوي False،
أو عندما لا يحوي المستند أدوات AcroForm، أو عندما تفوت الإحداثية المعطاة
كل مستطيل أداة. وهي غلاف بزمن ثابت حول
FPDFPage_HasFormFieldAtPoint من PDFium — مثالية لتفاعل
mouse-move / hover في عارض تُستعلم فيه القيمة عدة مرات كل ثانية.
يحترم اختبار الإصابة مستطيل الأداة فقط — لا حدود المظهر. فأزرار
الضغط أو مربعات الاختيار التي يكون رمزها المرئي أصغر من مستطيل الأداة تظل
تُبلغ True عن المستطيل كله. اقرنها مع
FormFieldInfoAt[X, Y] للحصول على سجل الحقل المطابق بمجرد أن
يؤكد اختبار الإصابة أن المؤشر فوق حقل؛ فهذا النمط يجنبك
جلب المعلومات الأثقل في كل حدث mouse-move.
TPdfView.DeviceToPage أو طبِّق معكوس Zoom / إزاحة التمرير بنفسك قبل استدعاء هذه الخاصية.FormFieldInfoAt عندما تحتاج معرفة أي حقل أُصيب.
procedure TForm1.PdfView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var PageX, PageY: Double;
begin
PdfView1.DeviceToPage(X, Y, PageX, PageY);
if Pdf1.HasFormFieldAt[PageX, PageY] then
PdfView1.Cursor := crHandPoint
else
PdfView1.Cursor := crDefault;
end;