Dölja och visa objekt

Det här exemplet visar hur du kan dölja knappar när du skriver ut ett formulär, och hur du kan dölja och visa objekt genom att andra deras visningsvärden under körning.

Obs! Du kan också använda dialogrutan Åtgärdsbyggaren på menyn Verktyg för att dölja och visa objekt i formulär som har flödesbaserad layout, utan att skriva skript. Mer information finns i Bygga åtgärder i formulär

I det här exemplet visas alla formulärobjekt i formuläret.

Formuläranvändaren kan visa eller dölja objekt genom att använda de nedrullningsbara listorna i området för visningsvärden. I följande diagram är adressfältet dolt och formulärlayouten har anpassats till detta. Knappen Utskriftsformulär är också dold.

Obs! Om du vill visa och dölja objekt under körning måste du spara formuläret som en Acrobat dynamisk PDF-formulärfil.

Du hittar detta och andra skriptexempel på LiveCycle-utvecklingscenter.

Ange visningsvärden för delformulär med skript

Skriptet för delformulärets visningsuttryck använder ett växlingsuttryck för att hantera de tre visningsalternativen som formuläranvändaren kan tillämpa på delformulärsobjektet:

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

Ange visningsvärden för textfält med skript

Skriptet för textfältens visningsvärden kräver två variabler. Den första variabeln lagrar antalet objekt i Subform1:

    var nSubLength = Subform1.nodes.length;

Den andra variabeln lagrar det namn på textfältet som formuläranvändaren väljer i textfältets nedrullningsbara lista:

    var sSelectField = fieldList.rawValue;

Följande skript använder metoden replace för att ta bort alla blanksteg i det fältnamn som lagras i variabeln sSelectField vilken låter värdena i den nedrullningsbara listan matcha namnen på objekten i på paletten Hierarki:

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

Skriptet använder en For -slinga för att cykliskt ta sig igenom alla objekt i Subform1:

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

Om det aktuella objektet i Subform1 är av typen field och det aktuella objektet har samma namn som det objekt som formuläranvändaren har valt, genomförs följande växlingar:

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

Följande skript använder ett växlingsuttryck för att hantera de tre visningvärden som formuläranvändaren kan tillämpa på textfältsobjekten:

        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; 
        } 
    } 
}

Ange visningsvärden för knappar med skript

Skriptet för knapparnas visningsvärden kräver två variabler. Den här variabeln lagrar antalet objekt i Subform1:

    var nSubLength = Subform1.nodes.length;

Den här variabeln lagrar det namn på knappen som formuläranvändaren väljer i knappens nedrullningsbara lista:

var sSelectButton = buttonList.rawValue;

Följande skript använder metoden replace för att ta bort alla blanksteg i det knappnamn som lagras i variabeln sSelectField vilken låter värdena i den nedrullningsbara listan matcha namnen på objekten i på paletten Hierarki:

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

Skriptet använder en For -slinga för att cykliskt ta sig igenom alla objekt i Subform1:

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

Om det aktuella objektet i Subform1 är av typen field och det aktuella objektet har samma namn som det objekt som formuläranvändaren har valt, genomförs följande växlingar:

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

Det här skriptet använder ett switch -uttryck för att hantera de fem visningvärden som formuläranvändaren kan tillämpa på knappobjekten.

Obs! Den relevanta egenskapen indikerar om ett objekt ska visas när formuläret skrivs ut.
        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; 
        }     
    } 
}

Återställa nedrullningsbara listor med skript

Använd metoden resetData för att återställa alla nedrullningsbara listor till deras standardvärden:

    xfa.host.resetData();

Använd metoden remerge för att sammanfoga formulärdesignen och formulärdata. I det här fallet returnerar metoden effektivt objekten i formulärobjektsområdet till deras ursprungliga skick.

    xfa.form.remerge();