|
Deze voorbeelden demonstreren de eigenschappen en methoden die in deze scriptomgeving worden ondersteund.
Verwijzen naar objectenDeze voorbeelden demonstreren verschillende manieren van verwijzen naar objecten.
Let op het indexnummer van een object met betrekking tot de locatie van het script wanneer u een bepaalde instantie van het object opent. Het script retourneert het object met hetzelfde indexnummer als het object met de locatie van het script. Er zijn bijvoorbeeld drie knoppen met dezelfde naam (Button1[0], Button1[1] en Button1[2]) en drie tekstvelden met dezelfde naam (TF1[0], TF1[1] en TF1[2]). Als het script voor Button1[2] xfa.host.messageBox(TF1.rawValue) is, wordt het resultaat TF1[2].rawValue en niet TF1[0].rawValue.
De eerste instantie van een tekstveld openen// Access a sibling field using the field name.
// Access the first instance of TextField1.
TextField1.rawValue = "Hello";
De eerste instantie van een tekstveld openen// Access the first instance of TextField1. When scripting with JavaScript, use
// xfa.resolveNode to start the search at the top and move down the form
// hierarchy.
xfa.resolveNode("TextField1").rawValue = "Hello";
xfa.resolveNode("TextField1[0]").rawValue = "Hello";
Een veld openen met toegangstekens// When scripting with JavaScript, use the resolveNode() method to access a
// field with a SOM expression that contains a # or [] operator. When searching
// with this.resolveNode, the search starts at the current object and moves up
// the form hierarchy.
this.resolveNode("Subform2[1].NumericField4").rawValue = 25;
Een subformulier openen met een indexnummer// Access a subform with an index number. When using xfa.resolveNode,the search
// starts at the top of the form hierarchy and moves down.
var nIndex = 2;
var sSOM = "Subform2[" + nIndex + "]";
var oSubform = xfa.resolveNode(sSOM);
oSubform.NumericField4.rawValue = "25";
Een veldeigenschap openen// Access a field property using a property name and value.
// Change the field properties of a specific subform.
// Use the [] operator to access an object's property.
var sProperty = "access";
var sValue = "readOnly";
// First, get the subform nodes.
var oNodes = Subform2.nodes;
var nNodesLength = oNodes.length;
// Loop through the subform's nodes and look for fields.
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount ++) {
// Set the field property.
if (oNodes.item(nNodeCount).className == "field") {
oNodes.item(nNodeCount)[sProperty] = sValue;
}
}
De tekstvelden in een document tellen// Count the number of text fields in a document.
// Get the field containers from each page.
for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
var oFields = xfa.layout.pageContent(nPageCount, "field");
var nNodesLength = oFields.length;
var nCount = 0;
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
if (oFields.item(nNodeCount).ui.oneOfChild.className == "textEdit") {
nCount++;
}
}
TextField1.rawValue = nCount;
}
Velden met delen van objectnamen openen// Access fields using partial object names.
// Get the field containers from each page.
for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
var oFields = xfa.layout.pageContent(nPageCount, "field");
var nNodesLength = oFields.length;
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
if (oFields.item(nNodeCount).name.substr(0,2) == "Te") {
xfa.host.messageBox(oFields.item(nNodeCount).name);
}
}
}
Een keuzelijstwaarde openen// Use the newText or prevText property to access the choice list value before
// or after the value changed.
// Trigger the script on a change event.
TextField1.rawValue = xfa.event.prevText;
TextField2.rawValue = xfa.event.newText;
Een veld in een subformulier openen// Access a field nested inside a sibling subform by prefixing the field name
// with its parent name.
Subform2.TextField3.rawValue = "Hello";
Velden in een subformulier openen// Access the first-level fields nested inside a subform.
Subform1.resoveNodes("#field[*]")
De velden van elke pagina ophalen// Get the field containers from each page.
for (var i = 0; i < xfa.host.numPages; i++) {
var oFields = xfa.layout.pageContent(i, "field");
var nodesLength = oFields.length;
// Set the access type.
for (var j = 0; j < nodesLength; j++) {
var oItem = oFields.item(j);
if (oItem != this) {
oItem.access = "readOnly";
}
}
}
Een knooppunt maken in het gegevensmodelDit voorbeeld demonstreert hoe u een nieuw knooppunt voor een gegevensmodel kunt maken of klonen.
Een gegevensknooppunt maken// Display the number of child nodes under the rootNode (xfa.record).
// rootNode is the data file's root node.
xfa.host.messageBox("Initial number of nodes under rootNode: " + xfa.record.nodes.length);
// Create a node of type dataGroup.
var oGroupNode = xfa.datasets.createNode("dataGroup", "NewGroupNode");
// Append the data group node to an existing data model node.
xfa.record.nodes.append(oGroupNode);
// Display the number of child nodes under rootNode.
xfa.host.messageBox("Number of nodes under rootNode after first append: " + xfa.record.nodes.length);
// Create a node of type dataValue.
var oValueNode = xfa.datasets.createNode("dataValue", "NewValueNode");
// Set the value of the new data value node.
oValueNode.value = "The item value";
// Append the data value node to the data group created above.
xfa.record.NewGroupNode.nodes.append(oValueNode);
// Get the value from the data model.
TextField1.rawValue = xfa.record.NewGroupNode.NewValueNode.value;
// Append a cloned data group node.
xfa.record.nodes.append(xfa.record.NewGroupNode.clone(1));
// Display the number of child nodes under rootNode.
xfa.host.messageBox("Number of nodes under rootNode after appending clone: " + xfa.record.nodes.length);
// Set the value of the new data value node.
xfa.resolveNode("xfa.record.NewGroupNode[1].NewValueNode").value = "The clone value";
// Get the value of the cloned data value node.
TextField2.rawValue = xfa.resolveNode("xfa.record.NewGroupNode[1].NewValueNode").value;
// Remove the cloned data group from the node list.
var oRemoveNode = xfa.resolveNode("xfa.record.NewGroupNode[1]");
xfa.record.nodes.remove(oRemoveNode);
// Display the number of child nodes under rootNode.
xfa.host.messageBox("Number of nodes under rootNode once clone node removed: " + xfa.record.nodes.length);
Instanties van een subformulier bewerkenDeze voorbeelden demonstreren verschillende manieren om instanties van een subformulier toe te voegen of te verwijderen tijdens runtime.
Bewerk met de Instance Manager de pagina's van een formulier met een vaste indeling. Elke pagina is een subformulier. Daarom lijkt het alsof u bij het toevoegen of verwijderen van een subformulier een pagina toevoegt of verwijdert. Tijdens runtime kunt u geen wijzigingen aanbrengen in de indeling van een formulier met een vaste indeling. U kunt instanties toevoegen en verwijderen in de gebeurtenis form:ready. Als het script echter een runtime-gebeurtenis betreft, zoals click, gebeurt er niets.
Een instantie toevoegen door de Instance Manager op te roepen// Add an instance of a subform by using the underscore syntax to invoke the
// instance manager directly.
// Forms rendered in a web browser do not support the underscore syntax.
// However, the underscore syntax is supported if the script runs at the
// server.
_Subform2.addInstance(1);
Een instantie toevoegen door de eigenschap instanceManager op te roepen// Add an instance of a subform by invoking the instanceManager property. Be
// careful to ensure that adding a subform will not violate the max occur
// value.
Subform2.instanceManager.addInstance(1);
Een instantie verwijderen// Remove an instance of a subform. Set the min occur value only if removing an
// instance will violate it. For example, set the min occur to 0 if you want to
// remove the last, or the only, instance of a subform.
// Forms rendered in a web browser do not support the underscore syntax.
// However, the underscore syntax is supported if the script runs at the
// server.
Subform2.occur.min = "0";
_Subform2.removeInstance(0);
Het bovenliggende subformulier verwijderen// Remove the parent subform.
parent.occur.min = "0";
parent.instanceManager.removeInstance(parent.index);
Het aantal instanties instellen// Set the number of instances of a subform.
var oSubform = xfa.resolveNode("Subform2");
oSubform.instanceManager.setInstances(5);
Een nieuwe subformulierinstantie invoegen// Insert a new subform instance. This script will not work with a static form.
// The script is invoked by a button, named Insert Subform, that is nested
// inside a repeating subform. The new subform is inserted below the current
// subform.
var oSubform = this.resolveNode("Subform2");
var oNewInstance = oSubform.instanceManager.addInstance(1);
var nIndexFrom = oNewInstance.index;
var nIndexTo = this.parent.index + 1;
// Invoke the instanceManager to insert the subform below the current one.
oSubform.instanceManager.moveInstance(nIndexFrom, nIndexTo);
Een subformulier toevoegen en verwijderen// Invoke the instance manager to add and remove the comments subform.
if (fComments.value == "0") {
// In this example, fComments is a document variable used as a flag.
// The fComments variable equals 1 when the comments subform is displayed.
_comments.setInstance(1);
// Add the comments subform. Change the button's caption.
this.resolveNode("caption.value.#text").value = "Clear Comments";
// Set the flag value.
fComments.value = "1";
}
else {
// Remove the comments subform.
_comments.setInstance(0);
// Change the button's caption.
this.resolveNode("caption.value.#text").value = "Add Comments";
// Reset the flag value.
fComments.value = "0";
}
Een objectwaarde ophalen of instellenDeze voorbeelden demonstreren verschillende manieren om een waarde van een object op te halen of in te stellen.
Werken met de eigenschap rawValue// Use the rawValue property to set and get a field's raw value.
TextField1.rawValue = "K1V1W3"; // Set the field's raw value.
TextField2.rawValue = TextField1.rawValue // Get the field's raw value.
Werken met de eigenschap value// Use the value property to set and get the field's raw value.
TextField1.rawValue = "k1V1W3";
TextField2.rawValue = TextField1.value.oneOfChild.value
Werken met de eigenschap formattedValue// Use the formattedValue property to set and get the field's formatted value.
// Use the value property to set and get an object's value (picture).
TextField1.rawValue = "K1V1W3"; // Set the field's raw value.
TextField1.format.picture.value = "A9A 9A9"; // Set the field's display picture format.
TextField2.rawValue = TextField1.formattedValue; // Get the field's formatted value.
De waarde van een gegevensobject instellen// Use the value property to set and get a data object's value.
// In this script, groupNode is a data group and addressL1 is a data value in
// the data file.
TextField1.rawValue = xfa.record.groupNode.address.line1.value;
De waarde van de documentvariabele instellen// Use the value property to set and get the document variable's value.
TextField1.rawValue = docVar.value;
Werken met paginanummering en pagina-aantallenDeze voorbeelden demonstreren verschillende manier om te werken met paginanummering en pagina-aantallen met behulp van de host- en indelingsmodellen.
De host- en indelingsmodellen hebben verschillende eigenschappen en methoden om met paginanummering en pagina-aantallen te werken. De door u te gebruiken eigenschappen en methoden zijn afhankelijk van de werking en het tijdstip van uitvoering van het script.
Veel eigenschappen en methoden van de host zijn niet beschikbaar op de server. Stel de paginanummering in of haal deze tijdens runtime op met behulp van de eigenschappen en methoden van de host.
Geen van de indelingsmethoden stelt de paginanummering in. Haal met behulp van de indelingsmethoden de huidige pagina op in layout:ready of geef de paginanummering weer onder aan de pagina, zodat het paginanummer te zien is wanneer u een formulier op een client opent.
Het paginanummer ophalen// Use the page layout methods to get the current page number.
TextField1.rawValue = xfa.layout.page(this); // 1-based.
TextField2.rawValue = xfa.layout.absPage(this); // 0-based.
Het pagina-aantal ophalen met de methode pageCount// Use the layout pageCount methods to get the number of pages in a document.
TextField1.rawValue = xfa.layout.pageCount(); // Get the logical number of pages.
TextField2.rawValue = xfa.layout.absPageCount(); // Get the physical number of pages.
De paginering formatteren// Use the layout page and pageCount methods to format the pagination.
TextField1.rawValue = "Page " + xfa.layout.page(this) + " of " + xfa.layout.pageCount();
Het huidige paginanummer ophalen en instellen// Use the host currentPage property to get and set the current page number at // run time.
// This script cannot be used during a layout:ready, form:ready, or initialize // event. However, it will work if the script is on a button.
xfa.host.currentPage = 1; // Go to page 2 (0-based).
Het pagina-aantal ophalen met de eigenschap numPages// Use the host numPages property to get the number of pages in a document.
TextField1.rawValue = xfa.host.numPages; // Get the number of pages.
Omlaag navigeren in een document// Use the host pageDown() method to navigate through a document.
xfa.host.pageDown(); // Go to the next page.
Omhoog navigeren in een document// Use the host pageUp() method to navigate through a document.
xfa.host.pageUp(); // Go to the previous page.
Gegevenswaarden koppelenDit voorbeeld demonstreert hoe u gegevenswaarden kunt koppelen in een adresblok en ervoor kunt zorgen dat het blok geen lege regels bevat.
Gegevenswaarden koppelen// Get the values from the data model.
var sName = xfa.record.groupNode.address.line1.value;
var sPostbox = xfa.record.groupNode.address.line2.value;
var sStreet = xfa.record.groupNode.address.line3.value;
var sCity = xfa.record.groupNode.address.line4.value;
var sRegion = xfa.record.groupNode.address.line5.value;
var sCountry = xfa.record.groupNode.address.line6.value;
var sPostcode = xfa.record.groupNode.address.line7.value;
var addressArray = new Array(sName,sPostbox,sStreet,sCity,sRegion,sCountry,sPostcode);
var sAddressBlock = "";
// Don't display the postbox if the value is not provided.
if (addressArray[1] == null) {
sAddressBlock = addressArray[0] + "\n" + addressArray[2] + "\n" + addressArray[3] + "\n";
} else {
sAddressBlock = addressArray[0] + "\n" + addressArray[1] + "\n" + addressArray[3] + "\n";
}
// Do not display the region if the value is not provided.
if (addressArray[4] == null) {
sAddressBlock = sAddressBlock + addressArray[5] + " " + addressArray[6];
} else {
sAddressBlock = sAddressBlock + addressArray[4] + ", " + addressArray[5] + " " + addressArray[6];
}
TextField2.rawValue = sAddressBlock;
// Make sure the field is set to display a multiple line value. To set the
// multiLine property programmatically, add the following line:
TextField2.ui.oneOfChild.multiLine = "1";
Totalen berekenenDit voorbeeld demonstreert hoe u totalen kunt berekenen.
Totalen berekenen// Access a field in a repeating subform by looping through the node list.
var oFields = xfa.resolveNodes("Subform2[*].NumericField4");
var nNodesLength = oFields.length;
var nSum = 0;
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
nSum += oFields.item(nNodeCount).rawValue;
}
TextField1.rawValue = nSum;
De achtergrondkleur wijzigenDeze voorbeelden demonstreren hoe u de achtergrondkleur van een subformulier of velden kunt wijzigen.
In een formulier met een stroombare indeling kunt u de achtergrondkleur van het gehele veld tijdens runtime wijzigen, inclusief het bijschrift en het veldgebied. In een formulier met een vaste indeling kunt u echter alleen de achtergrondkleur van het veldgebied wijzigen tijdens runtime.
De achtergrondkleur van een subformulier wijzigen// Alternate the background color of a repeating subform.
var oNodes = xfa.resolveNodes("Subform2[*]");
var nNodesLength = oNodes.length;
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
if (oNodes.item(nNodeCount).index%2 != 0) {
oNodes.item(nNodeCount).border.fill.color.value = "200,200,250";
} else {
oNodes.item(nNodeCount).border.fill.color.value = "200,150,250";
}
}
De achtergrondkleur van een veld wijzigen// Alternate the background color of the NumericField4 field.
// Before running this script, set a background color or set the
// border.fill.presence property to visible.
var oNodes = xfa.resolveNodes("Subform2[*]");
var nNodesLength = oNodes.length;
var sFillColor;
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
if (oNodes.item(nNodeCount).index%2 != 0) {
sFillColor = "200,200,250";
} else {
sFillColor = "200,150,250";
}
oNodes.item(nNodeCount).NumericField4.fillColor = sFillColor;
}
De achtergrondkleur van rijen in een subformulier wijzigen// Reset the fields of the current subform.
var dString = "xfa.form.form1.dtls[" + this.parent.index + "]";
var oDetails = xfa.form.resolveNode(dString);
var sDtlFields;
// Build the string of field names to reset.
for (var i = 0; i < oDetails.nodes.length; i++) {
sDtlFields = sDtlFields + "," + dString + "." + oDetails.nodes.item(i).name;
}
// Pass the string variable as a parameter.
xfa.host.resetData(sDtlFields); OR
// Alternate the background color of the repeating rows.
if (this.index%2 != 0) this.border.fill.color.value = "255,255,255"; else this.border.fill.color.value = "201,201,146";
Een vervolgkeuzelijst vullenDeze voorbeelden demonstreren verschillende manieren om lijstitems toe te voegen aan of te verwijderen uit een vervolgkeuzelijst.
Sla de itemlijst op voordat u een vervolgkeuzelijst vult tijdens runtime. Anders gaan de items verloren. Alleen de waarde wordt in de gegevens opgeslagen.
Een vervolgkeuzelijst vullen vanuit een webservice// Populate the drop-down list with values from a web service.
// The web service used in this example is fictional.
SOAP.wireDump = false;
var oListURL = "http://www.webservice.net/wsdl/query.wsdl";
var e;
try
{
xfa.host.messageBox("Starting list retrieval.");
var service = SOAP.connect(oListURL);
if(typeof service != "object") {
xfa.host.messageBox("Couldn't get List object.");
}
if(service.getAllServiceNames == "undefined") {
xfa.host.messageBox("Couldn't get getAllServiceNames Call.");
}
// Start the query
var oItems = service.getAllServiceNames();
if(oItems == null) {
xfa.host.messageBox("List empty.");
}
var nCount = 0;
var nLimit = 10;
for(var nItemCount in oItems)
{
for(var nItemNode in oItems[nItemCount])
{
if (nItemNode == "name")
DropDownList1.addItem(oItems[nItemCount][nItemNode]);
}
if (++nCount >= nLimit)
break;
}
}
catch(e)
{
xfa.host.messageBox("Problem with list Call: " + e);
}
Een vervolgkeuzelijst wissen// Clear the items in a drop-down list.
DropDownList1.clearItems();
Een vervolgkeuzelijst vullen vanuit een gegevensbestand// Populate the drop-down list with values from a data file.
var oItems = xfa.resolveNode("xfa.record.groupNode.list");
var nItemsLength = oItems.nodes.length;
for (var nItemCount = 0; nItemCount < nItemsLength; nItemCount++) {
DropDownList1.addItem(oItems.nodes.item(nItemCount).value);
}
DropDownList1.rawValue = "Second item in list";
De waarden opslaan vanuit een vervolgkeuzelijst in een ander veld// Access the items in a drop-down list box and save their values in a separate
// field.
var oItems = xfa.resolveNode("DropDownList1.#items");
var nItemsLength = oItems.nodes.length;
for (nItemCount = 0; nItemCount < nItemsLength; nItemCount++){
if (TextField2.rawValue == null) {
TextField2.rawValue = oItems.nodes.item(nItemCount).value;
} else {
TextField2.rawValue = TextField2.rawValue + "\n" + oItems.nodes.item(nItemCount).value;
}
}
Met de eigenschappen newText of prevText een waarde van de vervolgkeuzelijst openen// Use the newText or prevText properties to access a drop-down list value
// before or after the value changes.
// Execute the script on a change event.
TextField1.rawValue = xfa.event.prevText;
TextField2.rawValue = xfa.event.newText;
Een formulier opslaanDeze voorbeelden demonstreren hoe u gegevens kunt exporteren uit een formulier en een formulier kunt opslaan.
Formuliergegevens exporteren zonder een bestandsnaam op te geven// Export a form's data without specifying a file name. The end user is
// prompted to provide the file name.
xfa.host.exportData(); // Will generate data in XDP format.
xfa.host.exportData("", 0); // Will generate data in XML format.
Formuliergegevens exporteren met een bestandsnaam// If you specify a file name, the script must run on a certified form.
xfa.host.exportData("filename.xdp"); // Will generate data in XDP format.
xfa.host.exportData("filename.xml", 0); // Will generate data in XML format.
Een formulier opslaan// Saving the form is done at the application level, so you need to invoke the
// Acrobat app model.
App.executeMenuItem("SaveAs"); // The end user will be prompted to specify a
// file name.
// However, you must save the form silently if the form needs to be certified
// and the certificate must be trusted for privileged JavaScript.
var mydoc = event.target;
mydoc.saveAs();
Een object zichtbaar of onzichtbaar makenDit voorbeeld demonstreert hoe u een object zichtbaar of onzichtbaar kunt maken. Als de knop voor afdrukken onzichtbaar is, kan de gebruiker geen formulier afdrukken.
De gebeurtenis prePrint wordt onmiddellijk actief voordat het formulier wordt gegenereerd om te worden afgedrukt. Op dezelfde manier wordt de gebeurtenis postPrint onmiddellijk actief nadat het formulier is afgedrukt.
Een veld instellen op zichtbaar of onzichtbaar// If a field is visible, make it invisible and vice versa.
if(Field1.presence == "visible")
{
Field1.presence = "invisible";
}
else
{
Field1.presence = "visible";
}
Een knop instellen op zichtbaar maar zonder afdrukfunctie// Set a button to be visible but non-printing at design time.
Button1.relevant="-print"
Werken met keuzerondjes en selectievakjesDeze voorbeelden demonstreren hoe u keuzerondjes en selectievakjes kunt selecteren en wissen.
Een keuzerondje selecteren// Select the first radio button.
RadioButtonList.rawValue = '1';
xfa.host.messageBox('Value of RadioButtonList: ' + RadioButtonList.rawValue);
// Select the second radio button.
RadioButtonList.rawValue = '2';
xfa.host.messageBox('Value of RadioButtonList: ' + RadioButtonList.rawValue);
Keuzerondjes openen// Access the radio buttons.
RadioButtonList.resolveNodes("#field[*]")
Een keuzerondje wissen// Clear a RadioButtonList value. Any invalid value will clear the list.
RadioButtonList.rawValue = '3';
xfa.host.messageBox('Value of RadioButtonList: ' + RadioButtonList.rawValue);
Een selectievakje selecteren// Select a check box.
CheckBox1.rawValue = 1;
xfa.host.messageBox('Value of checkbox: ' + CheckBox1.rawValue);
Een selectievakje uitschakelen// Deselect a check box.
CheckBox1.rawValue = 0;
xfa.host.messageBox('Value of checkbox: ' + CheckBox1.rawValue);
Vaststellen of een formulier is gewijzigdDit voorbeeld demonstreert hoe u kunt vaststellen of een formulier is gewijzigd.
Vaststellen of een formulier is gewijzigd// Save a copy of the original XML file.
var sOriginalXML = xfa.data.saveXML();
// Change the form data.
TextField1.rawValue = "changed";
// Determine whether the form data has changed.
if(sOriginalXML == xfa.data.saveXML())
{
xfa.host.messageBox("Form has not changed.");
}
else
{
xfa.host.messageBox("Form has changed.");
}
Alle formuliervelden uitschakelenDit voorbeeld demonstreert hoe u alle velden op een formulier kunt uitschakelen.
Alle formuliervelden uitschakelen// Get the field containers from each page.
for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) {
var oFields = xfa.layout.pageContent(nPageCount, "field");
var nNodesLength = oFields.length;
// Set the field property.
for (var nNodeCount = 0; nNodeCount < nNodesLength; nNodeCount++) {
oFields.item(nNodeCount).access = "readOnly";
}
}
|
|
|