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; повторяющимся полям нужен их собственный контекст вхождения
CreateNodeFalse разрешает читаемые данные, значение формы или дефолт шаблона; 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