Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Basti* am 05.03.13 - 12:29:32

Titel: Frage zum RTF-Handling
Beitrag von: Basti* am 05.03.13 - 12:29:32
Hallo miteinander!

Ich versuche mich gerade an RTF-Feldern und komme da ins Stolpern. Ich hab schon gelesen, dass die Dinger etwas knifflig sind und ein etwas umständliches Handling erfordern. UIDoc refreshen (=Schließen und neu Öffnen) bevor man was machen kann, usw. Aber so 100%ig verstanden hab ich noch nicht, was da eigentlich wirklich abläuft.

Mein Problem ist der Zugriff auf die RTF-Felder in der QuerySave Methode. Da existieren die Dinger ja noch nicht. Ich hab ein RTF-Feld und will beim Speichern wissen, ob in dem Feld etwas bestimmtes drinn steht.

Was ich bisher habe:

==========================================
Sub Querysave(Source As Notesuidocument, Continue As Variant)

        Dim rtitem As NotesRichTextItem
        Dim doc As NotesDocument
   
        Set doc =  source.document
   
        'Anfangs ist das Feld nicht im Doc vorhanden, daher dann neu anlegen
        'sonst das erste Item nehmen
        If doc.isnewnote Then
             Set rtitem = New NotesRichTextItem(doc, "mynotes")
        Else
             Set rtitem = doc.GetFirstItem( "mynotes" )   
        End If
   
        'prüfe den Text
        If  rtitem.Text = "Blabla" Then
               '... Tuwas ...
        End If

End Sub

==========================================

Das Problem ist, dass der Text des RTFs nie aktuell ist. Wann wird der Wert, den ich im FrontEnd eingebe, per BackEnd verfügbar/aktualisiert?? Erst beim Speichern des Docs oder schon vorher?

Irgendwo hab ich gelesen, dass man das UIdoc schließen muss OHNE zu speichern und neu öffnen soll. Aber a) dann ist der Text auch nicht aktualisiert und b) hab ich noch nicht wirklich verstanden, was da eigentlich passiert.

Hat jemand einen Tipp?

Grüße
Basti
Titel: Re: Frage zum RTF-Handling
Beitrag von: Basti* am 05.03.13 - 14:17:40
Ich hab die Lösung doch noch selbst gefunden ;) Man sollte die Logik nicht in QuerySave, sondern in PostSave unterbringen. Dann wurde das Doc bereits gespeichert. Damit auch das RTF. Wenn man sich jetzt das doc zieht, darain manipuliert und dann wieder speichert, hat man alles, was man braucht :)

Code:

==========================================
Sub Postsave(Source As Notesuidocument)
       Dim rtitem As NotesRichTextItem
       Dim doc As NotesDocument
   
       Set doc =  source.document
       Set rtitem = doc.GetFirstItem( "mynotes" )   
   
        'prüfe den Text
        If  rtitem.Text = "Blabla" Then
               '... Tuwas ...
        End If

        Call doc.save(False,True)

End Sub
==========================================