Копировать ссылку на страницу Перейти в предыдущий раздел Перейти в следующий раздел

Доработаем пример, описанный в разделе «Оператор условного ветвления», так, чтобы пользователь мог выбирать единицу измерения разницы между датами и запрос значений появлялся на экране до тех пор, пока пользователь не нажмет на кнопку Выход. При этом зададим значения дат по умолчанию: первая дата равна текущей дате, вторая дата равна 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
.navbar > a:hover { background: #FFD73B; }