2 Rtf

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 29 фев 2008.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    ВСЕ ДЕЛАЕТСЯ ПОД WEB
    Есть форма, На форме 2 кнопки, 2 RTF

    Нажимаю первую кнопку№1, с помощью кода заношу в RTF "<b>www</b>", в ВЕБ получается www

    Все хорошо , как надо

    Теперь нажимаю вторую кнопку№2, с помощью кода заношу в RTF "<b>qqq</b>", в ВЕБ получается qqq
    Но исчезает www...
    И наоборот, нажимаю №1 исчезает RTF№2

    Почему так происходит???
    Если сделать RTF Editable, то там и там есть то что раньше заносил... Как исправить данную ситуацию?
     
  2. Гость

    Покажи код..Скорее всего ты просто берешь не текущий RTF, а создаешь новый через New..Или я ошибаюсь ?

    ааа, нет, не в этом дело, я проглядел про 2 RTF

    Но код все равно кинь
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Программер, Для простоты
    Есть 2 кнопки и 2 RTF
    Каждая кнопка вызывает агент чтобы заполнить соответствующее поле
    Код (Text):
    @Command([ToolsRunMacro];"(agent_name1)")
    В агенте код из хелпа:
    Код (Text):
    Dim s               As New NotesSession
    Dim db              As NotesDatabase
    Dim doc             As NotesDocument
    Dim richStyle   As NotesRichTextStyle

    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext
    Dim richText        As New NotesRichTextItem(doc, "name_RTF1")
    Set richStyle = s.CreateRichTextStyle
    richStyle.PassThruHTML = True
    Call richText.AppendStyle( richStyle )

    Call richText.AppendText( |<b>www</b>| )
    И еще вопросик...
    Как скопировать значение из RTF_1 d RTF_2 ????

    На скрипте
     
  4. Гость

    Так ведь вы переписываете один и тот же RTF, то есть "name_RTF1", чего же вы ожидали ? Разумеется старое значе7ие не сохранится, поскольку вы каждый раз инициализируете новый RTF...Чтобы добавить в него значение, нужно прежде всего взять существующий RTF через doc.GetFirstItem....А скопировать из одного ричтекста в другой можно так: string$=RTF1.Values....Call RTF2.AppendText(string$)
     
  5. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Программер, Мне и не надо чтобы сохранялось старое.. Вопрос задан совсем в другом
    Например, я хочу переписать RTF_1... Почему Computed PTF_2 исчезает??? Хоть и Editable RTF_2 заполнен

    Не получается сохранить код
     
  6. Sandr

    Sandr Гость

    А что мешает это сделать JavaScriptom?
    ЗЫ: Computed PTF_2 исчезает, потому что это не поле для ВЕБа.. посмотрите сорс странички и Вы сами убедитесь...
    Ечли хотите писать значения агентом, то пишите их не в РТ поля, а РТ поля вычесляйте из тех, в которые пишите...
     
  7. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Sandr , например?
     
  8. Гость

    Values - это массив, бери Values(0)

    Ааа, нет, я гоню, Values - это один стринг
     
  9. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Программер , у меня в полях чисто html код
     
  10. Sandr

    Sandr Гость

    Обрамляете Ваше РТ поле в Div, даете диву ID.
    JavaScriptom обращайте сь к нему как

    Код (Text):
    document.getElementById(ваш ай).innerHTML = "<b>www</b>"
    Если агентом, то так (переделываю Ваш код)

    Код (Text):
        Dim s                As New NotesSession
    Dim db               As NotesDatabase
    Dim doc          As NotesDocument


    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext

    Call doc.ReplaceItemValue(field1, "<b>www</b>" )
    свое РТ поле вычисляйте из field1
    поле желательно что бы было на форме, сделайте его нескрытым CFDшным и поместите его в div style="display:none"
     
  11. Гость

    Какая разница, как выглядит текст ? html-код занесен в RTF как обычный стринг это для браузера он html, а для Notes plain text и его можно взять через RTI.Values...А что , не получается ?
     
  12. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Насколько я понял в RTF_1 в Default Value прописать field1??
    Если да, то в RTF_1 ничего не заносится,.. может не обновляется... может что-то не так сделал(
     
  13. Sandr

    Sandr Гость

    wowa

    А что у Вас при этом в том поле, куда Вы писали значение?

    ЗЫ: в CFD поле в значение по умолчанию поставте его же.
     
  14. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Sandr, какой-то у меня все равно бред получается...
    Вот смотри:
    Сделал 2 кнопки, первая вызывает агент_1, вторая агент_2
    В агенте_1:
    Код (Text):
    Dim s                As New NotesSession
    Dim db               As NotesDatabase
    Dim doc          As NotesDocument


    Set db = s.CurrentDatabase
    Set doc = s.DocumentContext

    Call doc.ReplaceItemValue("field1", "<b>www</b>" )
    В агенте_2 , Call doc.ReplaceItemValue("field2", "<b>eee</b>" )


    Создал 2 поля Computed for display: field_1 и field_2, прописал в каждом их же name
    Создал 2 RTF Computed, в RTF_1 прописал field_1, в RTF_2 прописал field_2

    Нажимаю кнопку_1 ... Итог, в field_1 : www, в field2, RTF_2, RTF_1 - пусто
    Нажимаю кнопку_2 ... Итог, в field_2 : eee, в field1, RTF_2, RTF_1 - пусто


    КАк видно RTF не заполняются, field1 и field2 видны "поочереди"


    и вообще что-то не помогает display:none
     
  15. Sandr

    Sandr Гость

    галка "генерировать ХТМЛ для всех полей" на форме включена?
    ЗЫ: попробуйте вместо CFD редактируемые поля... но дложно и с CFD работать.
    ЗЫЗЫ: Что значит "не помогает display:none" ? где используете его?
     
  16. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Sandr , включена

    Пробывал


    Последня закладка поля в style "display:none"
    ...
    Почему-то в RTF ничего не заносится
     
  17. Sandr

    Sandr Гость

    wowa
    Много раз делал такое - все работало.
    style "display:none" лучше использовать в div-ах, а не на последней закладке поля.
    ЗЫ: А че Вы к этим РТ полям прицепились? Почему не использовать computet value ? Или Вам хранить єти значения надо? Так их хранить можно и в обычгых полях... Если Вы это делаете из-за PassThruHTML, то используйте computet value , помеченный как HTML на форме...
     
  18. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    Код (Text):
        Dim richText        As NotesRichTextItem
    Set richText = doc.GetFirstItem("LEA_SD_RatingNav_RT")
    Код дало сохранить, но во время исполнения на второй строчке ошибка Type mismatch...
    Что тут может быть?
    В отдельной тестовой форме все работает, переношу на нормальную - ошибка !
     
  19. Sandr

    Sandr Гость

    Код (Text):
    Dim richText         As NotesRichTextItem
    Set richText = doc.GetFirstItem("LEA_SD_RatingNav_RT")
    if richText is nothing then
    set richText = doc.CreateRichTextItem("LEA_SD_RatingNav_RT")
    end if
    Хотя, он бы по-другому ругался.. ошибка не там, чкорее всего...
     
  20. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Значит поле LEA_SD_RatingNav_RT не ричтекстовое.

    Поэтому рекомендуется использовать тип Variant. Короче, пример из хелпа:
    Код (Text):
    Dim doc As NotesDocument
    Dim rtitem As Variant
    '...set value of doc...
    Set rtitem = doc.GetFirstItem( "ProjectDescription" )
    If rtitem.Type = RICHTEXT Then
    Call rtitem.AddNewLine( 1 )
    Call rtitem.AppendText _
    ( "Book is 64 pages, full color." )
    End If
    Call doc.Save( False, True )
     
Загрузка...

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