Изменение других вызовов функции gp:Calculate-and-Draw-Tiles
Окончательная компоновка
|
| ||||
Изменение других вызовов функции gp:Calculate-and-Draw-Tiles |
| ||||
В функции отклика реактора жестко назначенная строка "ActiveX" передается gp:Calculate-and-Draw-Tiles в виде аргумента ObjectCreationStyle. Однако, что же происходит при других вызовах функции gp:Calculate-and-Draw-Tiles?
Вспомним занятие 4, где говорилось, что при каждом изменении фиктивной фунции необходимо ответить на следующие вопросы: На те же вопросы необходимо отвечать при каждом существенном изменении рабочей функции в процессе создания, улучшения и обновления приложений. В данном случае необходимо найти все другие функции, вызывающие gp:Calculate-and-Draw-Tiles. В VLISP имеется средство, помогающее это сделать. Для нахождения всех вызовов функции gp:Calculate-and-Draw-Tiles в проекте![]() ![]() Так как имя функции было выделено заранее, оно появляется в качестве строки для поиска. При выборе этой опции диалоговое окно «Поиск» разворачивается, и в нем можно выбрать проект для поиска. VLISP выводит результат в отдельном окне. VLISP активизирует окно текстового редактора и переходит к строке gpmain.lsp. Пока код выглядит следующим образом: (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData)) (setq tilelist (gp:Calculate-and-Draw-Tiles gp_PathData nil)) Почему nil? Еще раз посмотрим на алгоритм: If ObjectCreationStyle is nil, assign it from the BoundaryData. При передаче параметра nil функции gp:Calculate-and-Draw-Tiles проверяется пользовательская настройка стиля создания плиток (заданная в диалоговом окне и хранящаяся в переменной gp_PathData). Однако при последующих вызовах функции реактором, обслуживающим окончание выполнения команды, будет использоваться метод ActiveX. Отлично! Теперь реакторы выполняют свои основные функции. При желании можно скопировать файлы gpmain.lsp и gpdraw.lsp из папки Tutorial\VisualLISP\Lesson7 в рабочую папку и проверить окончательный отлаженный код. Однако почивать на лаврах пока рано. Необходимо еще выполнить много работы с функцией gp:Command-ended: (setq NewReactorData (gp:RedefinePolyBorder CurrentPoints reactorData) ) ;_ end of setq |