ЗАДАНИЕ XXV

Цель: Краткое знакомство с работой интерфейсных элементов в системе Stratum.

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

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

Система Stratum, являясь приложением Windows, позволяет использовать стандартный интерфейс пользователя для передачи и отображения информации между пользователем и проектами Stratum.

Элементы интерфейса пользователя доступные в системе Stratum:

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

Любое окно может содержать различные элементы управления (рис. 1):

  • строка ввода;
  • поля списка;
  • комбинированные поля списка;
  • поля контрольных индикаторов;
  • поля селекторных кнопок;
  • командные кнопки;
  • в том числе диалоговое окно содержит "вкладки".

Рисунок 1
Рисунок 1

Задание 1.

Создание окон различными способами с различными параметрами. Проект i_sample01. (рисунок 2)

Рисунок 2
Рисунок 2

В стандартной библиотеке UNIT.LIB системы Stratum содержится два имиджа для создания и работы с окнами:

- GraphicSpace - служит для создания окна с пустым графическим пространством, либо из VDR файла. Имеет уникальный дискриптор HSpace и уникальное имя окна WindowName. Любые объекты помещаются в созданное окно после его создания. Достоинство такого способа создания окна заключается в том, что в окно не попадает лишняя информация (линии связи, изображения имиджей и т.д.). К существенным недостаткам можно отнести сложность позиционирования графических объектов в графическом пространстве.

- LGSpace - имидж создает окно с изображением схемы некоторого класса. Окно может быть открыто по изображению графического объекта (необходимо указать имя этого объекта в переменной ObjectName данного имиджа), либо согласно настроек параметров листа схемы. (рис. 3). К достоинствам данного способа можно отнести простоту построения и управления сложными графическими сценами, к недостаткам - необходимость прятать ненужную графическую информацию (использование "подложек" для сокрытия связей, выключение различных объектов по слоям (см. закладку Слои на рис. 3) и т.д.

Рисунок 3
Рисунок 3

Используя проект i_sample01 как основу, исследуйте влияние тех или иных параметров имиджей графики и управления на результат работы проекта.

Задание 2.

Создание и работа с диалоговыми окнами и интерфейсными элементами. Проект i_sample02.

Stratum может работать со стандартными диалогами, но кроме стандартных вы имеете возможность построить свои собственные диалоги. Создание своих диалогов не намного сложнее создания обычных окон. Один диалог может содержать несколько панелей.

Каждая панель имеет:

В стандартной библиотеке UNIT.LIB существуют два имиджа, необходимые для создания диалогового окна:

- DialogBox - Имидж служит для создания диалогового окна. Переменные имиджа:

- DialogWindow - Имидж помещается на схему, содержащую изображение панели диалогового окна. Служит для получения дескриптора графического пространства панели диалогового окна и имени окна. Имидж обязательно должен быть поименован как объект схемы. Для этого откройте окно Свойства имиджа закладку Объект и в поле Имя объекта введите DialogHandler.

Создание диалогового окна с одной закладкой.

Установите в главной схеме проекта имидж DialogBox. Создайте новый имидж с именем класса, например sample. Создайте схему для имиджа sample (в этой схеме будет помещаться изображение закладки диалогового окна). Поместите схему имиджа sample имидж DialogWindow. Откройте диалоговое окно Свойства имиджа для имиджа sample. Перейдите в закладку Объект и установите Имя объекта, например page. Откройте диалоговое окно Свойства имиджа для имиджа DialogBox. Перейдите в закладку Переменные и задайте новые значения переменных. Template="sample", Object="../page", остальные можно оставить без изменения. Поместите в схему имиджа sample любые имиджи управления и контроля, любую информацию. Запустите проект на выполнение. Для вызова диалогового окна установите переменную show имиджа DialogBox в еденицу.

Создание диалогового окна с несколькими закладками.

Создайте согласно предыдущему пункту несколько имиджей со схемами изображений закладок. Задайте уникальные имена объектов для этих имиджей. Каждый из этих имиджей свяжите с соответствующим имиджем Dialogbox, и задайте переменные Title, Object и Template. Свяжите все имиджи DialogBox по следующим переменным: MainTitle, HDialog, тем самаым объеденив несколько закладок в одно диалоговое окно. (смотрите пример проекта i_sample02, рис. 4).

Рисунок 4
Рисунок 4

Замечание: Свойства отображения информации в окне закладки можно настроить в диалоговом окне  Параметры листа/Окно схемы закладки.

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

Используя как основу проект i_sample02 создайте диалоговое окно, имитирующее работу калькулятора. Создайте две закладки. На первой расположите сам калькулятор, а на второй - текст описания его работы.

Задание 3.

Создание и работа с меню команд. Проект i_sample03. (рис. 5)

Рисунок 5
Рисунок 5

В стандартной библиотеке UNIT.LIB существует имидж для создания меню пользователя:

- Menu - устанавливает меню пользователя заданное специальным файлом - шаблоном.

Файл - шаблон имеет следующий синтаксис:

MENU
{
описание структуры меню
}
POPUP “Имя подменю”
{
описание структуры подменю:
}
MENUITEM “Имя пункта”, command [,checked] [,disabled] [,grayed]
MENUITEM separator

,где command - уникальный номер пункта меню (от 10000 до 16000)
checked - слева рисуется галочка
disabled - пункт меню запрещен к выбору
grayed - пункт меню рисуется серым цветом и его нельзя выбрать
Размер файла не должен превышать 32 кб

Пример файла - шаблона:

menu{
	popup "&File"{
		menuitem "&Load",10000
		menuitem "&Save",10001
		menuitem "Save &As...",10002,grayed
		menuitem separator
		menuitem "&Quit",10003
	}
	popup "&Tools"{
		menuitem "&Options",10100,grayed
	}
	popup "&?"{
		menuitem "&About",11000
	}
}

Рассмотрим подробнее способ обработки сообщений от имиджа Menu. При выборе некоторого пункта меню, переменная command будет содержать уникальный номер данного пункта, который указан в файле - шаблоне меню, например 10000. Далее необходимо согласно номеру пункта меню совершить некоторое действие и обязательно обнулить переменную command. Текст имиджа, содержащего такую операцию, может выглядеть примерно так:

FLOAT command
FLOAT local ret

switch
  case(command==10000)
    ret := messagebox("собщение "+string(command),"Заголовок",1)
  case(command==10001)
    ret := messagebox("собщение "+string(command),"Заголовок",1)
  case(command==10002)
    ret := messagebox("собщение "+string(command),"Заголовок",1)
endswitch

command := 0

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

_enable - если установлена в 0, математическая модель объекта и всех вложенных в его подсхему объектов не обрабатывается. Если в 1, объект работает как обычно.

Таким образом, для управления моделью с помощью меню, необходимо управлять переменной _enable в соответствии с переменной command имиджа Menu. Текст имиджа, содержащего такую операцию, может выглядеть так:

FLOAT code      //номер пункта - задается
FLOAT command   //выбранный пункт - получается
FLOAT enable    //флаг запуска, один шаг

if(code==command)
  command:=0
  enable:=1
else
  if(~enable)
    enable:=0
  endif
endif

Переменная code содержит номер пункта меню (необходимо задать) с которой сравнивается переменная command - номер выбранного пункта (передается по связи из имиджа Menu). При равенстве этих двух переменных, переменная enable принимает значение 1 и на следующем шаге обнуляется. С переменной enable необходимо связать зарезервированную переменную _enable имиджа, которым мы хотим управлять (см. i_sample03).