Autor Thema: Schon wieder RichText...  (Gelesen 2165 mal)

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Schon wieder RichText...
« am: 14.01.03 - 09:10:24 »
Moin erst mal,
ich habe immer noch das Problem mit dem RT-Feld.
Wenn das Feld bearbeitbar ist, lässt es sich mit der Variablen gar nicht referenzieren. Wenn ich das Feld selbst auf Berechnet setze, kann ich es zwar referenzieren und auch Text anhängen usw., aber beim Speichern vergisst das Feld alles wieder. (Die angehängten Texte verschwinden einfach aus der Variablen) Ausserdem wirds dann nicht mehr angezeigt.
Hilfe!!!
Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #1 am: 14.01.03 - 17:55:03 »
Hi,

kannst du mal den Code posten?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #2 am: 15.01.03 - 07:32:40 »
Hallo Axel,
also ich rufe mit der Aktion Neuer Eintrag folgendes auf:
   Dim failureUpdate As Integer
   Dim failureWrite As Integer
   Dim s As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim db As NotesDatabase
   Set db = s.currentDatabase

   Call ws.DialogBox("Erfassung", True, True, False,
True,False)
   failureUpdate = UpdateRichText()
   If failureUpdate = 0    Then failureWrite = WriteRichText()
   Call uidoc.save

UpdateRichText schreibt die Ergebnisse aus dem Dialog in Variablen
und dann will ich das Ganze formatiert in das RichText-Feld Verlauf schreiben. Dazu soll WriteRichText() herhalten, das folgendermaßen ausschaut:

   
'***********Styles******************
   Dim DateNameStyle As NotesRichTextStyle
   Dim HeaderStyle As NotesRichTextStyle
   Dim BetreffStyle As NotesRichTextStyle
   Dim TextStyle As NotesRichTextStyle
   
   Set DateNameStyle = session.createRichTextStyle()
   DateNameStyle.Bold = True
   DateNameStyle.NotesColor = COLOR_BLACK
   DateNameStyle.Effects = EFFECTS_NONE
   DateNameStyle.NotesFont = FONT_ROMAN
   DateNameStyle.FontSize = 16
   
   Set HeaderStyle = session.createRichTextStyle()
   HeaderStyle.Bold = True
   HeaderStyle.NotesColor = COLOR_BLACK
   HeaderStyle.Effects = EFFECTS_SHADOW
   HeaderStyle.NotesFont = FONT_ROMAN
   HeaderStyle.FontSize = 18
   HeaderStyle.Underline = True
   
   Set BetreffStyle = session.CreateRichTextStyle()
   BetreffStyle.Bold = False
   BetreffStyle.NotesColor = COLOR_BLACK
   BetreffStyle.Effects = EFFECTS_NONE
   BetreffStyle.NotesFont = FONT_ROMAN
   BetreffStyle.FontSize = 16
   BetreffStyle.Underline = True
   
   Set TextStyle = session.CreateRichTextStyle()
   TextStyle.Bold = False
   TextStyle.NotesColor = COLOR_BLACK
   TextStyle.Effects = EFFECTS_NONE
   TextStyle.NotesFont = FONT_COURIER
   TextStyle.FontSize = 12
'**************************************************
   
   Dim Body As NotesRichTextItem
   Dim TempBody As NotesRichTextItem

   UpdateRichText()
   Set doc = uidoc.Document
   Set Body = doc.GetFirstItem("Verlauf")
   
   Set TempBody =  doc.CreateRichTextItem("tmp")
   Call TempBody.AppendStyle(HeaderStyle)
   Call TempBody.AppendText("Datum:")
   Call TempBody.AddTab(1)
   Call TempBody.AppendStyle(DateNameStyle)
   Call TempBody.AppendText(Datum)
   Call TempBody.AddTab(2)
   Call TempBody.AppendStyle(HeaderStyle)
   Call TempBody.AppendText("Erfasst von:")
   Call TempBody.AddTab(1)
   Call TempBody.AppendStyle(DateNameStyle)
   Call TempBody.AppendText(ErfName) 'usw.
   
   Call Body.AppendRTItem(TempBody)
   Body.isSummary = 1
   Call doc.RemoveItem("Tmp")
   Call doc.save(True, False, True)
   Call uidoc.reload

Der ganze Spaß wird auch, wenn ich dem RichTextFeld die Eigenschaft 'Berechnet' mitgebe, in das RichTextFeld geschrieben, ist aber in der Ansicht des Dokuments nicht sichtbar. Wenn ich das Feld auf Bearbeitbar setze, sagt mir Notes, dass die Objektvariable für das Feld nicht gesetz wäre.
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #3 am: 15.01.03 - 08:32:50 »
Hi,

sind WriteRichText und UpdateRichText eigene Funktionen? Stehen dort auch die Variablen uidoc, doc usw zur Verfügung?

Welche Objectvariable meckert den Notes an?


