property FormFieldInfoAt[X, Y: Single]: TPdfFormFieldInfo; // read only
FormFieldInfoAt виконує тестування попадання на поточній активній сторінці та
повертає запис TPdfFormFieldInfo, що описує анотацію віджета в точці
(X, Y). Координати задаються в просторі користувача PDF із початком
координат у нижньому лівому куті сторінки та одиницями в пунктах (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;