Autor Thema: NotesRichTextStyle  (Gelesen 3141 mal)

Offline DaemoN

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
  • Shiny!
    • [KOEBS] 4.0 - Männerhort und Freundschaft seit Jahrzehnten
NotesRichTextStyle
« am: 11.04.13 - 11:16:10 »
hallo leute! eigentlich ist NotesRichTextStyle doch total simpel - und trotzdem bekomm ich es einfach nicht hin in einem richtextitem einzelne texte fett zu bekommen. es wird nur ein einziges mal ausgeführt, bei der ersten überschrift. der rest wird ignoriert. warum? was mach ich falsch? versteh ich nicht :-(

hier mein code:

Code
Sub textbefuellen(doc as NotesDocument)

Dim rtitm as NotesRichTextItem
Dim rtstyle As NotesRichTextStyle

Set rtitm = doc.Getfirstitem(Feld)
Set rtstyle = sess.Createrichtextstyle()

'Überschrift fett:
rtstyle.Bold = True
Call rtitm.Appendstyle(rtstyle)
Call rtitm.Appendtext(ueberschr)

'weiter mit normalem Text:
rtstyle.Bold = False				
Call rtitm.Appendstyle(rtstyle)
Call rtitm.Appendtext(text)
Call rtitm.Addnewline(1)

Call doc.Save(True, False)

End Sub

das ist eine sub und wird in einer schleife immer wieder aufgerufen, das dokument wird nach erweiterung des richtextitems gespeichert.
ich erwarte mir dass der text von ueberschr fett ist, und text ganz normal. tatsächlich ist es aber so dass nur die erste überschrift fett gestylt wird, alle nachfolgenden überschriften werden ganz normal eingefügt.

hat jemand eine idee warum beim nächsten aufruf dieser sub das rtstyle.Bold = True vor befüllen der überschrift einfach ignoriert wird? die dimensionierung von rtitm und rtstyle wird ebenfalls bei jedem neuen subaufruf gemacht und damit sollte eigentlich alles wieder wie beim ersten mal ablaufen.

bin mit meiner weisheit leider am ende. selbst nach über 13 jahren lotusscript programmierung kann notes immer wieder überraschen. leider nicht immer im positiven sinne ;) :D
« Letzte Änderung: 11.04.13 - 11:22:20 von DaemoN »
Eins, zwei oder drei, letzte Chance vorbei! Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht ...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: NotesRichTextStyle
« Antwort #1 am: 11.04.13 - 11:36:23 »
Setze mal testweise einen Zeilenumbruch vor die Überschrift

'Überschrift fett:
rtstyle.Bold = True
Call rtitm.Appendstyle(rtstyle)
Call rtitm.AddNewLine (1)
Call rtitm.Appendtext(ueberschr)

Ab irgendeiner 8er Version ist mir aufgefallen, dass der neue Style erst nach dem nächsten Zeilenumbruch kommt und sorge mittlerweile immer dazu, dass ich den Style-Wechsel vor einem Zeilenumbruch einfüge.

Ist nur eine gefühlte Wahrheit, aber einen Test wert ...

Offline DaemoN

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
  • Shiny!
    • [KOEBS] 4.0 - Männerhort und Freundschaft seit Jahrzehnten
Re: NotesRichTextStyle
« Antwort #2 am: 11.04.13 - 13:13:03 »
Danke für dein Feedback. Hat leider nicht funktioniert. Nach wie vor wird nur die erste Überschrift fett geschrieben. Selbst die Auslagerung der Styleänderung in eine Sub hat nicht geklappt. Habe sogar das Beispiel aus der Notes-Hilfe verwendet. Ohne Erfolg. Auch mit einem zweiten rtstyle2 wollen die nachfolgenden Überschriften nicht fett werden. Keine Ahnung, entweder man kann den Style nur einmal pro RT Item ändern oder irgendwo ist der Wurm drin aber der Script ist eh so simpel ... Dann eben ohne fette Überschrift. Schade aber ich hab da jetzt schon 2 Stunden rumprobiert. Hab keine Lust mehr :D

Trotzdem danke für die Hilfe!
« Letzte Änderung: 11.04.13 - 13:15:03 von DaemoN »
Eins, zwei oder drei, letzte Chance vorbei! Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht ...

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.885
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: NotesRichTextStyle
« Antwort #3 am: 11.04.13 - 13:15:15 »
Nach das mal mit zwei Styles: einen bold einen nicht und Verwende die abwechselnd... Das sollte gehen
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline DaemoN

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
  • Shiny!
    • [KOEBS] 4.0 - Männerhort und Freundschaft seit Jahrzehnten
