Добавление нового значения в Rich Text

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#1
Можно ли добавлять в Rich text поле новое значение, как в массив или множественное поле?
 

alik86

Well-Known Member
Lotus team
20.11.2008
465
1
#3
Можно! В дизайнерском хелпе находите NotesRichTextItem class, а там пред Вами предстанут всякие AppendText'ы и ему подобные вещи.
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#4
Проблема вот в чем, при выполнении

Dim RTItm As NotesRichTextItem
Set RTItm=CurDoc.getFirstItem("ИСТОРИЯ")
Call RTItm.Appendtext (formul$)

Создается 2 поля ИСТОРИЯ !
Одно пустое, а во второе как и надо добавляется значение formul$.
 

leiba

Well-Known Member
Lotus team
18.06.2010
47
0
#5
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
 

alik86

Well-Known Member
Lotus team
20.11.2008
465
1
#6
Ща няма часу. Вот Вам на затравку рабочий код (по-моему рабочий ;)):
Код:
Sub AppendToRTitem(RTitem As NotesRichTextItem, text As String)
'---------------------------------------------------------------------------------------------------------------------------------------------	
' Процедура динамического добавления текста в поле Rich Text 
'RTitem - поле RTitem, text - текст, который добавляется
'!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов
'---------------------------------------------------------------------------------------------------------------------------------------------
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument

Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Call RTitem.AppendText(text)
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True		
End Sub
 

seoman2

Well-Known Member
Lotus team
17.02.2010
455
1
#7
А документ открыт на редактирование, поле "ИСТОРИЯ" редактируемое, так?
Поле история вычисляемое. Само на себя.

alik86, у меня примерно такой же код, но всё равно 2 поля создается!
Вот сделал в тестовой базе:
Sub Click(Source As Button)
Dim Wsp As New NotesUIWorkspace
Dim DocUI As NotesUIDocument
Dim Doc As NotesDocument
Dim RTitem As NotesRichTextItem
Set DocUI = Wsp.CurrentDocument
DocUI.Save
DocUI.AutoReload = False
Set Doc = DocUI.Document
Call Doc.Save(True, False)
Set RTitem = Doc.GetFirstItem("История")
Call RTitem.AppendText(" 123123123 ")
Call RTitem.AddNewline(1)

Call Doc.Save( True, False )
Doc.SaveOptions = "3"
Call DocUI.Close
Call Wsp.EditDocument(True, Doc)
DocUI.AutoReload = True
End Sub
И все равно 2 поля история создается!

Разобрался, в 7.0.2. - создается 2 поля RichText.
А в 8.5 - все правильно, 1 поле.
 

hosm

* so what *
18.05.2009
2 442
9
#8
А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
 

alik86

Well-Known Member
Lotus team
20.11.2008
465
1
#9
А зачем надо делать 1-й Call Doc.Save(True, False) после DocUI.Save?
А я уже не помню - методом тыка до этого доходил... :)
Вспомнил :):
Там были косяки с созданием конфликтов (см. "!обращаться после того как в доке сделаны все необходимые изменения (после Doc.Save), чтобы не было конфликтов"). Вот в процессе написания и отладки процедуры и сохранял принудительно, а апосля не убрал.
Т.о. ответ: если процедура вызывается после Doc.Save, то не надо.
И все равно 2 поля история создается!
Это нормально (а может не совсем, но и у меня так) - это дубликаты одного поля. Вся инфа отражается в РТфилде "История", который вы всунули в вашу форму...