Domino 9 und frühere Versionen > ND8: Entwicklung

RT-Feld weigert sich den Style des ersten Eintrags anzunehmen

(1/1)

rambrand:
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

--- Ende Code ---
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

Peter Klett:
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.

pram:
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
--- Ende Code ---

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

Gruß
Roland

rambrand:
Danke Peter und Roland, jetzt funktioniert es.

Bye,
Markus

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln