Autor Thema: Vorgabewert für Rich-Text-Felder  (Gelesen 4681 mal)

Jürgen Schomann

  • Gast
Vorgabewert für Rich-Text-Felder
« am: 04.05.16 - 19:52:06 »
Wir haben eine Fremdanwendung und möchten beim Erstellen neuer Dokumente Rich-Text-Felder vorbelegen. Die Vorgabewerte kommen aus einem anderen Dokument.
Der Inhalt ist sehr vielfältig: Text mit Anhängen, Bildern, Listenpunkten.
Z. Z. werden die Vorgabewerte über die Formelsprache gefüllt. Dabei wird mit @DbLookup das Feld aus dem anderen Dokument geholt.
Dabei geht leider die Schriftart verloren und Anhänge werden aber nicht wirklich übertragen, es erscheinen nur die Bilder.
Bei onLoad werden deshalb die Anhänge über das Auslesen der $File-Felder aus dem anderen Dokument geholt.

Wir suchen nach einer besseren Lösung.
Eine Möglichkeit besteht über Copy/Paste aus dem anderen Dokument den Inhalt zu holen.
Aber auch hier gehen Formatierungen insesondere bei Listenpunkten mit verschiedenen Einrückungen verloren.
Außerdem wird immer ein zusätzlicher Zeilenumbruch am Ende eingefügt.
Diesen Paragraph über NotesRichTextNavigator zu suchen und mit NotesRichtTextRange zu löschen funktioniert leider nicht, da leere Paragraphen nicht
gefunden werden. Über Append haben wir deshalb ein Leerzeichen angehängt. So wird er zwar gefunden.
Zum Löschen muss man aber über RichTextNavigator.SetPositonAtEnd ans Ende des vorherigen Textabsatzes positionieren, um dann
über NotesRichtTextRange.SetBegin bzw. SetEnd und Remove den Zeilenumbruch zu entfernen.
Dies läuft aber schief wenn zwischen dem vorherigen Textabsatz und den zusätzlichen Zeilenumbruch ein Bild oder Anhang steht. Dann verschiebt sich dieser.
Auch Versuche über DXLExport/DXLImport bringen keine Lösung, da dabei Absatzränder verloren gehen.
Außerdem bleibt ja das generelle Problem, dass die Änderungen nur nach speichern und wieder öffnen sichtbar sind.
Es ist aber gut möglich, das der Anwender das neue Dokument aus bestimmtem Gründen gar nicht speichern will und den Vorgang abbrechen möchte.
Dann wäre das Dokument ja trotzdem bereits gespeichert.

Eine andere Idee war das neue Dokument über NotesDatabase.CreateDocument vorher anzulegen, die Richt-Text-Felder aus dem anderen Dokument zu kopieren und
dann das neue Dokument über NotesUIWorkspace.EditDocument zu Öffnen. Leider ist das Dokument dann aber lt. NotesUIDocument.IsNewDoc = False obwohl es
ja noch nicht gespeichert wurde.

Es scheint wohl keine Möglichkeit zu geben Richt-Text-Felder außer mit festen Texten und fester Schriftart über den Vorgabewert zu belegen.
Oder hat jemand noch eine andere Idee?

Offline eknori

  • @Notes Preisträger
  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 11.728
  • Geschlecht: Männlich
Re: Vorgabewert für Rich-Text-Felder
« Antwort #1 am: 04.05.16 - 19:55:30 »
gucke dir mal an, was die ibm beim MailFile in Erstellen aus Vorlage macht. Das sollte doch dem entsprechen, was ihr machen möchtet.
Egal wie tief man die Messlatte für den menschlichen Verstand auch ansetzt: jeden Tag kommt jemand und marschiert erhobenen Hauptes drunter her!

Jürgen Schomann

  • Gast
Re: Vorgabewert für Rich-Text-Felder
« Antwort #2 am: 04.05.16 - 21:00:34 »
Vielen Dank für den Hinweis.
In der Mail-Datenbank wird genau das von mir schon genannte Verfahren, über NotesDatabase.CreateDocument ein neues Dokument vorher anzulegen, die Richt-Text-Felder aus dem anderen Dokument zu kopieren und dann das neue Dokument über NotesUIWorkspace.EditDocument zu öffnen, angewendet.
Auch dort ist dann aber NotesUIDocument.IsNewDoc = False. In der Fremdanwendung wird aber leider in vielen Feldern über  @IsNewDoc die Abarbeitung von berechneten Felder gesteuert und auch in Postopen u. ä. Ereignissen.
Dies müsste dann alles sehr mühsam umprogrammiert werden, um über eine Umgebungsvariable o. ä. den Status New zu simulieren.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Vorgabewert für Rich-Text-Felder
« Antwort #3 am: 05.05.16 - 00:19:02 »
Schau Dir den Signaturcode in der Mailschablone an. Da wird ein NotesUiDocument.ImportItem verwendet. Ist zwar undokumentiert, aber tut genau, was Du willst. Und da es in diversen standard- Mailschablonen seit Jahren verwendet wird, ist die Wahrscheinlichkeit, dass die Funktion wegfällt gleich null...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Jürgen Schomann

  • Gast
Re: Vorgabewert für Rich-Text-Felder
« Antwort #4 am: 06.05.16 - 19:45:51 »
Vielen Dank Torsten für den Hinweis mit der Funktion ImportItem.
Leider gehen aber auch hier die Einrückungen von Absätzen verloren. Die Einrückungen gehen übrigens auch verloren wenn man ein Feld über die Zwischenablage kopiert und einfügt.
Bei der von mir genannten Lösung, die Felder über @Dblookup zu holen, bleiben Einrückungen erhalten, aber die Schriftart geht verloren und es fehlen die Anhänge.
Es scheint keine gesamt befriedigende Lösung zu geben.
Beste Methode wäre wohl, wie schon erwähnt, doch über NotesDatabase.CreateDocument das Dokument vorzubereiten und über NotesUIWorkspace.EditDocument zu öffnen.
Es bleibt aber dann der unsaubere Zustand, dass @IsNewDoc = False und NotesUIDocument.IsNewDoc = False sind,  dagegen ist NotesDocument.IsNewNote = True. In der Formelsprache könnte mann sich ggf. noch mit !@IsDocBeingSaved statt @IsNewDoc behelfen.
In unserer Fremdanwendung sind aber viele berechnete Felder, die wie gesagt alle geändert werden müssten, und auch Absatz-Verbergen-Formel, Ereignisse onLoad, Postopen u. a. Script-Teile die Bezug auf 'Neues Dokument' nehmen usw.
Also auch nicht so richtig praktikabel.

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Vorgabewert für Rich-Text-Felder
« Antwort #5 am: 07.05.16 - 16:17:13 »
Falls Du die ganzen Formeln und Scripte umbauen willst/musst, würde ich auf ein eigenes Feld/Item gehen, das im Querysave z.B. auf 1 gesetzt wird. Dann hast Du die Steuerung darüber, wann ein Dokument als neu gilt, selbst in der Hand.

Jürgen Schomann

  • Gast
Re: Vorgabewert für Rich-Text-Felder
« Antwort #6 am: 07.05.16 - 18:50:23 »
Danke Peter, guter Tipp!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz