Доработаем пример, описанный в разделе «Оператор условного ветвления», так, чтобы пользователь мог выбирать единицу измерения разницы между датами и запрос значений появлялся на экране до тех пор, пока пользователь не нажмет на кнопку Выход. При этом зададим значения дат по умолчанию: первая дата равна текущей дате, вторая дата равна 09.05.2013. Для запроса параметров будем использовать функцию InputDialogEx(). Эта функция, в отличие от функции InputDialog(), позволяет управлять списком кнопок в окне ввода. В приведенном ниже примере в окне ввода будет три кнопки: Вычислить – по действию аналогична кнопке OK, Выход – аналогична кнопке Отмена, и Описание – кнопка, при нажатии на которую будет открываться текст описания программы.
ResButton = ""
Template1 = "Разница в %0:s равна %1:s."
Template2 = "Разница между датами %0:s и %1:s в %2:s равна %3:s."
Values = "*Дата 1|*Дата 2|*Разница в "
ValueTypes = "Дата|Дата|Признак:днях,месяцах,годах"
DefaultValues = Today() & "|09.05.2013|днях"
Buttons = "Вычислить|Выход|Описание"
while ResButton <<>> "Выход"
// Запросим у пользователя даты и ед. измерения разницы между ними.
InputValues = InputDialogEx(Values;DefaultValues;ValueTypes;;;;;
Buttons)
// Определим, какая кнопка была нажата (ее название возвращается функцией
// InputDialogEx после значений всех запрашиваемых параметров).
ResButton = SubString(InputValues;"|";4)
if ResButton == "Вычислить"
// Присвоим введенные значения параметров переменным
Date1 = SubString(InputValues;"|";1)
Date2 = SubString(InputValues;"|";2)
DiffUnit = SubString(InputValues;"|";3)
// Определим разницу между датами.
Count = Abs(DateDiff(Copy(DiffUnit;1;1);Date1;Date2))
Info1 = Format(Template1; ArrayOf(DiffUnit;Count))
Info2 = Format(Template2; ArrayOf(Date1;Date2;DiffUnit;Count))
MessageBoxEx("Результат";;Info1;;;Info2)
endif
if ResButton == "Описание"
/* При составлении справочного текста используем две
зарезервированные константы:
tab - символ табуляции, и cr - символ перевода строки */
EditText(tab & 'Программа позволяет вычислить разницу между датами, введенными в полях "*Дата 1" и "*Дата 2", в единицах измерения, указанных в поле "*Разница в". ' & cr & tab & 'Если Вы хотите узнать разницу, то введите нужные значения и нажмите на кнопку "Вычислить".' & cr & tab & 'Для завершения работы нажмите на кнопку "Выход"')
endif
endwhile
При выполнении этого текста, например, в сценарии системы DIRECTUM, на экране появится окно для ввода значений:
При нажатии на кнопку Вычислить будет выдано сообщение с разницей между датами.
При нажатии на кнопку Выход выполнение программы завершится.
При нажатии на кнопку Описание будет выдано окно с текстом описания программы:
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |