property HasFormFieldAt[X, Y: Single]: Boolean; // nur lesbar
HasFormFieldAt führt auf der aktuell aktiven Seite einen Hit-Test durch: Es gibt
True zurück, wenn die angegebene (X, Y)-Koordinate in
einem beliebigen Widget-Annotation-Rechteck liegt Die Koordinaten liegen im
PDF-Benutzerraum — demselben Koordinatensystem wie
PageWidth / PageHeight, mit dem Ursprung links unten, X
nach rechts wachsend, Y nach oben wachsend, Einheiten in Punkten (1/72 Zoll)
Die Eigenschaft gibt False zurück, wenn Active
False ist, wenn das Dokument keine AcroForm-Widgets hat oder wenn die
übergebene Koordinate kein Widget-Rechteck trifft Sie ist ein Wrapper mit konstanter
Laufzeit um PDFiums FPDFPage_HasFormFieldAtPoint — ideal für
Mausbewegungs- / Hover-Rückmeldungen in einem Viewer, in dem der Wert viele Male pro
Sekunde abgefragt wird
Der Hit-Test beachtet nur das Widget-Rechteck — nicht die Grenzen der
Darstellung Schaltflächen oder Kontrollkästchen, deren sichtbares Glyph kleiner als
das Widget-Rechteck ist, melden trotzdem True für das ganze Rechteck
Kombinieren Sie es mit FormFieldInfoAt[X, Y], um den Datensatz des
passenden Felds zu erhalten, sobald der Hit-Test bestätigt, dass der Cursor über
einem Feld liegt; dieses Muster vermeidet das schwerere Abrufen der Infos bei jedem
Mausbewegungsereignis
TPdfView.DeviceToPage um oder wenden Sie den inversen Zoom- /
Scroll-Offset selbst an, bevor Sie diese Eigenschaft aufrufenFormFieldInfoAt, 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;