Обновить док после вызова Dialogboxa

Тема в разделе "Lotus - Программирование", создана пользователем Dragon108, 24 мар 2011.

  1. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0
    Есть документ, в нем кнопка, по этой кнопке вызывается формочка для заполнения данными (DialogBox - в этот диалог бокса вставляется другой док, собственно с полями для ввода данных).
    Так вот, нужно после ввода данных в диалогбокс, обновлять исходный документ, из которого открывался этот самый диалогбокс. Как это можно сделать? Кроме как через uiworkspace и потом uidocument ничего в голову не приходит ... а так не получается, ибо под uidocument при закрытии диалогбокса лотус, соответственно, понимает документ, который подставляется в диалогбокс ... :)
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Почему бы в диалог бокс не показывать
    ?
     
  3. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

    Ну потому что формочки разные :) в той, которая открывается в диалогбоксе, например, проставляются права доступа на документ из которого открывается диалогбокс, и эта формочка одна для всех типов документов ...
     
  4. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    А нельзя после изменения значений переоткрывать документ?
     
  5. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    Код (Text):
    Dim currentDoc As NotesDocument
    Set currentDoc = ws.CurrentDocument.Document

    Dim dlgDoc As NotesDocument ' Обычно Set dlgDoc = new NotesDocument( currentDoc.parentDatabase )
    ' hz: конкретеные значение hz на суть не влияют, выставляются согласно контексту задачи
    if ws.dialogBox( dlgDoc.Form(0) , hz , hz , hz , false , false , false , "title" , dlgDoc , hz , hz , hz) then
    currentDoc.fieldA = dlgDoc.fieldB
    ' перенос остальных полей из диалога в документ
    end if
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    turumbay
    Я обычно так и делаю, не люблю мешать котлеты с мухами: временный документ показал в диалоге, руцями перенёс.
    Всё подконтрольно и защищено от дурака (другого программера, который придумает что в диалогбоксе нужно ещё поле) :)
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Хм.. а чем не подходит?
     
  8. Dragon108

    Dragon108 Well-Known Member

    Регистрация:
    19 янв 2010
    Сообщения:
    264
    Симпатии:
    0

    под uidocument при закрытии диалогбокса лотус, соответственно, понимает документ, который подставляется в диалогбокс


    Добавлено:

    Ну это можно и вручную сделать, после внесения изменений из диалог бокса :) Было бы интереснее, если бы он автоматически перзагружался.
    Да и как взять документ в качестве uidoc, из которого открывается диалог бокс? текущим то будет тот, который подгружается в диалогбокс
     
  9. nayke

    nayke Well-Known Member

    Регистрация:
    4 авг 2010
    Сообщения:
    310
    Симпатии:
    0
    Сначала хотел код написать потом увидел его выше..
    В приведенном turumbay коде после end if ws.CurrentDocument будет возвращать исходный документ
     
  10. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    Не знаю... все время пользуюсь таким методом и проблем не имею.
    А где ты вызываешь uidocument? не в диалоге часом?
     
  11. lmike

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

    Регистрация:
    27 авг 2008
    Сообщения:
    6.073
    Симпатии:
    299
    в инициализации формы дилога прописать:
    Код (LotusScript):
    Sub Initialize
    ...
    Set wks=New NotesUIWorkspace
    Set prevDoc=wks.CurrentDocument
    End Sub
    переменные глобальны, для формы
     
  12. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    А вот зачем диалогу знать о существовании документа, из которого его(диалог) открыли?
    Если нужна инфа из текущего документа, ее нужно передать до вызова ws.DialogBox:
    Код (Text):
      ' ... заполняем поля диалога
    dlgDoc.fieldB = currentDoc.fieldA
    ' поднимаем диалог в UI
    if ws.dialogBox(dlgDoc.Form(0) , ... , dlgDoc, ... )
     
Загрузка...

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