Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Alles was sich mit dem Thema dynamische XML Formulare auf Basis des LiveCycleDesigners beschäftigt
Benutzeravatar
axelh
Beiträge: 73
Registriert: 10.08.2015, 13:10

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von axelh » 18.08.2015, 07:40

Hallo,

ich habe ein Dokument mit 2 Masterseiten. Auf beiden Seiten habe ich ein Objekt vom Typ "Text". Zur Laufzeit möchte ich durch Klick auf einen Button, der sich auf der 1. Masterseite befindet, den Inhalt der Objekte vom Typ "Text" auf allen Seiten ändern.

Mit dem Objekt auf der 1. Masterseite funktioniert das auch:

Code: Alles auswählen

Formular.#pageSet[0].Seite1.Header.cmdDrucken::click - (JavaScript, client)
   Seite1.Header.lblAusfertigung.rawValue="Original";
   xfa.host.print(0, "0", (xfa.host.numPages -1).toString(), 1, 1, 0, 0, 0);

   lblAusfertigung.rawValue="1. Kopie"
   xfa.host.print(0, "0", (xfa.host.numPages -1).toString(), 1, 1, 0, 0, 0);

   lblAusfertigung.rawValue="2. Kopie";
   xfa.host.print(0, "0", (xfa.host.numPages -1).toString(), 1, 1, 0, 0, 0);
Der Code befindet sich auf der 1. Masterseite: Wie kann ich von dort aus das Feld auf der 2. Masterseite ansprechen? Folgendes habe ich versucht, das funktioniert allerdings nicht:

Code: Alles auswählen

Formular.#pageSet[0].Seite1.Header.cmdDrucken::click - (JavaScript, client)
   Seite2.Header.lblAusfertigung.rawValue="Original";
Gruß,
Axel
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von armine » 18.08.2015, 07:48

Hallo Axel,

Ist es das, was du willst?
Aus deinem Muster kann ich übrigens nicht ableiten, wozu du 2 Masterseiten brauchst.

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

Benutzeravatar
axelh
Beiträge: 73
Registriert: 10.08.2015, 13:10

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von axelh » 18.08.2015, 08:07

Hallo armine,

s. Anlage. Das ist das wo ich hin will. Ich werde versuchen Deine Programmierung zu übernehmen. Ich konnte es inzwischen mit einem Textfeld und globaler Datenbindung umsetzen, dein Code ist natürlich eleganter und damit kann ich das Feld dann auch (un)sichtbar schalten.

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


Benutzeravatar
axelh
Beiträge: 73
Registriert: 10.08.2015, 13:10

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von axelh » 18.08.2015, 13:19

Hallo armine,

vielen Dank für den Code, es funktioniert soweit bei mir. Es wird aber auch nur das Feld auf der 1. Masterseite angesprochen und dank globaler Datenbindung der Text in das Feld auf der 2. Masterseite übernommen.

Warum brauche ich 2 Masterseiten?
Ich brauche 2 Masterseiten, da ich den Formularkopf der 1. Seite auf allen weiteren Seiten nur teilweise darstelle. In dem Fall nur Anschrift, Baustelle usw.. Der Formularkopf ist also ab der 2. Seite nicht mit der 1. Seite identisch.

Wenn ich jetzt auch noch die Hintergrundfarbe des Feldes (FillColor) für jede Ausfertigung verändern will stehe ich wieder vor dem Problem: Wie spreche vom Code der 1. Masterseite aus ein Feld in der 2. Masterseite an.

Code: Alles auswählen

Formular.#pageSet[0].Seite1.Header.cmdDrucken::click - (JavaScript, client)

