Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Ob nun dynamisch agierende Subformulare, oder einfach nur Textfelder...
Beiträge: 6
Registriert: 19.04.2013, 13:54

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von » 22.04.2013, 14:42

:(
Hallo an alle Acronauten,
wer kann mir bei meinen ersten Schritten helfen?

Ich habe ein Formular zu gestalten, das ein klein wenig mitdenken soll. Ich habe es abgespeckt angehängt.
  • In Abhängigkeit von der Eingabe in der Optionsgruppe  „Art“, soll das Teilformular TFIKHA angezeigt werden.
[indent] Gleiches gilt für die Optionsgruppe "Rechtsform" und das Teilformular TFInhaber2. Die Werte 1 sollen dabei jeweils als Standard gesetzt werden. Das funktioniert auch.
[/indent][indent] Aber wie sage ich dem Formular, dass es beim Öffnen auch die entsprechenden Teilformulare ausblendet. Diese werden erst nach dem erneuten Aktivieren der entsprechenden Option unsichtbar.
[/indent]
  • Vor dem Drucken soll eine Abfrage prüfen, ob alle Pflichtfelder ausgefüllt sind. Im Forum habe ich so einiges gefunden und eingebaut – aber es funktioniert nicht so richtig.
[indent] Schaltfläche „Drucken“
Die Pflichtfelder werden über diese Schaltfläche eines nach dem anderen geprüft und in Abhängigkeit vom Ergebnis auch in der Sammelmeldung angezeigt. Wenn alle Pflichtfelder ausgefüllt sind, sollte gedruckt werden. Die Sammelmeldung kommt aber immer noch … und gedruckt wird auch nicht.
[/indent][indent] Hier möchte ich auch die Felder IK und IKHA in Abhängigkeit von der "Art" prüfen … Analog TFInhaber2 in Abhängigkeit von der "Rechtsform".
[/indent][indent] Schaltfläche „Formular drucken“
Hier habe ich den gefundenen Programmteil eingebaut – funktioniert aber nicht. Wie kann ich den Parameter für Pflichtfeld abfragen?  
[/indent]  
Vielen Dank sagt im Voraus schon mal


PS: Version LCD ES4 11.0...

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

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von armine » 24.04.2013, 07:57

Hallo A²,

deine Datei hat bei mir auch nicht funktioniert, also habe ich die relevanten Felder in ein vorhandenes PDF kopiert und siehe, mein Code tut, was ich erwarte.

Klickt man auf den Printbutton bekommt man deine Fehlermeldung, aber auch Schlauberger, die ^p drücken kommen nicht zum Drucken.

Bei "Firma" kannst du sehen, wie der rote Rand verschwindet, wenn das Feld ausgefüllt ist.
Wozu den roten Rand bei den Kontrollkästchen? Dank Vorbelegung mit der "1" sind die immer ausgefüllt (und werden auch nicht abgeprüft).
Wozu ein Teilformular um ein einzelnes Textfeld?
Statt endlosem "if" habe ich die Pflichtfelder in ein Array geschrieben und arbeite alles in einer Schleife ab.

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

Beiträge: 6
Registriert: 19.04.2013, 13:54

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von » 24.04.2013, 11:52

:D
Hallo armine,
vielen lieben Dank für Deine Hilfe. Ich habe den restlichen Formularinhalt in Deine Datei eingefügt und bin happy – es geht.  EDV heißt eben doch nicht umsonst „Ende der Vernunft“.
Was ich u.a. besonders gut finde:  Du hast den Drucker-Schlaubergern einen Strich durch die Rechnung gemacht. Ich habe es immer wieder erlebt, dass Fbl. irgendwie ausgedruckt und dann per Hand ausgefüllt wurden – obwohl ich einen Druckbutton (natürlich ohne Prüfung) eingebaut hatte.
Meine Programmierung ist alles andere als elegant, das ist mir schmerzlich bewusst. Aber da ich mit JavaScript  fast überhaupt nicht auskenne, habe ich gedacht „viele Wege führen nach Rom“ … daher auch die vielen If’s. Ein  Array war mehrere Nummern zu groß für meine Kenntnisse. Dank Deiner Hilfe kann ich mich jetzt an dieses heranwagen.
Die Teilformulare habe ich eingebaut, weil ich in einem Lehrgang zum LCD auf DVD gesehen habe, dass man in dynamischen Formularen bestimmte Bereiche mittels des Aktionsgenerators ein- und ausblenden kann. Nun will ich nicht sagen, dass mein Fbl. ein dynamisches ist – aber es funktionierte.
Du fragst in der For-Schleife:  „Prüffeld.length“. Kann man den Beschriftungstext des betreffenden Feldes auch auslesen? Hintergrund: Die Feldnamen sind manchmal nicht so richtig aussagekräftig. Ich muss eine eindeutige und verständliche Information geben – sonst klingelt mein Telefon womöglich am laufenden Band.
Der rote Rand bei den Optionsfeldern kommt daher, dass ich zuerst keinen Standardwert eingestellt hatte. Sondern die Ausfüllung als Pflichfeld vorgesehen war.

So, jetzt muss ich mich noch einmal blamieren: Wo hast Du das Click-Ereignis der Optionsfelder versteckt?
VG A²
PS: Kannst Du mir eine gute Quelle sagen, wo ich Informationen (Syntax und auch Beschreibung von Befehlen)  zu JavaScript  finden kann?  Ich meine sowas für Dummis  …

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von armine » 24.04.2013, 15:26

Hallo A²,

richtig, viele Wege führen nach Rom. Damit du den richtigen findest, kannst du Google nach "javascript tutorial" befragen und dir etwas hübsches ausuchen.

Das Click-Ereignis der Optionsfelder habe ich nicht versteckt (kann ich auch gar nicht), sondern einfach ignoriert. Statt dessen habe ich Code im Change-Ereignis, der wird nur ausgeführt, wenn sich etwas geändert hat.

Den Drucker-Schlaubergern hab’ nicht ich einen Strich durch die Rechnung gemacht, da lass ich dem Reader/Acrobat freien Lauf.

Mit "caption.value.text.value" kann man den Beschriftungstext eines Feldes auch auslesen. Brauchst du aber nicht. Ein 2. Array gibt dir alle Veränderungsmöglichkeiten an die Hand.
 
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Beiträge: 6
Registriert: 19.04.2013, 13:54

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von » 25.04.2013, 10:00

:?
Hallo armine,
auf meinem PC zu Hause ist leider der LCD nicht installiert. Darum komme ich erst jetzt dazu, Deine Tipps von gestern einzubauen.
Die Fehlermeldung ist, dank des 2. Arrays jetzt ok. Nach der Fehlermeldung wird der Focus auf das erste leere Feld gesetzt.

Folgende Punkte habe ich noch nicht richtig im Griff, möchte das Formular aber vorher nicht freigeben - negatives bleibt beim User länger hängen, als positives:
  • Beim Drucken wird mehr als 1 Exemplar geduckt.
    ;) erledigt: Schaltfläche Drucken hat nach dem Drucken nochmal Drucken aktiviert.
  • Wie sage ich der Schaltfläche "Drucken" auf der 2. Seite, dass das erste leere Feld auch auf dem Bildschirm sichtbar positioniert wird. Jetzt muss man immer noch nach oben scrollen.
  • Zwischenzeitlich habe ich bei „sonstige Änderungen“versucht, ein dynamisches Textfeld einzufügen. Ist es möglich, den Cursor nicht vertikal mitten im Feld sondern links oben zu positionieren?
  • Das Change-Ereignis der Optionsfelder - ich kann auch das nicht finden.
    Bei den Optionsfeldern ist „Ereignisse mit Scripten“ eingestellt  - aber es ist kein Script zu sehen. Auch dann nicht, wenn ich alle Scripte anzeigen lasse. Da kommt zwar die  1. Befehlszeile, aber nichts dahinter.
    Das Teilformular „TFInhaber2“ soll entfernt und ein neues Feld für den 2. Inhaber eingebaut werden. Ebenso das TF für das 2. IK.
    ;) erledigt: bin davon ausgegangen, dass sich der Code hinter jedem Optionsfeld verbirgt - nicht hinter der ganzen Gruppe
