property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt извършва hit тест на текущо активната страница и връща
записа TPdfFormFieldInfo, описващ анотацията на уиджета на
(X, Y). Координатите са в PDF user space, с начало в
долния ляв ъгъл на страницата и единици, изразени в точки (1/72 инча). Записът
отразява това, което FormFieldInfo[Index] връща — тип на полето
(fiTextField, fiCheckBox, …), име на полето, алтернативно
име, флагове, етикети на опциите, състояние на отметка, експортна стойност и размер на шрифта.
Когато координатата не попада в никой правоъгълник на уиджет, FormFieldInfoAt
връща инициализиран по подразбиране TPdfFormFieldInfo —
FieldType = fiUnknown и празни низове навсякъде. Използвайте
HasFormFieldAt[X, Y] за евтина проба да/не, преди да извлечете пълния
запис, или просто проверете върнатия FieldType.
Търсенето е O(n) през уиджетите на страницата и допълнително декодира
Unicode метаданните на полетата, така че е по-тежко от HasFormFieldAt. В
обработчик на движение на мишката проверете HasFormFieldAt първо; извиквайте
FormFieldInfoAt само при кликване или влизане с курсора. Координатите от позицията на мишката минават през
TPdfView.PointToPage първо, за да се преведат пикселите на устройството в единици на страницата.
/Annots печели).FieldType = fiSignature — комбинирайте с
SignatureCount, за да изброите състоянието на подписване отделно.FormFieldAt обезсилва кешираните записи;
четете отново след всеки запис.
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;