Axel



Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #4 am: 15.01.03 - 08:49:43 »
Moin,
also die Funktionen sind eigene, meckern tut er bei
Set Body = doc.GetFirstItem("Verlauf"), aber eben nur, wenn das RichTextFeld "Verlauf" auf bearbeitbar steht. Wenns 'berechnet' ist, funktioniert das ganze ja so weit super, aber es wird dann nicht mehr angezeigt, wenn ich das Doc zur Ansicht oder zum Bearbeiten öffne!
Grüsse...
+++To be human is more important than to be important!+++

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re:Schon wieder RichText...
« Antwort #5 am: 15.01.03 - 08:56:35 »
... das der Text verschwindet liegt daran, daß das UIdoc zu einem späteren Zeitpunkt nochmals gespeichert wird, und zu dem Zeitpunkt weiß das UIDoc nichts von den Änderungen des RichText-Feldes - mit uidoc.Reload funzt das eben nicht.

... das Doc muß im Frontend nach dem Speichern geschlossen und wieder geöffnet werden, erst dann ist das RichText-Feld sauber übernommen...

Dim ws As New NotesUIWorkspace
Dim docThis As NotesDocument

Set docThis = ws.CurrentDocument.Document

' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...

Call docThis.Save(True , True)
Call uidoc.Close
Set uidoc = ws.EditDocument(True, docThis)

... damit funktioniert es bei mir...

ata
Grüßle Toni :)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #6 am: 15.01.03 - 09:09:17 »
Hi,

schau die mal die Lösung von ata an.

Ausserdem prüfe auch mal ob alle Variablen uidoc,doc etc. in deinen Funktionen zur Verfügung stehen und mit den korrekten Werten initialisiert sind.


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #7 am: 15.01.03 - 09:45:50 »
Hallöle,
also die Lösung von ata beseitigt schon mal 50% der Probleme.
Leider Funktioniert das Ganze nicht mit neuen Docs, weil Notes beim öffnen die Maske nicht kennt. Giebts dafür auch noch was nettes?

Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #8 am: 15.01.03 - 10:15:17 »
Hi,

wie legst du denn das neue Dokument an?. Mit @Command([Compose]... sollte es keine Probleme geben.

Wenn du das mit Backend-Funktionen machst, dann mußt du ComputeWithForm aufrufen. Das sieht dann so aus:

...
Set db = session.CurrentDatabase
Set newdoc = New NotesDocument(db)
newdoc.Form = "Name der Maske"
Call newdoc.ComputeWithForm(True,False)
...

Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #9 am: 15.01.03 - 10:48:27 »
Hallo Leute,
also das hat mir alles schon sehr geholfen. Jetzt hab ich nur noch zwei winzige Probleme:
Was Axel geschrieben hat, funkt (mit dem Script). Allerdings hatte ich den Spaß mit @Command([Compose]... vorher, und damit gings nicht. Allerdings bleibt die Ansicht nach dem Erstellen des neuen Docs mit dem Script bestehen, soll heißen, ich muss das Doc erst über den Task-Button aktivieren. Kann man das automatisieren?
Die Lösung von ata funkt eigentlich auch einwandfrei. Wenn das Script ausgeführt wird, habe ich allerdings nachher noch 2 Docs offen. Bei einem Steht der Speicherabfragedialog im Vordergrund.
Der fragt also wahrscheinlich beim close wegen dem Speichern.
Kann ich das umgehen??

Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #10 am: 15.01.03 - 11:22:13 »
Hi,

zu Lösung von ata
Versuchs mal so. Es könnte sein, dass sich uidoc auf ein anderes Dok bezieht.

...
Set docThis = ws.CurrentDocument.Document

' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...

Call docThis.Save(True , True)
Call ws.CurrentDocument.Close
Set uidoc = ws.EditDocument(True, docThis)
...
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #11 am: 15.01.03 - 11:40:34 »
Hi,
das Problem mit dem aktiven Dokument hat sich nach einmal Schließen und wieder Öffnen von Notes irgendwie selbst zerstört!
Jetzt gehts auf einmal.

Das andere Problem 2. offenes Dokument und Speicherdialog) bleibt auch mit  ws.CurrentDocument.close bestehen. Notes fragt immer noch, ob gespeichert werden soll. Dieser Dialog kann nicht irgendwie umgangen oder für das Dokument unter bestimmten Bedingungen abgeschaltet werden, oder?

Thomas
+++To be human is more important than to be important!+++

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Schon wieder RichText...
« Antwort #12 am: 15.01.03 - 12:19:37 »
Hi,

du kannst den Speichern-Dialog nur mit dem Feld SaveOptions unterdrücken.

Versuch's mal so:

...
Set docThis = ws.CurrentDocument.Document

' # ... dein Code mit der Bearbeitung des Rich-Text-Feldes...

Call docThis.Save(True , True)
Set item = docThis.ReplaceItemValue( "SaveOptions", "0" )
Call ws.CurrentDocument.Close
Set uidoc = ws.EditDocument(True, docThis)
...

Axel



Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Thomator

  • Senior Mitglied
  • ****
  • Beiträge: 353
  • Geschlecht: Männlich
Re:Schon wieder RichText...
« Antwort #13 am: 15.01.03 - 12:32:31 »
Hi,
mit dem Feld SaveOptins funktioniert das Ganze jetzt absolut astrein.
Alle, die mir hier so ausdauernd geholfen haben, klopfen sich jetzt bitte mal auf die Schulter!
Herzlichen Dank nochmal.

Thomas
+++To be human is more important than to be important!+++

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz