Std/Docu/ru/Headers.odc

StdHeaders
ENGLISH
Редакция перевода: Ф.В.Ткачев, 2010-10-30

DEFINITION StdHeaders;

	IMPORT Dialog, Views, Fonts, Properties;

	CONST alternate = 0; number = 1; head = 2; foot = 3; showFoot = 4;

	TYPE
		Prop = POINTER TO RECORD (Properties.Property)
			alternate: BOOLEAN;
			showFoot: BOOLEAN;
			number: NumberInfo;
			head, foot: Banner
		END;

		Banner = RECORD 
			left, right: ARRAY 128 OF CHAR;
			gap: INTEGER
		END;

		NumberInfo = RECORD 
			new: BOOLEAN;
			first: INTEGER
		END;

	VAR
		dialog: RECORD 
			alternate, showFoot: BOOLEAN;
			number: NumberInfo;
			head, foot: Banner
		END;

	PROCEDURE New (p: Prop; f: Fonts.Font): Views.View;
	PROCEDURE Deposit;
	PROCEDURE InitDialog;
	PROCEDURE NewNumberGuard (VAR par: Dialog.Par);
	PROCEDURE AlternateGuard (VAR par: Dialog.Par);
	PROCEDURE HeaderGuard (VAR par: Dialog.Par);
	PROCEDURE Set;

END StdHeaders.

Этот модуль реализует объекты отрисовки (вьюшки), которые можно вставлять в текстовые документы Блэкбокса, чтобы задать верхний и нижний колонтитулы для печати.

Обычная команда меню:
"Insert Header"	""	"StdHeaders.Deposit; StdCmds.PasteView"	"TextCmds.FocusGuard"

Вьюшки колонтитулов в тексте обычно невидимы; увидеть их можно в режиме Text->Show Marks (Текст->Показать разметку). Выделив вьюшку и выполнив команду Edit->Object Properties... (Правка->Свойства объекта...), можно открыть список свойств, в котором можно сделать следующие настройки:

- "alternate" ("чередовать"): если выбрана эта настройка, то для правых и левых страницы можно задать разные колонтитулы.
- "Show Foot" ("Показывать нижний"): если выбрана эта настройка, то вьюшка соответствует нижнему колонтитулу, в противном случае - верхнему (когда он вообще видим).
- "Start with new page number" ("Продолжать нумерацию с"): если выбрана эта настройка, то пользователь может ввести номер для страницы, на которой оказалась вьюшка. Это позволяет изменить нумерацию страниц в пределах документа.
- "Right Head", "Right Foot", "Left Head", "Left Foot" ("Правый верхний", "Правый нижний", "Левый верхний", "Левый нижний"): эти свойства относятся к правым/левым верхним/нижним колонтитулам. Это литерные цепочки в одну строку. Они могут содержать макросы, описанные ниже.
- "Head gap", "Foot gap" ("Отбивка верхнего", "Отбивка нижнего"): задает отбивку (расстояние) верхнего/нижнего колонтитула от основного текста, в пунктах.
- "Font..." ("Шрифт"): позволяет выбирать шрифт для колонтитулов.

В литерных цепочках "Right Head" и т.д. можно использовать следующие макросы:

	&p - заменяется номером текущей страницы в арабской нотации
	&r - заменяется номером текущей страницы в римской нотации
	&R - то же, но заглавными буквами
	&a - заменяется буквой латинского алфавита, соответствующей номеру, если номер <= 26, и обычным номером в арабской нотации в противном случае
	&A - то же, но используются заглавные буквы
	&d - заменяется датой распечатки
	&t - заменяется временем распечатки
	&& - заменяется литерой &
	&; - задает точку разрыва (split point)
	&f - имя файла с путем/заголовком

Эти макросы вычисляются при печати (или при просмотре, когда колонтитулы видны на экране). Макрос "&;" указывает точку разрыва, которая представляет собой позицию в литерной цепочке, где ее нужно как бы раздвинуть в стороны. Например, для цепочки "Левое поле&;Правое поле" часть "Левое поле" прижмется к левому краю, а часть "Правое поле"  к правому краю страницы. Точка разрыва играет роль пружины, раздвигающей левую и правую части в стороны.


CONST alternate, number, head, foot, showFoot
Номера свойств для свойств, которые поддерживаются вьюшками колонтитулов.


TYPE Prop (Properties.Property)
Дескриптор свойств для вьюшек колонтитулов.

alternate: BOOLEAN
Определяет, являются ли разными колонтитулы у левых и правых страниц.

showFoot: BOOLEAN
Определяет, печатать ли нижний колонтитул.

number: NumberInfo
Определяет формат номеров страниц.

head, foot: Banner
Определяет, как печатаются верхние и нижние колонтитулы.


TYPE Banner
Задает верхний или нижний колонтитул страницы (или пары страниц, если выбрано "alternate").

left, right: ARRAY 128 OF CHAR
Цепочки литер для левого и правого колонтитула (верхнего или нижнего). Цепочки могут содержать макросы, описанные выше.

gap: INTEGER	gap >= 0
Отбивка (расстояние) колонтитула от основного текста.


TYPE NumberInfo
Задает способ нумерации страниц.

new: BOOLEAN
Указывает, что нумерация страниц начинается заново, с номера first.

first: INTEGER	first >= 0
Начальный номер, который используется для страницы, в текст которой вставлена вьюшка колонтитула.


VAR dialog
Запись для организации обмена данными с редактором свойств (см. interactor, propertysheet).

alternate: BOOLEAN
Определяет, являются ли разными колонтитулы у левых и правых страниц.

showFoot: BOOLEAN
Определяет, является ли эта вьюшка нижним колонтитулом.

number: NumberInfo
Определяет формат номеров страниц.

head, foot: Banner
Определяет, как печатаются верхние и нижние колонтитулы.


PROCEDURE New (p: Prop; f: Fonts.Font): Views.View
Создает новую вьюшку-колонтитул с заданными свойствами.

PROCEDURE Deposit
Помещает новую вьюшку колонтитула в глобальную очередь (обычно перед вставкой в документ).

Следующие процедуры используются в диалоге редактора свойств (диалоговая форма Std/Rsrc/Headers):
PROCEDURE InitDialog
PROCEDURE NewNumberGuard (VAR par: Dialog.Par)
PROCEDURE AlternateGuard (VAR par: Dialog.Par)
PROCEDURE HeaderGuard (VAR par: Dialog.Par)
PROCEDURE Set