property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt esegue un hit-test sulla pagina attualmente attiva: restituisce
True quando la coordinata (X, Y) data cade dentro il rettangolo di
una qualsiasi annotazione widget. Le coordinate sono in user space PDF — stesso sistema di
coordinate di PageWidth / PageHeight, con l'origine in basso
a sinistra, X crescente verso destra, Y crescente verso l'alto, unità in punti
(1/72 di pollice)
La proprietà restituisce False quando Active è False,
quando il documento non ha widget AcroForm, o quando la coordinata fornita non tocca
alcun rettangolo widget. È un wrapper a tempo costante attorno a
FPDFPage_HasFormFieldAtPoint di PDFium — ideale per il feedback mouse-move / hover
in un viewer dove il valore viene interrogato molte volte al secondo
L'hit-test considera solo il rettangolo del widget — non i confini dell'appearance. Pulsanti
o caselle di controllo il cui glifo visibile è più piccolo del rettangolo widget riportano comunque
True per l'intero rettangolo. Abbinalo a
FormFieldInfoAt[X, Y] per ottenere il record del campo trovato una volta che l'
hit-test conferma che il cursore è sopra un campo; questo schema evita il recupero più pesante
delle info a ogni evento mouse-move
TPdfView.DeviceToPage o applica tu stesso l'inverso dell'offset Zoom / scroll
prima di chiamare questa proprietàFormFieldInfoAt quando
devi sapere quale campo è stato colpito
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;