property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt извършва hit тест върху текущо активната страница: връща
True, когато зададената координата (X, Y) попада вътре в
правоъгълника на която и да е анотация уиджет. Координатите са в потребителското
пространство на PDF — същата координатна система като
PageWidth / PageHeight, с начало в долния ляв ъгъл,
X нараства надясно, Y нараства нагоре, единиците са точки
(1/72 inch)
Свойството връща False, когато Active е False,
когато документът няма AcroForm уиджети или когато подадената координата не попада в
нито един правоъгълник на уиджет. То е обвивка с константно време около
FPDFPage_HasFormFieldAtPoint на PDFium — идеално за обратна връзка при
mouse-move / посочване в преглед, където стойността се запитва много пъти в секунда
Hit тестът отчита само правоъгълника на уиджета — не границите на външния вид.
Бутони или отметки, чийто видим глиф е по-малък от правоъгълника на уиджета, продължават
да докладват True за целия правоъгълник. Комбинирайте със
FormFieldInfoAt[X, Y], за да получите записа на засеченото поле, след като
hit тестът потвърди, че курсорът е върху поле; тази схема избягва по-тежкото извличане
на информация при всяко събитие 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;