[indent]Bei fast allen anderen Feldern ist die Anzeige der Scripte kein Problem – außer in der Masterseite. Ich wollte von Deinen Codes etwas kopieren – in meiner Datei komme ich an das Feld mit den Seitenzahlen nicht ran.
[/indent] Jetzt noch 2 zweitrangige Fragen:
  • Prüfung PLZ und IK auf vollständige Ausfüllung 5 bzw. 7 Zeichen.
    Das IK hat auch noch eine richtige Prüfformel , aber die kann warten.
  • Auf der 2. Seite des Fbl. sind Angaben zu Änderungen möglich. Die Anzahl ist nach oben offen.  „Keine Änderungen“ ist dabei Standard. Wie kann ich ermitteln, ob wenigstens bei einer Position  „beitreten“ oder „beenden“ eingetragen wurde. Denn wenn alles auf „keine Änderung“ steht, ist das Fbl. ja auch nicht korrekt ausgefüllt.
Dank schon mal sagt A²
 


 

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

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von armine » 26.04.2013, 17:18

Hallo A²

Wie sage ich der Schaltfläche "Drucken" auf der 2. Seite, dass das erste leere Feld auch auf dem Bildschirm sichtbar positioniert wird. Jetzt muss man immer noch nach oben scrollen.
Gar nicht. Der zweite Druckbutton sagt dem ersten, welches Programm abgespult werden soll. Und der positioniert den Cursor im ersten leeren Feld.
 
