Диалоговые окна Назад В начало Вперед

Рис. 11 Расположение элементов диалога на экране (см. пример)

<описание-диалога> = <идентификатор> dialog [link]
  [<описание-координат>] [<описание-размера>]
  [<описание-строки-подсказки>] [<описание-Help-контекста>]
  [<описание-Status-контекста>] [fields {<описание-поля>}]
  [<описание-кнопок>] <разметка-экрана>

<идентификатор> - идентификатор диалога, используется при вызове диалога.

Атрибут link означает, что в ресурсный файл необходимо поместить информацию о полях диалога для связи его с другими объектами, например для вызова его из интерфейсов.

<описание-координат> - устанавливает координаты верхнего левого угла окна. Если они не указаны, то окно центрируется на экране:

<описание-координат> = origin <x>, <y>

<x> и <y> - целые числа.

<описание-размера> - устанавливает ширину и высоту окна:

<описание-размера> = size <ширина>, <высота>

Если размеры не указаны, они определяются компилятором: высота - по самому нижнему элемента, ширина - по правому краю самого правого элемента. Если символы окончания экрана ">>" располагаются правее всех элементов, ширина окна рассчитывается по их позиции.

<описание-строки-подсказки> - устанавливает строку подсказки для тех полей, у которых она не указана:

<описание-строки-подсказки> = helpLine <строка-подсказки>

<описание-Help-контекста> - устанавливает точку входа для справочника для полей, у которых она не указана:

<описание-Help-контекста> = helpCtx
	<идентификатор-справочника>

<идентификатор-справочника> - константа типа word.

<описание-Status-контекста> - устанавливает точку входа для линии статуса для полей, у которых она не указана:

<описание-Status-контекста> = statusCtx
	<идентификатор-линии-статуса>

<идентификатор-линии-статуса> - константа типа word.

<описание-поля> - описание одного поля. Обязательными являются идентификатор поля и тип.

<описание-поля> = <идентификатор-поля> [ <контексты> ] :
  <тип-поля> [ <атрибуты-поля> ];

<идентификатор-поля> - идентификатор.

<контексты> - см. "Контексты. ".

<тип-поля> - определяет тип данных поля, один из стандартных типов:

<тип-поля> = byte | word | integer | longint
	| date | single | double | char | string

<атрибуты-поля> - см. "Атрибуты поля. ". К полям диалога неприменимы атрибуты: pickButton, calcButton, quickChoice, lessNull, spinButton, noSetCurrent, атрибуты выравнивания (left, centered, right, expand), атрибуты удаления подцепки (delRel, noDel, delDefault), <атрибуты-шрифта>, <шаблон-ввода>. Они компилируются без выдачи сообщения об ошибке, но на оформление и поведение поля не влияют. Атрибуты list, noAutoSize и image выдают сообщение об ошибке во время компиляции.

<описание-кнопок> - см. "Описание кнопок. ".

<разметка-экрана> - описание расположения элементов диалога на экране, см. "Разметка экрана. ".

Пример

По кнопке [Run Dialog] запускается диалог, приведенный на Рис. 11.

interface DialogTest 'Dialog Test';
  show at (0,3,50,10);

  create view
  var
	wGame : word;
	wSound: word;
	i	 : longInt;
  ;

screen scrButtonTest;
  noTableNavigation;
  buttons
	cmRunDialog;
<<

 <.Run Dialog.>

>>
end;

handleEvent
cmRunDialog:
{
  RunDialog(DialogTest1, wGame, wSound, i);
  Message('Игры:' + wGame
		+ chr(3) + 'Звук:' + wSound
		+ chr(3) + 'Время:' + i);
}
end;
end.

DialogTest1 dialog
  origin 20,10
  fields
	field1('Field1',,) : word;
	field2 : word;
	field3 : longInt;
  buttons
	cmOk,default,,'OK';
	cmCancel,,,'Выход';
<< 'Диалоговое окно'
 `Игры`			`Звук`
 [.] Digger `		 (.) Включен `
 [.] King's Bounty `  (.) Выключен `
 [.] Tetcolor`

 Играть больше четырех часов в день опасно для здоровья!

 `Через сколько часов автоматически прервать игру:` .@@@

<. OK .>  <. Выход .>
>>