Docu/ru/BB-Road.odc

Путеводитель
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2009-03-20

Содержание

Двавидакомпонентов
Команды
Объектыизображения(вьюшки,views)
Обзор
Оглавление


Два вида компонентов
Блэкбокс включает в себя компонентную среду или каркас (framework), которая окажется новой концепцией для большинства программистов. Настоящий документ представляет собой краткий обзор разновидностей компонентов, которые есть в Блэкбоксе, случаев, когда нужен каждый из них, и того, где следует искать необходимую документацию.
В Блэкбоксе выделяются две основные категории компонентов: команды (command) и т.наз. объекты изображения или вьюшки (view; см. опереводетерминов). Команды сопоставимы с традиционными скриптами и макросами, за исключением того, что они реализованы в настоящем языке программирования, в противовес ограниченным либо неэффективным специализированным скриптовым языкам. Это означает, что если задача усложнится, ее программное решение может быть усложнено в нужной степени, и вам не придется внезапно переключаться на другой язык. Таким образом, диапазон применимости команд охватывает как простые задачи автоматизации, так и такие сложные задачи, такие как компиляция. Основное назначение команд  организация совместной работы объектов изображения (вьюшек), которые являются визуальными объектами системы Блэкбокс.
Команды
Программы часто строятся вокруг форм ввода данных; это и есть формы (form) в Блэкбоксе. Модуль Controls и подсистема Forms предоставляют необходимую поддержку для построения пользовательских интерфейсов, основанных на формах.
Часто нужно создавать и тексты, например, при генерации отчетов. Для этого можно использовать все возможности текстовой подсистемы Блэкбокса, включая выбор шрифтов, размера печати, цвета, а также вставлять в текст другие компоненты-вьюшки, например, метки (stamp views) или ссылки (link views), и так далее. Примером команды, которая совместно использует подсистемы для работы с формами и текстами, является ObxOrders.
Прежде чем изучать этот сложный пример, полезно взглянуть на более простые программы работы с тесктами и формами. Подсистема Obx (Overview by example  обзор с помощью примеров) содержит разнообразные примеры такого рода.
Программы в Блэкбоксе обычно работают с документами и их частями, а не напрямую с файлами и окнами. Файлы используются лишь для простых баз данных или для работы с унаследованными данными (legacy data). В ряде случаев можно преобразовать такие данные в типы данных системы Блэкбокс, если написать новые конвертеры. Соответствующий пример есть в подсистеме Obx.
Объекты изображения (вьюшки, views)
Если средств встроенных подсистем оказывается недостаточно, то возникает необходимость разработать новый компонент Блэкбокса. Обычно речь идет о новом компоненте для составных документов, т.е. о реализации новой разновидности объектов изображения (вьюшек). В противоположность программам в старом стиле, вьюшка владеет лишь частью документа, а не целым экраном и даже не целым окном. Если вьюшка является самой внешней, корневой (root view), то эффект неотличим от традиционного приложения. Однако вьюшку всегда можно еще и внедрить в тексты, формы и т.д.
Примерами объектов изображения (вьюшек) являются текстовые вьюшки (text views), вьюшки-формы (form views), гипертекстовые вьюшки-ссылки (link views); вьюшки-метки (stamp views); часы; логотип компании Oberon Microsystems, картинки, коммандеры (кнопки, которые вызывают команду на исполнение), вьюшки для оформления складок в тексте (fold views), сообщения об ошибках, выдаваемые компилятором, элементы управления (кнопки, флажки, поля ввода) и т.д. Перед тем как приступать к реализации вашей собственной разновидности вьюшек, посмотрите уже существующие, чтобы получить представление о о всем многообразии способов использования вьюшек. Иногда не нужно реализовывать совсем новую сложную подсистему для решения задачи, а достаточно создать дополнительную вьюшку, которая расширит функциональность, например, текстовой подсистемы.
Вьюшки могут иметь либо, наоборот, не иметь модель (model). Модель  это структура данных, которую вьюшка (объект изображения) представляет в визуальной форме. Впростейших случаях, когда вьюшки не имеют редактируемого сохраняемого состояния, в модели нет необходимости. Примерами могут быть логотипы, элементы управления и т.д. Сдругой стороны, полноценные редакторы должны работать с отдельной моделью. Такие более сложные вьюшки обычно реализуются в нескольких модулях, тогда как простые обычно реализуются в единственном модуле.
Сложные объекты изображения могут содержать другие вьюшки. Такие составные вьюшки называются контейнерами (containers). Существуют три полезных категории контейнеров:
 Обертка (wrapper) содержит другое изображение и изменяет либо расширяет его поведение. Обычно обертка имеет один размер с оборачиваемым изображением. Например, вьюшка, реализующая терминал, может быть оберткой для обыкновенной текстовой вьюшки, добавляя коммуникационные средства, в то время как текстовая вьюшка обеспечивает изображение передаваемой информации.
 Специальный контейнер (special container) содержит одну или несколько внедренных вьюшек. Контейнер знает типы внедренных вьюшек и их расположение. При этом вьюшки не могут быть добавлены или удалены. Например, такой специальный контейнер может содержать вверху изображение запроса, куда можно вводить запросы к базе данных, и большую текстовую вьюшку внизу, где изображаются результаты запроса. Другой пример приводится в ObxTwins.
 Общий контейнер (general container) может содержать произвольное количество внедренных вьюшек, и они могут изменяться со временем. Это наиболее общая и сложная разновидность объектов изображения, подобная встроенным подсистемам для работы с текстами и формами. Примеры для других разновидностей вьюшек есть в Obx.
