Domino 9 und frühere Versionen > ND6: Entwicklung
RTFeld in einen Backenddokument bauen anschließend in einer Dialogbox ändern und
Thomas Schulte:
dann wieder im Backend weiterverwenden und die Änderungen des RTFeldes behalten. Hat das schon mal jemand gemacht?
Ich bekomme das soweit hin, das das im Backend erstellte Dokument mit dem RT-Feld in der Dialogbox angezeigt wird. Alle Änderungen die in anderen Feldern passieren habe ich auch in der aufrufenden Funktion zur Verfügung.
Aber wenn ich Änderungen im RT-Feld vornehme werden die nicht übernommen.
--- Code: --- ' build a special document that is deleted afterwards to get the rtfield editable
Set showmaildoc = current.CreateDocument
Set item = showmaildoc.ReplaceItemValue("Form","ShowMemo")
Set item = showmaildoc.ReplaceItemValue("SendTo", sendto)
Set item = showmaildoc.ReplaceItemValue("CopyTo", copyto)
OK =itemtextexists(linkto,itemsubjectname)
If ok = True Then
Set me_item = LinkTo.GetFirstItem(itemsubjectname)
If subject = "" Then
subject = me_item.Text
Else
subject = subject + " " + me_item.Text
End If
End If
showmaildoc.Subject = subject
Set rtitem = showmaildoc.CreateRichTextItem( "Body" )
OK =itemtextexists(linkto, itembodyname)
If ok = True Then
' create the rtitem using the item from the given document
Set me_item = LinkTo.GetFirstItem(itembodyname)
If me_item.Type=RICHTEXT Then ' RICHTEXT
' copy the complete rtitem
Call rtitem.AppendRTItem( me_item )
Else
Forall v In me_item.Values
Call rtitem.AppendText( v )
Call rtitem.addnewline(1)
End Forall
End If
End If
' Copy
If message <> "" Then
Call rtitem.AppendText( message )
End If
If embedlink = True Then
Call rtitem.AppendDocLink( LinkTo,"VAZ")
End If
Call showmaildoc.Save(True,False)
' show the mail to the user before sending it so that the user can change the Email. The Mail is send even if the users escapes the Dialogbox
' there is a dim and i hope that this is not messing it all up
Dim wksp As New notesuiworkspace
ok = wksp.dialogbox("ShowMemo",True,True,True,True,False,False,"",showmaildoc)
Set usemaildoc = current.GetDocumentByUNID(showmaildoc.UniversalID)
--- Ende Code ---
Wobei ich hergegangen bin und habe das benutzte Mail Dokument direkt in der für die Dialogbox benutzten Teilmaske im Queryclose Event noch einmal mit
--- Code: ---Sub Queryclose(Source As Notesuidocument, Continue As Variant)
Dim me_doc As NotesDocument
Set me_doc = source.document
Call me_doc.Save(True,False)
End Sub
--- Ende Code ---
abgespeichert. Er zieht aber leider die Änderungen im RT Feld nicht mit.
jr:
Hallo,
willst Du das RT-Feld im Dialog verändern? Soweit ich weiß, kann man RT-Felder in Dialogboxen nur anzeigen, weil sie dort nur wie normale Textfelder behandelt werden.
Versuche es einmal anstatt mit einer Dialgobox mit einem normalen Dokument.
Gruß,
Joachim
Semeaphoros:
RTFM .....
--- Zitat ---@DialogBox displays a form of your design in a dialog box that has OK and Cancel buttons. When the user clicks OK, the contents of the fields in the dialog box transfer to any fields of the same name in the document in which @DialogBox is executing.
@DialogBox does not transfer rich text fields.
These should not be included in your design.
The form that is displayed in the dialog box is best created using a layout region, and @DialogBox should use the [AutoVertFit] and [AutoHorzFit] options.
--- Ende Zitat ---
(Hervorhebung durch Zeilenabstände von mir, für die entsprechende LS-Methode gilt das genauso)
Thomas Schulte:
RTFM ist gut Jens. Nur leider eben nicht mehr 100% richtig.
Mein erster Gedanke war ja der gleiche. Das geht schlicht und einfach nicht. Weder rein noch raus. Aber rein, so das das RTFeld in der Dialogbox angezeigt wird geht es eben doch.
Nur raus scheint es wirklich keinen Weg dahin zu geben. Naja muss ich das halt über ein UIDOC machen. Damit verliere ich zwar die Vorteile der Dialogbox aber das funktioniert wenigstens.
EDIT Nein das funktioniert nicht, denn der Editdocument unterbricht ja dummerweise die Verarbeitung des Scriptes nicht. Also muss ich einen anderen Ansatz wählen.
Und anschließend schmeissen wir das Dokument ja sowieso wieder weg.
Also noch einmal:
RT Felder in Dialogboxen darstellen funktioniert. (zumindest mit 6.5.4)
RT Felder in Dialogboxen ändern funktioniert nicht.
Semeaphoros:
Thomas, das hat schon mit RTFM zu tun, Du liesest den Text ungenau. Die von mir zitierte Stelle redet davon, dass "the contents of the fields in the dialog box transfer to any fields of the same name in the document in which @DialogBox is executing"
Heisst, hier geht es NUR um den Transfer aus der Diabox heraus ins zugrundeliegende Dokument (entweder das Aktuelle, oder das durch Parameter mitgegebene).
Korrekterweise heisst es dann auch
"These should not be included in your design."
Das ist kein Verbot, sondern nur ein Ratschlag. Die Dokumentation ist absolut korrekt und klar. Ob die D Uebersetzung das auch ist, weiss ich nicht und würde nicht erstaunen, wenn dieser etwas komplexere Text ungenau übersetzt wäre.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln