Диалоговые средства работы с СФ

<< Click to Display Table of Contents >>

Navigation:  Для опытных пользователей > Стандартные фрагменты > Метод стандартных фрагментов >

Диалоговые средства работы с СФ

 

Оператор "Инициализация/закрытие" экрана (эмуляция DOS )

 

Данный оператор используется в стандартном  фрагменте  для  запуска режима  работы  с экраном монитора, из любого места в теле текста фрагмента.  По мере надобности инициализация и закрытие работы  с  экраном может производиться в одном и том же фрагменте несколько раз,  при этом происходит сброс начальных параметров установки работы с экраном и некоторыми операторами, которые работают со строками экрана.

В общем виде оператор "инициализация/закрытие" экрана  записывается  следующим образом:

 

                             :D[<целое,1>]*

 

где <целое,1> может принимать значение от 0 до 8.

 

Запись оператора в виде:

 

                             :D[<целое,1>]*

 

где <целое,1>  принимает значение от 1 до 8 инициализирует работу с экраном, высвечивая рамку на мониторе с фоном поля, приведенную в  таблице ниже:

 

 

 1 =   фон свечения   "синий"

 2 =     -.-                   "зеленый"

 3 =     -.-                   "голубой"

 4 =     -.-                   "красный"

 5 =     -.-                   "фиолетовый"

 6 =     -.-                   "коричневый"

 7 =     -.-                   "серый"

 8 =     -.-                   "черный"

 

 

 Пример записи оператора начала работы с экраном:

           ...

           :ВПР1=100'=...   *

           :К с этого места СФ переходит в режим (диалога)*

           :D3*

           ...

При записи  оператора :D3* произойдет замена меню "Основного счета" на начальную рамку со световым фоном голубого свечения.

Оператор инициализации экрана можно записывать и в виде:

                         

                                     :D*

 

В этом случае по умолчанию выбирается цвет свечения экрана "синий".

 

"Закрытие" работы с экраном и дальнейшее продолжение работы системы АВС производится по оператору:

 

                                     :D0*

 

В том  месте текста стандартного фрагмента, где встретился этот оператор, восстанавливается прежнее состояние работы системы АВС в  режиме работы меню "Основной счет".  В данной редакции этот оператор реализован с необходимостью нажатия клавиши "Esc", причем для наглядности напоминающий текст об этом высвечивается в правом нижнем углу экрана.

 

Оператор "Информационная строка".

 

Этот оператор широко используется при написании  стандартных  фрагментов,  где нужно вывести на экран необходимую информацию. При помощи его можно вывести текстовую,  специальную символьную информацию и значения переменных СФ в любое место экрана в различной цветовой гамме.

