Диалоговые окна |
Рис. 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 выдают сообщение об ошибке во время компиляции.
<описание-кнопок> - см. "Описание кнопок. ".
<разметка-экрана> - описание расположения элементов диалога на экране, см. "Разметка экрана. ".
По кнопке [Рис. 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 .> <. Выход .> >>