Form/Docu/ru/User-Man.odc

Подсистема Form
Руководство пользователя
ENGLISH


Содержание
1Созданиеисохранениеформ
2Основыредактирования
3Клавишинавигации
4Перетаскивание
5Перетаскиваниесуказанием
6Режимыразметкиимаски
7Элементыуправленияиинтеракторы
8Свойстваэлементовуправления


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


1 Создание и сохранение форм
Команда Формы->Новая форма... (Controls->New Form) создает диалоговый окна и другие формы, которые устанавливаются в соответствие экспортированным глобальным переменным. Все такие формы являются немодальными.  Абсолютно все диалоговые окна в BlackBox немодальны, настолько, насколько позволяет основная платформа.

Для начала откройте диалог Новая форма и введите "TextCmds.find" в поле Link. После нажатия кнопки ОК будет автоматически создан макет диалогового окна с текстовыми полями Find и Replace и несколькими флажками. Эти поля и флажки непосредственно соответствуют полям записи переменной find в модуле TextCmds. Чтобы убедиться в этом, выделите строчку "TextCmds.find", и выполните команду Инфо->Интерфейс (Info->Интерфейс). Будет показано определение соответствующего типа записи.

Размер отображения формы можно менять, выделяя документ целиком (Правка->Выделить документ) и затем перемещая узлы рамки. 

В диалоговом окне, создаваемом командой Новая форма, элементы управления (кнопки, поля ввода и т.д.) упорядочиваются стандартным образом, однако их расположение можно менять. Элементы управления могут быть переупорядочены, переименованы или изменены другим образом с помощью меню Формы (Controls) или Разметка (Layout). Последнее появляется автоматически, когда форма получает фокус.

Вместо начальной разметки по существующей глобальной переменной, можно начать создание с пустой формы (кнопка Пустая / Empty в диалоговом окне Новая форма) и затем успешно добавлять новые элементы управления через меню Controls. Позднее эти элементы можно будет связать с различными глобальными переменными.

Редактируемое диалоговое окно можно сохранить, сохраняя окно документа, в котором велась разметка. BlackBox Component Builder сохраняет диалоговые окна в стандартном формате документа. По соглашению, формы BlackBox сохраняются в подходящей директории Rsrc (см. Подсистемы и глобальные модули). Например, стандартное окно поиска и замены хранится в Text/Rsrc/Find.


2 Основы редактирования
Отображение может быть вставлено в форму одной из команд Вставить АВС (Insert ABC) в меню Формы (Controls), например, Вставить командную кнопку. Можно вставить любое другое отображение, копировав его через буфер обмена или перетаскиванием.

Отображения на форме могут быть выделены. Если выделено одиночное отображение ("синглтон"), то видны узлы рамки, с помощью которых можно изменять размер отображения. Если выделено несколько отображений, показываются границы выделения, но без узлов.
Отображение можно выделить как щелчком мыши на нем, так и обведя мышью территорию, которая содержит отображение(я). Если во время выделения нажата клавиша shift, то при щелчке по выделенному отображению выделение снимается, а по невыделенному - отображение добавляется к выделенным. Если клавиша shift не нажата, то существующее выделение снимается и заменяется новым. Следовательно, одиночный щелчок на пустом месте снимает текущее выделение. Тот же эффект дает нажатие esc.

Некоторые атрибуты выделенных отображений можно изменять через меню Атрибуты (и меню Шрифт в MacOS). Таким образом можно изменить шрифт, стиль и размер надписей для большинства элементов управления.

Команда Формы->Вставить группу (Insert GroupBox) работает также, как и остальные команды вставки, за одним исключением: если есть выделение, то группа размещается так, чтобы включить в себя выделенные отображения.

Mac OS:
Изменение размера надписей не имеет эффекта, он всегда равен 12 пунктам.

Выделение может быть вырезано, копировано и вставлено с помощью буфера обмена. Оно может быть удалено клавишами backspace или delete.

