PDFium Delphi Component Docs

FormFieldInfoAt Eigenschaft

Komponente: TPdf  ·  Unit: PDFium
Formularfeld-Datensatz für das Widget an der angegebenen Seitenkoordinate

Syntax

property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only

Description

FormFieldInfoAt führt einen Hit-Test auf der aktuell aktiven Seite aus und liefert den TPdfFormFieldInfo-Record, der die Widget-Annotation bei (X, Y) beschreibt. Koordinaten liegen im PDF-Benutzerraum, mit dem Ursprung in der unteren linken Ecke der Seite und Punkten als Einheit (1/72 inch). Der Record spiegelt, was FormFieldInfo[Index] zurückgibt — Feldtyp (fiTextField, fiCheckBox, …), Feldname, Alternativ- name, Flags, Options-Labels, Häkchen-Zustand, Export-Wert und Schriftgröße

Landet die Koordinate in keinem Widget-Rechteck, liefert FormFieldInfoAt einen default-initialisierten TPdfFormFieldInfo — FieldType = fiUnknown und durchweg leere Zeichenketten. Verwenden Sie HasFormFieldAt[X, Y] für eine günstige Ja/Nein-Prüfung, bevor Sie den vollen Record abholen, oder prüfen Sie schlicht den zurückgegebenen FieldType

Die Suche ist O(n) über die Widgets der Seite und dekodiert zusätzlich Unicode-Feldmetadaten, ist also teurer als HasFormFieldAt. In einem Mouse-Move-Handler zuerst HasFormFieldAt prüfen; FormFieldInfoAt nur bei Klick oder Hover-Eintritt aufrufen. Koordinaten aus einer Mausposition zuerst durch TPdfView.PointToPage leiten, um Geräte-Pixel in Seiteneinheiten zu übersetzen

Remarks

Example

procedure TForm1.PdfView1Click(Sender: TObject);
var Info: TPdfFormFieldInfo;
  PageX, PageY: Double;
begin
  PdfView1.PointToPage(Mouse.CursorPos.X, Mouse.CursorPos.Y, PageX, PageY);
  Info := Pdf1.FormFieldInfoAt[PageX, PageY];
  if Info.FieldType <> fiUnknown then
    ShowMessage(Info.Name);
end;

See Also

HasFormFieldAt, FormFieldInfo, FormFieldAt, FormFieldCount