Войти
 
 
   
 
  
Новости Notes.ру Библиотека Биржа труда Вопрос - ответ Форум Регистрация Поиск О проекте
Разделы
О Notes
Советы
Шаблоны и примеры
Литература
Презентации
 
Java: внутри файла MS Excel 2007. Часть четвёртая   В публикуемой сегодня части статьи заканчивается описание процедур загрузки электронной таблицы и начинается описание самого интересного - каким образом получить данные, хранящиеся в ячейках таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть третья   В предлагаемой вниманию читателя третьей части статьи о структуре файла электронной таблицы Microsoft Excel формата 2007 речь идёт о коде Java, "разархивирующем" файловый поток и формирующем объекты, с которыми предстоит взаимодействовать при дальнейшей обработке данных электронной таблицы
Шаблоны и примеры Читать статью
 
Java: внутри файла MS Excel 2007. Часть вторая   В настоящем материале автор постарается систематизировать свои знания о том, как устроено хранение данных электронной таблицы, и презентовать небольшую Java-библиотеку, предоставляющую возможность чтения данных и заполнения файла электронной таблицы Microsoft Excel
Шаблоны и примеры Читать статью
 


Советы

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

Создание диалогового окна

Николай Норкин,
Вятские Информационные Технологии, Киров
Открытие диалоговых окон
Для вызова диалоговых окон, использующих форму, задаваемую разработчиком, применяются формула @-языка @DialogBox и метод класса notesUIWorkspace DialogBox
Автор редко использует формулу @-языка, предпочитая ей работу с кодом LotusScript по двум причинам:
- возможность открыть диалоговое окно не только с текущим документом, но и с любым, чаще даже не сохраняемым в базе - временным, документом
- возможность более гибкой обработки как предваряющей открытие диалога, так и оперирующей с его результатами

Вот пример стандартного кода, предшествующего открытию окна
Sub Click(Source As Button)
' Объявление и инициализация объектов, если эти объекты не были объявлены и инициализированы глобально
' Объекты классов пользовательского интерфейса (UI)
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = workspace.CurrentDocument

' Объекты back-end классов
Dim session As NotesSession
Dim curdb As NotesDatabase
Dim curdoc As NotesDocument

Set session = New NotesSession
Set curdb = session.CurrentDatabase
Set curdoc = uidoc.Document

' объект временного документа, открываемого в диалоговом окне
Dim tempdoc As NotesDocument
Set tempdoc = curdb.CreateDocument
' передача в документ необходимых значений
' списка для выбора
Set item = tempdoc.ReplaceItemValue("List1", list1)
' списка ранее выбранных значений
Set item = tempdoc.ReplaceItemValue("List2", list2)
...........


Вызов метода DialogBox, открывающего диалог
Call workspace.DialogBox("forDialog", True, True, True, False, False, False, "Выбрать", tempdoc, True, True)

Для придания диалогу более презентабельного, с точки зрения автора, дизайна, метод вызывается со следующими значениями передаваемых параметров:
autoHorzFit = True, autoVertFit = True, noCancel = True, [...] readOnly = False, [....] sizeToTable = True, noOkCancel = True)

Проектирование формы для диалогового окна
В свойствах формы указывается имя формы (в примере используется имя forDialog), снимаются оба флага в секции Доступ первой закладки окна свойств, также выбирается цвет фона диалогового окна
Поле диалогового окна задает внешняя таблица (рис. 1)
Вне таблицы располагается скрытое поле вычисляемое при создании SaveOptions со значением "0"
Внутри таблицы два поля, с которыми и предстоит работать пользователю:
Поле List1View - список для выбора элементов (для первой задачи выбираются следующие свойства поля: Список, Изменяемое, не-многозначное, формула значений: List1)

Поле List2View - список выбранных элементов (свойства поля: Список, Изменяемое, не-многозначное, формула значений: List2, Обновлять список при обновлении документа)
До того, как продолжить размещение элементов в форме, следует обратить внимание на одну "неприятную" особенность проектируемого диалогового окна - оно будет закрываться при нажатии клавиши Enter в окнах списков
Поэтому предлагается обрабатывать эту ситуацию в событие QueryClose документа
Итак, объявляем глобальные переменные в разделе (Globals) формы:
Dim workspace As NotesUIWorkspace
Dim uidoc As NotesUIDocument

Dim session As NotesSession
Dim curdb As NotesDatabase
Dim curdoc As NotesDocument

Dim hasClose
Инициализируем их в событии QueryOpen
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Set workspace = New NotesUIWorkspace
Set uidoc = Source

Set session = New NotesSession
Set curdb = session.CurrentDatabase
Set curdoc = uidoc.Document
End Sub
И обрабатываем событие QueryClose
Sub Queryclose(Source As Notesuidocument, Continue As Variant)
If uidoc.DialogboxCanceled Then Exit Sub
If hasClose Then Exit Sub
Continue = False
End Sub
При этом закрытие диалога осуществляется при нажатии клавиши Esc или крестика в правом верхнем углу окна (свойство notesUIDocument.DialogCanceled имеет значение True) или если глобальная переменная hasClose примет это значение
Переменную hasClose изменяет код в кнопках Отправить и Изменить, которые отличаются лишь одной строкой, обновляющей объект tempdoc в коде документа основного окна приложения
Sub Click(Source As Button) ' Кнопка Отправить
hasClose = True
Call workspace.RefreshParentNote()
Call uidoc.Close
End Sub

Sub Click(Source As Button) ' Кнопка Отменить
hasClose = True
Call uidoc.Close
End Sub

Обработка результатов диалога
Возвращаемся к коду основного документа и получения списка выбранных значений из поля List2
Sub Click(Source As Button)
......
Call workspace.DialogBox("forDialog", True, True, True, False, False, False, "Выбрать", tempdoc, True, True)
If Not tempdoc.hasItem("SaveOptions") Then Exit Sub ' Проверка обновления объекта (закрытия по кнопке Отправить - Ok) может сводиться к проверке на наличие полей, не размещенных во временном документе до вызова окна диалога, но присутствующих в форме окна
list2 = tempdoc.GetItemValue("List2")
End Sub

Далее: Размещение элементов выбора и упорядочивания списка >>>

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

Автор, 25.11.2003:
To Constantin: Спасибо... Постарался избавить Вас от иллюзий... :-))

Constantin, 25.11.2003:
А во вступительном "пример стандартного кода, предшествующего открытию окна" End Sub лучше убрать IMHO. А то создается иллюзия, что "Вызов метода DialogBox, открывающего диалог" находится ВНЕ этой Sub



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


Мероприятия
Пресс-релизы
Биржа труда
Последнее на форуме
 
А так же:
Lotus notes и ЭЦП
29.09.2017 17:16:14
Как удалить профиль?
16.04.2016 00:08:51
Скопировать в буфер поле документа
24.05.2015 08:55:52
 
© LOGOSPHERE.RU