Руководство разработчика

Представление форм в исходном тексте

Для диалоговых форм (а также бланков и, отчасти, табличных форм, см. Создание печатных форм) внешний вид сохраняется в исходном тексте. Поэтому создать внешний вид любого диалога или бланка можно вручную в текстовом редакторе. Однако наглядность и удобство такого способа оставляет желать лучшего. Наглядное редактирование и возможность сохранения изменений в исходный текст предоставляет редактор форм (см. Редактор форм). Тем не менее важно понимание того, как формы представляются во внутреннем языке и как сделать руками то, что делает автоматически редактор форм.

Задание внешнего вида форм и элементов управления построено на наследовании и задании значений полей. Значение любого типа в языке имеет состояние по умолчанию. Например, строковое значение по умолчанию равно "", а значение типа дата – 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.