В общем виде оператор записывается в виде:

 

                   :W[<целое1,1>#<целое2,2>]'

                 <целое3,2>'<целое4,2>'<текст,80>*

 

где <целое1,1> принимает значение от 1-8,

    <целое2,1> принимает значение от 1-15.

 

Параметры <целое1>  и  <целое2>  используются для определения цветовой гаммы выводимых на экран символов.

 <Целое1> определяет  цвет фона на котором выводятся символы.  Цвета свечения выбираются также как и в операторе :D<целое,1>*

 <Целое2> определяет цвет фона выводимых символов.

Цвета свечения символов перечислены в таблице ниже:

 

 

0 = черный  

1 = синий  

2 = зеленый    

3 = голубой        

4 = красный    

5 = фиолетовый  

6 = коричневый

7 = светло-серый                                                  

8 = темно-серый  

9 = светло-синий  

10 = светло-зеленый

11 = светло-голубой

12 = светло-красный

13 = светло-фиолетовый

14 = светло-коричневый

15 = белый                                

   

<Целое3,2> принимает значение от 2-78 (координата X),

<целое4,2> принимает значение от 2-23 (координата Y).

 

Весь экран представляет собой 25 строк по 80 символов в каждой строке. Для определения начальной точки, с которой начинается  вывод  на  экран текста  необходимо  определить строку по горизонтали (координата Y) и точку в этой строке, с которой начинать выводить текст (координата X).

<Текст,80> любая символьная информация (кроме * и знака ?).

Символ "?" в тексте имеет особое значение и используется для вывода на экран значений переменных,  определенных ранее в теле  стандартного фрагмента.

 

 Пример 1:

              ...

            :ВВЕС=10*

            ...

            :W1#15'5'10'КОЛИЧЕСТВО БЕТОНА = ?ВЕС. тонн.*

 

Выводится на  экран строка белыми символами на синем фоне с десятой строки по горизонтали и пятой строки по вертикали:

 

 

Оператор "Построить рамку".

 

 

Этот оператор упрощает построение на  экране  монитора  стандартных закрашенных  рамок  для  оформления информационных заставок в процессе работы СФ.

Общий вид оператора записывается в  виде:

                   :G[<целое1,1>#<целое2,2>]'

                   <целое3,2>'<целое4,2>'

                   <целое5,2>'<целое6,2>['P]*

 

где <целое1> и <целое2> - определяет цветовую гамму рамки,

     <целое3> и <целое4> - координаты левого верхнего угла будущей рамки,

     <целое5> - устанавливает длину рамки по горизонтали,

     <целое6> - устанавливает размер рамки сверху вниз по вертикали.

Символ "Р" не используется в более поздних редакциях АВС.

Координаты, длина и высота будущей рамки задаются так, чтобы получаемая  рамка не выходила за границы экрана.  В противном случае будут наблюдаться искажения получаемой рамки.  Поскольку границы в операторе <:G> не проверяются вид получаемых рамок на стадии оформления СФ необходимо проверять визуально.

 

 

Пример:

            :G2#15'10'5'40'6'Р*

 

В результате работы этого оператора на экране монитора будет  выведена рамка зеленого цвета:

 

 

Оператор "Ввод значения с экрана".

 

Оператор предназначен  для  ввода  символьных и числовых значений в переменную с экрана монитора.

В качестве  поля ввода определяется "активное окно" с мигающим курсором, координаты которого определяются из параметров перечисленных в операторе.

 

Общий вид записи оператора:

 

                :V[+][<целое1,1>#<целое2,2>'<целое3,1>#<целое4,2>]'

              <целое5,2>'<целое6,2>'<целое7,2>'

              <имя переменной>['П/К]*

 

Параметр [+] задается только в том случае, когда необходимо  вводить числовые значения с контролем на синтаксис при наборе с клавиатуры.

Длина "активного окна" определяется величиной  <целое7,2>,  которая может быть задана числом в пределах от 1 до 78 (в зависимости от выбора размещения на экране). Заметим, что для правильной работы оператора длина "активного окна" не должна выходить за рамки одной строки.

Координаты начала "активного окна" определяются из параметров  <целое5,2> и <целое6,2>,  как координаты по вертикали и горизонтали строк экрана.

Цвет фона  и  символов  в  "активном окне" определяются параметрами <целое1,1> и <целое2,2>.  После нажатия  управляющих  клавиш  "Enter", "стрелка вверх", "стрелка вниз", "Esc" и нормального завершения работы этого оператора "активное окно" поменяет свою цветовую гамму  в  соответствии с параметрами <целое3,1> и <целое4,2>.  Такой подход работы с цветовыми гаммами "активных окон" создает наглядность  работы  с  множеством "активных окон".

Параметр <имя переменной> определяет  переменную,  в  которую  будет введено  значение.  Если  переменная  ранее не была определена то поле ввода будет чистое, (!!! а может выводить знак ? ) а если эта переменная  уже имела значение,  то будет выведено в поле "активного окна" ее значение ограниченное длиной поля вывода. Надо иметь в виду, если значение переменной было ранее определено больше чем поле ввода,  то значение урезается до длины "активного окна".

 Если переменная векторная величина,  то каждый новый параметр отделяется знаком "апостроф".

 

 Пример:     ... [100'200'400    ]

                 ... [БЕТОН'КАМЕНЬ'ПЛИТКА]

 

Параметр <П/К> определяет тип оператора ввод. Если указан параметр "П",  то такой оператор  ввода  будет  называться "переходящим", а если "К" то последним в списке "переходящих" операторов ввода.  Оператор ввода может и не иметь этого  параметра,  в  этом случае оператор ввода будет называться "простым".

"Простой" оператор ввода реагирует на  управляющие  клавиши  выхода "Enter" и "Esc".

"Переходящий" оператор ввода еще реагирует на  управляющие  клавиши выхода "стрелка вверх" и "стрелка вниз".

Последний в списке "переходящих" операторов ввода должен иметь  параметр определенный символом "К".

Такой подход позволяет переходить от ввода одной переменной к  другой, а также возвращаться назад к этим же переменным при помощи управляющих клавиш "стрелка вниз", "стрелка вверх", "Enter".

 

 Пример 1:    

                               :ВТОР=100*

                               ...

                               :V3#15'7#0'5'5'10'ТОР*

 

В этом  случае на экране появится поле ввода длиной до 10-ти символов и значением 100. Курсор будет установлен в начало числа 100.

Поле ввода в "активном" состоянии имеет голубое свечение с белыми символами.

 

После нажатия клавиши "Enter" поле ввода будет светло-серого свечения с черными символами, а значение переменной "ТОР" будет изменено на новое (если таковое было).

 

Пример 2:         ...

                              :V7#1’7#0'5'3'20'ПЕРЕМ1'П*

                              :V7#1’7#0'5'5'10'ПЕРЕМ2'П*

                              :V7#1’7#0'5'7'25'ПЕРЕМ3'П*

                              :V7#1’7#0'5'9'20'ПЕРЕМ4'К*

                              ...

 

По списку  этих операторов будет последовательно вводиться значения в каждую из переменных,  причем можно перемещаться по этим  операторам ввода,  как вниз, так и вверх. Заметим, что для более эффектного начала работы со списком "переходящих" операторов необходимо заранее  вывести на  экран  все поля со значениями этих переменных (если таковые есть), или пустые поля такой же длины, как и в операторах ввода.

 

Пример 3.  Пример составления стандартного фрагмента:

 

Ф1-5'Т*

:К Инициализация экрана *

:D8*

:G3#0'1'1'80'24*

:W3#15'20'3'       Параметры переменных фрагмента             *

:К Вывод значений переменных на экран*

:W7#5'42'6'?ЗАТРАТ.*

:W7#5'42'7'?ВР.*

:W7#5'42'8'?ЗУ.*

:К Вывод наименований переменных на экран*

:W3#0'6'6'- ВВЕДИТЕ ЗАТРАТЫ               -*

:W3#0'6'7'- ВРЕМЕННЫЕ ЗДАНИЯ И СООРУЖЕНИЯ - %*

:W3#0'6'8'- ДОП. ЗАТРАТЫ В ЗИМНЕЕ ВРЕМЯ   - %*

:К                           *

:W1#15'15'23'Введите все параметры, на последнем нажмите "Enter"*

:К                           *

:К    Ввод переменных*

:К                           *

:V+0#11'7#0'45'6'9'ЗАТРАТ'П*

:V+0#11'7#0'45'7'9'ВР'П*

:V+0#11'7#0'45'8'9'ЗУ'К*

:К*

:D0*

<Ф*

 

Результат работы фрагмента показан ниже:

 

clip0028

 

Диалог при помощи Win-таблицы.

 

Для  работы с Win-таблицей введены следующие операторы:

 

:DТ*        - оператор инициализации диалоговой таблицы.

:D0*         - оператор закрытия диалоговой таблицы.

:R[+]’<Имя переменной>’<Поясняющий текст>*   - оператор ввода значений.

:RW’<Текст>*    - оператор для вывода титульного текста СФ.  

Основным оператором заполнения таблицы является оператор :R. Знак плюс может быть опущен, если в качестве ввода значения будут использоваться любые символьные значения. Если в качестве ввода значения будут использоваться числовые параметры, то рекомендуется добавлять знак плюс. Имя переменой служит для присвоения ей значения после ввода в диалоге, каких либо параметров. Поясняющий текст, служит для  названия переменной выводимого в диалоговую таблицу. Количество используемых операторов ввода в одной диалоговой таблице практически не ограничено.

Оператор :RW используется один раз в любом месте диалоговой таблицы и служит только для того чтобы вывести название или назначение стандартного фрагмента в заголовок таблицы.

Рассмотрим пример СФ приведенного выше работающего в среде Windows с использованием операторов диалоговой таблицы.

Ф1-5-1'Т*

:К Инициализация экрана *

:DТ*

:К Вывод наименований и значений переменных на экран*

:R+'ЗАТРАТ' ВВЕДИТЕ ЗАТРАТЫ*

:R+'ВР' ВРЕМЕННЫЕ ЗДАНИЯ И СООРУЖЕНИЯ - %*

:R+'ЗУ' ДОП. ЗАТРАТЫ В ЗИМНЕЕ ВРЕМЯ   - %*

:К*                           *

:RW'Фрагмент на лимитированные затраты*

:К*

:D0*

<Ф*

 

При выполнении данного фрагмента на экране появится диалоговая таблица в следующей форме:

 

clip1668

 

После ввода всех значений для выполнения дальнейшей работы по системе АВС необходимо нажать на кнопку “Продолжить >>”.