Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Всё о задаче AdminP. Часть вторая   Во второй части мы завершаем рассмотрение AdminP. В ней рассмотрены запросы междоменного администрирования и способы управления функциями AdminP с помощью настроек документа сервера, команд консоли сервера, файла Notes.ini и интервалов очистки базы данных. В этой статье предполагается, что вы опытный администратор Domino и прочитали первую часть
О Notes Читать статью
 
Всё о задаче AdminP. Proxy-действия в R5 и Domino 6   Приложение к статье об административном процессе
О Notes Читать статью
 
Всё о задаче AdminP. Часть первая   Перевод классической статьи 2003-его года о задаче административного процесса (AdminP). Очень полезна для понимания работы механизма этой задачи. В первой части статьи описаны компоненты задачи AdminP, как они работают, и как их использование помогает сделать работу администратора Domino проще. Задача AdminP (сакращённо от Administration Process, Административный процесс) работает с базой административных запросов (Administration Requests, admin4.nsf)
О Notes Читать статью
 


Советы

Главная   Библиотека   Советы

Создание диалогового окна (третья часть)

Николай Норкин,
Вятские Информационные Технологии, Киров
Часть первая >>>
Часть вторая >>>

Решение четвертое
Задача усложняется ввиду того, что результаты отбора снова (по сравнению с третьим решением) показываются в списковом поле List2View. Обновление документа, требуемое для обновления списка выбора этого поля, невозможно вызвать @-командой @Command([ViewRefreshFields]) (успешно применяемой в первом и втором решениях) или ее скриптовым аналогом Call notesUIDocument.Refresh в событии PostRecalc. При компиляции программы возникает ошибка, связанная с недопустимостью "рекурсивного" вызова события обновления документа - пересчета полей
К счастью, удается обмануть компилятор, вызывая сохранение документа, что влечет за собой его обновление. Размещение в форме поля SaveOptions со значением "0" препятствует реальному сохранению документа из интерфейса или интерфейсного объекта (но не сохраняйте бэкэндовый объект документа!)
Вместе с тем, уход в бесконечную рекурсию становится необходимо обработать вручную
Для обработки рекурсии вводится глобальная переменная формы forDialog:
Dim doRefresh

Значение переменной перед вызовом метода сохранения документа устанавливается в True, после вызова - в False. Первое, что следует проверить в коде обработки события PostRecalc - значение переменной
А вот, собственно, и код события (жирным выделены строки, отличающие его от кода третьего решения):
Sub Postrecalc(Source As Notesuidocument)
Dim item As NotesItem
Dim curvalue As Variant
Dim value As Variant
Dim res As Variant

If doRefresh Then
doRefresh = False ' флаг можно снимать здесь
Exit Sub
End If

If uidoc.CurrentField = "List1View" then
curvalue = Evaluate(|@Trim(@Replace(List1Value; List2; ""))|, curdoc)
If curvalue(0) = "" Then ' нового элемента не выбрано, следует проверить список на удаление элемента (снятие галки)
curvalue = Evaluate(|@Trim(@Replace(List2; List1Value; ""))|, curdoc)
If curvalue(0) = "" Then Exit Sub
' curvalue содержит удаленный элемент списка
Set item = curdoc.GetFirstItem("List2")
value = item.Values
res = ArrayGetIndex(value, curvalue(0))
If IsNull(res) Then Exit Sub
value(res) = ""
value = FullTrim(value)
Else ' curvalue содержит добавленный элемент списка
Set item = curdoc.GetFirstItem("List2")
value = item.Values
If value(0) = "" Then
value = curvalue
Else
value = ArrayAppend(value, curvalue)
End If
End If
item.Values = value
doRefresh = True
Call uidoc.Save ' реальному сохранению документа препятствует наличие поля SaveOptions со значением "0"
doRefresh = False ' флаг можно снимать и здесь
End If
End Sub

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

Читайте также:
Java-апплет для визуализации графических объектов. Новая версия апплета от Михаила Чолокова поддерживает работу с графическими файлами формата TIFF >>>
Java-апплет: альтернатива встроенному представлению >>>
 
  Опубликовано — 11/26/2003 |    

Alexander, 21.03.2006:
Спасибо очень познавательный материал. Хотелось бы увидеть пример кода, выполняющий все тоже самое в диалоговом окне, но применительно для полей типа RichText. Который бы обновлял диалог после вложения файла. (Вложение производится с помощью лотус скрипт).



Добавить комментарий
Имя * :
e-mail
Комментарий * :
Код подтверждения * :


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
Импорт DXL-описания документов в Lotus Domino. Одноимённые поля
16.04.2015 16:49:58
 
© LOGOSPHERE.RU