property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt wykonuje test trafień na aktualnie aktywnej stronie i zwraca rekord TPdfFormFieldInfo opisujący adnotację widżetu w punkcie (X, Y). Współrzędne podaje się w przestrzeni użytkownika PDF, z początkiem układu w lewym dolnym narożniku strony i jednostkami wyrażonymi w punktach (1/72 cala). Rekord odzwierciedla to, co zwraca FormFieldInfo[Index] — typ pola (fiTextField, fiCheckBox, …), nazwę pola, nazwę alternatywną, flagi, etykiety opcji, stan zaznaczenia, wartość eksportową i rozmiar czcionki
Gdy współrzędna nie trafia w żaden prostokąt widżetu, FormFieldInfoAt zwraca domyślnie inicjowany rekord TPdfFormFieldInfo — FieldType = fiUnknown i puste napisy w całym rekordzie. Użyj HasFormFieldAt[X, Y] jako taniego testu tak/nie przed pobraniem pełnego rekordu albo po prostu sprawdź zwrócony FieldType
Wyszukiwanie ma złożoność O(n) względem widżetów strony i dodatkowo dekoduje metadane Unicode pól, jest więc cięższe niż HasFormFieldAt. W procedurze obsługi ruchu myszy sprawdzaj najpierw HasFormFieldAt; FormFieldInfoAt wywołuj dopiero przy kliknięciu lub wejściu kursora. Współrzędne pozycji myszy przepuszczaj najpierw przez TPdfView.PointToPage, aby przełożyć piksele urządzenia na jednostki strony
/Annots)FieldType = fiSignature — połącz z SignatureCount, aby osobno wyliczyć stan podpisywaniaFormFieldAt unieważnia rekordy zapisane w pamięci podręcznej; odczytaj ponownie po każdym zapisie
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;