Меню Разметка содержит различные команды, которые полезны при редактировании форм. Команды Выровнять слева, Выровнять справа, Выровнять сверху, Выровнять снизу (Align Left, Align Right, Align Top, Align Bottom) выравнивают соответствующие границы всех выделенных отображений. Выравнивание ведется по самому левому/правому/верхнему/нижнему краю. При выравнивании отображения сдвигаются, а их размер остается прежним.
Выровнять ряд (Align To Row) выравнивает все выделенные отображения в вертикальном направлении так, что все вертикальные центры устанавливаются на одной линии. Ее координата y вычисляется как среднее арифметическое всех старых координат y. Точно также Выровнять колонку (Align To Column) выравнивает выделенные отображения в горизонтальном направлении, формируя из них одну колонку.

Диалоговое окно Включить сетку... (Set Grid) устанавливает сетку. Большинство команд, которые перемещают или изменяют размер, будут округлять его по этой сетке. Диалоговое окно позволит вам выбрать между сеткой, построенной по миллиметрам или по 1/16 дюйма. Разрешение сетки задает размер ячейки в выбранных единицах. Большие значения позволяют легче выравнивать элементы. Через каждый сантиметр или пол-дюйма по сетке рисуются пунктирные линии, помогающие в редактировании.
Выбрать невыровненные (Select Off-Grid Views) выделяет все отображения, у которых хотя бы один край не выровнен по сетке. Выстроить по сетке (Force To Grid) передвигает и изменяет их размер на минимально возможное расстояние, чтобы выровнять их по сетке.

В принципе, отображения упорядочены по оси z, то есть каждое находится впереди или позади другого. При нормальном расположении отображения на форме не должны перекрываться, и их z-упорядочивание не имеет видимого эффекта. Но это упорядочивание учитывается при перемещении фокуса между элементами с помощью клавиши tab. Фокус перемещается от заднего к переднему отображению. Команды Cделать первым/задним и Сделать последним/передним (Set First/Back и Set Last/Front) позволяют изменять z-порядок выбранного синглтона. Сортировать отображения (Sort Views) упорядочивает все отображения по оси z слева направо и сверху вниз. Эту команду лучше применять после того, как выполнена разметка формы, чтобы вновь сделать порядок интуитивным.

Пересчитать размер (Recalc Focus Size) действует на фокусированный макет формы. Команда расчитывает прямоугольник, ограничивающий все отображения, расположенные на форме, добавляет небольшие поля и затем изменяет высоту и ширину формы. Это более удобно, чем использовать Правка->Выделить документ и затем менять размер вручную.
Команда Назначить основную кнопку и Назначить кнопку отмены (Set Default Button и Set Cancel Button) делает выделенную кнопку основной или кнопкой отмены. Основная кнопка реагирует на нажатие клавиши return / enter как на нажатие мыши, кнопка отмены реагирует на нажатие esc.

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


3 Клавиши навигации
Клавиши-стрелки могут использоваться для перемещения выделенных элементов влево, вправо, вверх или вниз на одну точку. Если при этом удерживается клавиша модификатора, выделение перемещается на большее расстояние.


4 Перетаскивание
При щелчке на выделении и перемещении курсора мыши выделенные отображения перемещаются в новое место. Перемещение учитывает сетку.

Если в конце перетаскивания нажата клавиша модификатора, то перетаскивается копия выделенного отображения, и выделение переносится на нее.

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


5 Перетаскивание с указанием
Перетаскивание с указанием также поддерживается в формах. Может быть перенесен размер другого отображения. Это очень удобно для разметки. Например, выделите несколько элементов управления различного размера, удерживайте клавишу alt (Windows) / command (MacOS) и перетащите курсор на другое отображение. Когда вы отпустите мышь на этом отображении, все выделенные элементы примут его размер.


6 Режимы разметки и маски
Формы могут использоваться в двух различных режимах. Обычно применяется режим разметки (layout mode), то есть, форма может свободно редактироваться. Отображения (обычно элементы управления), внедренные на форму, не могут редактироваться напрямую, поскольку они могут только выделяться, но не получать фокус. Для разметки было бы неудобно, если щелок мышью на одном из элементов передавал бы ему фокус, вместо того, чтобы его выделить. Формы сохраняются в режиме разметки и открываются в окнах документов.

Для использования формы в качестве диалогового окна или формы ввода данных она может быть открыта в режиме маски, во вспомогательном окне (форма ввода данных) или в инструментальном окне (диалог для операций на документе, расположенном под ним). Форма не может редактироваться в режиме маски. Однако ее внедренные отображения могут получать фокус, то есть, текстовое поле может принимать данные, а кнопка - нажиматься. Но теперь внедренные отображения нельзя выделять, перемещать и менять их размер.

