Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
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.
-
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.
-
Genauso muss mans machen, neu anlegen und dann das UIDoc refreshen oder neu laden. Dazu muss allerdings das Backend gespeichert werden.
-
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
-
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.
-
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
-
weil ich die rollen untereinander aufgelistet haben möchte.
Mit Mehrfachwerten in Textfeldern hab ichs nicht hinbekommen.
-
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 ....
-
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?
-
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
-
Frage1: Wie setze ich eine Zeilenschaltung zwischen die einzelnen Elemente?
Frage2: Wie übergebe ich ein Array dessen Größe unbekannt ist an ein Feld?
-
Array oder mit der Methode AppendToTextList, um die Mehrfachwerte im TextItem einzutragen
-
Endlich funktionierts... danke danke danke...
-
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