Zwischenzeitlich habe ich bei „sonstige Änderungen“ versucht, ein dynamisches Textfeld einzufügen. Ist es möglich, den Cursor nicht vertikal mitten im Feld sondern links oben zu positionieren?
Ja, dazu formatiert man den Absatz.
 
Das Change-Ereignis der Optionsfelder - ich kann auch das nicht finden.
Der Code steht bei der Gruppe – da hat man alle Felder im Griff, nicht bei den einzelnen Feldern.
 
Seitenzähler: Der angezeigte Text wird im [font=courier new]calculate [/font]beigestellt. Im [font=courier new]docReady [/font]knipse ich die Eingabefelder (samt Markierung der Pflichtfelder) an. Außerdem setze ich für die Eingabefelder eine mir passende Farbe ein. Im [font=courier new]docClose [/font]setze ich die Farbe wieder auf den Adobe-Standard.
 
Prüfung PLZ: Entweder werden 5 Ziffern (und keine 2 führenden Nullen) erkannt, oder die Eingabe wird gelöscht.
 
Das IK hat auch noch eine richtige Prüfformel , aber die kann warten.
Jetzt kann man jeden Quatsch außer Leerzeichen eingeben. Hauptsache: 7 Stellen.
 
Auf der 2. Seite des Fbl. sind Angaben zu Änderungen möglich …
Ob die Vorgaben unverändert blieben, wird erkannt.
 
Anmerkungen:
Entweder absolut (mit vollständigem Pfad) oder relativ (nur das nötigste) referenzieren. Sonst funktioniert’s nicht.
Teilformulare bitte nur, wo nötig. Aber immer sinnvoll benannt.
Eine Hierarchie nach „Kraut und Rüben“ zu strukturieren macht dir das Leben schwer und es ist eine Zumutung für jemanden, der helfen will.
Auf eine „Seite 2“ verweisen, wenn vorher noch Texte für weitere Seiten sorgen können ist von geringer Pfiffigkeit.
Dein Reset-Button tut, was der Name besagt. Dass da Pflichtfelder existieren interessiert nicht. Lass ihn weg. So ein Formular kann man neu laden.
Warum Text und Linien separat, wenn man Text mit Linie haben kann und sich Arbeit beim Positionieren sparen kann?

Nun solltest du für alle Wechselfälle des Lebens gerüstet sein.
vg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Beiträge: 6
Registriert: 19.04.2013, 13:54

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von » 30.04.2013, 17:21

:)
Hallo armine,
vielen Dank für Deine letzten Tips. Ich habe sie beherzigt und bin inzwischen auch ganz zufrieden - gestern habe ich mein erstes Formular feigegeben und die eingehenden Rückmeldungen haben gezeigt, dass es funktioniert.

