property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt wykonuje test trafień na aktualnie aktywnej stronie: zwraca True, gdy podana współrzędna (X, Y) wpada w prostokąt dowolnej adnotacji widżetu. Współrzędne podaje się w przestrzeni użytkownika PDF — w tym samym układzie współrzędnych co PageWidth / PageHeight, z początkiem w lewym dolnym rogu, X rosnącym w prawo, Y rosnącym w górę, w jednostkach punktów (1/72 cala)
Właściwość zwraca False, gdy Active ma wartość False, gdy dokument nie ma widżetów AcroForm albo gdy podana współrzędna nie trafia w żaden prostokąt widżetu. Jest to otoczka o stałym czasie wokół FPDFPage_HasFormFieldAtPoint PDFium — idealna do sprzężenia zwrotnego ruchu myszy / najechania kursorem w podglądzie, gdzie wartość jest odpytywana wiele razy na sekundę
Test trafienia uwzględnia wyłącznie prostokąt widżetu — nie granice wyglądu. Przyciski i pola wyboru, których widoczny glif jest mniejszy niż prostokąt widżetu, nadal zgłaszają True dla całego prostokąta. Połącz z FormFieldInfoAt[X, Y], aby pobrać rekord trafionego pola po potwierdzeniu, że kursor znajduje się nad polem; ten wzorzec unika cięższego pobierania informacji przy każdym zdarzeniu ruchu myszy
TPdfView.DeviceToPage albo sam zastosuj odwrotny zoom / przesunięcie przewijania przed wywołaniem tej właściwościFormFieldInfoAt, gdy musisz wiedzieć, które pole zostało trafione
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;