Abhängige Zeilen Formatierung auf Datenband
Michael Hubenschmid
Hallo zusammen!Wie kann ich auf einem Dastenband deklarieren, das wenn es sich um eine Stücklistenkomponentenzeile handelt
(DocumentRow("TreeType") = "I") das dann alle Felder im Band kursiv dargestellt werden.
Vilen Dank für die Hilfe.
Manuel Marhold
Hi Michaeldu kannst die Property "Style" über das Generate-Script oder über die DataBindings zur Laufzeit anpassen.
IIf(DocumentRow("TreeType") = "I","StyleKursiv","StyleNormal")
Gruß
Manuel
Michael Hubenschmid
Hallo ManuelKann ich auch nur das Kursiv Property ansprechen auf diese Art.
Habe nämlich keine einheitlichen Sytles bei diesem Kunden.
MFG
Michael
Manuel Marhold
Hi Michaeldu kannst auch die Font übersteuern.
Wie der Befehl da genau aussieht weiss ich nicht, aber was mit New System..Font(FontFamily, Bold, Italic, Underline)
müsstest du mal in der VB.Net oder C#.Net-Referenz schauen.
Das kannst du dann im generatescript und ich glaube ich in den Databinding machen,
Im generatescript wäre das Detail1.Font = New System...Font()
Aber ich weiss gerade nicht auswendig, ob da für ein geasmtes Databand hinterlegt werden kann.
Gruß
manuel
Elisabeth Schluga
Hallo zusammen,habe ein ähnliches Problem: Und zwar müsste ich wenn bestimmte Wörter im Text vorkommen, diese Wörter dünn drucken.
Das Textfeld ist generell auf fett eingestellt.
Ist das auch möglich?
Dass innerhalb eines Textfeldes formatiert werden kann?
Danke
Elisabeth
Manuel Marhold
Hi Elisabeth,das müsste gehen, wenn du eine AdvancedTextBox (ATB) nimmst und den Wert über das GenerateScript (da wäre es einfacher) füllst. In der ATB kann man html-tags nutzen, also wäre das dann z.B. xxxx
Einsetzen kannste das über die replace-Funktion von VB
Gruß
manuel
Elisabeth Schluga
hmm danke für den Tipp,tu mir dabei allerdings schwer.
Ich verwende keinen Fixtext sondern bereits ein Script, welches sich den Text zusammenbaut.
Was meinst du mit Replace-Funktion von VB?
Ich bin leider keine VB-Programmierin, und weiß leider nicht worauf du hinauswillst.
Gibt es vielleicht irgendwo ein Codebeispiel wo man sich das abgucken kann?
Herzlichen Dank
Elisabeth
Manuel Marhold
Hi Elisabeth,wenn du deinen fertigen Text aus dem Generate Script hast (z.B. in der Variable myText), dann gehst du danach wie folgt vor:
MyText = Replace(MyText,was,"" & was & "")
als Beispiel:
MyText = Replace(MyText,"Bunt","Bunt")
Hier würde er als in dem fertigen Text (MyText) alle Vorkommnissen von "Bunt" durch "Bunt" ersetzt. Dieses "" müsste die ATB dann wieder umsetzen.
Gruß
Manuel
Elisabeth Schluga
:-) ich kenn mich noch immer nicht aus.Also ich habe soeben ein ATB mit der Bezeichnung AText1.
In diesem Feld habe unter GenerateScript folgendes im Editor:
If(DocumentRow("RowRowItems.U_DomArt")= 1) Then
AText1.Value= DocumentRow("DescML")+ vbcrlf + LD.MultiLine(GetData("B1_Data.BusinessPartner.U_Domain"))
Else
AText1.Value= DocumentRow("DescML")
End If
=> Bedeutet falls ein Artikel in einem benutzerdef. Feld eine Kennung hat wird der Text zusätzlich unter dem Geschäftspartner hinterlegt dazuangedruckt!
Mein Ziel wäre es nun alles was unter
GetData("B1_Data.BusinessPartner.U_Domain") zurückkommt
dünn/normal zu drucken, da das ATB generell unter Font Bold eingestellt hat.
Da habe ich mich wohl nicht eindeutig ausgedrückt.
Kann man mir trotzdem helfen?
Oder kann ich das Script noch irgendwie erweitern?
Im Generate Script werden keine tags erkannt... bzw. habe ich das bis dato noch nicht geschafft.
LG
Manuel Marhold
Hi Elisabeth,du willst alles, was nach(!) dem "LD.MultiLine(GetData("B1_Data.BusinessPartner.U_Domain"))" kommt dünn schreiben?
hmm dann müsstest du eig. "nur" folgendes machen:
If(DocumentRow("RowRowItems.U_DomArt")= 1) Then
AText1.Value= "" & DocumentRow("DescML")+ vbcrlf + LD.MultiLine(GetData("B1_Data.BusinessPartner.U_Domain")) & ""
Else
AText1.Value= "" & DocumentRow("DescML") & ""
End If
und AText1 nicht auf bold stellen, sondern auf normal.
Dann müsste er den obererb Bereich Fett drucken, den Rest normal.
Gruß
ManuelElisabeth Schluga
Hallo,
ja, das ist genau was ich will! Sieht auch einfacher aus, als ich dachte.
Habe das natürlich sofort ausprobiert - nur leider funktioniert das nicht!
Wenn ich das im "Generate Script"-Bereich einfüge, dann bekomme ich die Fehlermeldungen lt. Anhang. "" wird dort nicht erkannt.
Nehme ich dieses in eckiger Klammer raus, bekomme ich nur die Meldungen in rot. Das "" usw. wird nicht erkannt.
Ich habe auch schon versucht das im Texteditor zu machen: Dann wird nur "" ausgegeben und der Rest bleibt weg .. was ja eigentlich logisch ist, weil das Script als Text übernommen wird.
Was kann ich noch versuchen?
Trotzdem herzlichen Dank
Elisabeth
Attachment
[url=http://www.coresystems.ch/wp-content/../wp-content/forum-image-uploads/elisabethpolzhofer/Problem AdvancedText.bmp]Problem AdvancedText.bmp[/url]Manuel Marhold
Hi Elisabeth,
das "" darf da gar nicht rein, ich hatte vergessen den tag zu schließen.
Hast du das "" mal komplett entfernt?
Gruß
ManuelElisabeth Schluga
Ja habe ich komplett entfernt!
dann kommen die 2 Meldungen dich im Screenshot rot markiert hatte!
Die Tags werden anscheinend nicht erkannt!
LGManuel Marhold
Hi Elisabeth,
versuche mal:
If(DocumentRow("RowRowItems.U_DomArt")= 1) Then
AText1.Text= "" & DocumentRow("DescML")+ vbcrlf + LD.MultiLine(GetData("B1_Data.BusinessPartner.U_Domain")) & ""
Else
AText1.Text= "" & DocumentRow("DescML") & ""
End If
Falls dies wieder einen Fehler auftritt: hast du noch mehr in dem GenerateScript stehen? Poste sonst nochmal den gesamten Inhalt des GenerateScript.
Gruß
manuelElisabeth Schluga
Hallo Manuel,
das ist der gesamte Inhalt des Generate Script!
Ich bin jetz aber nochmal alles schrittweise durchgegangen.
Das Problem ist: das AdvancedTextField erkennt LD.Mulitline.. usw. gar nicht! Das heißt das Advanced Textfeld hat immer nur eine Zeile und das was ich dann eigentlich erst formatieren möchte kommt gar nicht mehr.
Was kann man da machen? Kann ich das umgehen?
Ich habe nun nochmal den StandardBericht (DINLayout) herangezogen und 2 Textfelder drinn gemacht ohne Formatierung!
Das Advanced Textfeld kann mit dem selben GenerateScript nur das Ergebnis von DocumentRow("DescML") anzeigen. Das normale Textfeld zeigt mir alles sauber, so wie ich es wünsche.
Erst wenn das funktioniert, könnte man über die Formatierung nachdenken.
Die beschriebenen Fehler lt. Screenshot kommen in unregelmäßigen Abständen .. das habe ich noch nicht nachvollziehen können, wann das wirklich auftritt.
Muss ich mein Vorhaben jetz aufgeben?Manuel Marhold
Hi Elisabeth,
mist, das hätte mir auffallen müssen.
Den Zeilenumbruch musst du bei einer ATB ebenfalls in html-code erstellen, also mit "
".
Hier nochmal der neue Code:
If(DocumentRow("RowRowItems.U_DomArt")= 1) Then
AText1.Text= "" & DocumentRow("DescML")+ "
" + GetData("B1_Data.BusinessPartner.U_Domain").Replace(vbcrlf,"
") & ""
Else
AText1.Text= "" & DocumentRow("DescML") & ""
End If
Das ".Replace(vbcrlf,"
")" ersetzt in einem Text, der aus dem UDF "U_Domain" kommt alle vbcrlf durch den html-Zeilenumbruch "
". Hier muss du noch schauen, wie der Text in dem UDF abgespeichert wird. Der Coresuite-Editor speichert die Zeileumbrüche, wenn sich das nicht geändert hat, schon im Format "
" ab. Wenn du den SAP-Editr nutzt müsste ein "Chr(10)" anstatt des "vbcrlf" reichen. Das musste dann halt testen. Also einmal mit dem "vbcrlf", einmal mit "Chr(10)".
Gruß
ManuelElisabeth Schluga
Hallo Manuel,
Danke!
Jetz kommen wir der Sache schon näher... Nein eigentlich funktionierts jetzt schon. :-? Das einzige Problem das ich noch hatte ist, dass das Replace des Zeilenumbruch nicht funktioniert. Dies erwirkte keinen Effekt:
GetData("B1_Data.BusinessPartner.U_Domain").Replace(vbcrlf,"
")
Der Text blieb trotzdem in einer Zeile stehen.
Ich habe nun den Text so geändert, dass ich als Trennzeichen den Beistrich verwende. Dann habe ich die Codezeile auf
GetData("B1_Data.BusinessPartner.U_Domain").Replace(",","
") abgeändert und bereits den gewünschten Effekt erzielt.
Weißt du vielleicht noch woran das liegen könnte? Ansonsten werde ich einfach eine Textänderung mit Trennzeichen Beistrich veranlassen und dies auch beim Kunden umsetzen.
HERZLICHEN DANK - Ich habe wieder viel gelernt!Manuel Marhold
Hi Elisabeth,
wie oben bereits geschrieben liegt es daran, wie der Zeilenumbruch erstellt wird. Änder das "vbcrfl" mal in "Chr(10)" ab.
Gruß
ManuelElisabeth Schluga
:oops: nö is noch nicht das Richtige.
Aber solang es mit allen anderen Zeichen funktioniert, gibts ja eine Lösung!
Werde euch auf alle Fälle weiterempfehlen! Und danke für die rasche Hilfe!Manuel Marhold
Hi Elisabeth,
hmm dann könnte das noch "Chr(13) & Chr(10)" sein, wobei das eigentlich durch das "vbcrfl" dargestellt wird. Du muss das ganze nat. ohne die "" eingeben.
hehe, gehöre nicht zum team von coresystems.. aber es wäre trotzdem gerechtfertigt.
Gruß
Manuel
0
Please sign in to leave a comment.
Comments
0 comments