Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Jürgen Schomann am 24.04.14 - 18:09:48

Titel: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: Jürgen Schomann am 24.04.14 - 18:09:48
Ich habe folgenden Code:

Code
	Dim session As New NotesSession
	Dim dbThis As NotesDatabase
	Dim dc As NotesDocumentCollection
	Dim doc As NotesDocument
	Dim rti As NotesRichTextItem
	Dim rtNav As NotesRichTextNavigator
	
	Set dbThis = session.CurrentDatabase
	Set dc = dbThis.UnprocessedDocuments
	Set doc = dc.GetFirstDocument
	Set rti = doc.GetFirstItem("Body")
	Set rtNav = rti.CreateNavigator
	If rtNav.FindNthElement(RTELEM_TYPE_TEXTPARAGRAPH, 2) Then
		Call rti.BeginInsert(rtNav)
		'Call rti.AddNewLine(1)
		Call rti.AddPageBreak		'Hier kommt die Fehlermeldung 'Method is not available'
		Call rti.EndInsert
		Call doc.Save(True, False)
	End If

Wenn ich diesen abarbeite kommt oben als Kommentar angegebene Fehlermeldung. Wenn ich statt dessen die auskommentierte Zeile mit AddNewLine verwende., läuft es richtig.
Die ist nur ein stark abgerüsteter Test. Lt. Designer-Hilfe kann aber auch bei AddPageBreak der Einfügepunkt über BeginInsert festgelegt werden.
Was ist daran falsch?
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: Tode am 25.04.14 - 09:14:18
Hmmm... Das hilft Dir jetzt nix, aber ich kann das in meiner Mailfile 1:1 nachvollziehen (Notes 9.0.1)... Nur erklären kann ich es mir aktuell nicht.

Hier meine Tests (die Du sicher auch schon alle gemacht hast, nur für den nächsten, der sich das anschauen will):

- Ohne das "BeginInsert" kommt die Meldung nicht
- Ein "AppendText" nach dem "BeginInsert" setzt den Text an die erwartete Stelle vor dem 2. Text- Paragraph

Da es definitiv in der Hilfe anders steht, würde ich das als Bug sehen. Auch Google weiss dazu scheinbar nix
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: Peter Klett am 25.04.14 - 09:28:29
Nur mal so als Idee, ohne es im Richtext ausprobiert zu haben:

AddPageBreak soll doch einen Seitenumbruch einfügen, hast Du mal

AppendText (Chr (12))

ausprobiert? Chr (12) ist ja ein Seitenumbruch ...  (im Textfeld mit Export nach Word funktioniert das jedenfalls)
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: Jürgen Schomann am 25.04.14 - 16:05:35
Vielen Dank für eure Hinweise.
Chr(12) bringt nur ein Sonderzeichen. Man wird wohl warten müssen bis jemand das bei IBM merkt und behebt.
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: pram am 25.04.14 - 17:37:00
Soweit ich mich noch erinnern kann, gibt es keine "Seitenumbruch-Objekte" im Richtext.
Es wird also technisch gesehen kein Seitenumbruch "angefügt", sondern lediglich der letzte Absatz mit dem Attribut versehen, "Mach bitte nach mir einen Seitenumbruch"
Wenn das RT Feld noch leer ist, geht das halt nicht.

Gruß
Roland
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: Jürgen Schomann am 25.04.14 - 18:19:54
Hallo Roland, deine Antwort verstehe ich nicht.
1. Das Rich-Text-Feld in meinem Test ist nicht leer und enthält mehrere Absätze
2. Lt. Designer-Hilfe soll man auch einen Seitenumbruch mir BeginInsert positionieren können
3. Ohne positionieren geht der Seitenumbruch natürlich immer ans Ende, aber das will ich ja nicht
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: koehlerbv am 25.04.14 - 23:24:32
Das betrifft auch frühere Versionen (7.0.4, 8.0.2 getestet). Ich vermute, wir haben da noch einen Denkfehler. Ähnliche Fehlermeldungen finde ich jedenfalls nicht, obwohl dieser Code schon lange nicht tun kann.
Leider bin ich aber zu blind / zu kaputt, einen Fehler unsererseits zu erkennen.

Sorry,
Bernhard
Titel: Re: Probleme mit NotesRichTextItem.AddPageBreak
Beitrag von: pram am 26.04.14 - 17:43:59
Hallo Jürgen,

sorry ich hatte überlesen, dass du in deinem Code ein bereits vorhandenes RT-Item verwendest. Dann zählt natürlich meine Aussage nicht.
(Ich kann mich aber dunkel dran erinnern, dass es bestimmte Funktionen gab, die "ganz am Anfang" des Items nicht das tun was man erwartet.)

Dein Code schaut ansich richtig aus.
Evtl hilft dir aber das: Dein Navigator steht ja noch am Paragraphen. Versuch mal den Navigator zum ersten RTELEM_TYPE_TEXTRUN "weiterzuschieben", z.B. so:
Code
If rtNav.FindNthElement(RTELEM_TYPE_TEXTPARAGRAPH, 2) Then
   if rtNav.FindNextElement(RTELEM_TYPE_TEXTRUN) Then
   ....

Gruß
Roland