Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Alles was sich mit dem Thema dynamische XML Formulare auf Basis des LiveCycleDesigners beschäftigt
Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 24.09.2009, 18:47

Hallo Walde, der Mitarbeiter soll wenn er das Formular geöffnet hat beliebig viele Instanzen hinzufügen und löschen können. Jede der Instanzen wird automatisch mit einem Datum (dem aktuellen) versehen, wobei dieses Feld beschreibbar bleibt, damit die Instanz gelöscht werden kann. Trägt der Mitarbeiter keine Inhalt ein und löscht das Datum ist das Formularbin dem gleichen "Zustand" wie zu beginn (wenn er es öffnet). Trägt der Mitarbeiter nun etwas in eine Instanz ein und speichert das Dokument sollen alle Formularfelder dieser Instanz (zu dem Datum) nicht mehr beschreibar sein, um so änderungen zu einem vergangenen Datum zu verhindern (auch in den Feldern in denen nichts eingetragen wurde). Daher hatte ich die Frage wie ich die ganze Instanz abhängig von dem "preSave" event in den readOnly Zustand bringen kann.

Hast du eine weitere Idee wie man das am besten realiseren kann?

Gruß Marizous

walde
Beiträge: 611
Registriert: 02.05.2008, 21:22

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von walde » 24.09.2009, 22:53

[fontsize=2]Hallo Marizous,[/fontsize]

[fontsize=2][/fontsize] 

[fontsize=2]Die angehängte Beispieldatei setzt vor dem Speichern des Formulars alle Felder einer Instanz auf "readOnly", sobald auch nur eines dieser Felder ausgefüllt ist. [/fontsize][fontsize=2]Dies geschieht über eine Schleife, welche alle Felder im Formular nach folgenden Kriterien überprüft:[/fontsize]

[fontsize=2]Feldwert ist ungleich null (!=null),[/fontsize]

[fontsize=2]Feldtyp ist kein Tastenfeld (className != "button") und[/fontsize]

[fontsize=2]Feld ist nicht auf "readOnly".[/fontsize]

[fontsize=2]Sobald ein Feld diese Kriterien erfüllt, wird der Referenz-Syntaxausdruck für das Übergeordnete Objekt (Instanz des Teilformulars) in eine 2. Schleife weitergegeben, welche alle Felder dieses Objektes (Teilformulars) auf "readOnly" setzt.[/fontsize]

[fontsize=2]Diese Methode ist sehr flexibel und kann beliebig abgeändert werden. Hierbei kann man auch festlegen, dass mehrere Felder ausgefüllt sein müssen, bevor eine Instanz auf "readOnly" gesetzt wird. Man kann auch mit entsprechenden Änderungen beim Öffnen des Formulars z.B. unvollständig ausgefüllte Instanzen wieder Freigeben oder sogar löschen.[/fontsize]

[fontsize=2][/fontsize] 

[fontsize=2]Gruß,[/fontsize]

[fontsize=2][/fontsize] 

[fontsize=2]Walde[/fontsize]




Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 25.09.2009, 09:56

Noch mal vielen Dank Walde, ich habe mein Formular mit deiner Hilfe nun endlich so wie ich es mir gedacht habe! Ich arbeite mich gerade mit "F1" duch die einzelnen Teile der Schleife um Sie auch zu verstehen ;-)

Gruß Marizous

Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 01.10.2009, 14:45

Ich habe noch mal eine Frage zu der Freischaltung von weiteren Nutzerechten mit Acrobat Pro 9. Um mein Formular auch für Anwender des Acrobat Readers nutzbar zu machen (Daten speichern zu können) vergebe ich ja mit Acrobat Pro 9 "weitere Rechte". Nun habe ich in meinem Formular eine Berechnung des aktuellen Datums. Wenn ich aber die erweiterten Rechte im Acrobat vergebe, funktioniert diese Berechnung bzw. das auslesen des aktuellen Datums nicht mehr.

Hier noch einmal das Script, was für das Datum zuständig ist und auf einem "Textfeld" liegt

Code: Alles auswählen

if($.rawValue > "") then $.rawValue
else $.rawValue = Num2Date(Date(), DateFmt(2, "de_DE"))
endif

Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 20.10.2009, 13:43

Hallo Walde, ich habe noch ein Problem mit der Datei, Acrobat Reader setzt ja alle befüllten Felder auf ReadOnly. Jetzt habe ich drei Textfelder die ausserhalb der Instanz sind (die auf ReadOnly gesetzt werden soll). Diese sollen nicht auf ReadOnly gesetzt werden. Ich habe schon einiges ausprobiert, bin aber nicht weiter gekommen. Kannst du mir bitte noch mal helfen? Gruß Marizous

Hier die Struktur die ich meine:

Header: Instanz mit Textfeldern die Ein-/Ausgeblendet werden können (editierbar)

Body: Mit dem Formular wo befüllte Instanzen nach dem Speichern auf ReadOnly gesetzt werden.

walde
Beiträge: 611
Registriert: 02.05.2008, 21:22

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von walde » 29.10.2009, 16:48

Hallo Marizuos,

 

Mann kann die Felder, die Sie nicht auf "readOnly" setzen möchten in der Schleife ausschließen. Siehe abgeänderten Script.

Code: Alles auswählen

function nodesuche(node){

var oField = node.nodes;

var oFieldlength = oField.length;

for (var i = 0; i < oFieldlength; i++){

var oItem = oField.item(i);

if(oItem.name != "Textfeld1" & oItem.name != "Textfeld2"){

oItem.access = "readOnly";

}

}

}

Die Felder mit den Namen "Textfeld1" und "Textfeld2" werden jetzt von der Schleife ausgeschlossen.

 

Gruß,

 

Walde


Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 30.10.2009, 11:19

Das klappt schon soweit ganz gut. Eine Fragen zu der Schleife habe ich noch an dich. Wie stelle ich es an Optionsfelder /Teilformulare auszuschließen (Ich blende nämlich mit hilfe eines Optionsfeld das Teilformular in denen die Texfelder, die editierbar bleiben sollen ein und aus)? Ich habe versucht mit oItem.name != "name-des-optionsfeldes", leider ohne Erfolg. Danke nochmal für deine riesen Hilfe.

walde
Beiträge: 611
Registriert: 02.05.2008, 21:22

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von walde » 01.11.2009, 21:53

Hallo Marizous,

 

Das Kontrollkästchen sollten Sie bereits in der 1. Funktion aus der Schleife ausschließen. Siehe Script und Beispieldatei.

Code: Alles auswählen

function InstanceReadOnly(){
for(var i = 0; i < xfa.host.numPages; i++){
var oFields = xfa.layout.pageContent(i, "field");
var nodesLength = oFields.length;
for(var j = 0; j < nodesLength; j++){
var oItem = oFields.item(j);
if(oItem.ui.oneOfChild.className != "button" & oItem.rawValue != null & oItem.ui.oneOfChild.className != "checkButton"){
if(oItem.access != "readOnly"){
nodesuche(xfa.resolveNode(oItem.parent.somExpression));
}
}
}
}
}
Es ist die Stelle mit dem oItem.ui.oneOfChild.className != "checkButton".

 

Gruß,

 

Walde

Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Marizous
Beiträge: 16
Registriert: 01.09.2009, 12:19

Dnynamisches Formular -> 1Seite Eingabe / 2-x Seite Ausgabe

Beitrag von Marizous » 03.11.2009, 12:22

Danke Walde, mit deiner Hilfe habe ich das Formular endlich so wie es sein soll :)
Gruß Marizous

Antworten