Диалоги#
Диалоги используются для отображения сообщений, запроса подтверждения или ввода данных и информирования пользователя о выполнении продолжительной операции.
Для работы с диалогами используется объект:
ru.bitec.app.gtk.gl.Dialogs
В Avi этот объект доступен через переменную dialogs.
Для выбора объекта или нескольких объектов можно открыть выборку в режиме openLookup(). Этот сценарий описан на странице «Выборка».
Стандартные диалоги#
Отображение сообщения#
Метод showMessage() отображает текст в модальном окне.
Пример:
dialogs.showMessage(
"Текст, который увидит пользователь"
)
Окно блокирует работу с формой до его закрытия пользователем.
Диалог со стандартными кнопками#
Метод showMsgDialog() открывает диалог указанного типа с сообщением и набором стандартных кнопок.
Типы диалогов определены в:
ru.bitec.app.gtk.gl.msgdlg.MsgDlg
Типы кнопок определены в:
ru.bitec.app.gtk.gl.msgdlgbutton.MsgDlgButton
Пример диалога подтверждения с кнопками Да и Нет:
val dialogResult = dialogs.showMsgDialog(
MsgDlg.confirmation,
"Включить автонумерацию?",
List(
MsgDlgButton.yes,
MsgDlgButton.no
)
)
if (dialogResult == MsgDlgButton.yes) {
// Обработка нажатия кнопки «Да»
} else if (dialogResult == MsgDlgButton.no) {
// Обработка нажатия кнопки «Нет»
}
Результат метода содержит выбранную пользователем кнопку.
Диалог с произвольными кнопками#
Метод showButtonsDialog() открывает диалог с произвольным набором кнопок.
Метод используется, если требуемые варианты ответа отсутствуют среди стандартных кнопок MsgDlgButton.
Пример:
dialogs.showButtonsDialog(
caption = "",
text = "Удалить форму или убрать ссылку на вид отчетности?",
colCount = 2,
buttons = List(
List("Удалить"),
List("Убрать ссылку")
),
imageCollectionName = "ToolBarPrimaryHot",
focusButtonNumber = 0L
) match {
case 0L =>
// Обработка нажатия кнопки «Удалить»
case 1L =>
// Обработка нажатия кнопки «Убрать ссылку»
}
Параметры метода:
caption— заголовок окна;text— текст сообщения;colCount— количество колонок для размещения кнопок;buttons— набор кнопок;imageCollectionName— коллекция изображений;focusButtonNumber— номер кнопки, которая получает фокус при открытии диалога.
Метод возвращает номер выбранной кнопки. Нумерация начинается с 0.
Запрос строки#
Метод showPromptDialog() открывает диалог для ввода строки.
В метод передаются:
заголовок окна;
текст диалога;
значение по умолчанию.
Пример:
val dialogResult = dialogs
.showPromptDialog(
"Заголовок окна",
"Текст диалога",
"Значение по умолчанию"
)
.ns
if (dialogResult.isNotNullOrEmpty) {
// Обработка введённого значения
}
Результат метода содержит введённую пользователем строку.
Запрос подтверждения#
Метод showConfirmDialog() открывает диалог типа Подтверждение с кнопками Да и Нет.
Пример:
val dialogResult =
dialogs.showConfirmDialog(
"Текст диалога"
)
if (dialogResult) {
// Пользователь нажал «Да»
}
Метод возвращает true, если пользователь подтвердил действие.
Информационное окно#
Информационное окно используется, чтобы сообщить пользователю о выполнении продолжительной операции.
Для работы с ним применяются методы:
showInfoForm()— отображает информационное окно;hideInfoForm()— скрывает информационное окно;withInfoForm()— отображает информационное окно на время выполнения переданной функции.
Управление информационным окном#
Метод showInfoForm() отображает окно с переданным текстом. Пользователь не может самостоятельно закрыть это окно.
Для закрытия необходимо вызвать hideInfoForm().
Пример:
dialogs.showInfoForm(
"Внимание, идет загрузка Госреестра типов СИ"
)
try {
thisApi().download()
} finally {
dialogs.hideInfoForm()
}
Вызов hideInfoForm() размещён в блоке finally, поэтому информационное окно будет скрыто и после успешного выполнения операции, и при возникновении ошибки.
Выполнение функции с информационным окном#
Метод withInfoForm() отображает информационное окно, выполняет переданную функцию и скрывает окно после её завершения.
Предыдущий пример можно записать следующим образом:
dialogs.withInfoForm(
"Внимание, идет загрузка Госреестра типов СИ"
) {
thisApi().download()
}
Метод обеспечивает закрытие информационного окна после завершения переданной функции.
Диалог настройки стиля#
Метод showEditPaintStyleDialog() открывает диалог настройки стилей оформления текстовых полей.
Метод используется, когда пользователю необходимо предоставить возможность изменить параметры оформления через интерфейс системы.