Как добавить секцию в самое начало документа ?

  • Автор темы PavelT100
  • Дата начала
P

PavelT100

Код:
	Dim session As New NotesSession
Dim rtitem As NotesRichTextItem
Set rtitem=doc.GetFirstItem("Body")

Dim richStyle As NotesRichTextStyle
Set richStyle = session.CreateRichTextStyle

richStyle.FontSize = 9
richStyle.Underline = False
richStyle.Bold=True
richStyle.NotesColor=COLOR_DARK_BLUE 

Dim begIns As Boolean
begIns=BeginBodyInsert(rtItem)	
If Not ( rtItem Is Nothing ) Then		
Dim colorObject As NotesColorObject
Set colorObject = session.CreateColorObject
colorObject.NotesColor = COLOR_BLUE		
Call rtitem.BeginSection(Format$(Now, "dd/mm/yy hh:nn") & " commente par " & session.CommonUserName, richStyle, colorObject, True)
richStyle.Bold=False
richStyle.NotesColor = COLOR_BLACK
Call rtitem.AppendStyle(richStyle)
Call rtitem.AppendText( "	  " )
Call rtitem.AppendText( "Нужный текст" )

Call rtitem.AddNewLine( 1 )
Call rtitem.EndSection
If begIns Then 
rtitem.EndInsert
End if

Call doc.Save(False, False )	
End If	
.....
Function BeginBodyInsert( rtItem As NotesRichTextItem ) As Boolean
Dim rtnav As NotesRichTextNavigator
Dim rtRange As NotesRichTextRange
Dim firstSection As Boolean

firstSection = False
BeginBodyInsert=False	

If Not ( rtitem Is Nothing ) Then
If rtitem.ValueLength > 0 Then 
Set rtnav = rtitem.createNavigator()

If rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH) Then
BeginBodyInsert=True
ElseIf rtnav.FindFirstElement(RTELEM_TYPE_SECTION) Then
BeginBodyInsert=True
firstSection = True 
ElseIf rtnav.FindFirstElement(RTELEM_TYPE_TEXTRUN) Then
BeginBodyInsert=True
End If
If Not( BeginBodyInsert ) Then 
MessageBox "Can't find where first paragraph starts"
Exit Function
End If

End If


Set rtRange = rtItem.CreateRange
Call rtRange.SetBegin(rtNav)
If Not FirstSection Then 
Call rtnav.SetCharOffset(1)
Call rtRange.SetEnd(rtNav)
End If 	

rtNav.Setposition(rtRange)
If BeginBodyInsert Then 
Call rtitem.BeginInsert(rtnav,False)		
End If
End If 		
End Function

Есть такой код, но он очень проблемный. Если, например, в документе есть секции в начале, а потом идёт текст, то в таком случае моя секция добавится перед текстом, но не перед секциями, то есть не в начало документа.
 
N

nvyush

Документ — это набор полей. РТ-навигатор осуществляет навигацию в пределах поля, но не документа. Документы отображаются в формах, один и тот же документ можно открыть в разных формах. Если на форме поле помещено в секцию, то и текст поля будет отображаться в этой секции.
 
P

PavelT100

Документ — это набор полей. РТ-навигатор осуществляет навигацию в пределах поля, но не документа.
Да, извиняюсь. Как добавить в начало поля "Body" ? - у этих документов только одно поле Body типа NotesRichTextItem.
 
N

nvyush

PavelT100
Вот из справки:
You cannot create a section containing existing rich text. You must start the section with BeginSection, append rich text, and end the section with EndSection.
Если нужно заключить имеющийся текст в раздел, то как-то так:
1. Создать временное рт-поле tempBody.
2. Открыть в нём раздел (BeginSection).
3. Добавить в него содержимое поля Body.
4. Закрыть раздел (EndSection).
5. Удалить поле Body.
6. Скопировать поле tempBody в Body.
7. Удалить поле tempBody.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!