property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt یک آزمون برخورد روی صفحهٔ فعال جاری انجام میدهد: وقتی مختصات (X, Y) دادهشده داخل مستطیل هر حاشیهنویسی ویجتی بیفتد True برمیگرداند. مختصات در فضای کاربر PDF هستند — همان دستگاه مختصات PageWidth / PageHeight، با مبدأ در پایین-چپ، X به سمت راست و Y به سمت بالا افزایش مییابد و واحد پوینت (1/72 اینچ)
ویژگی وقتی Active برابر False باشد، وقتی سند ویجت AcroForm ندارد، یا وقتی مختصات دادهشده به هیچ مستطیل ویجتی اصابت نمیکند False برمیگرداند. این یک پوشش زمان-ثابت حول FPDFPage_HasFormFieldAtPoint در PDFium است — ایدهآل برای بازخورد حرکت ماوس / هاور در نمایشگری که مقدار آن چندانبار در ثانیه پرسیده میشود
آزمون برخورد تنها مستطیل ویجت را مبنا قرار میدهد — نه کرانهای ظاهر. دکمههای فشاری یا چکباکسهایی که نویسهنگار دیداریشان از مستطیل ویجت کوچکتر است همچنان برای کل مستطیل True گزارش میدهند. پس از آنکه آزمون برخورد تأیید کرد نشانگر روی یک فیلد است، برای گرفتن رکورد فیلد منطبق آن را با FormFieldInfoAt[X, Y] جفت کنید؛ این الگو از واکشی سنگینتر اطلاعات در هر رخداد حرکت ماوس جلوگیری میکند
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;