Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: TomLudwig am 09.09.04 - 09:27:47

Titel: Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 09:27:47
Hallo,

ich habe in meinem Dokument ein Feld "rolls" vom Typ Rich Text.
Ich kann aber nicht darauf zugreifen. Es erscheint auch nicht im Debugger unter Document -> Items.

Was mache ich falsch?

Folgender Code:

   Dim uiwork As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim rtitem As NotesRichTextItem
   
   Set uidoc = uiwork.CurrentDocument
   Set doc = uidoc.Document
   Set rtitem = doc.GetFirstItem( "rolls" )
   
   If ( rtitem.Type = RICHTEXT ) Then
      Forall r In db.ACL.Roles
         Call rtitem.AppendText(r)
         Call rtitem.AddNewline(1)      
      End Forall
   End If
   

Danke, Tom
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 09:36:09
Ist das Dokument neu?

Ist das Feld noch nie benutzt worden?

Wie ist das Feld im Formular definiert? Editiierbar oder Berechnet oder Berechnet bei Erstellung? Nur die letzte Definition produziert dieses Item auch sofort, alle anderen Einstellungen produzieren das Item erst, wenn es gebraucht wird, deshalb findest Du es noch nicht.
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 09:42:04
Ist ein neues Dokument und das Feld ist  noch nie benutzt worden (bearbeitbar)

Aber wie kann ich dann drauf zu greifen?

Mit doc.CreateRichtTextItem komm ich denk ich auch nicht weiter, weil er dann zwar ein RTItem generiert, aber den Text den ich rein schreibe nicht anzeigt. Bzw. das ganze Feld nicht angezeigt wird.
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 10:02:33
Genauso muss mans machen, neu anlegen und dann das UIDoc refreshen oder neu laden. Dazu muss allerdings das Backend gespeichert werden.
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 10:22:13
Ich hab das RichtTextFeld "rolls" im Dokument schon vorhanden.

Mit folgendem Quellcode wird leider aber immernoch nichts in diesem Feld angezeigt:

Set doc = uidoc.Document
   Set rtitem = doc.CreateRichTextItem( "rolls" )
   
   If ( rtitem.Type = RICHTEXT ) Then
      Forall r In db.ACL.Roles
         Call rtitem.AppendText(r)
         Call rtitem.AddNewline(1)      
      End Forall
   End If
   
   Call doc.Save(True,False)
   Call uidoc.Refresh(True)

Rollen sind in der dB vorhanden :P
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 10:25:07
Reload, nicht refresh, sorry. Irgendwo findet man in der Designer-Hilfe eine genauere Anleitung, wie man RTFelder vom Backend her beeinflusst, solltest Du vielleicht mal dort nachlesen.
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: koehlerbv am 09.09.04 - 10:31:39
Das Dokument muss NACH dem Bearbeiten des RTFs im Backend im FrontEnd geöffnet werden. Auch ein Reload bringt nix, wenn das Dok im FrontEnd schon offen ist.

Aber: Warum ist das Feld "rolls" eigentlich ein RTF ?

Bernhard
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 10:33:22
weil ich die rollen untereinander aufgelistet haben möchte.

Mit Mehrfachwerten in Textfeldern hab ichs nicht hinbekommen.
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 10:35:31
Mehrfachwerte im Textfeld zulassen
auf dem zweiten Tab als Trennzeichen für mehrere Werte "Neue Zeile" angeben, dann geht das mit Textfeldern.

Bernhard: mit R6 sollte doch eigentlich der Reload genügen (habs aber selber auch noch nicht getestet), war eine der von IBM hochgehaltenen Neuerungen damals ....
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 10:48:49
Nach meinem Testen hab ich rausgefunden, dass ich die Werte mit einem Semikolon oder so was trennen muss und dann das Dokument aktualisieren.

Ist das richtig?

Oder kann ich die Werte gleich Zeile für Zeile eingeben?
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: koehlerbv am 09.09.04 - 10:51:39
Jens' Vorschlag setzt voraus, dass die einzelnen Rollen-Namen in ein Array geschrieben und dieses dann dem Feld übergeben wird.
Einfacher ist in diesem Fall sicherlich, einfach Zeilenschaltungen zwischen die einzelnen Rollen-Namen zu setzen.
By the way: Ein Semikolon nützt überhaupt nichts.

Bernhard
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 10:57:02
Frage1: Wie setze ich eine Zeilenschaltung zwischen die einzelnen Elemente?
Frage2: Wie übergebe ich ein Array dessen Größe unbekannt ist an ein Feld?
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 10:57:55
Array oder mit der Methode AppendToTextList, um die Mehrfachwerte im TextItem einzutragen
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: TomLudwig am 09.09.04 - 10:59:42
Endlich funktionierts... danke danke danke...
Titel: Re:Richtextitem nicht vorhanden
Beitrag von: Semeaphoros am 09.09.04 - 11:01:11
Tom: Wie oben beschrieben, ist das eine Frage der Felddefinition im Formular, wie die einzelnen Einträge dargestellt werden. Dort wie bereits erwähnt als Trennung "Zeilenschaltung" (oder so ähnlich) angeben.

Für das Hinzufügen von Werten schaue in der Designerhilfe folgende beiden Methoden mal an, da wird das alles beschrieben:

NotesDocument.ReplaceItemValue

und

NotesItem.AppendToTextList