Objekte ein- und ausblenden

Dieses Beispiel zeigt, wie Sie Schaltflächen beim Drucken eines Formulars ausblenden und wie Sie Objekte durch Ändern der Präsenzwerte zur Laufzeit ein- und ausblenden.

Hinweis: Sie können Objekte in Formularen mit flexiblem Layout auch über das Dialogfeld „Action Builder“ im Menü „Extras“ ein- und ausblenden, ohne Skripten zu erstellen. Weitere Informationen finden Sie unter Erstellen von Aktionen in Formularen.

In diesem Beispiel sind alle Formularobjekte im Formular sichtbar.

Der Formularbenutzer kann mit den Dropdown-Listen im Bereich "Präsenzwerte" Objekte ein- oder ausblenden. In der folgenden Abbildung ist das Feld "Adresse" ausgeblendet und das Formularlayout entsprechend angepasst. Die Schaltfläche "Formular drucken" ist ebenfalls nicht sichtbar.

Hinweis: Um Objekte zur Laufzeit ein- und auszublenden, müssen Sie Ihr Formular im Format "Acrobat (Dynamisch) XML-Formular" speichern.

Zum Anzeigen dieser Beispieldatei und anderer rufen Sie das Developer Center auf.

Skripten für die Präsenzwerte der Teilformulare

Das Skript für die Präsenzwerte der Teilformulare enthält eine switch-Anweisung zur Steuerung der drei Präsenzoptionen, die ein Formularbenutzer dem Teilformularobjekt zuweisen kann:

switch(xfa.event.newText) { 
    case 'Invisible': 
        Subform1.presence = "invisible"; 
        break; 
    case 'Hidden (Exclude from Layout)': 
        Subform1.presence = "hidden"; 
        break; 
    default: 
        Subform1.presence = "visible"; 
        break; 
}

Skripten für die Präsenzwerte der Textfelder

Für das Skript für die Präsenzwerte der Textfelder sind zwei Variablen erforderlich. Die erste Variable speichert die in Subform1 enthaltene Anzahl von Objekten:

var nSubLength = Subform1.nodes.length;

Die zweite Variable speichert den Namen des Textfelds, welches der Formularbenutzer in der Dropdown-Liste "Textfelder" auswählt:

var sSelectField = fieldList.rawValue;

Im folgenden Skript werden mit der Methode replace alle Leerzeichen aus dem in der Variablen sSelectField gespeicherten Namen des Felds entfernt. Dies bewirkt, dass der Wert der Dropdown-Liste nun mit dem Namen des Objekts in der Palette „Hierarchie“ übereinstimmt:

sSelectField = sSelectField.replace(' ', '');

In diesem Skript werden sämtliche Objekte in Subform1 mit Hilfe einer For -Schleife nacheinander durchlaufen:

for (var nCount = 0; nCount < nSubLength; nCount++) {

Wenn das aktuelle Objekt in Subform1 dem Typ field angehört und denselben Namen wie das Objekt hat, das der Formularbenutzer ausgewählt hat, wird Folgendes ausgeführt:

if ((Subform1.nodes.item(nCount).className == "field") & (Subform1.nodes.item(nCount).name == sSelectField)) {

Das folgende Skript enthält eine switch-Anweisung zur Steuerung der drei Präsenzoptionen, die ein Formularbenutzer den Textfeldobjekten zuweisen kann:

        switch(xfa.event.newText) { 
            case 'Invisible': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                break; 
            case 'Hidden (Exclude from Layout)': 
                Subform1.nodes.item(nCount).presence = "hidden"; 
                break; 
            default: 
                Subform1.nodes.item(nCount).presence = "visible"; 
                break; 
        } 
    } 
}

Skripten für die Präsenzwerte der Schaltflächen

Für das Skript für die Präsenzwerte der Schaltflächen sind zwei Variablen erforderlich. Diese Variable speichert die in Subform1 enthaltene Anzahl von Objekten:

var nSubLength = Subform1.nodes.length;

Diese Variable speichert den Namen der Schaltfläche, welche der Formularbenutzer in der Dropdown-Liste "Schaltflächen" auswählt:

var sSelectButton = buttonList.rawValue;

Im folgenden Skript werden mit der Methode replace alle Leerzeichen aus dem in der Variablen sSelectField gespeicherten Namen der Schaltfläche entfernt. Dies bewirkt, dass der Wert der Dropdown-Liste nun mit dem Namen des Objekts in der Palette „Hierarchie“ übereinstimmt:

sSelectButton = sSelecButton.replace(/\s/g, '');

In diesem Skript werden sämtliche Objekte in Subform1 mit Hilfe einer For -Schleife nacheinander durchlaufen:

for (var nCount = 0; nCount < nSubLength; nCount++) {

Wenn das aktuelle Objekt in Subform1 dem Typ field angehört und denselben Namen wie das Objekt hat, das der Formularbenutzer ausgewählt hat, wird Folgendes ausgeführt:

    if ((Subform1.nodes.item(nCount).className == "field") & 
    Subform1.nodes.item(nCount).name == sSelectButton)) {

Dieses Skript enthält eine switch -Anweisung zur Steuerung der fünf Präsenzoptionen, die ein Formularbenutzer den Schaltflächenobjekten zuweisen kann.

Hinweis: Die relevante Eigenschaft gibt jeweils an, ob ein Objekt beim Drucken des Formulars sichtbar sein soll.
        switch(xfa.event.newText) { 
            case 'Invisible': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                break; 
            case 'Hidden (Exclude from Layout)': 
                Subform1.nodes.item(nCount).presence = "hidden"; 
                break; 
            case 'Visible (but Don\'t Print)': 
                Subform1.nodes.item(nCount).presence = "visible"; 
                Subform1.nodes.item(nCount).relevant = "-print"; 
                break; 
            case 'Invisible (but Print Anyway)': 
                Subform1.nodes.item(nCount).presence = "invisible"; 
                Subform1.nodes.item(nCount).relevant = "+print"; 
                break; 
            default: 
                Subform1.nodes.item(nCount).presence = "visible"; 
                break; 
        }     
    } 
}

Skripten für die Zurücksetzung der Dropdown-Listen

Sämtliche Dropdown-Listen können mit der Methode resetData auf ihre Standardwerte zurückgesetzt werden:

xfa.host.resetData();

Führen Sie den Formularentwurf und die Formulardaten mit der Methode remerge erneut zusammen. In diesem Beispiel stellt die Methode die Objekte im Bereich "Formularobjekte" in ihrem Originalzustand wieder her.

xfa.form.remerge();