Notesrichtextrange

Тема в разделе "Lotus - Программирование", создана пользователем imendan, 27 дек 2010.

  1. imendan

    imendan Well-Known Member

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

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

    Вопрос: Как можно избавиться от лишней строки?
    Код кнопочки:
    Код (LotusScript):
    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) Помогите!
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Может просто копировать нужную информацию в нужном виде во временное рт-поле, потом удалять старое рт-поле и копировать временное под нужным именем?
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Я эту проблему в своё время тоже не смог решить.
     
  4. imendan

    imendan Well-Known Member

    Регистрация:
    22 сен 2010
    Сообщения:
    97
    Симпатии:
    0
    Хорошая идея! Но хотелось бы не усложнять процесс удаления линков, а найти оптимальный вариант.
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    есть еще вариант не использовать RT поле, а хранить ссылки в многозначном поле в виде server:replica:unid, отрисовывая их например через passthruhtml. т.е. хранить данные отдельно от их представления.
    оно проще кодится и сопровождается, легко переносится на веб и т.п.
    из недостатков - пресловутые 64K.
     

Поделиться этой страницей