Загрузка нужного диалогового окна в память
Создание проекта и добавление элементов интерфейса
|
| ||||
Загрузка нужного диалогового окна в память | |||||
Ранее было отмечено, что отдельный DCL-файл может содержать описания нескольких диалоговых окон. В таком случае необходимо указать, какое именно из диалоговых окон требуется. Это иллюстрируется в следующем фрагменте кода:
(if (and dialogLoaded (not (new_dialog "gp_mainDialog" dcl_id)) ) ;_ end of and (progn ;; There's a problem... (princ "\nCannot show dialog gp_mainDialog") (setq dialogShow nil) ) ;_ end of progn ) ;_ end of if Обратим внимание на то, как используется функция and для проверки, загружено ли диалоговое окно и был ли успешно выполнен вызов new_dialog. При наличии внутри одной функции and нескольких выражений, вычисление прекращается после того, как результатом какого-либо из последовательных выражений станет nil. Например, если переменной dialogLoaded присвоено значение nil (что означает, что при выполнении функции загрузки произошла ошибка), VLISP не пытается выполнить функцию new_dialog. Следует отметить, что в коде также учитывается возможность наличия неверных элементов в файле DCL. В этом случае переменной dialogShow присваивается значение nil. Функция new_dialog загружает диалоговое окно в память, но не отображает его. Для вывода диалогового окна на экран используется функция start_dialog. Остальные этапы инициализации диалогового окна (присвоение значений элементам окна, создание изображений и списков, а также задание действий для элементов окна), должны производится после вызова new_dialog, но перед вызовом start_dialog.
|