Appendrtitem криво работает

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

  1. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Есть doc as NotesDocument и есть код.

    Код (Text):
        Dim rtitem As NotesRichTextItem
    Set rtitem = New NotesRichTextItem(doc, "Body1" )

    Call rtitem.AppendText( "PRUVET MIR !!!" ) 
    Call rtitem.AddNewLine( 1 )

    Dim rtitemOld As NotesRichTextItem
    Set rtitemOld=doc.GetFirstItem("Body") 
    Call rtitem.AppendRTItem(rtitemOld)
    Call rtitemOld.Remove()

    Call doc.CopyItem(rtitem, "Body")          
    Call rtitem.Remove()   
    doc.Save(True, False )
    И работает он почти хорошо. Но когда приходит письмо-документ присланный из ОutLook, например, у которого, например, текст поля Body выделен цветом, красным, например, то в резудьтате работы этого кода цвет пропадает и становится чёрным, что очень досаждает авторитетных пользователей.
    Везде где смотрел обсуждение работы AppendRTItem приводились примерно такие приёмы работы с кодом как у меня. Но нигде не встречал описание таких проблем.
    Может что-нибудь подскажите ?
     
  2. morpheus

    morpheus скриптописец

    Регистрация:
    7 авг 2006
    Сообщения:
    3.927
    Симпатии:
    0
    Вам наверное понгядобяться такие классы как NotesRichTextRange \ NotesRichTextStyle
     
  3. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    Понять бы как их ещё можно использовать. У меня получается пока что лажа даже со сканированием стилей. Код почти из документации.
    Код (Text):
    ...
    Dim rtitemOld As NotesRichTextItem
    Set rtitemOld=doc.GetFirstItem("Body") 

    Dim rtnavBodyOld As NotesRichTextNavigator
    Set rtnavBodyOld = rtitemOld.CreateNavigator     

    Dim rtrangeOld As NotesRichTextRange
    Set rtrangeOld = rtitemOld.CreateRange

    Call DisplayRange(rtrangeOld, rtnavBodyOld, RTELEM_TYPE_TEXTPARAGRAPH, "Text paragraph")
    ...
    Sub DisplayRange(rtrange As NotesRichTextRange, rtnav As NotesRichTextNavigator, elemType As Integer, elemTypeStr)
    If rtnav.FindFirstElement(elemType) Then
    count% = 0
    Do
    count% = count% + 1
    Call rtrange.SetBegin(rtnav)

    If elemType = RTELEM_TYPE_TABLECELL Or _
    elemType = RTELEM_TYPE_TEXTPARAGRAPH Or _
    elemType = RTELEM_TYPE_TEXTRUN Then
    Call MsgBox( elemTypeStr & " " & count% & _
    " Type: " & rtrange.Type & Chr(13) & _
    "Text run: " & rtrange.TextRun & Chr(13) & _
    "Text paragraph: " & rtrange.TextParagraph)

    Dim style As NotesRichTextStyle    
    Set style = rtrange.Style
    Call MsgBox("COLOR = " & style.Notescolor )
    Call MsgBox("FONTSIZE = " & style.Fontsize )

    Else
    Call MsgBox(elemTypeStr & " " & count% & " Type: " & rtrange.Type & Chr(13))
    End If
    Loop While rtnav.FindNextElement(elemType)
    Else
    Call MsgBox( "No element of this type in Body" )
    End If
    End Sub
    При этом правильно выводится rtrange.Type, rtrange.TextRun, rtrange.TextParagraph, но COLOR равен 0, а FONSIZE сегда равен 12, что совсем не так.
     
  4. PavelT100

    PavelT100 Well-Known Member

    Регистрация:
    9 июл 2007
    Сообщения:
    105
    Симпатии:
    0
    И чем дальше тем всё больше и больше....
    Если документ - письмо сделано и послано (и приянто разумеется) в Лотусе, то простое .Appendtext("QQ") добавляет надпись в конец поля со стилем который был у крайнего параграфа - что ожидаемо.
    А вот если пиьмо было создано на стороне, у меня Outlook-ом и послано в Лотус, то .Appendtext("QQ") приводит к катострофическому форматированию - пропадает цвет и размеры шрифтов, всё становится черным и предыдущий текст и добавленный.

    Вот почему так происходит ? Неужели никто не сталкивался ?
     
  5. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.082
    Симпатии:
    300
    потому чта в то время как людя пользуют рендереры обкатаные в тырнете, индусы приляпали свои глюкафичи к нотусам...
    получайте майм (если он пришёл) и работайте с майм частями
     
  6. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    Дня доброго вам желаю, товарищи!
    У меня появилась похожая проблема, только пропадает ртф таблица, остается только текст.

    Действия следующие:
    -) программно создаю документ, заполняю в ртф поле таблицей.
    -) Вывожу этот документ в диалоговом окне для заполнения нехватающих данных,все нормально отображается.
    -) Если жмакать ОК без заполнения, то я вывожу сообщения что какое-то поле не заполнено и заново открываю это диалоговое окно. Вот тут то все и ломается, пропадает форматирование.

    Но это я обошел, делая копирование и удаление ртф поля.(скопировал поле во временный документ, потом удалил в текущем, затем скопировал обратно).

    Все бы хорошо, но потом стал делать печать этого документа. Сделал печатную форму, вывожу документ по этой печатной форме в диалоговом окне, а форматирования нет. копирование и удаления поля не помагает. И что то нет мыслей как с этим бороться!? Есть у кого совет?

    да еще чято странно. что есть поле с еще одной таблицей, но оно (это поле) первоначально на форме не отображается. Дак в печатной форме зато все норм.
     
  7. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Проверьте галочки скрытия.
    Скорей всего у вас где-то выставлена галка Hide paragrath when document is -> Printed
     
  8. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    При чем тут скрытие? У меня пропадает форматирование в ртф поле, текст отстается но не в виде таблице, как было изначально.
     
  9. divankin

    divankin Senjor developer

    Регистрация:
    13 авг 2009
    Сообщения:
    182
    Симпатии:
    0
    Проблема только в диалоговом окне? А если вместо открытия печатной формы в диалоговом окне, сохранить документ и закончить выполнение программы, а потом открыть сохраненный документ то таблица есть?

    Попробуйте в QueryClose сделать
    Call notesUIDocument.Refresh(True) (если в QueryCLose нельзя, то сделайте по кнопке на форме)
    также попробуйте в QueryClose сделать Call notesUIWorkspace.RefreshParentNote( )
     
  10. AvasKvas

    AvasKvas Well-Known Member

    Регистрация:
    3 июн 2009
    Сообщения:
    78
    Симпатии:
    0
    В том то и дело,что документ сохранен. Таблица в нем нормальная. Потом перед выводом на принтер, открываю этот документ в диалоговом окне, а там уже форматирование уже пропало. мало того,если еще и сохранить документ, то и при обычном открытии такой же вид получается.

    Поробую сделать, то что вы рекомендуете!Спасибо!
     
Загрузка...

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