Также, чтоб не плодить тем. Кто обновлялся до версии Лотуса 8.5.3 ?
У меня вот тоже вопрос по dialogbox, но несколько другого рода.
В документе есть кнопка, которая вызывает dialogbox заданной формы. В диалоге Чекбоксы, значения которых добавляются из значений поля основной формы. Мы должны выбрать в диалоге одно или несколько значений, чтоб создать новый документ в другой базе и вставить их в него
Код кнопки
Dim session As New NotesSession
Dim ws As New NotesUIWorkspace
'БД, в которой создадим новый документ на основе значений, выбираемых в диалоге
Dim eval As Variant
eval = Evaluate({v := @DbLookup ("":"" ; @Environment("INTSwitch" + "S":"F");"DBLookup";"INTIncomingAccounts";"Address"); @If(@IsError(v); ""; v);})
If eval(1) = "" Then Msgbox {Список недоступен.}: Exit Sub
Set dbIncomingAccount = session.GetDatabase(eval(0), eval(1))
' Документ диалога
Dim docTemp As NotesDocument
Set docTemp = session.CurrentDatabase.CreateDocument
' Берем поле NameMTR из основной формы, которое имеет множественное значение. Импортируем его значения в поле Results диалога, типа Checkbox - для выбора в нем значений и создания нового документа
docTemp.ReplaceItemValue "NameMTR", docCur.GetItemValue("NameMTR")
If ws.DialogBox("DialogChooseComp",True ,True ,, , , , "", docTemp, True, , True) Then
'Если в диалоге не нажали Cancel, создаем новый документ в другой БД
Dim docIncomingAccount As New NotesDocument (dbIncomingAccount)
With docIncomingAccount
.ReplaceItemValue "Form", "IncomingAccount"
...
.ReplaceItemValue "NameMTR", docTemp.GetItemValue("SelectMTR")
End With
ws.CurrentDocument.Save
ws.CurrentDocument.Close True
'Конец - Открываем на редактирование созданный документ, в котором будут значения, выбранные в диалоге
'-----------------------------------------------------------------------------------------------------------------------------
ws.EditDocument True, docIncomingAccount
End If
End Sub
В самом диалоге поле только одно - чекбокс Results , в котором выбираем значения. Используем для них формулу
@Word(NameMTR;"|";2), где значения NameMTR мы добавили из основной формы при вызове диалога
В событии QueryClose диалога код такой
If Source.DialogboxCanceled Then Exit Sub
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim docCur As NotesDocument
Set docCur=ws.CurrentDocument.Document
If docCur.GetItemValue("Results")(0)="" Then
Msgbox {Пожалуйста, выберите хотя бы одно значение.}
Continue=False
End If
vNameMTR = Evaluate({@Trim(Results)},docCur)
docCur.ReplaceItemValue "SelectMTR", Fulltrim(vNameMTR)
End Sub
Далее открывается созданный новый документ с выбранными значениями.
В версии 8.5.2 было все нормально. А вот в версии 8.5.3 открываю этот диалог, выбираю некоторые значения - а в созданном документе они все отображаются!
С помощью msgbox-в понял, что при закрытии диалога событие QueryClose формы диалога не срабатывает, как и событие ее поля onChange (я пихал код туда). События диалоговой формы вообще не срабатывают! У кого-то бывал такой глюк? Заранее спасибо