On Event

  • Автор темы Автор темы Serduko
  • Дата начала Дата начала
S

Serduko

Добрый день всем, подскажите, почему не работает на событии "On Event"?
Код:
Public Class Test

Public curUI As NotesUIDocument

Sub test
Dim newDoc As NotesDocument
Dim newUI As NotesUIDocument

Set curUI = ws.Currentdocument
Set newDoc = curdb.Createdocument()
newdoc.form = "DelegateDoc"

Set newUI = ws.Editdocument(True, newdoc)

On Event QueryClose From newUI Call test2
End Sub

Sub test2(s As NotesUIDocument, c As Variant)
MsgBox "test"
'curUI.Editmode = True
'curUI.Document.Subject = "URA"
'Call curUI.Refresh()
End Sub
End Class

Вызов:
Код:
Dim test as New Test
Call test.test()
 
шутите?)
Конструктор где?
В лотусе это всегд так:
Код:
Sub New
' Конструктор
End Sub
Если замените test на New - заработает создание документа, но событие не отрабатывает
 
шутите?)
Конструктор где?
В лотусе это всегд так:
Код:
Sub New
' Конструктор
End Sub
Если замените test на New - заработает создание документа, но событие не отрабатывает
Вопрос не по конструктору ). Почему не срабатывает на событии? (В старых базах работает.)
 
а не поздно ли подключаться к событию после инициализации формы или сделать обновление (дока и ws)?
выкладывал либу, в ней подключение прописано на QueryOpen, в дизайне
так работает
 
Добрый день всем, подскажите, почему не работает на событии "On Event"?
Решение 1: вынести метод test2 из класса:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
Код:
Public Class Test

Public curUI As NotesUIDocument

Sub test
Dim newDoc As NotesDocument
Dim newUI As NotesUIDocument

Set curUI = ws.Currentdocument
Set newDoc = curdb.Createdocument()
newdoc.form = "DelegateDoc"

Set newUI = ws.Editdocument(True, newdoc)

On Event QueryClose From newUI Call test2
End Sub
End Class

Sub test2(s As NotesUIDocument, c As Variant)
MsgBox "test"
'curUI.Editmode = True
'curUI.Document.Subject = "URA"
'Call curUI.Refresh()
End Sub
Решение 2: сделать ссылку на переменную test глобальной (т.е. объявить в declarations)

Подозреваю, что сборщик мусора освобождает ссылку объект test до того, как срабатывает event.
 
turumbay +1 чета тормознул я - ведь там не токмо объект выносится, там и ссылка на uidoc может потеряться
ведь он локальный для ф-ции! Dim newUI As NotesUIDocument (как и ссылка на новый док)
 
не работает даже так
Код:
Option Public
Option Declare

Public ws As NotesUIWorkspace
Public ses As NotesSession
Public curdb As NotesDatabase
Public newDoc As NotesDocument
Public newUI As NotesUIDocument

Sub Initialize
Set ws=New NotesUIWorkspace
Set ses=New NotesSession
Set curdb=ses.Currentdatabase
Set newDoc = curdb.Createdocument()
newdoc.form = "DelegateDoc"
Set newUI = ws.Editdocument(True, newdoc)
'	Call newUI.Document.Computewithform(False, False)
On Event PostRecalc From newUI Call test2
newUI.Refresh
ws.Viewrefresh
End Sub
Public Sub test2(s As NotesUIDocument)
MsgBox "Sub test2"
End Sub

Добавлено: запуск из агента
 
По-моему ему "по-душе" когда отправляешь Source(NotesUIDocument) из событий формы. Да и класс перехватчик должен жить до тех пор, пока форма не закроется
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!