В режиме маски рамка фокуса не показывается вокруг фокусированного отображения.

Когда форма в режиме разметки имеет фокус, другое окно с ней может быть открыто в режиме маски, с помощью команды Формы->Открыть как инструм. диалог или Формы->Открыть как вспом. диалог (Controls->Open As Tool Dialog или Controls->Open As Aux Dialog). Таким образом можно опробовать форму прямо в процессе ее создания. Изменения в окне разметки тотчас сказываются в окне маски, а ввод в окно маски передается в окно разметки.

Не нужно сохранять формы в режиме маски. Они сохраняются в режиме разметки и могут впоследствии открываться, редактироваться и сохраняться обычными командами меню Файл. Форма ввода данных открывается командой StdCmds.OpenAuxDialog, диалоговое окно открывается командой StdCmds.OpenToolDialog Эти команды открывают документ формы во вспомогательном / инструментальном окне и переводят его в режим маски. Например, следующие команды показывают различия между режимами, открывая один и тот же документ различными способами:

 "StdCmds.OpenAuxDialog('Form/Rsrc/Gen', 'New Form')"
 "StdCmds.OpenToolDialog('Text/Rsrc/Cmds', 'Find & Replace')"
 "StdCmds.OpenDoc('Form/Rsrc/Gen')"
 "StdCmds.OpenDoc('Text/Rsrc/Cmds')"

Две последние команды соответствуют команде Файл->Открыть и допускают редактирование.

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

Команды OpenAuxDialog/OpenToolDialog принимают портируемые имена файлов. Портируемое имя - это строка, которая задает файл машинно-независимым образом. В нем используется в качестве разделителя символ "/", как в Unix и Интернет.

Эти команды обычно применяются в пунктах меню, например, как показано ниже:

	"TextCmds.InitFindDialog; StdCmds.OpenToolDialog('Text/Rsrc/Find', 'Find & Replace')"

Здесь первая команда инициализирует интерактор TextCmds.find текущим фрагментом текста. Вторая команда открывает диалог с формой Text/Rsrc/Find, элементы которого связываются при открытии окна  с полями интерактора.

См. также модули FormGen, TextCmds и StdCmds.


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

Каждый элемент управления может быть связын с переменной, точнее, с полем глобально объявленной переменной записи - так называемого интерактора. Когда элемент размещается (заново создается или считывается из документа), BlackBox пробует связать элемент с его переменной, используя возможности метапрограммирования ядра BlackBox Component Framework. Таким образом, связь между элементом управления и переменной может быть создана автоматически, когда диалоговое окно создается или загружается. Отделение интерактора от элементов управления делает возможным скрыть от программы множество деталей пользовательского интерфейса, например, разметку диалогового окна или другие "косметические" нюансы.

BlackBox Component Framework по умолчанию поддерживает командные кнопки, флажки, переключатели, поля, надписи, выпадающие списки, списки выбора, списки ввода, поля даты, времени, цвета, числового значения и группы (command buttons, check boxes, radio buttons, fields, captions, list boxes, selection boxes, combo boxes, date, time, color, up/down fields, groups).


8 Свойства элементов управления
Элементы управления имеют различные свойства, например, надпись на кнопке или поле интерактора, с которым связан элемент. Инспектор - это инструмент, который используется для просмотра и изменения свойств стандартных элементов. Чтобы открыть диалог инспектора для элемента управления, сначала выберите элемент, а затем выполните Правка->Свойства объекта... (Windows) / Правка->Информация о части (MacOS) (Edit->ObjectProperties.../ Edit->PartInfo)

Чтобы подробнее изучить инспектор, ознакомьтесь с документацией к модулю DevInspector. 

Для дальнейшего ознакомления с программным интерфейсом подсистемы Form обратитесь к документации модулей FormModels, FormViews, FormControllers, FormGen, FormCmds и Controls. Поскольку большинство этих модулей распространяется в исходных текстах, вы имеете возможность познакомиться с примером комплексной подсистемы. Более простые примеры даются в подсистеме Obx, конкретно - примеры ObxAddress0, ObxAddress1, ObxAddress2, ObxOrders, ObxControls и  ObxDialog. Учебник по системе форм дается в Главе4 сопроводительной книги по компонентному ПО и BlackBox Component Framework.