Tabellenzeilen (u.a. mit Unterschriftenfeld) hizufügen/löschen

Alles was sich mit dem Thema dynamische XML Formulare auf Basis des LiveCycleDesigners beschäftigt
Antworten
Benutzeravatar
sanzann
Beiträge: 12
Registriert: 02.05.2017, 16:00

Tabellenzeilen (u.a. mit Unterschriftenfeld) hizufügen/löschen

Beitrag von sanzann » 19.12.2017, 14:07

Hallo an alle,

mal wieder das leidige Thema ein- und ausblenden bzw. Tabellenzeilen hinzufügen/löschen... Hier nun auch mein Problem.

Kurze Beschreibung meiner Kenntnisse:
Den LiveCycle Designer kenne ich erst seit April, ich denke aber dass ich mich mittlerweile ganz okay eingearbeitet habe (dieses Forum hat mir dabei sehr geholfen, Danke!), nach oben ist noch sehr viel Luft.
Mit JavaScript hatte ich vorher schon ein wenig zu tun, aber auch dort schätze ich es so ein, dass ich wahrscheinlich die Grundlagen weitestgehend verstanden habe, aber lichtjahre von dem Status "Erfahrener Anwender" entfernt bin.

Ausgangssituation (nur im Bezug auf die Tabellenzeilen, nicht von mir erstellt):
Ich habe ein Freigabeformular, bei dem bisher in den verschiedenen Tabellen die Zeilen ein- und ausgeblendet werden konnte. Das ging bisher ganz unproblematisch, indem für die gewünschten Zeilen die Option "Zeile für jedes Datenelement wiederholen" ausgewählt war und unter dem "+"-Button folgendes Skript ausgeführt wurde:

Code: Alles auswählen

Dokumentation._Zeile1.addInstance(1);

(Dokumentation wurde dem jeweiligen Ort entsprechend ausgetauscht.)

und unter dem "-"-Button dieses:

Code: Alles auswählen

_Zeile1.removeInstance(this.parent.index);
Anpassungen:
Die neue Anforderung an das Formular ist u.a., dass die einzelnen Zeilen digital unterschrieben werden können. Wenn ich die letzte Zelle der Zeile in ein Unterschriftsfeld umwandle erscheint die Warnung:
"Das Unterschriftsfeld kann nicht wiederholbar sein." (wenn möglich hänge ich das Bild "warnung.png" an, ggf. erstelle ich dazu einen zweiten Post...)

Bisherige Überlegungen:
I: "Sie können das Unterschriftsfeld aus dem Teilformular verschieben..." (Vorschlag von LCD)
Da ich definitiv mehrere Unterschriftenfelder benötige, habe ich diesen Vorschlag  als nicht zielführend verworfen.
II: "... oder im Formular eine Datenunterschrift verwenden." (Vorschlag von LCD)
Mit dem Begriff "Datenunterschrift" konnte ich nicht viel anfangen, sodass ich erst einmal andere Wege probieren wollte.

III: Meine Idee war es, dass ich einfach von Anfang an mehrere Tabellenzeilen einfüge, diese aber vorerst ausblende (und aus dem Layout ausschließe). Hierfür habe ich die Option "Zeile für jedes Datenelement wiederholen" deaktiviert.
Die Buttons sollten die nächste Zeile einblenden (+) bzw. die aktuelle Zeile ausblenden (-).
Die Zeilen heißen alle "Zeile1", sodass ich auf den jeweiligen Index zugreifen wollte.
Zum einblenden habe ich mir folgende Funktion überlegt und im click-Event des "+"-Buttons aufgerufen, wobei a_Button der jeweils aktuelle/angeklickte "+"-Button sein soll:

Code: Alles auswählen

function Plus (a_Button){
    //var a_Button
    var a_Index = a_Button.parent.index; //aktueller Index
    var n_Index = a_Index + 1;           //nächster Index
    var ZeileName = "Zeile1[" + a_Index + "]";
    
    a_Button.resolveNode(ZeileName).presence = visible;
}
Funktioniert nicht. Der Debugger spuckt folgende Meldung aus:
[font=courier new]Ausnahmefehler in Zeile 17 der Funktion Plus, Skript Doc:Init
Ausnahmefehler in Zeile 1 der Funktion oberste_Ebene, Skript XFA:Freigabe[0]: Page1[0]:Uebersicht[0]: Dokumentation[0]: Dokumentation[0]:Zeile1[0]:Schaltfläche2[0]:click[/font]


