XFA form ağacı oluşturma ve düzenleme

TXFAWidgetRuntime, xfa.form ve node koleksiyonları aracılığıyla canlı form ağacının işlemsel JavaScript ile oluşturulmasını, kopyalanmasını ve düzenlenmesini destekler

Canlı form ağacının bağımsız native kimlikleri vardır ve yazılan template'i değiştirmeden bir XDP form paketi olarak kaydedilebilir

Field oluşturma ve ekleme

var row = xfa.resolveNode("row[1]");
var field = xfa.form.createNode("field", "additional");
row.nodes.append(field);
field.w = "160pt";
field.h = "24pt";
field.ui.getElement("textEdit");
field.font.typeface = "DejaVu Sans";
field.rawValue = "Additional value";

createNode(className, name, namespaceURI) ayrık bir node döndürür; isteğe bağlı argumentlar atlandığında boş ad ve model namespace'i kullanılır

Kabul edilen class'lar field, subform, draw, area, exclGroup ve runtime property şemasının tanıdığı property class'larını içerir

Node oluşturmak, gereken UI ve value property'leriyle eklenene kadar onu forma eklemez ya da görünür bir widget oluşturmaz

Koleksiyon operasyonları ve kopyalama

OperasyonDavranış
parent.nodes.append(node)Ayrık ya da bağlı bir node'u ebeveynin canlı alt koleksiyonunun sonuna taşır
parent.nodes.insert(node, before)Node'u aynı ebeveynden var olan bir çocuğun hemen öncesine taşır
parent.nodes.remove(node)Bir çocuğu, sonraki yeniden kullanım için script kimliğini koruyarak ayırır
node.clone(true)Ayrı native ve script kimlikleriyle ayrık derin bir kopya döndürür
node.clone(false)Alt node'ları ve kopyalanmış field değeri olmadan ayrık sığ bir kopya döndürür

Koleksiyon sırası, parent, property araması ve desteklenen SOM çözümlemesi başarılı düzenlemeleri olay içinde hemen yansıtır

Script nesnelerinin tuttuğu referanslar, ayrık derin ve sığ kopyalar dâhil, kaydedilmiş bir düzenlemeden ya da olay rollback'inden sonra kendi node'larını adreslemeye devam eder

Bir döngü, farklı bir ebeveynden referans çocuk ya da form operasyonuna geçilen bir data-model node'u, geçersiz o operasyon ağacı değiştirmeden önce exception raised eder

Form model kökü yeni oluşturulan subform ve field'ları içerebilir; ama model kökünün kendisi taşınamaz ya da kopyalanamaz

Yinelenen kapsamlar ve başlangıç örnekleri

Gerçek form örnekleri, yazılan adları eşit olduğunda, veri bağlamları farklı olduğunda ya da datasets paketi olmadığında bile ayrı kimlikler korur

Boş bir birleştirme açık occur.initial sayısını, initial yoksa occur.min'i kullanır ve atlanan max varsayılan olarak min'dir

Boş bir birleştirme için minimum ve maksimum dışında bir başlangıç sayısına izin verilir, sıfır başlangıç kopyası dâhil

İç içe ve adsız subform'lar kendi occurrence yollarını korur ve bu örneklerin maddelenmesi bir datasets paketi sentezlemez

Bu occurrence kuralları XML Forms Architecture 3.3'ü izler, basılı sayfalar 339–345

Kayıt, rollback ve çıktı

Başarılı bir olay yapısal günlüğünü uygular, native widget'ları yeniden inşa eder ve düzenlenen formu SaveToBytes'a ve otomatik native PDF oluşturmaya sunar

Yakalanmamış bir script exception'ı, native commit başarısızlığı ya da aşılan olay bütçesi orijinal belgeyi, widget kimliklerini ve tutulan script durumunu geri yükler; böylece sonraki bir olay yeniden deneyebilir

Mevcut operasyon, node, depth, bayt, widget ve geçen-süre bütçeleri yapısal hazırlama ve commit için de geçerlidir

Kaydedilen form örnekleri yeniden yüklenebilir ve sağlanan yazı tipi baytlarıyla gerçek PDF field'ları ve appearance stream'leri oluşturmak için HPDFXFAWriteHeadlessPDF'e geçirilebilir

Kapsam

Bu API'ler canlı form modelini ve desteklenen property şemasını düzenler

Genel xfa.template düzenlemesi, eksiksiz choice subform-set işlemesi, tam XFA class şeması ve rastgele bağlama selector kombinasyonları ayrı yetenekler olarak kalır