if (xfa.host.messageBox("Es werden 4 Ausfertigungen des Formulars gedruckt.nnSind Sie sicher?", "Drucken", 2, 2) == 4) {
    bolPrintAllowed.value = "1" ;
    for (var i = 0; i < 4; i++) {
        txtAusfertigung.rawValue = ["Original","Rot","Grün","Vorgang"] ;
        txtAusfertigung.fillColor = ["220,221,222","255,0,0","0,255,0","220,221,222"] ;

Hier möchte ich die Farbwerte des Feldes auf allen folgenden Seiten verändern.

        xfa.host.print(0, "0", (xfa.host.numPages -1).toString(), 1, 1, 0, 0, 0);
        bolPrintAllowed.value = "1" ;
    }
    bolPrintAllowed.value = "0" ;
}
Außerdem habe ich noch eine Verständnisfrage:
Wofür ist der Code im prePrint- bzw. postPrint-Ereignis nötig? In welcher Reihenfolge laufen die Ereignisse ab? So?
  1. prePrint
  2. Print
  3. postPrint
Ich hoffe das wird nicht alles zu viel, aber es ist einfach schön auch solche Feinheiten umsetzen zu können.

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

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

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von armine » 19.08.2015, 08:01

Hallo Axel,

der geschilderte Aufbau braucht keine 2. Masterseite, weil du die zusätzlichen Elemente auf der 1. Seite auf eben dieser unterbringen kannst.
Das Textfeld färben geht aber auch auf einer 2. Masterseite – nur eben nicht auf dem von dir eingeschlagenen Weg.
Die Abfolge der Ereignisse hast du erfasst. Im Detail ist aber zu beachten, dass prePrint und postPrint bei jedem Schleifendurchlauf beim PrintButton auftreten.


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

Benutzeravatar
axelh
Beiträge: 73
Registriert: 10.08.2015, 13:10

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von axelh » 19.08.2015, 08:42

Hallo Armine,

danke erstmal.

Wenn ich Dein Beispiel aufrufe und auf "Drucken" klicke sehe ich auf den Seiten nur die Titel ("Ms1", "Ms2", "Ms3"). Nicht die "Ausfertigung"-Felder. Ich habe den Code in mein PDF übernommen, allerdings hat er bei mir keinerlei Auswirkungen auf das Feld auf der 2. Masterseite.

Zu den 2 Masterseiten:
Wenn ich es so aufbauen würde wie Du beschreibst, ist es dann nicht wesentlich aufwendiger, den Teil mit der dynamischen Tabelle unterhalb des Kopfbereiches auf einer zweiten (nicht Master-)Seite zu wiederholen, als mit einer 2. Masterseite zu arbeiten? Oder verstehe ich da irgendwas falsch?

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

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

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von armine » 19.08.2015, 10:23

Hallo Axel,

wenn richtig referenziert wird, dann klappt’s auch mit Text und Farbe auf der 2. Masterseite.
Den einfacheren Aufbau erreichst du mit einer Masterseite. Das klappt mit Ein- und Ausblenden auch bei einem unkonventionellen Vorgehen wie bei deinem Auftrags-Fertigungsnummer-Feld, das auf Seite 1 anders platziert ist, als auf den Folgezeiten.

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

Benutzeravatar
axelh
Beiträge: 73
Registriert: 10.08.2015, 13:10

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von axelh » 19.08.2015, 11:09

Hallo Armine,

vielen Dank, jetzt funktioniert es bei mir auch.

Ich werde demnächst mal versuchen, es mit nur einer Masterseite umzusetzen, klingt alles logisch was du schreibst.

Danke nochmal.

Gruß,
Axel

Benutzeravatar
Mirobo
Beiträge: 32
Registriert: 24.02.2015, 08:42

Objekt "Text" auf der 2. Masterseite aus dem Code der 1. Masterseite heraus ansprechen

Beitrag von Mirobo » 09.09.2015, 10:26

Hallo Armine,
habe für meinen Palettenschein genau das benötigt, was Du hier im Ausfertigungen.pdf anwendest. Habe es auch nach Deinem Vorbild bei mir eingebaut. Allerdings eine Sache klappt nicht. Das Erzwingen des Druckbuttons funktioniert nicht sofort. Wenn man Das Formular ausgefüllt hat und dann woanders druckt als über dem Button greift die eingebaute Fehlermeldung nicht, erst beim zweiten Versuch wird der Druck außerhalb des Druckbuttons verhindert und abgebrochen. Gibts da irgendwie ne Lösung das es von Anfang an klappt. über einen Tipp wäre ich sehr dankbar!
Gruss
Michael
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Antworten