Autor Thema: RT-Feld weigert sich den Style des ersten Eintrags anzunehmen  (Gelesen 1467 mal)

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Hallo,

ich kämpfe gerade mit einem RT-Feld, das sich standhaft weigert für den ersten Wert einen richtextstyle anzunehmen.

Code
	Set dummyrt = doc.Getfirstitem("licabgl_differenz")
	Set swview2 = db.GetView("Software")
	For i = 0 To (UBound(swliste)-1)
		Set swcoll = swview2.GetAllDocumentsByKey(swliste(i))
		str_swliste = str_swliste & CStr(swliste(i)) & Chr(13)
		str_installationen = str_installationen & CStr(swcoll.Count) & Chr(13)
		str_lizenzen = str_lizenzen & CStr(dummylic) & Chr(13)
		str_differenz = str_differenz & CStr((dummylic - swcoll.Count)) & Chr(13)
		If ((dummylic-swcoll.count) <0) Then
			richStyle.NotesColor = COLOR_RED
		Else
			richStyle.NotesColor = COLOR_BLACK
		End If
		Call dummyrt.AppendStyle(richStyle)
		Call dummyrt.AppendText(CStr(dummylic-swcoll.Count))
		Call dummyrt.AddNewline(1)
	Next
Die Differenz des ersten Wertes (siehe Bild RT-Feld) ist eindeutig negativ. Mit dem Debugger habe ich auch verfolgt, dass richStyle.NotesColor auf COLOR_RED gesetzt wird.

Trotzdem wird der Wert in Schwarz angezeigt.

Per NotesPeek habe ich das RT-Feld angeschaut (siehe Bild Notespeek) und hier wundert mich, dass der erste Wert zwar als String "-1" angebenen wird, aber weder die Parameter Begin-Text, Color und End-Text gesetzt sind, wie bei den folgenden Werten.

Ich hab mir etliche Beispiele und die Designer-Hilfe durchgelesen. Finde aber keinen Hinweis, dass ich das RT-Feld irgendwie initialisieren muss, sondern aus den Infos die ich mir herausgezogen habe, kann ich da einfach anfangen reinzuschreiben.

Was mach ich da falsch?

Bye,
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Ich habe die Erfahrung gemacht, dass ein Style nach einem Zeilenumbruch immer funktioniert, sonst nicht wirklich zuverlässig. Deshalb baue ich meine Routinen so, dass ich erst den Style setze und dann den Zeilenumbruch (zum Glück brauchte ich noch keinen Style-Wechsel innerhalb einer Zeile).

Ich würde in Deinem Fall also im Richtextfeld die erste Zeile leer lassen, so kannst Du den Style vor dem Zeilenumbruch platzieren. Dieses  Phänomen tauchte m.W. erst in einer späteren Version von Notes auf.

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Ja da gibts einen Bug.Der Kommentar im Quellcode sagt eigentlich alles ;)
Code
If newStyle <> currStyle Then
	currStyle = newStyle
	Call contentItem.Appendrtitem(emptyRt) 
	' 13.11.12/RPr: Durch einen Bug (?) in Notes muss immer erst irgendetwas zum RT-Item hinzugefügt werden
	' bevor man appendStyle aufruft (liegt warhscheinlich daran, weil das Dok zuvor gespeichert wurden)
	' contentItem NOTHING setzen, update/compact all das hab ich probiert. Ebenso ein appendText("") und addNewLine(0)
	' Erst wenn irgendwas hinzugefügt wird, geht der Style
	Call contentItem.Appendstyle(styles(newStyle))
End If

in meinem Fall füge ich ein leeres RT Item hinzu (zugegeben nicht effizient aber was will man machen....)

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline rambrand

  • Senior Mitglied
  • ****
  • Beiträge: 469
  • Geschlecht: Männlich
Danke Peter und Roland, jetzt funktioniert es.

Bye,
Markus
Domino/Notes ab 4.6 aktuell 10.1FP3
Traveler 10.0.1FP1
PHP-Entwickler
Domino/Notes-Entwickler (Hobby)
Consultant (Informationssicherheit & Datenschutz)

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz