Представление форм в исходном тексте
Для диалоговых форм (а также бланков и, отчасти, табличных форм, см. Создание печатных форм) внешний вид сохраняется в исходном тексте. Поэтому создать внешний вид любого диалога или бланка можно вручную в текстовом редакторе. Однако наглядность и удобство такого способа оставляет желать лучшего. Наглядное редактирование и возможность сохранения изменений в исходный текст предоставляет редактор форм (см. Редактор форм). Тем не менее важно понимание того, как формы представляются во внутреннем языке и как сделать руками то, что делает автоматически редактор форм.
Задание внешнего вида форм и элементов управления построено на наследовании и задании значений полей. Значение любого типа в языке имеет состояние по умолчанию. Например, строковое значение по умолчанию равно "", а значение типа дата – 01.01.2001. Для объектных типов данных также имеется понятие значения по умолчанию, которое складывается из значений всех его полей. Причем значение строкового поля в составе описания объектного типа может отличаться от "". Поясним сказанное на примере простого типа Шрифт (выдуманного и упрощенного):
ТИП Шрифт
[
СТРОКА: имя = "Arial";
ЧИСЛО: размер = 8;
ЛОГИКА: жирный;
]
Значения типа Шрифт будут создаваться с заданными значениями полей. Это начальные значения полей или, иначе говоря, значения по умолчанию. Их совокупность составляет значение по умолчанию для объектного типа. Для поля "жирный" не задано явно значение и будет использоваться значение по умолчанию для логического типа, т.е. НЕТ.
В производном объектном типе можно заменить некоторые или все значения полей:
ТИП ЖирныйШрифт(Шрифт)
[
ЛОГИКА: жирный = ДА;
]
Здесь объявляется новый объектный тип ЖирныйШрифт, который наследует поля типа Шрифт. Для поля жирный заменяется значение по умолчанию с НЕТ на ДА. В результате при создании значения типа ЖирныйШрифт поля будут иметь следующие значения:
| имя | = | "Arial" |
| размер | = | 8 |
| жирный | = | ДА |
Позднее можно изменить эти значения в коде программы:
ВЫЧИСЛИТЬ
ПЕРЕМ ЖирныйШрифт: шрифт // создали переменную типа ЖирныйШрифт
шрифт.размер = 11 // изменили размер 8 на 11
...
КОНЕЦ
Определение значений по умолчанию для полей формы, позволяет задать ее собственные параметры (такие как заголовок окна, основной шрифт и др.) и параметры содержащихся на форме элементов управления. Для того чтобы элемент управления был создан на форме, должно быть объявлено поле соответствующего типа. Типы форм и элементов управления определяются в модуле FC. Произвольные диалоговые формы создаются путем наследования от объектного типа ДИАЛОГ. Рассмотрим описание простейшего диалога, содержащего одну кнопку с текстом "Кнопка 1":
ТИП ПростейшийДиалог(ДИАЛОГ)
[
СТРОКА: заголовок = "Пример";
ЧИСЛО: ширина = 200;
ЧИСЛО: высота = 200;
КНОПКА: кнопка1 = [ левый = 10,
верхний = 10,
ширина = 70,
высота = 30,
текст = "Кнопка 1" ];
]
Здесь "заголовок", "ширина" и "высота" – поля типа ДИАЛОГ, значения которых переопределяются для придания производному диалогу требуемых характеристик. Для поля "кнопка1" задаются значения полей объектного типа КНОПКА. Эти значения определяют размер кнопки и ее расположение на форме, а также текст надписи. В диалоговых окнах все размеры и координаты задаются в экранных точках (пикселях). Более подробно вопрос добавления элементов управления рассматривается в подразделе Добавление элементов управления.
В результате получено описание внешнего вида диалогового окна. Пока здесь нет функции-обработчика нажатия на "Кнопка 1", а также обработки событий самой диалоговой формы. О задании обработчиков событий см. Обработка событий.
Создание диалогового окна с использованием подготовленного ранее типа ПростейшийДиалог осуществляется методами ПОКАЗАТЬ, ПОКАЗАТЬ_МОДАЛЬНЫЙ и др. Модальные диалоговые окна блокируют работу пользователя с главным окном платформы на время своего показа. В следующей простой программе выполняется показ диалогового окна в модальном режиме:
ТИП ПростейшийДиалог(ДИАЛОГ)
[
... // описание внешнего вида опущено для краткости
]
ВЫЧИСЛИТЬ
ПЕРЕМ ПростейшийДиалог: диалог // переменная диалога
диалог.ПОКАЗАТЬ_МОДАЛЬНЫЙ
КОНЕЦ
Методы показа форм (не только диалоговых) останавливают выполнение программы до тех пор, пока окно формы не будет закрыто. В примере выше программа будет завершена не ранее, чем управление вернется из метода ПОКАЗАТЬ_МОДАЛЬНЫЙ.
| В Инфо-Бухгалтер 8 отдаленным аналогом текстового описания форм можно назвать типовые операции. Там исходный текст программы соседствует с описанием визуального образа, а момент показа явно задается ключевым словом ВВЕСТИ. Для бланков в Инфо-Бухгалтер 8 навязывается определенный сценарий работы программы при показе визуальной части, от этого недостатка полностью свободны формы в платформе Инфо-Бухгалтер 10. |