property HasFormFieldAt[X, Y: Single]: Boolean; // read only
HasFormFieldAt führt einen Hit-Test auf der aktuell aktiven Seite aus: Die Eigenschaft liefert
True, wenn die gegebene (X, Y)-Koordinate in einem
Widget-Annotationsrechteck liegt. Koordinaten liegen im PDF-Benutzerraum — dasselbe Koordinaten-
system wie PageWidth / PageHeight, mit dem Ursprung unten
links, X nach rechts wachsend, Y nach oben wachsend, Einheit Punkte
(1/72 inch)
Die Eigenschaft liefert False, wenn Active False ist,
wenn das Dokument keine AcroForm-Widgets hat oder wenn die übergebene Koordinate an
allen Widget-Rechtecken vorbeigeht. Sie ist ein Constant-Time-Wrapper um PDFiums
FPDFPage_HasFormFieldAtPoint — ideal für Mouse-Move-/Hover-
Feedback in einem Viewer, in dem der Wert mehrmals pro Sekunde abgefragt wird
Der Hit-Test berücksichtigt nur das Widget-Rechteck — nicht die Appearance-Grenzen. Push-
buttons oder Checkboxen, deren sichtbare Glyphe kleiner als das Widget-Rechteck ist, melden für das
ganze Rechteck trotzdem True. Zusammen mit
FormFieldInfoAt[X, Y] den Record des getroffenen Felds holen, sobald der
Hit-Test bestätigt, dass der Cursor über einem Feld steht; dieses Muster vermeidet den teureren
Info-Abruf bei jedem Mouse-Move-Event
TPdfView.DeviceToPage oder wendet vor dem Aufruf dieser Eigenschaft den inversen
Zoom-/Scroll-Offset selbst anFormFieldInfoAt verwenden, wenn
Sie wissen müssen, welches Feld getroffen wurde
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;