System/Docu/ru/Controls.odc

Controls

DEFINITION Controls;

	IMPORT Meta, Dialog, Views, Properties;

	CONST
		opt0 = 0; opt1 = 1; opt2 = 2; opt3 = 3; opt4 = 4;
		link = 5; label = 6; guard = 7; notifier = 8; level = 9;
		default = opt0; cancel = opt1;
		left = opt0; right = opt1; multiLine = opt2; password = opt3;
		sorted = opt0;
		haslines = opt1; hasbuttons = opt2; atroot = opt3; foldericons = opt4;

	TYPE
		Control = POINTER TO ABSTRACT RECORD (Views.View)
			item-: Meta.Item;
			disabled-, undef-, readOnly-, customFont-: BOOLEAN;
			font-: Fonts.Font;
			label-: Dialog.String;
			prop-: Prop;
			(c: Control) Internalize- (VAR rd: Stores.Reader);
			(c: Control) Externalize- (VAR wr: Stores.Writer);
			(c: Control) CopyFromSimpleView- (source: Views.View);
			(c: Control) HandleViewMsg- (f: Views.Frame; VAR msg: Views.Message);
			(c: Control) HandleCtrlMsg (f: Views.Frame; VAR msg: Views.CtrlMessage;
													VAR focus: Views.View);
			(c: Control) HandlePropMsg- (VAR msg: Views.PropMessage);

			(c: Control) Internalize2- (VAR rd: Stores.Reader), NEW, EMPTY;
			(c: Control) Externalize2- (VAR wr: Stores.Writer), NEW, EMPTY;
			(c: Control) CopyFromSimpleView2- (source: Control), NEW, EMPTY;
			(c: Control) HandleViewMsg2- (f: Views.Frame; VAR msg: Views.Message), NEW, EMPTY;
			(c: Control) HandleCtrlMsg2- (f: Views.Frame; VAR msg: Views.CtrlMessage;
													VAR focus: Views.View), NEW, EMPTY;
			(c: Control) HandlePropMsg2- (VAR p: Views.PropMessage), NEW, EMPTY;

			(c: Control) CheckLink- (VAR ok: BOOLEAN), NEW, EMPTY;
			(c: Control) Update- (f: Views.Frame; op, from, to: INTEGER), NEW, EMPTY;
			(c: Control) UpdateList- (f: Views.Frame), NEW, EMPTY
		END;

		Directory = POINTER TO ABSTRACT RECORD 
			(d: Directory) NewPushButton (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewCheckBox (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewRadioButton (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewListBox (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewSelectionBox (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewField (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewUpDownField (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewDateField (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewTimeField (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewTreeControl (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewColorField (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewComboBox (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewCaption (p: Prop): Control, NEW, ABSTRACT;
			(d: Directory) NewGroup (p: Prop): Control, NEW, ABSTRACT
		END;

		Prop = POINTER TO RECORD (Properties.Property)
			opt: ARRAY 5 OF BOOLEAN;
			link, label, guard, notifier: Dialog.String;
			level: INTEGER;
			(p: Prop) IntersectWith (q: Properties.Property; OUT equal: BOOLEAN)
		END;

		DefaultsPref = RECORD (Properties.Preference)
			disabled, undef, readOnly: BOOLEAN
		END;

		PropPref = RECORD (Properties.Preference)
			valid: SET
		END;

	VAR
		dir-, stdDir-: Directory;
		par-: Views.View;

	PROCEDURE Notify (c: Control; f: Views.Frame; op, from, to: INTEGER);
	PROCEDURE OpenLink (c: Control; p: Prop);
	PROCEDURE Relink;
	PROCEDURE DepositPushButton;
	PROCEDURE DepositCheckBox;
	PROCEDURE DepositRadioButton;
	PROCEDURE DepositListBox;
	PROCEDURE DepositSelectionBox;
	PROCEDURE DepositField;
	PROCEDURE DepositUpDownField;
	PROCEDURE DepositDateField;
	PROCEDURE DepositTimeField;
	PROCEDURE DepositTreeControl;
	PROCEDURE DepositColorField;
	PROCEDURE DepositComboBox;
	PROCEDURE DepositCaption;
	PROCEDURE DepositGroup;
	PROCEDURE DepositCancelButton;
	PROCEDURE SetDir (d: Directory);

END Controls.


Модуль Controls предоставляет множество элементов стандартного интерфейса пользователя, так называемых элементов управления. В BlackBox элементы управления являются расширенными отображениями. Как и всякое отображение, элемент управления может быть внедрен в любой общий контейнер, такой как форма или текст. Обычно используются формы.

Стандартные элементы управления, предоставляемые BlackBox: командные кнопки, флажки, переключатели, выпадающие списки, панели выбора, поля (текста, даты, времени и цвета), списки ввода, древовидные списки, надписи и группы (command buttons (push buttons), check boxes, radio buttons, list boxes, selection boxes, (text, date, time and color) fields, combo boxes, tree controls, captions, groups).

Что непохоже на другие отображения, эти элементы управления BlackBox могут быть связаны с переменной в программе, или точнее: с некоторым полем, доступным через глобально объявленную переменную. Когда элемент управления открыт, BlackBox пытается связать его с этой переменной, используя расширенные возможности метапрограммирования модуля Meta. Таким образом, связка между элементом управления и переменной может быть построена автоматически, когда диалог заново создан или загружен из файла, и корректная связь (например, корректный набор текста) может быть гарантирована даже после того, как разметка диалога была изменена.

Элементы управления могут принимать различные состояния во время выполнения. В зависимости от элемента и пользовательского интерфейса платформы, эти состояния могут быть представлены четким наглядным образом:

включен/выключен	(enabled/disabled)
	Только включенные элементы могут интерактивно изменяться.
	Чтобы отключить элемент, его охрана должна установить par.disabled равным TRUE.
	Элемент, который не может быть связан со своей переменной, всегда отключен.
определен/неопределен	(defined/undefined)
	Недопустимые или другие неопределенные значения могут подсвечиваться.
	Чтобы пометить элемент как неопределенный, его охрана должна установить par.undef в TRUE.
нормальный/только для чтения	(normal/read-only)
	Элементы могут быть обозначены только для чтения, то есть, управляемыми только из программы.	
	Чтобы пометить элемент как только для чтения, его охрана должна установить par.readOnly в TRUE.
	Элементы, которые связаны с переменными только для чтения, всегда доступны только для чтения.

Заметим, что эти состояния являются временными, то есть, полностью задаются во время выполнения; они никогда не загружаются и не выгружаются.

Все элементы управления имеют следующие перманентные свойства, которые выгружаются, когда элемент управления записывается в файлы:

link
	Это имя глобальной переменной, с которой связан элемент управления, например,
	TextCmds.find.replace.
label
	Это показываемая строка
	(не применимо к полям (текста, даты, времени и цвета), спискам, панелям выбора, выпадающим спискам).
	Символ "&" указывает, что следующий символ в заголовке должен быть подчеркнут
	(Для сочетаний быстрого вызоваt. Это возможность Windows, она недоступна на Mac OS).
	Если вы желаете включить в заголовок символ "&", вы должны написать "&&".
guard
	Эта необязательная команда обозначает процедуру охраны, которая позволяет избирательно
	включать/выключать элементы управления и устанавливать состояния undef и readOnly. 
notifier
	Эта необязательная команда обозначает процедуру-обработчик, которая позволяет делать 
	что-либо всякий раз, когда элемент интерактивно изменяется.
light font
	Поле может отображаться как стандартным шрифтом, так и более "светлым" шрифтом.
	На некоторых платформах это свойство работает только для полей и надписей.


Эти свойства, как и другие, специфичные для конкретных элементов управления (см. ниже), могут устанавливаться интерактивно, с помощью подходящего инструмента (см. DevInspector), или программно, с помощью Properties.SetMsg.

Командная кнопка (Command Button)
Нажатие командной кнопки вызывает экспортированную процедуру без параметров. Командная кнопка связывается с этой экспортированной процедурой. Это может быть константа (нормальная процедура) или процедурная переменная.

Дополнительные свойства:
default	Кнопка активизируется, когда пользователь нажимает return или enter.
cancel	Кнопка активизируется, когда пользователь нажимает escape.


Флажок (Check Box)
Флажок позволяет пользователю выбирать между двумя состояниями, отмеченным или неотмеченным. Флажок связывается с полем BOOLEAN переменной.
Альтернативой может быть связывание флажка с полем SET переменной. Свойство level определяет, к какому члену множества привязан элемент управления. Флажок отмечен, если указанный член содержится во множестве. Флажок также может быть связан с полем Dialog.Selection переменной. Свойство level показывает, какой элемент множества val ассоциирован с флажком.

Дополнительные свойства:
level	если флажок связан с множеством или переменной Dialog.Selection, то 
	поле level указывает, какой элемент множества представлен элементом управления.


Переключатель (Radio Button)
Переключатели позволяют пользователю выбирать между несколькими альтернативами. Каждая альтернатива представлена как кнопка переключателя. В каждый момент времени только одна из кнопок-переключателей "включена", все остальные "выключены".
Все переключатели, которые принадлежат одному выделению, связаны с одним полем целого типа. Каждая кнопка переключателя "включена" при своем значении этого поля. Это значение может быть настроено с помощью свойства level.

Дополнительные свойства:
level	переключатель "включен", когда значение переменной, 
	с которой он связан, равно значению level.


Список (List Box)
Выпадающий список предоставляет пользователю список строк. Только один пункт из этого списка может быть выделен. Списки связываются с полями типа Dialog.List.


Панель выбора (Selection Box)
Панель выбора предоставляет пользователю список строк. Произвольное количество пунктов из этого списка может быть выделено. Панели выбора связываются с полями типа Dialog.Selection.


Поле (Field)
Текстовое поле позволяет пользователю вводить строку. Поля связываются с полями типов ARRAY n OF CHAR, BYTE, SHORTINT, INTEGER, LONGINT, SHORTREAL, REAL, Dialog.Combo или Dialog.Currency. Поля выполняют некоторые простейшие проверки, такие как максимально допустимая длина строки, или допустимый набор символов (для чисел имеют значение только цифры и некоторые символы, подобные "-" или ".").

Дополнительные свойства:
multi line	Поле, связанное с ARRAY n OF CHAR, может показывать несколько строк.
	Символ возврата каретки принимается при вводе.
password	Не показывать символы, которые вводятся.

Поле числового ввода (UpDownField)
Поле числового ввода - это специальное текстовое поле, связанное с переменной типа BYTE, SHORTINT, INTEGER or LONGINT. Значение целого может увеличиваться  или уменьшаться стрелками.


Поле даты (DateField)
Поле даты позволяет пользователю задавать дату. Поля даты связываются с переменными типа Dates.Date. На вводе поля дат принимают только правильные даты.


Поле времени (Time Field)
Поле времени позволяет пользователю задавать время. Поля времени связываются с переменными типа Dates.Time. На вводе поля времени принимают только правильное время.


Древовидные списки (Tree Control)
Древовидные списки предоставляют пользователю дерево строк. Один узел этого дерева может быть выделен. Древовидные списки связываются с полями типа Dialog.Tree.

Дополнительные свойства:
Sorted	Узлы с общим родителем показываются в алфавитном порядке
	вместо показа в том порядке, в котором они добавлялись в дерево.
Lines	Между узлами дерева рисуются линии.
Buttons	Кнопка со знаком "+" или "-" рисуется у вершин, которые имеют потомков.
Lines/Buttons at Root	Линии и кнопки рисуются также на уровне корня дерева.
Folder Icons	Используются значки для показа вершин как папок или листьев.

Поле цвета (Color Field)
Поле цвета позволяет пользователю задавать цвет. Поля цвета связываются с переменными типа Dialog.Color или типа Ports.Color.


Список ввода (Combo Box)
Список ввода представляет из себя комбинацию текстового поля и выпадающего списка. Подобно списку, он предоставляет список строк, из которых одна может быть выбрана. Дополнительно он предоставляет поле, в котором может быть введено значение. Это значение может быть одним из списка или любым другим. Списки ввода связываются с Dialog.Combo.


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


Группа (Group)
Группа - это прямоугольный кадр с заголовком. Она позволяет логически объединить несколько элементов управления вместе. 


С элементами управления могут быть связаны команды охраны. Такие команды имеют следующую сигнатуру:

	PROCEDURE Guard (VAR par: Dialog.Par)

Главная цель команд охраны - отключать элемент управления при необходимости. Это делается следующим образом:

	PROCEDURE Guard (VAR par: Dialog.Par);
	BEGIN
		par.disabled := condition
	END Guard;

Элементы управления, которые всегда включены, не нуждаются в охране. Кроме отключения, стражи могут также устанавливать элемент управления в неопределенное или только для чтения состояние (par.undef, par.readOnly).

Notifier commands can be associated with a control. Such a command has the signature of Dialog.NotifierProc, i.e.,
Команды обработки могут быть ассоциированы с элементом управления. Такие команды имеют сигнатуру Dialog.NotifierProc, то есть,

	PROCEDURE Notifier (op, from, to: INTEGER)

Цель команд-обработчиков - дать программе возможность задавать поведение для элемента управления, когда его состояние изменяется пользователем. Например, сообщение о состоянии может быть показано, когда пользователь щелкает на командной кнопке, и удалено, когда пользователь щелкает по кнопке снова (это можно сделать с помощью процедуры Dialog.ShowStatus). Или обработчик может выполнять некоторые проверки после каждого символа, введенного в текстовое поле. Другой пример касается панелей выбора: для каждого элемента / диапазона элементов, которые выделяются/снимаются, посылается уведомление. Это делает возможным, например, обновление количества текущих выбранных элементов.

Примеры:
ObxControlsdocu	использование стражей и обработчиков
ObxDialogdocu	использование панелей выбора и выпадающих списков
ObxButtonsdocu	элемент управления, не расширенный из Controls.Control, - показано, как работать со свойствами элементов управления
ObxCtrls	элемент управления "ползунок", расширенный из Controls.Control
ObxFldCtrls	текстовое поле специального назначения, расширенное из Controls.Control


CONST opt0, opt1, opt2, opt3, opt4
Элементы множества valid свойств элемента управления. Они указывают, когда соответствующие поля optN верны.

CONST link
Элемент множества valid свойств элемента управления. Он указывает, когда поле link верно.

CONST label
Элемент множества valid свойств элемента управления. Он указывает, когда поле label верно.

CONST guard
Элемент множества valid свойств элемента управления. Он указывает, когда поле guard верно.

CONST notifier
Элемент множества valid свойств элемента управления. Он указывает, когда поле notifier верно.

CONST level
Элемент множества valid свойств элемента управления. Он указывает, когда поле level верно.

CONST default, cancel
Aliases of opt0 and opt1, used for command buttons.

CONST left, right, multiLine, password
Псевдонимы для opt0..opt3, используемые для полей текстового ввода.

CONST sorted
Псевдоним для opt0, используемый для списочных элементов управления (выпадающие списки/панели выбора/списки ввода/древовидные списки).

CONST haslines
Псевдоним для opt1, используемый для древовидных списков.

CONST hasbuttons
Псевдоним для opt2, используемый для древовидных списков.

CONST atroot
Псевдоним для opt3, используемый для древовидных списков.

CONST foldericons
Псевдоним для opt4, используемый для древовидных списков.


TYPE Control (Views.View)
ABSTRACT
Базовый тип для элементов управления, который может связываться с глобальными переменными или процедурами через метапрограммирование. Так как элемент управления не имеет отдельной модели, переменная, с которой он связан, играет роль модели.

item-: Meta.Item
Этот пункт описывает переменную или процедуру, к которой привязан элемент управления.

disabled-, undef-, readOnly-: BOOLEAN
Текущее временное состояние любого элемента управления.

customFont-: BOOLEAN
Этот флаг задает, когда шрифт для элемента управления берется из конфигурации операционной системы, или из переменной font.

font-: Fonts.Font	font # NIL -> customFont
Настраиваемый шрифт элемента управления (customFont должен быть TRUE, когда используется font, то есть, когда font # NIL).

label-: Dialog.String
Заголовок элемента управления.

prop-: Prop	prop # NIL
Атрибуты элемента управления.

PROCEDURE (c: Control) Internalize2- (VAR rd: Stores.Reader), NEW, EMPTY;
PROCEDURE (c: Control) Externalize2- (VAR wr: Stores.Writer), NEW, EMPTY;
PROCEDURE (c: Control) CopyFromSimpleView2- (source: Control), NEW, EMPTY;
PROCEDURE (c: Control) HandleViewMsg2- (f: Views.Frame; VAR msg: Views.Message)
PROCEDURE (c: Control) HandleCtrlMsg2- (f: Views.Frame; VAR msg: Views.CtrlMessage;
																	VAR focus: Views.View)
PROCEDURE (c: Control) HandlePropMsg2- (VAR p: Views.PropMessage)
NEW, EMPTY
Перехватчики расширений для Internalize, Externalize, CopyFromSimpleView, HandleCtrlMsg, HandlePropMsg, HandlePropMsg. Эти методы сделаны окончательными, и вызывают их новые пустые перехватчики расширений.

PROCEDURE (c: Control) CheckLink- (VAR ok: BOOLEAN)
NEW, EMPTY
Эта процедура-перехватчик позволяет элементу управления проверить, является ли связанная с ним переменная пригодной. Например, флажок может использовать связь с переменной логического, но не целочисленного типа.

PROCEDURE (c: Control) Update- (f: Views.Frame; op, from, to: INTEGER)
NEW, EMPTY
Обновляет показ элемента управления. Для списочных элементов список не изменяется.

PROCEDURE (c: Control) UpdateList- (f: Views.Frame)
NEW, EMPTY
Обновляет показ списочного элемента управления, включая перестройку его элементов.


TYPE Directory 
ABSTRACT
Тип директории для стандартных элементов управления.

PROCEDURE (d: Directory) NewPushButton (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новую командную кнопку.

PROCEDURE (d: Directory) NewCheckBox (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новый флажок.

PROCEDURE (d: Directory) NewRadioButton (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новый переключатель.

PROCEDURE (d: Directory) NewListBox (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новый список.

PROCEDURE (d: Directory) NewSelectionBox (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новую панель выбора.

PROCEDURE (d: Directory) NewField (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новое текстовое поле.

PROCEDURE (d: Directory) NewUpDownField (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новое поле числового ввода.

PROCEDURE (d: Directory) NewDateField (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новое поле даты.

PROCEDURE (d: Directory) NewTimeField (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новое поле времени.

PROCEDURE (d: Directory) NewTreeControl (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новый древовидный список.

PROCEDURE (d: Directory) NewColorField (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новое поле цвета.

PROCEDURE (d: Directory) NewComboBox (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новый список ввода.

PROCEDURE (d: Directory) NewCaption (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новую текстовую надпись.

PROCEDURE (d: Directory) NewGroup (p: Prop): Control
NEW, ABSTRACT
Размещает и возвращает новую группу.


TYPE Prop (Properties.Property)
Объект свойств, описывающий различные атрибуты элемента управления. Есть сообщения, которые позволяют получать или устанавливать свойства элемента управления (см. Properties, Controllers).

opt: ARRAY 5 OF BOOLEAN;
Пять логических свойств. Их значение зависит от типа элемента управления.

link: Dialog.String
Имя поля переменной или процедуры, с которой связан элемент управления, например, "TextCmds.find.replace".

label: Dialog.String
Строковой заголовок элемента управления. Игнорируется для полей, списков, панелей выбора, выпадающих списков и древовидных списков.

guard: Dialog.String
Необязательное имя команды охраны.

notifier: Dialog.String
Необязательное имя команды обработки.

level: INTEGER	only valid for radio buttons.
Определяет, при каком значение связанной переменной элемент управления "включен".


TYPE DefaultsPref (Properties.Preference)
Это сообщение предпочтения позволяет заменить основные умолчания для временного состояния элемента управления.

disabled, undef, readOnly: BOOLEAN
Состояние элемента управления. Оно определяется в три шага:
1) общие умолчания:
	disabled := ~c.item.Valid()
	undef := FALSE
	readOnly := c.item.vis = Meta.readOnly
2) умолчания, специфичные для элемента управления:
	общие умолчания могут быть заменены при обработке сообщения DefaultsPref.
	Например, для кнопок: disabled := link = ""
3) вызов стражей:
	Если есть охрана, используется ее результат, иначе - умолчания.


TYPE PropPref (Properties.Preference)
Сообщение предпочтения, которое позволяет задать правильные свойства получающего элемента управления.
{link, label, guard, notifier, customFont} устанавливаются по умолчанию. При обработке сообщения PropPref элементы множества valid могут быть добавлены или удалены.

valid: SET


VAR dir-, stdDir-: Directory	dir # NIL  &  stdDir # NIL
Директории для поиска стандартных элементов управления.

VAR par-: Control
Прежде чем вызывается процедура охраны или обработки, и прежде чем любое сообщение посылается диспетчеру, элемент управления присваивается par. После этого par сбрасывается в свое предыдущее состояние. Эта переменная может использоваться в  команде для определения текущего активного элемента управления.


PROCEDURE Notify (c: Control; f: Views.Frame; op, from, to: INTEGER)
Для внутреннего использования.

PROCEDURE OpenLink (c: Control; p: Prop)
Пытается связать элемент управления c в соответствии со свойством p.

Предусловие
c # NIL	20
p # NIL	21

PROCEDURE Relink
Вызывет принудительный пересчет связи элемента управления.

PROCEDURE  DepositPushButton
Размещает новую командную кнопку, используя dir.NewPushButton, и вкладывает ее.

PROCEDURE  DepositCheckBox
Размещает новый флажок, используя dir.NewCheckBox, и вкладывает его.

PROCEDURE  DepositRadioButton
Размещает новый переключатель, используя dir.NewRadioButton, и вкладывает его.

PROCEDURE  DepositListBox
Размещает новый список, используя dir.NewListBox, и вкладывает его.

PROCEDURE  DepositSelectionBox
Размещает новую панель выбора, используя dir.NewSelectionBox, и вкладывает ее.

PROCEDURE  DepositField
Размещает новое поле, используя dir.NewField, и вкладывает его.

PROCEDURE  DepositUpDownField
Размещает новую поле числового ввода, используя dir.NewUpDownField, и вкладывает его.

PROCEDURE  DepositDateField
Размещает новое поле, используя dir.NewDateField, и вкладывает его.

PROCEDURE  DepositTimeField
Размещает новое поле, используя dir.NewTimeField, и вкладывает его.

PROCEDURE DepositTreeControl
Размещает новый древовидный список, используя dir.NewTreeControl, и вкладывает его.

PROCEDURE  DepositColorField
Размещает новое поле, используя dir.NewColorField, и вкладывает его.

PROCEDURE  DepositComboBox
Размещает новый выпадающий список, используя dir.NewComboBox, и вкладывает его.

PROCEDURE  DepositCaption
Размещает новую надпись, используя dir.NewCaption, и вкладывает ее.

PROCEDURE  DepositGroup
Размещает новую группу, используя dir.NewGroup, и вкладывает ее.

PROCEDURE  DepositCancelButton
Размещает новую командную кнопку, используя dir.NewPushButton, и вкладывает ее. Свойство link инициализируется в "StdCmds.CloseDialog", свойство cancel устанавливается в TRUE.

PROCEDURE  SetDir (d: Directory)
Устанавливает директорию.
SetDir используется в целях конфигурирования.


Предусловие
d # NIL	20

Постусловие
stdDir' = NIL
	stdDir = d
stdDir' # NIL
	stdDir = stdDir'
dir = d