Notesrichtextrange

imendan

Well-known member
22.09.2010
116
0
#1
Здравствуйте, господа! B)
С Наступающим Всех Новым Годом!
Ситуация: в поле NotesRichTextItem указываются ссылки на другие элементы + строка описания..
cc Текст с описанием документа1
cc Текст с описанием документа2
cc Текст с описанием документа3
cc Текст с описанием документа4
-(где сс - это ссылка)
Проблема: после удаления программным кодом(после нажатия кнопочки) ссылки и текста к нему, остается пустая строка.
cc Текст с описанием документа1
cc Текст с описанием документа2

cc Текст с описанием документа4

Вопрос: Как можно избавиться от лишней строки?
Код кнопочки:
Код:
Set rti = doc.GetFirstItem("LinkDocs")
Set rtnav = rti.CreateNavigator

If rtnav.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH) Then
Set rtrange = rti.CreateRange
c = 0
Do
Redim Preserve ca© As Variant
Call rtrange.SetBegin(rtnav)			
ca©=Cstr(c+1) & ". " & Fulltrim(rtrange.TextParagraph)
c = c + 1
Loop While rtnav.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)
Else
Messagebox "В документе нет связок",, "Уведомление системы!"
Exit Sub
End If
']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]
Dim result As Variant
Dim delRow As Integer	'Номер строки для удаления
result = ws.Prompt(PROMPT_OKCANCELLIST, "Выбор", "Выберите документ для очистки связи", ca(0), ca)
delRow = Cint(Strleft(result, "."))
']]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]
]]]]]]]]]]]]]]]
If Not rtnav.FindNthElement(RTELEM_TYPE_TEXTPARAGRAPH, delRow) Then
Messagebox "Element " & delRow%,, "Cannot find element"
Exit Sub
End If
Set rtrange = rti.CreateRange
Call rtrange.SetBegin(rtnav)
Call rtrange.SetEnd(rtnav)
If Messagebox("Вы действительно хотите удалить данную связку?", 4+32, rtrange.TextParagraph) = 6 Then
Call rtrange.Remove	

If Not rtnav.FindNthElement(RTELEM_TYPE_DOCLINK, delRow) Then
Messagebox "Элемент " & delRow%,, "Элемент не найден"
Exit Sub
End If

Set rtlink = rtnav.GetElement		
rtlink.Remove

Call rti.Compact
Call rti.Update
Call doc.Save(True, False)
Call ws.CurrentDocument.Close(True)
End If
B) Помогите!
 

nvyush

Lotus team
22.04.2009
2 317
0
#2
Может просто копировать нужную информацию в нужном виде во временное рт-поле, потом удалять старое рт-поле и копировать временное под нужным именем?
 

imendan

Well-known member
22.09.2010
116
0
#4
Может просто копировать нужную информацию в нужном виде во временное рт-поле, потом удалять старое рт-поле и копировать временное под нужным именем?
Хорошая идея! Но хотелось бы не усложнять процесс удаления линков, а найти оптимальный вариант.
 
13.03.2009
625
1
#5
Но хотелось бы не усложнять процесс удаления линков, а найти оптимальный вариант.
есть еще вариант не использовать RT поле, а хранить ссылки в многозначном поле в виде server:replica:unid, отрисовывая их например через passthruhtml. т.е. хранить данные отдельно от их представления.
оно проще кодится и сопровождается, легко переносится на веб и т.п.
из недостатков - пресловутые 64K.