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 文件 |
FieldNode | 要求其生效值的範本欄位 |
DataNode | 資料集出現個體 context;重複欄位需要自己的出現個體 context |
CreateNode | False 解析可讀資料、表單值或範本預設值;True 回傳可寫的執行個體值 |
MaxNodes | 傳給原生表單執行個體建立的出現個體上限 |
行為
已存在的繫結資料集節點優先,即使其內容為空;節點不存在時,依序回退到對應的原生表單值,再回退到範本欄位的第一個 value 子節點
唯讀查詢不會建立資料集或表單節點,所有值來源都不存在時回傳 nil
CreateNode 為 True 時,一般資料繫結會建立或回傳可寫的資料集節點;未繫結的欄位或沒有可寫資料集的文件,改用另外的原生表單值
新建的資料集節點一開始可以是空的;提交的值由呼叫端提供,不要透過先前回傳的範本預設值指派
回傳的節點屬於 Document,呼叫端不得釋放;唯讀查詢可能回傳共用的範本節點,因此要修改內容前請先用 CreateNode True 取得可寫節點
Document 或 FieldNode 為 null 回傳 nil;過大的原生表單出現個體索引或上層深度會經由表單解析器擲出 EHPDFXFAError
消費端
帶預算的多載與原生繫結解析共用呼叫端的操作額度與期限;RemainingOperations 為零表示額度耗盡,負值停用呼叫端額度,負的 Deadline 停用經過時間檢查
DeadlineCheck 可以提供呼叫端的時鐘域;nil 時使用 GetTickCount64 毫秒,互動式執行環境則提供其設定的單調期限檢查
繫結掃描保留固定的區段、走訪深度與計費步數限制;預算失敗擲出 EHPDFXFAError,互動式交易還原其原生快照
繫結預算與 callback 合約詳見HPDFXFAResolveBoundDataNode 與TXFABindingDeadlineCheck
互動式執行環境與 XFA AcroForm 轉換共用這個解析器,讓缺少的預設值、明確的空資料與重複出現個體值保持一致
互動編輯與計算會在提交前重新取得可寫的執行個體節點,為其他執行個體保留範本預設值
相關 API
原生 XFA 欄位預設值、HPDFXFAResolveFormInstanceNode 與互動式動態 XFA Widget 執行環境