Вьюшки могут не иметь программного интерфейса, иметь простой процедурный интерфейс (обычно основанный на использовании т.наз. свойств (properties), см. Controls) или полноценный расширяемый интерфейс. В последнем случае рекомендуется отделять экспортируемый интерфейс от скрытой реализации, предоставляемой по умолчанию, чтобы достичь максимальной расширяемости.
Обзор
Как начать знакомиться с системой Блэкбокс? Мы советуем начать с вводных текстов КраткаяисторияПаскаля и Краткийобзор.
Документация делится на четыре большие части:
	Руководствопользователя описывает интерфейс пользователя и наиболее важные команды Блэкбокса.
	Учебник объясняет основные шаблоны проектирования Блэкбокс (главы с 1-й по 3-ю). В главе4 обсуждается графический интерфейс пользователя, формы и управляющие элементы. Текстовая подсистема описывается в главе5. Последняя глава6 знакомит с программированием объектов изображения (вьюшек, views).
	Примеры  богатый набор примеров с исходными текстами, упорядоченных по категориям и сложности.
	Руководство программиста содержит по одному файлу документации на каждый программный модуль. В каждой подсистеме имеется документ с названием Sys-Map, содержащий ссылки на тексты для отдельных модулей.
Отдельно от примеров Obx и обучающих примеров есть и другая документация для наиболее важных типов программ Блэкбокс, она доступна в Dev/Rsrc/New. Там находятся шаблоны документов, которые можно использовать для новых программ. Имена модулей шаблонных документов будут изменены автоматически командой меню Инструменты->Создать подсистему... (Tools->Create Subsystem...). Эта команда также создает структуру каталогов для новой подсистемы (см. DevSubTool).
Программисты, которым необходим интерфейс к программам за пределами Блэкбокса, могут ознакомиться с текстом Особенности,зависящиеотплатформы.

Полезно обратиться к сопроводительной документации через меню помощи или из оглавления ниже.


Оглавление

Быстрое знакомство
Краткийобзор
Примеры
ЏЏЏВходдляПрофи

Учебник
1Взаимодействиеспользователем	Для удобства печати:
2Составныедокументы	полную версию учебника можно
3ПриёмыпроектированиявБлэкбоксе	распечатать из этого документа
4Формы
5 Тексты
6Построениеобъектовизображения(вьюшек)
A:КраткаяисторияПаскаля
B:ОтПаскалякКомпонентномуПаскалю

Руководства пользователя
Среда
ПодсистемаText
ПодсистемаForm
ПодсистемаDev
ПодсистемаStd--стандартныекоманды

Руководства разработчика
ЯдросистемыБлэкбокс
ПодсистемаText
ПодсистемаForm
ПодсистемаDev
ПодсистемаSql

Компонентный Паскаль
Сообщениеоязыке
ЧтоновоговКомпонентномПаскале
Наборлитер
Соглашенияподокументации
Соглашенияпооформлениюкода

Разное
Лицензия
Лицензионнаяполитика
Разработчики
Особенности,зависящиеотплатформы