Язык ISBL
Примеры вычислений на ISBL
Пример использования оператора цикла по условию
Доработаем пример, описанный в разделе «Пример использования оператора условного ветвления», так, чтобы пользователь мог выбирать единицу измерения разницы между датами и запрос значений появлялся на экране до тех пор, пока пользователь не нажмет на кнопку Выход. При этом зададим значения дат по умолчанию: первая дата равна текущей дате, вторая дата равна «09.05.2008». Для запроса параметров будем использовать функцию InputDialogEx(). Эта функция, в отличие от функции InputDialog(), позволяет управлять списком кнопок в окне ввода. В приведенном ниже примере в окне ввода будет три кнопки: Вычислить - по действию аналогична кнопке ОК, Выход – аналогична кнопке Отмена, и Описание – кнопка, при нажатии на которую будет открываться текст описания программы.
ResButton = ""
Template1 ="Разница в %0:s равна %1:s."
Template2 ="Разница между датами %0:s и %1:s в %2:s равна %3:s."
Values = "*Дата 1|*Дата 2|*Разница в "
ValueTypes ="Дата|Дата|Признак:днях,месяцах,годах"
DefaultValues = Today() & "|09.05.2008|днях"
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, на экране появится окно для ввода значений:
При нажатии на кнопку Вычислить будет выдано сообщение с разницей между датами:
При нажатии на кнопку Выход выполнение программы завершится.
При нажатии на кнопку Описание будет выдано окно с текстом описания программы:
См. также:
· Общие сведения о примерах использования выражений и операторов ISBL;
· Пример использования оператора условного ветвления;
· Пример использования оператора цикла по значениям.
© 2009, Компания DIRECTUM
|
Отправить комментарий к этому разделу на
support@directum.ru
|