Notesrichtextitem

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

  1. Event01

    Event01 Гость

    По ходу знакомства с Лотусом возникла одна сложная проблема.
    Такая проблема: как отобразить в документе поле NotesRichTextItem созданное с помощью метода new или createrichtextitem?
    (В свойствах документа это поле есть.)
     
  2. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    на форме отображаются те поля, которые дизайнер в дизайнере влепил как поле.
    кодом можно добавить итемы не зависимо от того, что на форме отображается...
    если на форме есть поле, имя которого совпадает с именем итема в документе, то значение этого итема отобразится в таком поле, при открытии документа...

    вывод - нужно добавить на форму RT-поле
     
  3. Event01

    Event01 Гость

    да, так работает в документах, где уже создано поле, но возникает следующая проблема. При создании нового документа с добавленным на форму RT - полем и использовании метода createrichtextitem для создания итема с таким же именем, это поле остается пустым несмотря ни на какие изменения с richtextitem.
     
  4. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    ой... я не выдержу снова это объяснять ;)
    мужики, помогайте!..

    дело в том, что работать с richtext на уи и бэкэнде параллельно нельзя прямо - нужно через зад...
    поэтому конкретный совет можно сделать только, если будет поставлена конкретно задача.
    пока могу лишь посоветовать поискать по форуму по работе с richtext...
    тут рядом есть ветка, если умеешь абстрагироваться от задачи, то должен понять суть... :blink:
    http://codeby.net/forum/threads/30217.html
     
  5. Event01

    Event01 Гость

    задача очень проста.
    есть форма с одним полем типа Rich Text, имя поля "F1", есть action со следующим кодом
    [codebox]Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim curdoc As NotesDocument
    Dim rtitem As Variant
    Set uidoc = ws.CurrentDocument
    Set curdoc = uidoc.Document

    Set rtitem = curdoc.CreateRichTextItem("F1")
    Call rtitem.AppendText( "ABC" )
    Call curdoc.Save( False, True )
    End Sub[/codebox]
    Нужно, чтобы после нажатия кнопки содержимое отображалось в поле.
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    В данной задаче можно начать с uidoc'a, а не с background документа.
    А именно
    Код (Text):
    Call UIDocFieldSetText("F1", "ABC")
     
  7. Event01

    Event01 Гость

    а если вместо текста embeddedobject?
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну тогда откупорить гуголь и почитать, как переоткрыть документ, что такое SaveOptions = "0" и почему richtext не появляется сразу.
    На самом деле, это уже пержёвано пицот раз, не то что до состояния кашицы, а уже на атомы разобрано ;)
    И на этом форуме и на -надцати других.

    Если о сути, то надо переоткрыть ui документ после апдейта ричтекста.
     
  9. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    короче гря, смотри код, анализируй, испытывай ;)
    http://codeby.net/forum/threads/30217.html?vi...st&p=139560
    http://codeby.net/forum/threads/30217.html?vi...st&p=139567

    тот самый финт, о котором там грится - переоткрытие УИ-документа после изменения richtext'а, чтобы отобразить эти изменения... (через зад)
    просто, это на столько пережеванная тема... и каждый новичек стремиться задать похожий вопрос :blink:
     
  10. Event01

    Event01 Гость

    что то типо этого? ;)
    [codebox]Dim wksp As New NotesUIWorkspace
    Dim session As New NotesSession
    Dim uidoc As NotesUIDocument, uidocNew As NotesUIDocument
    Dim doc As NotesDocument
    Dim rti As NotesRichTextItem
    Dim strFieldname As String

    Set uidoc = wksp.CurrentDocument
    uidoc.Refresh True ' do this if the rich text field is editable, to get the current contents in case user has modified them.
    Set doc = uidoc.Document ' get the back-end document for the document open on screen.
    strFieldname = uidoc.CurrentField ' remember the current field if any
    Set rti = doc.GetFirstItem("BodyZ") ' insert your fieldname here, generally "Body"

    ' Make your rich text changes here, for instance:
    'Call rti.AddNewLine(1, True)
    'Call rti.AppendText(Now & ": log entry.")
    If session.NotesBuildVersion >= 190 Then
    rti.Update ' ND6 only
    Else
    Call doc.ComputeWithForm(True, False) ' caution, as this may erase some field values if you have @Db functions in formulas.
    End If

    doc.SaveOptions = "0" ' make it possible to close the document without a "do you want to save" prompt. If this is a mail-in doc you may need to set MailOptions="0" also to avoid being prompted.
    Call uidoc.Close(True)
    Set uidocNew = wksp.EditDocument(True, doc, , , , True)
    Delete uidoc
    uidocNew.Document.RemoveItem("SaveOptions")
    If strFieldname <> "" Then uidocNew.GotoField(strFieldname) ' return focus to field that was current before.[/codebox]
     
  11. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    что то типа
    Код (Text):
    Set rtitem = curdoc.CreateRichTextItem("F1")
    Call rtitem.AppendText( "ABC" )
    Call curdoc.Save( False, True )
    Call curDoc.ReplaceItemValue("SaveOptions", "0")
    Call uidoc.Close
    Dim TmpDoc as NotesDocument
    Set TpmDoc = db.getDocumentByUNID(curdoc.UniversalID)
    Call ws.EditDocument(False, TmpDoc)
    Код черновой, просто для иллюстрации
     
  12. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    Event01, вот скажи честно, впадло разобрать тот код, что я тебе посоветовал? ;)
    ведь он простой до ужаса!
     
  13. Event01

    Event01 Гость

    спасибо,теперь все работает ;)

    да сначала ты мне дал ветку анализировать.... я посмотрел ее со стороны.... подумал... и решил поискать в гугле :blink:
     
  14. Akupaka

    Akupaka А че я?.. О.о

    Регистрация:
    4 окт 2007
    Сообщения:
    3.373
    Симпатии:
    2
    в той ветке человечек так же учится как и ты, только задача немного иная, хотя лечится тем же способом...
     
  15. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    по крайней мере и то хорошо, что сам нашел и всё работает :)
    если в другой раз понадобится, может, руки дойдут, и в простом "до ужаса" разберется ;)
     
  16. Event01

    Event01 Гость

    а можно ли как нибудь открыть attachment файл, используя LotusScript?
     
  17. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Есть вариант выгрузить аттач себе на диск (см хелп ExtractFile) и открыть с диска.
    Как и где открыть, уже зависит от типа файла, операционки и т.п.
     
  18. Event01

    Event01 Гость

    еще два вопроса возникли.
    1. Как можно обновить actions чтобы hide formula перевычислилась?
    2. как можно программно скрывать/отображать actions, не используя hide formula?
    :)
     
  19. K-Fire

    K-Fire Гость

    1. RefreshHideFormulas например.
    2. Вроде бы никак.
     
  20. Event01

    Event01 Гость

    спасибо. еще один вопрос возник - по полям Readers Authors.
    Можно ли сделать, чтобы поле readers указывало бы только на возможность открытия документа, а не на отображение его в представлении?
     
Загрузка...
Похожие Темы - Notesrichtextitem
  1. seoman2
    Ответов:
    35
    Просмотров:
    1.188
  2. Serduko
    Ответов:
    11
    Просмотров:
    2.146
  3. cLif
    Ответов:
    14
    Просмотров:
    4.413

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