Autor Thema: Problem mit 'Memo'-Erstellung und Navigation im RichText Feld  (Gelesen 3414 mal)

Offline gab

  • Frischling
  • *
  • Beiträge: 45
Hallo Zusammen,

Hat jemand bitte eine Idee wie ich folgendes Problem umschiffen könnte?

Ich möchte in einer Anwendung aus einem aktuell geöffneten Dokument per LotusScript 'Action' ein 'Memo' in der Maildatenbank des aktuellen Benutzers zur Ansicht öffnen (Script Lösung  ist für mich zwingend).
 
Das Body Feld wird mit einem DocLink des aktuell geöffneten Dokuments vorbelegt.

Das Problem ist jedoch, dass die in meinem Fall die beim Erstellen eines Memo sich automatisch einfügende Mailsignatur des Benutzers sich vor den im RichText Backend generierten Text schiebt, z.B. so:


Marc Egart
Tel. 666/555555
30000 Schlumpfhausen
Bitte klicken Sie hier auf den Dokumentenlink =>[DocLink]


Wünschenswert wäre natürlich, dass die generierte Mail wie folgt aussieht:


Bitte klicken Sie hier auf den Dokumentenlink =>[DocLink]

Marc Egart
Tel. 666/555555
30000 Schlumpfhausen



Ich habe nun versucht, das Problem durch Navigation im RichText zu lösen, bleibe jedoch an der u.a. fett markierten Stelle mit "Element or Navigator is Invalid" hängen:

-- snip ---

   Dim s As New notessession
   Dim ws As New NotesUIWorkspace
   Dim doc As NotesDocument
   Dim uidoc As notesuidocument
   Dim RTItem As NotesRichTextItem
   Dim RTnav As NotesRichTextNavigator
   Dim doc_mail As Notesdocument
   Dim db As New NotesDatabase( "", "" )
   Dim doc_Target As NotesDocument
   
   Call db.OpenMail
   
   Set doc_target = ws.CurrentDocument.Document
   Set doc_mail = db.CreateDocument
   doc_mail.form = "Memo"
   
   Set RTItem = doc_mail.CreateRichTextItem("Body")
   Set RTnav = RTItem.CreateNavigator   
   Call RTnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)  '// ebenso RTNavigator.FindFirstString("")
   Call RTItem.BeginInsert( RTnav, True )  '//  "Element or Navigator is Invalid"
 
   Call RTItem.AppendText("Bitte klicken Sie hier um auf das Dokument zuzugreifen => ")
   Call RTItem.AppendDocLink( doc_Target, "Please click on this link", "")
   Call RTItem.AddNewline(1)
   Call RTItem.Update      
   Set uidoc = ws.editdocument(True, doc_mail)


-- snip ---


Anscheinend funktioniert es nicht, in einem 'leeren'Richtext Feld zu navigieren, bzw. ich habe in Sachen RichTextNavigator etwas grundlegend nicht kapiert,  bzw. kennt jemand evtl. eine ScriptLösung (Notes Client Version 6.5.4 ) wie ich es schaffe, den Text + DocLink an die oberste Postione im Body Feld, also vor die MailSignatur, zu positionieren?

Vielen Dank, Marc

« Letzte Änderung: 08.03.07 - 12:27:09 von marce »

Glombi

  • Gast
Du musst nach dem Erstellen der Mail den Inhahlt im Feld Body löschen (also die Signatur, welche durch das Postopen der Memo Maske eingefügt wird), dann Deine Sachen reinschreiben und am Ende- wenn es gewünscht ist - die Signatur aus dem Kalenderprofil lesen und reinschreiben.

Andreas

Offline gab

  • Frischling
  • *
  • Beiträge: 45
Wenn man Wald vor lauter Bäumen nicht sieht.. ::)
Es funktioniert wohl tatsächlich nicht anders wie von dir vorgeschlagen.  Vielen Dank für den Hinweis! .... :)

Marc

Offline SD

  • Aktives Mitglied
  • ***
  • Beiträge: 164
Hallo

gibt es zu diesem Thema in Notes 7 irgendeine Neuerung?

Ich habe nämlich das gleiche Problem.

Der Grund warum ich das allerdings nicht gleich im Frontend mache ist, weil ich das neue Memo mit formatiertem Text vorbelegen will. Genaugenommen soll ein Teil "fett" sein. Um das anzuzeigen muss ich, wenn mich nicht alles täuscht, das Dokument schließen und wieder öffnen. In dem Moment wird dann auch wieder die Signatur an den Anfang "angehängt".

Ich habe mal ein wenig in den CoreEmailClasses_de-DE herumgesucht und diesen Abschnitt gefunden:

Code
If IsFlagSet(MEMO_AUTOSIGNATURE) Then
	'// Check if note is not been recovered by the Auto Save process...
	If Not Me.m_noteMemo.HasItem("$AutoSaveRecovered") And Not Me.m_notememo.hasitem("$IMTranscript") Then
		Call InsertSignature(True)
	End If
End If

Wie ich diese ominöse Flag setzen soll, habe ich auf die schnelle nicht herausgefunden, allerdings ist es nicht besonders schwer dem NotesDocument ein Item mit dem Namen "$IMTranscript" mit irgendwelchem Nonsense als Inhalt zu verpassen.

Getestet habe ich das und es funktioniert auch hiermit:

Code
Dim NItem As NotesItem
Set NItem = New NotesItem(note, "$IMTranscript", "Platzhalter")

doc_email.close
Set doc_email = Workspace.editdocument(True, note)

note.RemoveItem("$IMTranscript")

Mein Problem ist jetzt aber: Ich habe keine Ahnung was das Feld "$IMTranscript" sein soll und vor allem welche Effekte das noch hat. Weil ich von "$AutoSaveRecovered" eine wage Vorstellung habe, habe ich davon lieber die Finger gelassen.

Weiß jemand, ob ich mit "$IMTranscript" eine mittelschwere Katastrophe auslöse, oder ist das Feld eher harmlos?
Außerdem bekomme ich es aus dem Frontend nicht mehr raus, weil mir mein Script sagt, dass es das Feld nicht gibt, wenn ich es leeren will. Das Feld wird also mit der Mail mitgesendet mit "Platzhalter" als Inhalt.

Vielleicht kennt auch jemand eine Möglichkeit das Flag "MEMO_AUTOSIGNATURE" vorübergehend zu entfernen und dann wieder zu setzen?
« Letzte Änderung: 20.04.07 - 10:51:01 von SD »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz