Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: BMT216A am 18.12.12 - 15:51:42

Titel: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: BMT216A am 18.12.12 - 15:51:42
Hallo,

ich bin auf der Suche nach einer Möglichkeit, ein bestehendes Feld um Werte zu ergänzen (vor dem eigentlichen Inhalt des Feldes).
Es ist ein Verlaufsfeld. Immer wenn der User auf einen Button "Eintrag erstellen" klickt, soll sein Name und der Zeitstempel in das Feld geschreiben werden. Danach drei Leerzeilen und danach wieder eine Trennlinie.

So in etwa:
James Bond - 18.12.2012 09:35
1 Leerzeile
2 Leerzeile  -> hier kann dann Text oder ein Anhang erstellt werden.
2 Leerzeile
----------------------------------------------

Jetzt ist das Feld ein rtf und derzeit habe ich mit appendtext den "neuen" Text hinten angehangen.
Nun soll es so umgebaut werden, dass der neueste Eintrag oben erscheint.

Mein Versuch, den Wert des notesdocuments in eine Tempvariable zu kopieren, einen Neuen Eintrag mit SetText zu erstellen und dann den Kopierten Wert ins uidoc einzufügen schlägt nur bei Anhängen fehl. Sprich diese werden nicht mit kopiert.

Wie kann ich es anstellen, dass die Anhänge an genau der gleichen Stelle wieder stehen?

Vielen Dank

Chris
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: Klafu am 18.12.12 - 15:57:01
Hallo,

ich hatte mir mal in dem Zusammenhang die Methode "BeginInsert" notiert. Vielleicht hilft die dir weiter.

Code
Call NotesRichText.BeginInsert(element,[after])

After Boolean: True puts the insertion position at the end
False (default) puts the insertion position at the beginning of the element

Christoph
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: ascabg am 18.12.12 - 15:58:10
Hallo,

Gibt es da nicht bei NotesRichTextItem die Methode BeginInsert.


Andreas
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: BMT216A am 19.12.12 - 09:09:37
Guten Morgen Andreas und Christoph,

danke für den Hinweis.
Da stand ich wohl auf dem Schlauch.
Das es eine Möglichkeit geben muss war mich schon klar - finden ist dann aber eine andere Sache.

Bin grad in der Designerhilfe und muss sagen (es ist wie immer bei den mir nicht so lieb gewonnenen Richtextfeldern) umständlich  :-: .

Hat einer von Euch das schon einmal mit BeginInsert versucht?
Wenn ja, kann ich dann eine kurze "einfache" Erklärung dazu haben?

Viele Grüße

Chris
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: Klafu am 19.12.12 - 09:25:58
Ich wollte mich damit mal befassen aber kam noch nicht dazu.
Im Prinzip hast du dein NotesRichText Feld das du mit Werten füllst.

z.B.

Dim body As NotesRichTextItem
Set body = doc.GetFirstItem("Body")
Call body.BeginInsert(WERT den du an den Anfang des BodyItems setzen willst)

Für mehr Infos kannst du mal in die Designerhilfe gucken
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: ascabg am 19.12.12 - 09:34:27
Hier ein kleines Testscript, welches ein vorhandenes Dokument ermittelt, in diesem das RichText-Feld "Testfeld" einstellt und vor
dem bereits vorhandenen Text einen neuen Text einfuegt.

Mit dem Navigator kannst Du sogar relativ genau steuern, wo er den Text einfuegen soll. da Du mit diesem die Postion zum einfuegen
einstellen kannst.

Code
Option Public
Option Declare

Sub Initialize
	
	Dim s As New NotesSession
	Dim db As NotesDatabase
	Dim vw As NotesView
	Dim doc As NotesDocument
	Dim rtTest As NotesRichTextItem
	Dim rtnav As NotesRichTextNavigator
	
	Set db = s.Currentdatabase
	If db Is Nothing Then Exit Sub
	If db.Isopen Then
		Set vw = db.GetView("Testview")
		If vw Is Nothing Then Exit Sub
		Call vw.Refresh()
		vw.Autoupdate = False
		
		Set doc = vw.Getdocumentbykey("frmTestInsert", True)
		If doc Is Nothing Then Exit Sub
		
		If Not doc.HasItem("Testfeld") Then Exit sub
		Set rtTest = doc.Getfirstitem("Testfeld")
		If rtTest Is Nothing Then Exit Sub
		
		Set rtnav = rtTest.Createnavigator()
		If rtnav Is Nothing Then Exit Sub
		
		' set the insert pointer before the first text
		Call rtnav.Findfirstelement(RTELEM_TYPE_TEXTPARAGRAPH)
		Call rtTest.Begininsert(rtnav)
		Call rtTest.Appendtext("Nun ist dies die erste Zeile")
		Call rtTest.Addnewline(1)
		Call rtTest.Endinsert()
		
		Call doc.Save(True, False)
	End If
	
End Sub

Andreas
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: BMT216A am 14.01.13 - 11:13:08
Hallo Andreas,

vielen Dank für deinen Hinweis.
Konnte mich leider nicht früher melden, da ich Urlaub hatte.
Soweit klappt es.
Nun bin ich bei meinem Vorhaben aber im uidoc und möchte das Feld auch zur laufzeit bearbeiten und aktualisieren.
Wie muss ich das machen - ich steh da grad auf dem Schlauch.

Vielen Dank für Eure Hilfe

Chris
Titel: Re: Feldwert ergänzen vor dem alten Feldwert
Beitrag von: koehlerbv am 14.01.13 - 12:40:12
Dann geht das doch ganz einfach mit InsertText (@Command oder NotesUIDocument class).

Bernhard