Re: NotesRichTextStyle
« Antwort #4 am: 11.04.13 - 13:19:57 »
Hab ich auch schon versucht. Mit rtstylefett für die Überschrift und rtstyle für den normalen Text. Wird ebenso ignoriert. Also mehr geht echt nicht :-)

Code
Sub textbefuellen(doc as NotesDocument)

Dim rtitm as NotesRichTextItem
Dim rtstyle As NotesRichTextStyle
Dim rtstylefett as NotesRichTextStyle

Set rtitm = doc.Getfirstitem(Feld)
Set rtstylefett = sess.Createrichtextstyle()

'Überschrift fett:
rtstylefett.Bold = True
Call rtitm.Appendstyle(rtstylefett)
Call rtitm.Addnewline(1)
Call rtitm.Appendtext(ueberschr)
Call rtitm.Addnewline(1)

'weiter mit normalem Text:
rtstylefett.Bold = False				
Call rtitm.Appendstyle(rtstylefett)

Set rtstyle = sess.Createrichtextstyle()
Call rtitm.Appendstyle(rtstyle)
Call rtitm.Addnewline(1)
Call rtitm.Appendtext(text)
Call rtitm.Addnewline(1)

Call doc.Save(True, False)

End Sub
« Letzte Änderung: 11.04.13 - 13:26:56 von DaemoN »
Eins, zwei oder drei, letzte Chance vorbei! Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht ...

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: NotesRichTextStyle
« Antwort #5 am: 11.04.13 - 14:15:25 »
Du  musst dann die beiden Styles auch verwenden und in der richtigen Reihenfolge belegen, etwa so:

Sub textbefuellen(doc as NotesDocument)

Dim rtitm as NotesRichTextItem
Dim rtstyle As NotesRichTextStyle
Dim rtstylefett as NotesRichTextStyle

Set rtitm = doc.Getfirstitem(Feld)

Set rtstylefett = sess.Createrichtextstyle()
rtstylefett.Bold = True

Set rtstyle = sess.Createrichtextstyle()
rtstyle.Bold = False

'Überschrift fett:
Call rtitm.Appendstyle(rtstylefett)
Call rtitm.Addnewline(1)
Call rtitm.Appendtext(ueberschr)
Call rtitm.Addnewline(1)

'weiter mit normalem Text:
Call rtitm.Appendstyle(rtstyle)
Call rtitm.Addnewline(1)
Call rtitm.Appendtext(text)
Call rtitm.Addnewline(1)

Call doc.Save(True, False)

End Sub


EDIT: Grundsätzlich funktioniert das aber, ich verwende das häufig. Also, nicht aufgeben :)
« Letzte Änderung: 11.04.13 - 14:18:22 von Peter Klett »

Offline it898ur

  • Senior Mitglied
  • ****
  • Beiträge: 478
Re: NotesRichTextStyle
« Antwort #6 am: 11.04.13 - 14:23:59 »
Eventuell gibt es hier Probleme beim Anfügen des neuen Styles an das bereits bestehende RT-Feld.

Eine einfache Umgehung wäre im Backend ein temporäres Dokument anzulegen, dort ein neues RT-Item zu erstellen und die formatierten Texte anzufügen. Zu guter letzt das neue RT-Item an das bestehende RT-Item im eigentlichen Dokument anhängen.

Gruß

André

Offline DaemoN

  • Frischling
  • *
  • Beiträge: 40
  • Geschlecht: Männlich
  • Shiny!
    • [KOEBS] 4.0 - Männerhort und Freundschaft seit Jahrzehnten
Re: NotesRichTextStyle
« Antwort #7 am: 11.04.13 - 15:32:43 »
Danke für euer Feedback und Peter du hast Recht, grundsätzlich funktioniert es. Hab es grad mal in einem neuen Agent ausprobiert und da klappt es einwandfrei. Muss jetzt schauen was im anderen Agent schief läuft dass es nur für die erste Überschrift ausgeführt wird.

Wie immer super Support hier! :)
Eins, zwei oder drei, letzte Chance vorbei! Ob ihr wirklich richtig steht, seht ihr wenn das Licht angeht ...

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz