Richtext

DNT

Постоялец форума
Lotus team
12.10.2005
590
2
#1
На форме есть поле типа 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 спрашивает (непонятно почему, ведь я док сохранил) сохранить док или нет - если нажимаю "ДА" при последующем открытии дока в поле ничего не добавилось, если нажму "НЕТ" всё в порядке, строка добавляется.

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#2
Все это потому, что изменения в ричтексте делаются в backend-документе. Когда ты сохраняешь front-документ (в котором этих изменений еще нет), он перезаписывает backend-документ и внесенный изменения ты не видишь. Чтобы изменения отразились сразу же можно сделать финт с переоткрытием frontend-документа.
Или что ты хочешь ?
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
2
#3
Чего хочу :) :

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

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

Спасибо
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#4
<!--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]
Вот так:
Код:
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
 

DNT

Постоялец форума
Lotus team
12.10.2005
590
2
#5
Всё ОК. Спасибо.

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

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
<!--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]
Создай. :)
Код:
...
Set uidoc = ws.CurrentDocument
If uidoc.IsNewDoc Then Set rt = New NotesRichTextItem(uidoc.Document, "RichText") Else Set rt = uidoc.Document.GetFirstItem("RichText")
...
 
G

Guest_Alexander_*

#7
Всем привет.
Есть проблема с отображение richText полей в диалоговом окне! После вложения документа посредством Lotus Script. Метод предложенный выше неподходит. Кто сталкивался и решил эту проблемму очень большая просьба помогите советом.
 
N
#8
Для: Guest_Alexander_*


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

Proger J.

Lotus team
15.03.2006
48
0
#9
Вот так:
CODESub 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
Спасибо, мне тоже очень пригодилось :)
 
G

Guest_Alexander_*

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

Fugitive

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