Seite 1 von 2
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 09:59
von NTCNC9
Hallo Zusammen,
Ich habe in meinem Formular ein dynamisches Bildfeld welches mit einem Demobild gefüllt ist. ich möchte nun sobald der User ein anderes Bild auswählt (change/click Ereignis) das Hinweitexte o.ä. verschwinden? Wie kann man das abfragen?
Viele Grüße und Danke
NTCNC9
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 10:17
von radzmar
Wo werden die Hinweise angezeigt? Separates Textfeld oder in der Beschriftung?
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 10:18
von NTCNC9
In einem separaten textfeld.
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 12:04
von radzmar
Ok,
du brauchst 2 Skripte.
Das erste im initialize:Event des Bildfeldes:
Code: Alles auswählen
if (this.extras.nodes.namedItem("prevImage") === null) {
this.extras.nodes.append(xfa.form.createNode("extras", "prevImage"));
this.extras.prevImage.nodes.append(xfa.form.createNode("integer", "dataLength"));
while (this.extras.prevImage.nodes.length > 0) {
this.extras.prevImage.nodes.remove(this.extras.prevImage.nodes.item(this.extras.prevImage.nodes.length - 1));
}
var newData = xfa.form.createNode("integer", "dataLength");
newData.value = this.value.oneOfChild.value.length;
this.extras.prevImage.nodes.append(newData);
}
Das zweite im change:Event.
Code: Alles auswählen
var prevData = this.extras.prevImage.dataLength.value;
var newData = this.value.oneOfChild.value.length;
this.extras.prevImage.dataLength.value = newData;
if (prevData !== newData) {
TextField1.rawValue = "Es wurde ein neues Bild eingefügt.";
} else {
TextField1.rawValue = "Es wurde dasselbe Bild eingefügt.";
}
Was macht es?
Das erste Skript ermittelt die Datenlänge des Base64-Strings des Bildfeldes und speichert diesem in Extras-Objekt.
Das zweite Skript vergleicht dann die Datenlänge des neu eingefügten Bildes mit der gespeicherten und ändert entsprechend den Inhalt eines Textfeldes.
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 13:57
von NTCNC9
Hey,
Danke dir, funktioniert gut, ganz schön aufwendig. Hätte nicht gedacht das man solche Klimmzüge machen muss.
cheerz
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 15:43
von radzmar
Ja,
bei Bildern kann man leider nicht mit xfa.event.newText mit xfa.event.prevText vergleichen, daher muss das etwas umständlicher gelöst werden.
Aber Hauptsache es geht.
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 16:10
von NTCNC9
Kann man eigentlich Bilddaten aus einem normalen Bildfeld auslesen und in ein anderes Bildfeld einlesen?
Bildfeld auf "change" überprüfen
Verfasst: 05.01.2012, 17:28
von radzmar
Klar.
Code: Alles auswählen
Bildfeld2.value.oneOfChild.value = Bildfeld1.value.oneOfChild.value
Bildfeld auf "change" überprüfen
Verfasst: 31.01.2012, 15:18
von NTCNC9
Hallo,
Anbei einfach mal ne Frage zum Frust ablassen:
Warum heisst das "unsichtbar"-machen von Bildern "invisible" und nicht "hidden"?
"hidden" funktioniert auch aber lässt sich mit "visible" nicht wieder einblenden?
@radzmar:
Das mit dem Bildinhalt verschieben
Bildfeld2.value.oneOfChild.value = Bildfeld1.value.oneOfChild.value
funktioniert leider nicht.
Ich würde gerne von einem statischen Bild dieses Bild auf einer anderen Seite "auftauchen" lassen wenn das entsprechende Optionsfeld aktiviert wurde.
Viele Grüße und Danke

Bildfeld auf "change" überprüfen
Verfasst: 01.02.2012, 20:35
von radzmar
Achso, hatte ich leider nicht erwähnt, dass die zuvor genannte Methode nur klappt, wenn das Bild eingebettet ist.
Wenn es nicht eingebettet ist (empfohlen) geht es aber auch.
Man kopiert einfach die contentType und href-Attribute des Quellbildes auf das andere Bild.
Code: Alles auswählen
Bild2.value.image.contentType = "application/octet-stream"
Bild2.value.image.href = Bild1.value.image.href
Der Vorteil dabei ist, dass beide Bilder dieselbe Bildquelle im PDF-Datenstrom, somit wächst die Dateigröße beim Speichern nicht jedes mal um die Datenmenge des Bildes an.
Die Beispiele anbei verdeutlichen das mal.
Beide sind anfangs 460KB groß, aber während die mit dem verlinkten Bild auch nach dem Kopieren des Bildes nahezu unverändert groß ist (464KB), ist die mit dem eingebetteten Bild schon merklich angeschwollen (488KB).