On Event

Тема в разделе "Lotus - Программирование", создана пользователем Serduko, 1 окт 2014.

  1. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Добрый день всем, подскажите, почему не работает на событии "On Event"?
    Код (LotusScript):
    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
    Вызов:
    Код (LotusScript):
    Dim test as New Test
    Call test.test()
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    шутите?)
    Конструктор где?
    В лотусе это всегд так:
    Код (LotusScript):
    Sub New
    ' Конструктор
    End Sub
    Если замените test на New - заработает создание документа, но событие не отрабатывает
     
  3. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Вопрос не по конструктору ). Почему не срабатывает на событии? (В старых базах работает.)
     
  4. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    а не поздно ли подключаться к событию после инициализации формы или сделать обновление (дока и ws)?
    выкладывал либу, в ней подключение прописано на QueryOpen, в дизайне
    так работает
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Решение 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">
    Код (LotusScript):
    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.
     
  6. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    turumbay +1 чета тормознул я - ведь там не токмо объект выносится, там и ссылка на uidoc может потеряться
    ведь он локальный для ф-ции! Dim newUI As NotesUIDocument (как и ссылка на новый док)
     
  7. lmike

    lmike нет, пердело совершенство
    Команда форума Lotus team

    Регистрация:
    27 авг 2008
    Сообщения:
    6.083
    Симпатии:
    300
    не работает даже так
    Код (LotusScript):
    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
    Добавлено: запуск из агента
     
  8. Darkhan

    Darkhan Lotus team
    Lotus team

    Регистрация:
    14 дек 2012
    Сообщения:
    97
    Симпатии:
    4
    По-моему ему "по-душе" когда отправляешь Source(NotesUIDocument) из событий формы. Да и класс перехватчик должен жить до тех пор, пока форма не закроется
     
Загрузка...
Похожие Темы - Event
  1. lmike
    Ответов:
    5
    Просмотров:
    493
  2. Avol
    Ответов:
    0
    Просмотров:
    1.198
  3. Num2
    Ответов:
    0
    Просмотров:
    1.290
  4. lionk
    Ответов:
    1
    Просмотров:
    1.164
  5. phantom76
    Ответов:
    4
    Просмотров:
    2.478

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