property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt, geçerli etkin sayfada bir hit-test yapar: verilen (X, Y) koordinatı herhangi bir widget annotation rectangle'ının içine düşerse True döndürür. Koordinatlar PDF user space içindedir — PageWidth / PageHeight ile aynı koordinat sistemi; orijin sol alttadır, X sağa doğru artar, Y yukarı doğru artar, birimler point cinsindendir (1/72 inch)
Özellik, Active False olduğunda, belgede AcroForm widget bulunmadığında ya da verilen koordinat hiçbir widget rectangle'ına düşmediğinde False döndürür. PDFium'un FPDFPage_HasFormFieldAtPoint işlevi üzerinde sabit süreli bir sarmalayıcıdır — değerin saniyede birçok kez sorgulandığı bir viewer'da mouse-move / hover geri bildirimi için idealdir
Hit-test yalnızca widget rectangle'ını dikkate alır — appearance bounds'u değil. Görünür glyph'i widget rect'ten daha küçük olan push button veya check box'lar yine de tüm rect için True bildirir. Hit-test imlecin bir field üzerinde olduğunu doğruladığında eşleşen field'ın kaydını almak için FormFieldInfoAt[X, Y] ile birlikte kullanın; bu desen her mouse-move event'inde daha ağır olan bilgi çekimini önler
TPdfView.DeviceToPage üzerinden dönüştürün ya da bu özelliği çağırmadan önce ters Zoom / scroll offset'i kendiniz uygulayınFormFieldInfoAt kullanın
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;