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
| Operasyon | Davranış |
|---|---|
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