Войти
 
 
   
 
  
Новости 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 Читать статью
 


Советы

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

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

Николай Норкин,
Вятские Информационные Технологии, Киров
Начало >>>
Выбор элементов списка и их упорядочивание

Все решения, предложенные в этой части материала, приводятся для списков с уникальными элементами

Решение первое
Список для выбора - не-мультизначный, выбор производится кнопкой Add, сортировка выбранных элементов списка - кнопками Up и Down, отмена выбора для элемента - кнопкой Delete
Поле для отображения списка выбранных значений List2View - с включенной опцией Обновлять список при обновлении документа
Формула кнопки Add:
cur := List1View;
@If(cur = ""; @Return(""); @Success);
@SetField("List2"; @Trim(@Unique(List2 : cur)));
@Command([ViewRefreshFields]);
@SetField("List2View"; cur)

Формула кнопки Up:
cur := List2View;
@If(cur = ""; @Return(""); @Success);
pos := @Member(cur; List2);
@If(pos < 2; @Return(""); @Success);
pred := @Subset(@Subset(List2; pos - 1); -1);
@SetField("List2"; @Replace(List2; pred : cur; cur : pred));
@Command([ViewRefreshFields])

Формула кнопки Down:
cur := List2View;
@If(cur = ""; @Return(""); @Success);
pos := @Member(cur; List2);
count := @Elements(List2);
@If(pos < count; @Success; @Return(""));
next := @Subset(@Subset(List2; pos + 1); -1);
@SetField("List2"; @Replace(List2; cur : next; next : cur));
@Command([ViewRefreshFields])

Формула кнопки Delete:
cur := List2View;
@If(cur = ""; @Return(""); @Success);
@SetField("List2"; @Trim(@Replace(List2; cur; "")));
@Command([ViewRefreshFields])

Отступление. Запятая
При работе со списковыми полями следует учитывать одну особенность Notes: если значение элемента списка содержит запятую, то выбранное значение - пустая строка (!). Поэтому если список может содержать такие значения, следует усложнить код заменой каким-либо подходящим символом. В частности, для Windows-платформы наиболее подходит символ нижнего апострофа - Alt+0130

Решение второе
При выборе элемента по кнопке Add элемент удаляется из списка доступных к выбору значений. При нажатии кнопки Delete - элемент появляется в первом списке
Для реализации этого решения необходимо включить также опцию Обновлять список при обновлении документа в свойствах поля List1View
Свойства поля List1View, формулы кнопок Up и Down остаются такими же, как в первом решении
Модифицируются формулы кнопок Add и Delete

Формула кнопки Add:
cur := List1View;
@If(cur = ""; @Return(""); @Success);
@SetField("List2"; @Trim(@Unique(List2 : cur)));
@SetField("List1"; @Trim(@Replace(List1; cur; "")));
@Command([ViewRefreshFields])

Формула кнопки Delete:
cur := List2View;
@If(cur = ""; @Return(""); @Success);
@SetField("List1"; @Trim(@Unique(List1 : cur)));
@SetField("List2"; @Trim(@Replace(List2; cur; "")));
@Command([ViewRefreshFields])


Решение третье
Список выбора мультизначный. Выбор элемента списка производится выделением элемента "галочкой" с помощью мыши или "длинной" клавиши пробела клавиатуры. По большому счету, другие элементы становятся ненужными, и решение, требующее их присутствия, будет обсуждено ниже
Формула значения по умолчанию для поля List1View - List2. В свойствах поля становятся задействованными опции Разрешить несколько значений и Обновлять поля при изменении значения
Обработка производится в коде события PostRecalc формы, вызываемого каждый раз при изменении значения поля благодаря последней из названных опций
В процедуре используются глобальные переменные формы (см. первую часть материала >>>)
Sub Postrecalc(Source As Notesuidocument)
Dim item As NotesItem
Dim curvalue As Variant
Dim value As Variant
Dim res As Variant

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
End If
End Sub

Далее: Усложнение решений >>>

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

Автор, 25.12.2003:
Уточнение По поводу запятой... Сейчас испытал бурю эмоций... Оказывается, в шестом релизе продукта описанная особенность ушла в прошлое - значение с запятой выбирается замечательно



Добавить комментарий
Имя * :
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