Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: acro am 01.08.05 - 11:12:30

Titel: mehrere RT-Felder in Body einer Mail kopieren
Beitrag von: acro am 01.08.05 - 11:12:30
Hallo zusammen,
auch wenn dieses Thema nicht neu ist, habe ich noch keine Lösung gefunden. Ich habe merhere RT-Felder in einem Dokument und möchte diese in ein neues Dokument kopieren. Problem: ab dem zweiten RT-Feld bereiten Zeilenumbrüche Probleme und nachfolgende Zeilen werden nicht angezeigt (lösche ich diese Zeilenumbrüche, erscheint der Text wieder!!!)

hier ist der relevante Code:

Sub Click(Source As Button)
   
   Dim uiws As New NotesUIWorkspace
   Dim session As New NotesSession
   Dim db As NotesDatabase
   
   Dim mainuidoc As NotesUIDocument   ' Info-Dokument (FE)
   Dim maindoc As NotesDocument      ' Info-Dokument (BE)
   Dim mainmemo As NotesDocument   ' Memo (allgemein)(BE)
   
   Dim VarBodies(2) As Variant            ' Liste der RT-Felder die übernommen werden
   
   Dim MainBody As NotesRichTextItem   ' Body im zuversendenden Memo
   Dim AddBody As NotesRichTextItem   ' Body der Zusatzinfo
   
   ' die hinzuzufügenden Body-Felder
   VarBodies(0) = "Body"
   VarBodies(1) = "SubInfo1Body"
   VarBodies(2) = "SubInfo2Body"
   
   ' Memo erstellen
   Set db = session.CurrentDatabase
   Set mainuidoc = uiws.CurrentDocument
   Set maindoc = mainuidoc.Document
   Set mainmemo = db.CreateDocument
   mainmemo.form = "memo"
   
   
   ' Body des neuen Dokuments holen
   Set MainBody = New NotesRichTextItem(mainmemo, "Body")
   
   
   Forall x In VarBodies
      
      ' RT-Felder hinzufügen
      Set AddBody = maindoc.GetfirstItem (x)
      Call MainBody.AppendRTItem(AddBody)
      Call MainBody.AddNewline(2, False)
      
   End Forall
   
   ' Dokument ins FE holen
   Call uiws.EditDocument (True, mainmemo, False)
   
End Sub
Titel: Re: mehrere RT-Felder in Body einer Mail kopieren
Beitrag von: robertpp am 01.08.05 - 13:11:39
Hast du das ganze schon mal mit:

Copies an item to a specified document.
Defined in
NotesItem
Syntax
Set notesItem = notesItem.CopyItemToDocument( document, newName$ )
Parameters
document
NotesDocument. The document on which to create the item. If you specify Nothing, this method generates an error.
newName$
String. The name of the new item.
Return value
notesItem
NotesItem. The new item in the specified document, with the specified name.

probiert?

Robert
Titel: Re: mehrere RT-Felder in Body einer Mail kopieren
Beitrag von: acro am 01.08.05 - 13:36:26
Danke für den Tipp aber ich habe mehrere RT-Felder die zusammengefasst werden müssen. Das erste RT-Feld wird wunderbar übernommen. Bei den weiteren RT-Feldern tritt das Problem auf, sobald ein Zeilenumbruch vorhanden ist!
Ich habe auch schon versucht, vor jedem neuen AppendRTItem das Item neu zu holen, hilft aber nichts. Der Code sieht inzwischen so aus:

   Forall x In VarBodies
      
      ' RT-Felder hinzufügen
      Set AddBody = maindoc.GetfirstItem (x)
      If AddBody.Type = Richtext Then
         Call MainBody.AppendRTItem(AddBody)
         Call MainBody.AddNewline(2, False)
         Call mainmemo.Save(False, True)
         Call AddBody.Remove
         Set MainBody = mainmemo.GetFirstItem("Body")
      End If   
   End Forall
Titel: Re: mehrere RT-Felder in Body einer Mail kopieren
Beitrag von: Thomas Schulte am 01.08.05 - 13:40:45
Hast du die Quellfelder in einer Tabelle drin? Da kommt es nämlich zu solchen Effekten.
Titel: Re: mehrere RT-Felder in Body einer Mail kopieren
Beitrag von: acro am 01.08.05 - 13:44:40
Nein, das RT-Feld ist simpel gehalten, nur formatierter Text.