FormCalc
FormCalc
Also FormCalc ist anders als JavaScript keine objektorientierte Sprache, ist aber hervorragend für das Abfragen und Manipulieren von Nodes (XML-Knoten) geeignet.
Von daher passt FC ausgezeichnet zu XFA-Formularen.
Das sieht man sehr deutlich bei Schleifen.
FormCalc
JavaScript
JavaScript kann nur sehr umständlich auf unterschiedliche Instanzen einer Node zugreifen, da der Accessor [n] anders als in FormCalc nicht direkt verwendet werden kann.
Generell ist FormCalc beim Abklappern von Nodes schneller als JavaScript, was man aber erst bei sehr großen Formularen spürt.
Eine Weiterentwicklung findet meines Wissens seit Jahren nicht statt, macht aber nichts, denn die Basis XML ändert sich ja auch nicht.
Von daher passt FC ausgezeichnet zu XFA-Formularen.
Das sieht man sehr deutlich bei Schleifen.
FormCalc
Code: Alles auswählen
for i=0 upto _Row.count do
Row[i].Cell.rawValue = Concat("Nr ", Sum(i, 1))
enfor
Code: Alles auswählen
for (var i = 0; i < _Row.count; i += 1) {
xfa.resolveNode("Row[" + i + "]").Cell.rawValue = "Nr " + (i + 1);
}
Generell ist FormCalc beim Abklappern von Nodes schneller als JavaScript, was man aber erst bei sehr großen Formularen spürt.
Eine Weiterentwicklung findet meines Wissens seit Jahren nicht statt, macht aber nichts, denn die Basis XML ändert sich ja auch nicht.
Code: Alles auswählen
FormCalc
Hallo radzmar,
dann ist FormCalc wohl eher eine prozedurale Sprache?
Mich bewegt ein grudsätzliches Problem. Ich muss ein Formular an über 100 Kunden verschicken. Dieses Formular enthält sowohl JavaScript- als auch FormCalc-Anweisungen.
Ich weiß natürlich nicht, ob alle Kunden im Acrobat Reader JavaScript aktiviert haben.
1) Kann ich das im Formular abfragen, und wenn ja, wie, wenn Scripting deaktiviert ist?
2) Wenn ich im Reader JavaScript deaktiviere, ist auch FormCalc deaktiviert. Da wird wohl kein Unterschied gemacht.
m.f.G.
Wespe
dann ist FormCalc wohl eher eine prozedurale Sprache?
Mich bewegt ein grudsätzliches Problem. Ich muss ein Formular an über 100 Kunden verschicken. Dieses Formular enthält sowohl JavaScript- als auch FormCalc-Anweisungen.
Ich weiß natürlich nicht, ob alle Kunden im Acrobat Reader JavaScript aktiviert haben.
1) Kann ich das im Formular abfragen, und wenn ja, wie, wenn Scripting deaktiviert ist?
2) Wenn ich im Reader JavaScript deaktiviere, ist auch FormCalc deaktiviert. Da wird wohl kein Unterschied gemacht.
m.f.G.
Wespe
FormCalc
Hallo Wespe,
umgekehrt wird ein Schuh draus. Ist JavaScript aktiviert, kannst du eine Hinweisseite mit einer Gebrauchsanleitung zum Aktivieren aus- und dein Formular einblenden.
Ist JavaScript nicht aktiviert, sieht man nur die Hinweisseite.
vg armine
umgekehrt wird ein Schuh draus. Ist JavaScript aktiviert, kannst du eine Hinweisseite mit einer Gebrauchsanleitung zum Aktivieren aus- und dein Formular einblenden.
Ist JavaScript nicht aktiviert, sieht man nur die Hinweisseite.
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
FormCalc
Das Abfragen, ob JavaScript aktiviert ist, ist ein Henne-Ei-Problem, denn Du kann nicht ermitteln, ob es aktiv ist, wenn es deaktiviert ist.
Man kann das Formular nur so gestalten, dass es anfangs immer einen Hinweis anzeigt, dass JavaScript aktiviert werden muss.
Über ein Skript im docReady Event lässt man dieses Hinweis immer ausblenden.
Das bewirkt, dass nur Leute mit deaktivierten JavaScript den Hinweis sehen.
Und richtig, die Option das JavaScript zu deaktivieren, deaktiviert auch FormCalc mit.
Man kann das Formular nur so gestalten, dass es anfangs immer einen Hinweis anzeigt, dass JavaScript aktiviert werden muss.
Über ein Skript im docReady Event lässt man dieses Hinweis immer ausblenden.
Das bewirkt, dass nur Leute mit deaktivierten JavaScript den Hinweis sehen.
Und richtig, die Option das JavaScript zu deaktivieren, deaktiviert auch FormCalc mit.
FormCalc
Hallo armine,
vielen Dank für die JS Demo. Mit dem Adobe Reader kann ich das nachvollziehen, aber da ich auf absehbare Zeit noch mit Version 8 des LCD arbeiten muß, kann ich nur unvollständige Teile Deiner Datei bearbeiten. Könntest Du dasselbe bitte für LCD 8 erstellen?
Vielen Dank
Werner
vielen Dank für die JS Demo. Mit dem Adobe Reader kann ich das nachvollziehen, aber da ich auf absehbare Zeit noch mit Version 8 des LCD arbeiten muß, kann ich nur unvollständige Teile Deiner Datei bearbeiten. Könntest Du dasselbe bitte für LCD 8 erstellen?
Vielen Dank
Werner
FormCalc
Hallo armine,
ich habe mir Deine Hinweise zu Herzen genommen und das Formular etwas großzügiger gestaltet. Dabei habe ich Skripte aus diesem Forum verwendet.
Ich habe folgende Änderungen angebracht:
1) Pflichtfelder werden farblich hervorgehoben, damit sie auch von Kunden erkannt werden, die diese Option nicht im Adobe Reader gesetzt haben.
2) Den ersten Buchstaben der Pflichtfelder konvertiere ich in Großbuchstaben.
3) Das Datum, an dem die Kündigung wirksam wird, wird berechnet und ist dann schreibgeschützt.
4) Name des Mandanten wird aus Pflichtfeld entnommen, aktuelles Tagesdatum wird hinzugefügt. Beides auch schreibgeschützt.
5) Unten schließlich die Buttonleiste.
Und dann wollte ich gerne am Anfang des Formulars oder auf einer Extraseite den Text "Java Skript aktivieren" bei deaktiviertem JS des Readers anzeigen, analog zu Deinem pdf JavaScript_off. Dabei stoße ich dann auf die Probleme mit dem LCD.
Ich bekomme in der Designansicht nur eine Seite angezeigt (LCD Designansicht.jpg,
LCD Warnung.jpg)
Wo muß ich da nachbessern?
ich habe mir Deine Hinweise zu Herzen genommen und das Formular etwas großzügiger gestaltet. Dabei habe ich Skripte aus diesem Forum verwendet.
Ich habe folgende Änderungen angebracht:
1) Pflichtfelder werden farblich hervorgehoben, damit sie auch von Kunden erkannt werden, die diese Option nicht im Adobe Reader gesetzt haben.
2) Den ersten Buchstaben der Pflichtfelder konvertiere ich in Großbuchstaben.
3) Das Datum, an dem die Kündigung wirksam wird, wird berechnet und ist dann schreibgeschützt.
4) Name des Mandanten wird aus Pflichtfeld entnommen, aktuelles Tagesdatum wird hinzugefügt. Beides auch schreibgeschützt.
5) Unten schließlich die Buttonleiste.
Und dann wollte ich gerne am Anfang des Formulars oder auf einer Extraseite den Text "Java Skript aktivieren" bei deaktiviertem JS des Readers anzeigen, analog zu Deinem pdf JavaScript_off. Dabei stoße ich dann auf die Probleme mit dem LCD.
Ich bekomme in der Designansicht nur eine Seite angezeigt (LCD Designansicht.jpg,
LCD Warnung.jpg)
Wo muß ich da nachbessern?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
FormCalc
Hallo Werner,
wegen Fehlermeldungen habe ich deinen Inhalt in ein neues Formular kopiert und schon war ich sie los.
Deine Anwender kommen nun in den Genuss von gekennzeichneten Eingabefeldern. Das kann man wegklicken, aber wenn Pflichtfelder nicht ausgefüllt sind, dann wird das wieder angeknippst.
Ausgefüllte Pflichtfelder werden von den (i.d.R. roten) Rahmen befreit. Bei Bedarf kommen die aber wieder.
vg armine
wegen Fehlermeldungen habe ich deinen Inhalt in ein neues Formular kopiert und schon war ich sie los.
Deine Anwender kommen nun in den Genuss von gekennzeichneten Eingabefeldern. Das kann man wegklicken, aber wenn Pflichtfelder nicht ausgefüllt sind, dann wird das wieder angeknippst.
Ausgefüllte Pflichtfelder werden von den (i.d.R. roten) Rahmen befreit. Bei Bedarf kommen die aber wieder.
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
FormCalc
Hallo armine,
vielen Dank für Deine Verbesserungen. Im Acrobat Reader sieht alles wie gewünscht aus. Leider kann ich in der Designansicht nur den Hinweis auf das fehlende JavaScript sehen und bearbeiten. In der XML-Ansicht sehe ich zwar den restlichen Code. Aber so sehr wollte ich denn doch nicht ins Eingemachte gehen. Es wird weiterhin die Fehlermeldung aus meiner vorherigen Mail angezeigt.
m.f.G. Werner
vielen Dank für Deine Verbesserungen. Im Acrobat Reader sieht alles wie gewünscht aus. Leider kann ich in der Designansicht nur den Hinweis auf das fehlende JavaScript sehen und bearbeiten. In der XML-Ansicht sehe ich zwar den restlichen Code. Aber so sehr wollte ich denn doch nicht ins Eingemachte gehen. Es wird weiterhin die Fehlermeldung aus meiner vorherigen Mail angezeigt.
m.f.G. Werner