Die jeweilige Zeile auszublenden wollte ich folgendermaßen realisieren (click-Event "-"-Button):

Code: Alles auswählen

this.parent.presence = hidden;
Weil das nicht funktioniert hat, wollte ich versuchsweise die 1. Zeile folgendermaßen ausblenden:

Code: Alles auswählen

this.resolveNode("Freigabe.Page1.Uebersicht.Dokumentation.Dokumentation.Zeile1[0]").presence = hidden;
Das hat auch nicht funktioniert. Beide Varianten sind noch im Formular enthalten. Der Debugger spuckt folgende Meldung aus:
[font=courier new]Ausnahmefehler in Zeile 3 der Funktion oberste_Ebene, Skript XFA:Freigabe[0]: Page1[0]:Uebersicht[0]: Dokumentation[0]: Dokumentation[0]:Zeile1[0]:Schaltfläche3[0]:click[/font]


Daher meine Frage: Kann mir einer von euch erklären, an welcher Stelle ich falsch denke? Oder ist das mit dem LCD nicht realsierbar? (Ich gehe grds. davon aus, dass das umsetzbar sein sollte...)

Abschließende Hinweise zur PDF:
  • Rumprobiert habe ich bisher in der Tabelle: "Freigabe.Page1.Uebersicht.Dokumentation.Dokumentation" (s. F_Freigabe_sanzann.pdf). Sobald es mit den ersten beiden Zeilen funktioniert, werde ich weitere Zeilen einfügen und das Skript entsprechend auf die anderen Tabellen übertragen.
  • Die lila Tabelle, die derzeit von Anfang an angezeigt wird, wird in der finalen Version zu Beginn ausgeblendet sein. (Dann ergibt auch das Skript zur Auswahlliste in der Kopfzeile wieder 100% Sinn, hoffe ich ;))
  • Die PDF ist meine derzeitige LCD-PDF, erweiterte Readerfunktionen sind noch nicht aktiviert, weil es noch nicht so funktioniert, wie ich es mir vorstelle.

An dieser Stelle auf jeden Fall schon einmal vielen Dank fürs durchlesen und ich freue mich schon auf Hinweise/Hilfestellungen ;)

Viele Grüße,
Sandra
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
VG Sandra

Benutzeravatar
sanzann
Beiträge: 12
Registriert: 02.05.2017, 16:00

Tabellenzeilen (u.a. mit Unterschriftenfeld) hizufügen/löschen

Beitrag von sanzann » 19.12.2017, 14:08

...hier noch die Warnung.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
VG Sandra

Benutzeravatar
sanzann
Beiträge: 12
Registriert: 02.05.2017, 16:00

Tabellenzeilen (u.a. mit Unterschriftenfeld) hizufügen/löschen

Beitrag von sanzann » 27.12.2017, 14:24

Ein wenig Abstand hilft manchmal... Der gravierende Fehler ist, dass ich visible bzw. hidden natürlich in Anführungszeichen setzen muss!

Dementsprechend habe ich die Buttons jetzt folgendermaßen gestaltet:

Im click-Event des "+"-Buttons rufe ich meine Funktion "Plus" auf.

Code: Alles auswählen

Scripte.Plus("Dokumentation", this);
Meine Funktion Plus:

Code: Alles auswählen

function Plus(Abschnitt, Button) {
    nI = Button.parent.index + 1                   //nI = nächster Index
    nZ = Abschnitt + ".Zeile1[" + nI + "]";        //nZ = nächste Zeile
    
    xfa.resolveNode(nZ).presence = "visible";
}
Im click-Event des "-"-Buttons führe ich folgendes Skript aus:

Code: Alles auswählen

this.parent.presence = "hidden";
Jetzt funktioniert es, so wie ich es mir vorgestellt habe. Verbesserungsvorschläge sind weiterhin willkommen! :)
VG Sandra

Antworten