HPDFXFAResolveFieldValueNode
Модуль: HPDFXFA
Объявление
function HPDFXFAResolveFieldValueNode(Document: TXFADocument;
FieldNode, DataNode: TXFANode; CreateNode: Boolean= False;
MaxNodes: Integer= 65536): TXFANode; overload;
function HPDFXFAResolveFieldValueNode(Document: TXFADocument;
FieldNode, DataNode: TXFANode; CreateNode: Boolean;
MaxNodes: Integer; var RemainingOperations: Integer; Deadline: Int64;
DeadlineCheck: TXFABindingDeadlineCheck = nil): TXFANode; overload;
Параметры
| Параметр | Смысл |
|---|---|
Document | Нативный документ XFA, владеющий packet поля, данных и формы |
FieldNode | Поле шаблона, чьё эффективное значение запрашивается |
DataNode | Контекст вхождения dataset; повторяющимся полям нужен их собственный контекст вхождения |
CreateNode | False разрешает читаемые данные, значение формы или дефолт шаблона; True возвращает записываемое значение экземпляра |
MaxNodes | Граница вхождений, передаваемая нативному созданию экземпляров формы |
Поведение
Существующий связанный узел dataset выигрывает, даже когда его содержимое пусто; отсутствующий узел откатывается к соответствующему нативному значению формы, а затем к первому дочернему значению в поле шаблона
Поиск только для чтения не создаёт узел dataset или формы и возвращает nil, когда ни один из этих источников значения не существует
При CreateNode=True обычная привязка данных создаёт или возвращает записываемый узел dataset; несвязанное поле или документ без записываемых datasets использует отдельное нативное значение формы
Свежесозданный узел dataset может быть изначально пуст; вызывающий поставляет фиксируемое значение, а не присваивает через ранее возвращённый дефолт шаблона
Возвращённый узел принадлежит Document и не должен освобождаться вызывающим; поиск только для чтения может вернуть общий узел шаблона, поэтому перед изменением содержимого получите записываемый узел через CreateNode=True
Нулевые Document или FieldNode возвращают nil; чрезмерные индексы нативных вхождений формы или глубина предков бросают EHPDFXFAError через resolver формы
Потребители
Вариант с бюджетом разделяет операционный лимит и дедлайн вызывающего с нативным разрешением привязок; нулевой RemainingOperations означает исчерпание, отрицательный отключает лимит вызывающего, а отрицательный Deadline отключает проверки времени
DeadlineCheck может поставить домен часов вызывающего; nil использует миллисекунды GetTickCount64, а интерактивный рантайм передаёт свой сконфигурированный монотонный контроль дедлайна
Сканы привязок сохраняют фиксированные лимиты сегментов, глубины обхода и учитываемых шагов; сбои бюджета бросают EHPDFXFAError, а интерактивные транзакции восстанавливают свой нативный снимок
Контракты бюджета привязок и колбэков описаны в HPDFXFAResolveBoundDataNode и TXFABindingDeadlineCheck
Интерактивный рантайм и конвертация XFA в AcroForm разделяют этот resolver, сохраняя согласованность отсутствующих дефолтов, явно пустых данных и значений повторяющихся вхождений
Интерактивные правки и вычисления заново получают записываемый узел экземпляра перед фиксацией, сохраняя дефолт шаблона для других экземпляров
Связанные API
Нативные дефолты полей XFA, HPDFXFAResolveFormInstanceNode и Интерактивный runtime виджетов динамического XFA