property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt wykonuje test trafienia na aktualnie aktywnej stronie: zwraca True, gdy podana współrzędna (X, Y) wpada do dowolnego prostokąta adnotacji widgetu. Współrzędne są w przestrzeni użytkownika PDF — w tym samym układzie co PageWidth / PageHeight, z początkiem w lewym dolnym rogu, osią X rosnącą w prawo, osią Y rosnącą w górę i jednostkami w punktach (1/72 cala)
Właściwość zwraca False, gdy Active ma wartość False, gdy dokument nie ma widgetów AcroForm albo gdy podana współrzędna nie trafia w żaden prostokąt widgetu. To stałoczasowa otoczka wokół FPDFPage_HasFormFieldAtPoint PDFium — idealna do informacji zwrotnej przy ruchu myszy / najechaniu w podglądzie, gdzie wartość jest odpytywana wiele razy na sekundę
Test trafienia uwzględnia tylko prostokąt widgetu — nie granice wyglądu. Przyciski wypychane i pola wyboru, których widoczny glif jest mniejszy niż prostokąt widgetu, nadal zwracają True dla całego prostokąta. Połącz z FormFieldInfoAt[X, Y], aby uzyskać rekord dopasowanego pola, gdy test trafienia potwierdzi, że kursor znajduje się nad polem; taki wzorzec pozwala uniknąć cięższego pobierania informacji przy każdym zdarzeniu ruchu myszy
TPdfView.DeviceToPage albo sam zastosuj odwrotne przesunięcie Zoom / scroll przed wywołaniem tej właściwościFormFieldInfoAt, gdy chcesz 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;