Richtext

Тема в разделе "Lotus - Программирование", создана пользователем DNT, 13 мар 2006.

  1. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    На форме есть поле типа RICHTEXT, есть кнопка, на кнопке висит простенький код приведенный ниже.

    Sub Click(Source As Button)
    Dim NUIW As New notesuiworkspace
    Dim doc As notesdocument
    Dim rtitemm As Variant
    Set doc=NUIW.CurrentDocument.Document
    Set rtitemm = doc.GetFirstItem( "History" )
    If ( rtitemm.Type = RICHTEXT ) Then
    Call rtitemm.AppendText("test")
    Call rtitemm.AddNewLine( 1 )
    Call doc.Save (False,False)
    End If
    End Sub

    По идее после нажатия на кнопку в поле добавляется строка "test", и док сохраняется. На практике вижу следующее: нажимаю на кнопку, закрываю документ - lotus спрашивает (непонятно почему, ведь я док сохранил) сохранить док или нет - если нажимаю "ДА" при последующем открытии дока в поле ничего не добавилось, если нажму "НЕТ" всё в порядке, строка добавляется.

    Помогите плиз...
     
  2. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Все это потому, что изменения в ричтексте делаются в backend-документе. Когда ты сохраняешь front-документ (в котором этих изменений еще нет), он перезаписывает backend-документ и внесенный изменения ты не видишь. Чтобы изменения отразились сразу же можно сделать финт с переоткрытием frontend-документа.
    Или что ты хочешь ?
     
  3. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Чего хочу :) :

    чтоб при нажатии на кнопку в ричтекст добавлялась строка (желательно чтоб сразу были видны изменения в поле), при этом хочу документ сохранить, т.е. чтоб лотус не спрашивал больше о сохранении. Естественно хочу чтоб после закрытия-открытия поле ричтекст было с новыми данными.

    Финт с переоткрытием frontend-документа - как сделать?

    Спасибо
     
  4. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-DNT+14:03:2006, 11:54 -->
    <span class="vbquote">(DNT @ 14:03:2006, 11:54 )</span><!--QuoteEBegin-->Финт с переоткрытием frontend-документа - как сделать?
    [snapback]31804" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Вот так:
    Код (Text):
    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim rt As NotesRichTextItem

    Set uidoc = ws.CurrentDocument
    Set rt = uidoc.Document.GetFirstItem("RichText")
    Call rt.AppendText("Test")
    Call rt.AppendTable(1, 1)
    Call uidoc.Document.Save(True, True)
    uidoc.Document.SaveOptions = "0"
    Call uidoc.Close
    Set uidoc = ws.EditDocument(True, uidoc.Document, False)
    uidoc.Document.SaveOptions = "1"
    Call uidoc.Save ' Это чтобы не спрашивал про сохранения
    End Sub
     
  5. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Всё ОК. Спасибо.

    Ещё вопросик:
    тот же документ, та же кнопка с полем ричтекст - если ричтекст пустой (новый документ) то Set rt = uidoc.Document.GetFirstItem("RichText") не находит поле в документе. Как быть?
     
  6. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    <!--QuoteBegin-DNT+14:03:2006, 12:28 -->
    <span class="vbquote">(DNT @ 14:03:2006, 12:28 )</span><!--QuoteEBegin-->тот же документ, та же кнопка с полем ричтекст - если ричтекст пустой (новый документ) то Set rt = uidoc.Document.GetFirstItem("RichText") не находит поле в документе. Как быть?
    [snapback]31809" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Создай. :)
    Код (Text):
    ...
    Set uidoc = ws.CurrentDocument
    If uidoc.IsNewDoc Then Set rt = New NotesRichTextItem(uidoc.Document, "RichText") Else Set rt = uidoc.Document.GetFirstItem("RichText")
    ...
     
  7. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Спасибо
     
  8. Guest_Alexander_*

    Guest_Alexander_* Гость

    Всем привет.
    Есть проблема с отображение richText полей в диалоговом окне! После вложения документа посредством Lotus Script. Метод предложенный выше неподходит. Кто сталкивался и решил эту проблемму очень большая просьба помогите советом.
     
  9. nor

    nor Гость

    Для: Guest_Alexander_*


    Привет. Поясни свою проблему более подробно, пожалуйста. Я попробую помочь тогда.
     
  10. Proger J.

    Proger J. Lotus team
    Lotus team

    Регистрация:
    15 мар 2006
    Сообщения:
    48
    Симпатии:
    0
    Спасибо, мне тоже очень пригодилось :)
     
  11. Guest_Alexander_*

    Guest_Alexander_* Гость

    Всем привет.
    Есть диалоговое окно. Необходимо сделать вложение файлов в поле RichText. Поле типа Computed, это сделано для того что бы пользователь не мог самостоятельно удалять вложения из поля а только через отдельную кнопку, а также для ограничения количества вкладываемых файлов. При вложении заполняется ещё одно служебное поле необходимое для вывода информации по вложениям чере web.
    После вложения информация (файлы) в поле не отображаются. Метод который предложил Proger J. нам известен, но он не работает в диалоговом окне.
    Проблема как раз в том как сделать аналогичные действия но в диалоге?
     
  12. Fugitive

    Fugitive Гость

    К полю типа rich text можно обратиться только когда текущий документ сохранен (например в postsave)
    В моей форме поле заполняется при повторном редактировании документа.
    Хотел в querysave принудительно сохранить документ, как было показано выше, а потом проверить на пустоту поле rich text. Однако после сохранения, закрытия и открытия на редактирование значение text в поле все равно пустое.
    Подскажите как победить, полжалуйста !!!!
     
Загрузка...

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