property FormFieldInfo[Index: Integer]: TPdfFormFieldInfo; // read only
FormFieldInfo zwraca migawkowy rekord TPdfFormFieldInfo dla adnotacji widżetu pola formularza o liczonym od zera indeksie Index na aktualnie aktywnej stronie. Rekord zapewnia silnie typizowany widok jednego widżetu pola AcroForm bez konieczności rozbierania na części bazowego uchwytu FPDF_ANNOTATION. Bazowe typy pól i flagi definiuje specyfikacja PDF 1.7, sekcja 12.7
Rekord przenosi nazwę pola Name (w pełni kwalifikowaną ścieżkę przez nadrzędne grupy pól, np. "order.shipto.address"), nazwę AlternateName używaną jako dostępne etykiety tooltip, wyliczenie FieldType (fiPushButton, fiCheckBox, fiRadioButton, fiTextField, fiListBox, fiComboBox, fiSignature lub fiUnknown), zestaw bitowy Flags (ffReadOnly, ffRequired, ffNoExport, …), wartość ExportValue zapisywaną do eksportu FormData, flagę Checked dla pól logicznych, rozmiar FontSize używany przy renderowaniu oraz tablice zestawów opcji OptionLabels / OptionSelected używane przez pola kombi i listy. Widżety przycisków radiowych należące do grupy dodatkowo wypełniają GroupCount i GroupIndex
Poprawne indeksy to 0 .. FormFieldCount - 1. Rekord jest typem wartościowym; modyfikowanie jego pól nie zapisuje nic z powrotem do dokumentu. Aby zmienić wartość pola, przypisuj przez FormField[Index]; aby zmienić maskę bitową flag, wywołaj SetFormFieldFlagsAt. Odczyt jest leniwy — PDFium dekoduje nazwy pól Unicode, etykiety opcji i wartości eksportowe na żądanie — więc zapamiętuj wynik, gdy wielokrotnie iterujesz po wielu polach
| Index | Liczony od zera indeks widżetu na bieżącej stronie (0 .. FormFieldCount - 1) |
Name, aby deduplikować między stronamifiSignature) udostępniają Name i prostokąt, ale bez bajtów podpisu; użyj Signature[I] na poziomie dokumentu, aby uzyskać treść PKCS#7GroupCount / GroupIndex, aby je rozróżnićFormFieldCount wynosi 0, a ten indeksator nigdy nie jest wywoływalny
var I, J: Integer;
var Info: TPdfFormFieldInfo;
for I := 0 to Pdf1.FormFieldCount - 1 do
begin
Info := Pdf1.FormFieldInfo[I];
Memo1.Lines.Add(Format('%s [%d] export=%s checked=%s',
[Info.Name, Ord(Info.FieldType), Info.ExportValue, BoolToStr(Info.Checked, True)]));
for J := 0 to High(Info.OptionLabels) do
Memo1.Lines.Add(' ' + Info.OptionLabels[J]);
end;