Dynamische Textfelder - komische verschiebung

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
Antworten
Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Dynamische Textfelder - komische verschiebung

Beitrag von Niocron » 11.11.2014, 10:32

Hey Community,
ich versuche momentan bei einem Textfeld nur den Wert zu formatieren (kursiv,grau,vAlign) um ein Textfeld bauen zu können, dass ursprünglich einen kleinen Infotext beinhaltet, der nach Eintritt ins Feld überschrieben wird und die Formatierung wieder auf schwarz,nicht kursiv zurückgeht.

So nun zu meinen 2 Fragen:
1. kann ich nur den wert formatieren? tfe.font.fill.color.value überschreibt (manchmal?!) auf die formatierung von der caption

2. ich hab mal einen versuch geschrieben...jedoch wird beim enter event die beschriftung ganz leicht nach oben versetzt...weiß wer warum ?!?

zu 2. hab ich jetzt nach einzelnen durchgehen der formatierungselemente gemerkt, dass dieses leichte verschieben durch die änderung der schriftgröße
xfa.resolveNode(node).font.size = "7pt";
hervorgerufen wird, obwohl die schriftgröße der beschriftung natürlich gleich bleibt

im anhang ein testdokument

danke im vorraus

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

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Dynamische Textfelder - komische verschiebung

Beitrag von radzmar » 11.11.2014, 20:51

Für dein Vorhaben gibt es bereits eine schöne Lösung.
Schaum mal hier: http://adobelivecycledesignercookbookby ... ay-of.html

Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Dynamische Textfelder - komische verschiebung

Beitrag von Niocron » 12.11.2014, 09:28

hey danke für die antwort.
bin mir nur nich ganz sicher ob ich damit jetzt besser fahre, da meine lösung zentral angesteuert wird....und um einiges schneller implementierbar ist. und ich brauch das bei jedem 3. textfeld etwa^^

außerdem ist bei dieser lösung das problem mit der beschriftung auch nicht gelöst, die textfelder haben nur einfach keine beschriftung^^ so kann mans natürlich auch machen

deßhalb meine frage:
welchen vorteil bringt es des ghosttext mit dieser nullpictureclausel umzusetzen anstatt einfach den text reinzuschreiben?

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Dynamische Textfelder - komische verschiebung

Beitrag von radzmar » 12.11.2014, 20:24

Das Anzeigemuster für null-Werte belegt keinen Platz im Data DOM, was bedeutet, dass man den Hinweistext nicht unnötigerweise mit den Formulardaten exportiert.
Bei vielen Feldern und unterschiedlich langen Hinweisen, hätte das sonst schon ein paar KB mehr zur Folge.
Un wenn die Daten anderswo weiterverarbeitet werden, muss sich niemand mit überflüssigen Werten rumplagen.

Du kannst natürlich auch bei deiner Lösung bleiben.
Diese kannst Du aber auch auf eine einzige Funktion eindampfen.
Auf die resolveNode()-Methode solltest Du verzichten, denn die ist relativ langsam und kann in umfangreichen Formularen eine gefühlte Ewigkeit brauchen.
Wenn Die eine Funktion aufrufst, kannst du das Objekt aus dem heraus Du die Funktion ausführt mit this an die Funktion übergeben.
Dadurch kannst Du innerhalb der Funktion z.B. die Nodes des Objekts direkt ansprechen und brauchst resolveNode() gar nicht erst!
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Niocron
Beiträge: 7
Registriert: 12.09.2014, 12:41

Dynamische Textfelder - komische verschiebung

Beitrag von Niocron » 13.11.2014, 10:33

okay ich muss zugeben deine variante ist weitaus hübscher *schäm*

wobei ich nicht verstehe was du mit

Code: Alles auswählen

function setTextStyle (vNode) {
	var dummyText = "Dieses Feld expandiert nach Verlassen automatisch.",
		vFont = vNode.font,
		vCap = vNode.caption;
		
	if (vNode.isNull) {
		vNode.rawValue = dummyText;
		vFont.fill.color.value = "153,153,153";
		vFont.posture="italic";
		vFont.size = "5pt";
	} else {
		if (vNode.rawValue === dummyText) {
			vNode.rawValue = null;
		} else {
			//vNode.rawValue = vNode.rawValue;
		}
		vFont.fill.color.value = "0,0,0";
		vFont.posture = "normal";
		vFont.size = "7pt";
	}
	vCap.font.fill.color.value = "0,0,0";
	//vCap.font.fill.color.value = "top";
}
den 2 von mir auskommentierten zeilen erreichen willst?
den rest übernehm ich aber liebend gerne...danke dafür ;)

Benutzeravatar
radzmar
Beiträge: 961
Registriert: 26.10.2011, 10:18

Dynamische Textfelder - komische verschiebung

Beitrag von radzmar » 15.11.2014, 13:40

Hmmm, da hab ich wohl die falsche, unfertige PDF hochgeladen.

Code: Alles auswählen

function setTextStyle (vNode) {
	var dummyText = "Dieses Feld expandiert nach Verlassen automatisch.",
		vFont = vNode.font,
		vCap = vNode.caption;		
	if (vNode.isNull) {
		vNode.rawValue = dummyText;
		vFont.fill.color.value = "153,153,153";
		vFont.posture="italic";
		vFont.size = "5pt";
	} else {
		if (vNode.rawValue === dummyText) {
			vNode.rawValue = null;
		}
		vFont.fill.color.value = "0,0,0";
		vFont.posture = "normal";
		vFont.size = "7pt";
	}
	vCap.font.fill.color.value = "0,0,0";
}

Antworten