Описание диалогового окна с помощью DCL
Создание проекта и добавление элементов интерфейса
|
| ||||
Описание диалогового окна с помощью DCL |
| ||||
Сначала определим, какое окно нужно создать.
Диалоговое окно должно содержать следующие элементы: Один переключатель управляет типом полилинии, образующей границу; другой задает метод создания плиток (ActiveX, entmake или command). Каждый из переключателей в определенный момент времени может быть установлен только в одно из положений. Компоненты диалогового окна называются его элементами. Полное описание диалогового окна в файле DCL вначале может казаться трудной задачей. Поэтому нужно составить общую схему того, что необходимо включить в диалоговое окно, а затем разбить ее на несколько частей и описать каждую часть отдельно. Для описания диалогового окнаlabel = "Garden Path Tile Specifications"; Это выражение DCL описывает заголовок диалогового окна. : boxed_radio_column { // определяет положение кнопки-переключателя label = "Outline Polyline Type"; : radio_button { // определяет компактную кнопку-переключатель label = "&Lightweight"; key = "gp_lw"; value = "1"; } : radio_button { // определяет кнопку-переключатель полилинии старого формата label = "&Old-style"; key = "gp_hw"; } } DCL-директива boxed_radio_column описывает границу группы переключателя и позволяет указать его имя. Внутри границы отдельные положения переключателя задаются директивами radio_button. Для каждого положения переключателя необходимо задать имя и ключ. Ключ - это имя, по которому идентифицируется положение переключателя внутри AutoLISP . Обратите внимание, что положению переключателя «lightweight» (компактная полилиния) присвоено значение 1. Значение 1 (это строка, а не целое число) указывает, что данное положение должно быть активным по умолчанию. Другими словами, при появлении диалогового окна на экране в переключателе устанавливается выбранным именно этот вариант. Следует также запомнить, что в DCL-файлах символами комментариев являются две косых черты, а не точка с запятой, как в программах AutoLISP. : boxed_radio_column { // определяет положение кнопки-переключателя label = "Tile Creation Method"; : radio_button { // определяет кнопку-переключатель ActiveX label = "&ActiveX Automation"; key = "gp_actx"; value = "1"; } : radio_button { // определяет кнопку-переключатель (функции entmake) label = "&Entmake"; key = "gp_emake"; } : radio_button { // определяет кнопку-переключатель (команды) label = "&Command"; key = "gp_cmd"; } } : edit_box { // определяет окно редактирования "Радиус плитки" label = "&Radius of tile"; key = "gp_trad"; edit_width = 6; } : edit_box { // определяет окно редактирования "Расстояние между плитками" label = "S&pacing between tiles"; key = "gp_spac"; edit_width = 6; } Обратим внимание, что текстовым полям не присваивается никакого исходного значения. Значение по умолчанию для каждого текстового поля задаются из AutoLISP-программы. : row { // определяет кнопки "OK"/"Отмена" : spacer { width = 1; } : button { // определяет кнопку "OK" label = "OK"; is_default = true; key = "accept"; width = 8; fixed_width = true; } : button { // определяет кнопку "Отмена" label = "Cancel"; is_cancel = true; key = "cancel"; width = 8; fixed_width = true; } : spacer { width = 1;} } Обе кнопки описаны внутри одного ряда, поэтому они устанавливаются по одной горизонтальной линии. gp_mainDialog : dialog { } |