Für diese einfachen Formulare bin ich jetzt ganz gut gerüstet. Wenn ich mich das nächste Mal wg. eines Problems melde, habe ich bestimmt auch etwas mehr Ordnung in der Hirarchie und es sind keine unnötigen Felder, Linien etc. vorhanden ... 

VG A²






 


armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von armine » 28.05.2013, 17:30

Hallo Andreas,

hinter dem DruckButton steht dieser Code:

[font=courier new] Formular1.Seite1.TFSo.Schaltfläche1::click - (JavaScript, client)

var Sammelmeldung = "", Sprungziel = "", Schlamperei = "";
var Prüffeld    = ["Firma", "Strasse", "PLZ", "Ort", "IK", "TFIKHA.IKHA", "Inhaber",    "Inhaber2"] ;
var Meldetext    = ["Firma", "Straße",  "PLZ", "Ort", "IK", "IK FA",          "1. Inhaber",    "2. Inhaber"] ;
for (i = 0; i < Prüffeld.length; i++) {
    if (xfa.resolveNode("Seite1.TFSo." + Prüffeld).rawValue == null && xfa.resolveNode("Seite1.TFSo." + Prüffeld).mandatory == "error") {
        if (Sammelmeldung == "") {
            Sprungziel = Prüffeld
        }
        Sammelmeldung = Sammelmeldung + "\n- " + Meldetext ;
    }
}
if (Kontrollkästchen1.rawValue + Kontrollkästchen2.rawValue == 0) {
    Schlamperei = "\n\nUm die Kontrollkästchen am Fuß der ersten Seite sollten Sie sich auch kümmern."
}
if (Seite2.OptionsGruppe.Optionsfeldliste01.Knackpunkt.rawValue + Seite2.OptionsGruppe.Optionsfeldliste02.Knackpunkt.rawValue == "11") {
    Schlamperei = Schlamperei + "\n\nAuf der letzten Seite sind Kontrollkästchen. Da haben Sie in beiden Fällen\n\"Keine Änderung\" stehen?"
}
if (Sammelmeldung > "" || Schlamperei > "") {
    if (Sammelmeldung > "") {
        Sammelmeldung = "Folgende Felder wurde nicht ausgefüllt.\n" + Sammelmeldung + "\n\nBitte füllen Sie diese aus!"
    }
    app.alert(Sammelmeldung + Schlamperei,1) ;
    xfa.host.setFocus(Sprungziel)
} else {
    xfa.host.print(1, "0", (xfa.host.numPages -1).toString(), 0, 0, 0, 0, 0);
}

 Formular1.Seite1.TFSo.Schaltfläche1::prePrint - (JavaScript, client)

this.execEvent("click")
[/font]
Vor dem Speichern kann man diesen Code natürlich auch abarbeiten (Die Zeile Code im [font=courier new]preprint[/font] zusätzlich ins [font=courier new]preSave[/font] kopieren.). Bleibt zu beachten, dass beim Verlassen der Pflichtfelder formal geprüft ob ein Eintrag besteht. Gibt es einen, wird das Feld nicht mehr als Pflichtfeld geführt.

Gutes Gelingen
armine



sopuab
Beiträge: 13
Registriert: 04.12.2012, 02:29

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von sopuab » 19.06.2013, 18:22

armine hat geschrieben:Hallo A²,


Klickt man auf den Printbutton bekommt man deine Fehlermeldung, aber auch Schlauberger, die ^p drücken kommen nicht zum Drucken.
Hallo, ich habe mal ne Frage, wie schafft man denn das ? Genau das bekomme ich nicht hin, dass Strg+P bzw. Menü Datei-Drucken nicht unterbunden wird. Das Skript hinter dem Druckbutton funktioniert wunderbar.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Pflichtfelder vor Drucken prüfen, Optionsfelder beim Öffnen

Beitrag von armine » 19.06.2013, 23:27

Hallo sopuab,

hast du dir die Datei nicht angeschaut? Im preprint des Printbuttons steht:
[font=courier new]this.execEvent("click")[/font]

vg armine

Antworten