Schleife für ein Objekt auf mehreren Seiten

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Jonny252
Beiträge: 21
Registriert: 03.12.2009, 15:40

Schleife für ein Objekt auf mehreren Seiten

Beitrag von Jonny252 » 29.08.2010, 21:06

Guten Abend,
mich beschäftigt schon den ganzen Tag ein Problem. Ich habe ein Formular mit mehreren Seiten. Auf Allen ist ein ganz normaler Text. Dieser Text soll per Script ausgeblendet werden. Momentan habe ich entsprechend für jede Seite die Anweisung:

Code: Alles auswählen

Formular1.SeiteEins.Text1.presence="invisible";
Nicht sehr elegant, aber es funktioniert. Allerdings nur solange ich keine Instancen von Seiten erzeuge.
Nun möchte ich einfach per Schleife alle Seiten durchlaufen und das Textobjekt ausblenden. Leider seh ich momentan die einfache Lösung nicht. Hier im Forum gibt es ja einige Beispiel wie z.B. alle Felder gesperrt werden, aber ich schaffe einfach den Sprung zum Ansprechen eines Objektes auf allen Seiten nicht. Ich hoffe Ihr könnt mir einen kleinen Tip geben.
Anbei ein Testformular. Sobald neue Instanzen dabei sind, wird auf diesen der Text nicht entfernt.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Schleife für ein Objekt auf mehreren Seiten

Beitrag von nele_sonntag » 30.08.2010, 08:48

Hallo jonny252,

es funktioniert mit den Skripten aus der Mustervorlage:

http://acronaut.de/forum44/1407.html

Du musst lediglich Dein statisches Textfeld durch ein "normales" Textfeld ersetzen. Dieses kannst Du ja auf "ohne Rand" und schreibgeschützt setzen, wenn Du ähnliche Eigenschaften, wie bei einem statischen TF haben möchtest.

Dann wird alles ausgeblendet, die Buttons allerdings auch. Weiß nicht, ob Du das möchtest?

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

Jonny252
Beiträge: 21
Registriert: 03.12.2009, 15:40

Schleife für ein Objekt auf mehreren Seiten

Beitrag von Jonny252 » 31.08.2010, 12:24

Hallo Nele,
vielen Dank für deine Antwort. Das Script habe ich schon gefunden, aber eben weil ich ein statisches Textfeld habe, bisher ausgeschlossen. Dass die Buttons verschwinden ist nicht gewollt, könnte ich aber mit einer if-Anweisung umgehen.
Eigentlich möchte ich Seite für Seite durchgehen und den statischen Text löschen. Dafür würde sich ja eine Schleife anbieten, allerdings fehlt mir einfach der Punkt mit den Seiten.
So ungefähr:

Code: Alles auswählen

for(var i = 0, i<Dokumentlänge, i++) {
   Seite i.Text1.presence="invisible";
}
Und genau an diesem Seite i scheiter ich momentan.

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Schleife für ein Objekt auf mehreren Seiten

Beitrag von nele_sonntag » 31.08.2010, 13:21

Die kompletten Seiten durchläufst Du mit:

Code: Alles auswählen

for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) 
{ 
Anweisungsblock;
}
Bedeutet ja für die FOR-Schleife. Definiere Variable nPageCount, setze diese auf 0, damit die Schleife auf der 1. Seite beginnt und führe die Schleife solang aus, bis nPageCount kleiner ist als die gesamte Seitenzahl.

Kleiner deswegen. Wenn Dein PDF 3 Seiten hat, sprichst Du die 1. Seite mit 0 an, die 2. mit 1 ud die 3. mit 2, da der LCD bei der Seitenzählung  immer bei 0 beginnt.

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

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Schleife für ein Objekt auf mehreren Seiten

Beitrag von nele_sonntag » 31.08.2010, 13:22

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

Jonny252
Beiträge: 21
Registriert: 03.12.2009, 15:40

Schleife für ein Objekt auf mehreren Seiten

Beitrag von Jonny252 » 31.08.2010, 14:51

Hier die Lösung:

Code: Alles auswählen

for(var nPageCount = 0 ; nPageCount < xfa.host.numPages; nPageCount++)
{
	var oText = xfa.layout.pageContent(nPageCount,"draw");
	var nodesLength = oText.length;
	for (var i = 0; i<nodesLength;i++){
		var oItem = oText.item(i);
		if(oItem.name == "Text1") {
			oItem.presence = "invisible";
			}
	}
}

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Schleife für ein Objekt auf mehreren Seiten

Beitrag von nele_sonntag » 31.08.2010, 16:32

Ja, super. Perfekte Teamarbeit :-)
LG Mandy

Jonny252
Beiträge: 21
Registriert: 03.12.2009, 15:40

Schleife für ein Objekt auf mehreren Seiten

Beitrag von Jonny252 » 02.09.2010, 08:48

Ja, super. Vielen Dank.

Antworten