ЗАДАНИЕ XXVIII

Тема: Проектирование в среде Stratum автоматизированных рабочих мест (АРМ)
Цель: Краткое знакомство с инструментарием необходимым для проектирования в среде Stratum АРМ'ов.

Перед началом работы необходимо:

pin2.gif (1000 bytes) владеть работой с клавиатурой и мышкой;
pin2.gif (1000 bytes) владеть основными приемами работы в системе Stratum.

 

Основные понятия

        Автоматизированные рабочие места (АРМ) представляют собой программные средства для автоматизированной обработки данных и документооборота (например, бухгалтерские АРМы). В основном ввод данных в АРМ'ах представляет собою заполнение некоторых стандартных форм или таблиц баз данных. После чего данные сохраняются в базах и после этого проходят стадии обработки. Данные могут быть представлены как в виде таблиц, так и в виде различных графических средств: диаграмм, гистограмм, графиков и так далее. В данном практикуме будут описаны средства и приёмы для построения форм ввода и вывода (отчётов) данных, таблиц.

Организация форм ввода информации

       В формах ввода чаще всего используется несколько типов полей для воода: символьные (строки), числовые, бинарные (да или нет). Могут присутствовать списки выбора. В стандартных имиджах Stratum есть все эти необходимые компоненты. Строкам ввода соответствуют имиджи класса StringEdit из библиотеки Controls. Числовым полям соответствуют имиджи класса Numberln из библиотеки Controls. Бинарные поля можно организовать с помощью имиджей класса CheckBox или RadioButton. Списки выбора можно сделать с помощью имиджей класса ComboBox. Для собирания формы ввода необходимо создать имидж и подсхему у него. В созданной подсхеме и будем формировать форму ввода. Для отображения данной подсхемы поставим имидж LGSpace, в котором переменной ClassName установим значение имени класса имиджа, в подсхеме которого у нас находится форма ввода. В подсхеме необходимо у всех имиджей ввода данных установить переменную WindowName в имя окна, которое задано в имидже LGSpace. Так же необходимо установить в подсхеме контактную площадку и связать связами необходимые переменные от имиджей ввода данных с имиджем формы ввода. В имидже можно организовать обработку вводимых данных, проверку на корректность ввода. Ниже вы видите пример формы ввода данных.

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

Организация форм вывода данных (отчётов).

       Технологич создания отчётов и вывода их ничем не отличается от технологии создания форм ввода. Разве что набор стандартных имиджей уменьшается до имиджей: StringEdit и NumberView. На этих двух имиджах можно собрать любой отчёт (форму вывода).

Организация АРМ'а в виде систем меню

        Все разрозненные таблицы и формы необходимо связать между собой необходимыми операциями. Для этого существует система меню, из которой пользователь может вызывать необходимые таблицы, формы, производить действия над данными. В Stratum есть стандартный имидж для организации меню - Menu в библиотеке Unit.

Иконка Класс Переменные Описание переменных Описание работы имиджа
Menu WindowName Имя окна в котором формируется меню

Имидж организует в заданном окне систему меню, загружая его из ресурсного файла. При выборе пункта меню в переменной command формируется соответствующее значение.

FileName Имя файла с ресурсом меню
command номер выбранного пункта меню
_enable запрещает или разрешает работу имиджа (0 - запрет, 1 - разрешение)

        Меню задаётся в ресурсном файле, где хранится описание меню. Структура этого описания следующая (рассмотрим на примере):

menu
{
popup "Файл"
{
MENUITEM "&Открыть текстовый файл",10001
MENUITEM SEPARATOR
MENUITEM "Вы&ход",10002
}

popup "Выполнить"
{
MENUITEM "Синтаксический анализ &текста",10011
MENUITEM "Построить &модель текста",10012
MENUITEM SEPARATOR
MENUITEM "Подключить &базу предметной области",10013
MENUITEM "Задать системе &вопрос по тексту",10014
}

popup "Редактировать"
{
MENUITEM "Текстовый файл",10021
MENUITEM "Базы данных",10022
}

popup "Просмотреть"
{
MENUITEM "Ответ на запрос",10031
MENUITEM "Модель текста",10032
MENUITEM SEPARATOR
MENUITEM "Переменные модели текста",10033
MENUITEM "Список подключенных предметных областей",10034
}
popup "Помощь"
{
MENUITEM "О системе",10041
MENUITEM SEPARATOR
MENUITEM "About",10042
}
}

        Начинается файл служебным словом menu, после чего идут программные скобки { }, в которых описывается само меню. Пункт меню после выбора которого появляется всплывающее подменю описывается служебным словом popup "имя" {}, дальше в программных скобках перечисляются пункты меню с помощбю конструкции MENUITEM "наименование", код команды. Этот код команды будет возвращать имидж Menu при выбора соответствующего пункта. Так же можно использовать служебное слово SEPARATOR, это как бы логический разделитель пунктов меню. Выглядит как линия отделяющая группы пунктов.

 

 

Задание

        Создайте проект в котором из пункта меню будет возможно выбрать для заполнения 2 анкеты.

        Создайе новый проект и вставьте из библиотеки Unit имидж Menu. Создайте в каталоге проекта файл menu.rc и занесите в него структуру меню следующего вида:

menu
{
popup "Работа"
{
MENUITEM "Заполнение Анкеты 1",10001
MENUITEM "Заполнение Анкеты 2",10002
}
}

        В переменной FileName имиджа Menu укажите названия файла menu.rc. Далее, надо создать имидж, который будет обрабатывать команды, выбранные в меню. Назовём его control. Объявим в нём переменную FLOAT command и свяжем с имиджем Menu по этой переменной. После этого создадим имиджи, в подсхеме которых будут храниться необходимые анкеты. Назовём их Anketa1 и Anketa2. В подсхеме создайте анкетные формы. В Имидже обработки команд controls добавим переменые дескрипторы на окна с анкетами HANDLE HAnketa1, HAnketa2. В данном имидже по выбору пункта меню будем открывать соответствующую анкету. Текст имиджа controls следующий:

FLOAT command
HANDLE HAnketa1, HAnketa2

if (~command==10001)
if (~HAnketa1==#0)
HAnketa1 := OpenSchemeWindow("Anketa1","Anketa1","WS_NORMAL|WS_BYSPACE")
r := SetWindowPos("Anketa1",120,20,500,300)
endif
command := 0
endif
if (~command==10002)
if (~HAnketa2==#0)
HAnketa2 := OpenSchemeWindow("Anketa2","Anketa2","WS_NORMAL|WS_BYSPACE")
r := SetWindowPos("Anketa2",120,20,500,300)
endif
command := 0
endif

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

 

Дополнительные задания

pin2.gif (1000 bytes) Создайте проект, в котором добавлена к предыдущему проекту возможность вывода введённых ранее и обработанных данных.
pin2.gif (1000 bytes) Создайте проект в котором введённые данные обрабатываются и записываются в базу данных, после чего есть возможность просмотреть эту базу.