Макрос – сохраненная последовательность команд или нажатий клавиши, которые предназначены для использования в будущем. Пример простого макроса – "вывод" вашего адреса. Макросы поддерживают команды, которые позволяют выполнять различные функции, такие как принятие решений (например, если баланс меньше чем ноль, отобразить его красным цветом; в противном случае – черным), обработка (если баланс больше чем ноль, вычесть из него 10), и даже взаимодействие с человеком (запросить у пользователя число). Некоторые из этих команд основаны на языке программирования BASIC. (BASIC – акроним для
В OpenOffice.org язык макросов очень гибок и позволяет автоматизировать различные простые и сложные задачи. Написание макросов и изучение внутренней работы OpenOffice.org может быть очень занимательным, но это не всегда лучший путь. Макросы особенно полезны, когда Вы должны выполнить какую-либо задачу одним и тем же путем множество раз, или когда Вы хотите нажать одну кнопку, чтобы сделать что-то, что обычно выполняется за несколько шагов. Время от времени Вы можете написать макрос, который делает что-то, чего Вы не можете выполнить иным способом в OpenOffice.org, но в этом случае Вы должны убедиться, что
| Примечание | OpenOffice.org сокращается как |
OpenOffice.org язык макросов основан на языке программирования Basic.
| Примечание | Диалог - окно, которое появляется на экране, обычно требует ввода или представления информации. Диалоги обычно исчезают после того, как требуемый ввод выполнен. Созданные пользователем диалоги сохраняются в библиотеках диалогов тем же самым образом, каким макросы сохраняются в библиотеках макросов. Каждая библиотека может содержать множество диалогов. Контейнеры библиотеки могут хранить и библиотеки макросов, и библиотеки диалогов. |
Каждый документ OpenOffice.org является контейнером библиотек и способен содержать макросы и диалоги. Когда документ содержит макросы, которые он использует, обладание документом подразумевает обладание макросом. Это удобный метод распространения и хранения. Пошлите документ другому человеку или измените его размещение и макросы будут доступны и пригодны к употреблению.
Традиционный метод представления языка программирования, написание программы тем или иным образом выводящей сообщение "Hello World". Целые веб-сайты существуют с единственной целью – показать программы "Hello World" на стольких многих различных языках программирования, насколько возможно (например, смотри http://www2.latech.edu/~acm/HelloWorld.shtml. Не будем нарушать традиций, и первый показанный макрос будет вариацией на тему "Hello World".
Все документы
(рис 17.1) Использование диалога Макросы для создания нового макроса и организации библиотекиСписок "Макрос из" отображает доступные контейнеры библиотек; он включает каждый открытый документ, ваши личные макросы, и макросы, распространяемые с
| Примечание | До версии 2.0, |
Библиотека Standard для безымянного документа автоматически создается при создании нового документа. Документ в настоящее время не содержит никаких модулей – помните, что макросы сохраняются в модулях. Хотя Вы могли нажать на кнопку Создать для создания нового модуля, не делайте этого! Пункт этого раздела должен создать новую библиотеку.
| СОВЕТ | Не храните ваши макросы в библиотеке Standard. Создайте новую библиотеку с описательным названием и храните там ваши макросы. Когда библиотека добавляется, она может перезаписать существующую библиотеку с тем же самым именем. Если все ваши библиотеки называют Standard, это препятствует Вам добавлять ваши библиотеки в другие контейнеры библиотек. |
Нажмите на кнопку Управление, чтобы открыть диалог Управление макросами (17.2). Как и в диалоговом окне Макрос, здесь перечислены все контейнеры библиотек. На 17.2 библиотека Standard подсвечена в документе "Безымянный1"; прокрутите список вниз, чтобы найти "Безымянный1", если требуется. Диалог Управление макросами содержит несколько закладок и текущая закладка Модули. Поскольку название подразумевает, закладка Модули имеет дело с модулями. Вот описание пунктов этого диалога:
Цель этого раздела состоит в том, чтобы создать библиотеку названную осмысленно, которая содержится в документе "Безымянный1". Перейдите на вкладку Библиотеки, чтобы иметь дело с библиотеками (рис 17.3).
(рис 17.3) Использование диалога Управление макросами для управления библиотекамиКогда эта часть диалога отображается, в списке Приложение/Документ выбран контейнер Мои макросы и диалоги. Выберите документ "Безымянный1" так, чтобы изменения проводились в безымянном документе. Кнопки, показанные на закладке Библиотеки, затрагивают библиотеки, а не модули. Вот их описание:
(рис 17.4) Выберите значащее наименование для библиотекиНажмите кнопку Новая библиотека для создания новой библиотеки (рис 17.4). Хотя название по умолчанию "Library1", лучше выбрать значащее название, типа "MyFirstLibrary" или "TestLibrary". Нажмите OK, чтобы создать библиотеку.
Диалоговое окно Управление макросами теперь содержит вновь созданную библиотеку в списке Библиотек (рис 17.5).
(рис 17.5) Документ теперь содержит библиотеку по имени TestLibrary
Макросы сохраняются в модуле, таким образом следующим шагом должно быть создание модуля в только что созданной библиотеке. Предполагая, что диалог Управление макросами (рис 17.3) все еще открыт, выберем вкладку Модули (рис 17.6).

Недавно созданная библиотека TestLibrary теперь отображается в диалоге Управление макросами. Выберите TestLibrary или любой модуль, содержащийся в этой библиотеке, и затем нажмите кнопку Новый модуль для создания нового модуля
(рис 17.7) TestLibrary содержит один модуль по имени Module1.(рис 17.6) Новый модуль. Имя по умолчанию Module1; выберите более описательное название для модуля и нажмите OK, чтобы создать его.
| СОВЕТ | Используйте описательные названия модуля, чтобы избежать беспорядка. Это важно при перемещении между модулями. |
Распространенная ошибка состоит в выборе неправильного контейнера библиотек в диалогах Макрос или Управление макросами. Самая распространенная ошибка состоит в выборе библиотеки или модуля в прикладном контейнере (Мои макросы или Мои диалоги), а не в определенном документе. Найдите название документа в списке. Название документа определено полем Заголовок, установленным в диалоге Свойства документа. Используйте Файл > Свойства для открытия диалога Свойства документа. Заголовок задан на вкладке Описание. Если Заголовок не задан, вместо него используется имя файла.
| Примечание | Два документа с одинаковым заголовком в диалоге Свойства документа используют одинаковые имена в диалоге Макрос, в диалоге Управление макросами и в заголовке окна. Это запутывает, так пробуйте избежать этого. |
Если диалоговое окно Управление макросами все еще открыто, Вы можете выделить недавно созданный модуль и нажать кнопку ). Другой выбор состоит в использовании диалога Макрос. Если диалог Управление макросами открыт, нажмите кнопку ).
Вот описание кнопок в диалоге Макрос:
Назначение диалога Макрос состоит в том, чтобы работать с отдельным макросом. Выберите ). Одна пустая подпрограмма, Main, автоматически создается при создании модуля. IDE, показанная нарис 17.9, была открыта нажатием на MyFirstModule и затем нажатием на кнопку ..
. Программа "Hello World" найденная в файлах исходного текста этой главы на веб-сайте Hentzenwerke.
Sub main HelloWorld2() End Sub Sub HelloWorld1 Print "Hello World One" End Sub Sub HelloWorld2 Print "Hello World Two" End Sub
(рис 17.9) Разработка макроса в IDEIDE содержит панели инструментов Макрос и Стандарт, обозначенные нарис 17.9. (Большинство значков на панели инструментов Макрос описаны в разделе "Интегрированная среда разработки") Остановите курсор Вашей мыши на каждом из значков панели инструментов на пять секунд и прочтите появляющийся текст; это дает подсказку о назначении данного значка.

Нажмите на значок (рис 17.10) , чтобы проверить макрос на наличие синтаксических ошибок. Сообщение не отображается, если ошибки не найдены (рис 17.10). Нажатие на значок Компиляция осуществляет выполнение компиляции только для текущего модуля.
Измените код в . для демонстрации ошибки. Удалите вторую кавычку из утверждения Print в HelloWorld1 (рис 1" type="example"/>. для демонстрации ошибки. Удалите вторую кавычку из утверждения Print в HelloWorld1 (Нажмите на значок ., значок Выполнить запускает первую подпрограмму, которая называется "main". Подпрограмма main вызывает подпрограмму HelloWorld2, отображающую диалог показанный нарис 17.11. Нажмите OK для закрытия диалога или нажмите Отмена для остановки макроса.
(рис 17.11) Нажмите OK для закрытия диалога.Значок Выполнить всегда запускает первый макрос в текущем модуле. В результате, требуются различные ухищрения для запуска HelloWorld1. Для запуска HelloWorld1 Вы можете использовать один из следующих методов:
Чтобы использовать диалоговое окно Макрос для запуска любой подпрограммы в модуле, выполните следующие шаги:
Код, используемый в этой главе, доступен в текстовом документе OpenOffice.org по имени SC01.sxw. Загрузите и откройте этот документ. Когда документ, содержащий макроопределение открывается, OpenOffice.org выдает предупреждение (смотририс 17.12). Это предупреждение помогает Вам избежать случайного запуска макроса, содержащего вирус. Хотя Вы можете вручную запускать любой макрос используя диалог Макрос, кнопки с привязанными макросами в документе не будут функционировать. Нажмите Включить макросы, чтобы полностью разрешить применение кнопок с макросами, добавленными в SC01.sxw.
(рис 17.12) Вы только открываете OpenOffice.org документ, который содержит макрос.| СОВЕТ | Вы можете сконфигурировать документ для автоматического запуска макроса при загрузке документа. Это один из методов распространения макровирусов при использовании документов. Если Вы не ожидаете, что документ содержит макрос, Вы должны всегда нажимать Отключить макросы. Это препятствует автоматическому запуску любого макроса при загрузке документа. |
SC01.sxw содержит три кнопки: Main, Hello World 1 и Hello World 2. Каждая кнопка сформирована для запуска соответствующей подпрограммы, когда на кнопку нажимают. Кнопки ничего не делают, если Вы нажимаете Отключить макросы при загрузке документа.
Возможно добавить каталог в список "безопасных путей". Если Вы уверены, что каталог содержит документы, которым Вы можете полностью доверять, что они не содержат макровирусы, Вы можете добавить путь к данному каталогу в список безопасных путей. Используйте Сервис > Параметры > OpenOffice.org > Безопасность > Безопасность макросов > Доверенные источники и добавьте соответствующие месторасположения файлов, которым доверяете. Все документы, загруженные из доверенных источников, будут считаться безопасными, и макросы всегда будут запускаться.
Приложение OpenOffice.org само является контейнером библиотек. Это превосходное место для хранения кода и диалогов, общих для многих документов. Контроль версии легче, если макросы сохранены в одном месте. Если пять документов, все содержат один и тот же макрос, мало того, что область памяти потрачена впустую, но если макрос изменяется, Вы должны изменить макрос в пяти различных документах.
Для хранения макросов в библиотеках приложения используйте те же самые методы, которые используются для документов. Контейнер уровня приложения использует два названия, "Мои макросы" и "Макросы OpenOffice.org". Приложение
| Удаление OpenOffice.org может удалить библиотеки, сохраненные в уровне приложения, таким образом Вы должны всегда держать резервную копию ваших библиотек. Переустановка или установка новой версии OpenOffice.org могут перезаписать библиотеки уровня приложения. Создавайте резервную копию этих библиотек, когда вы создаете резервную копию Ваших документов. В большинстве случаев, библиотеки, которые Вы создали, все еще там, но файлы конфигурации обновились и не отражают новые библиотеки. Поэтому, обычно возможно восстановить ваши библиотеки из стандартного местоположения библиотек. Для получения дополнительной информации смотри раздел "Управление библиотеками" далее в этой главе. |
Каждая библиотека приложения сохраняется в своем собственном каталоге. Чтобы определить, где OpenOffice.org хранит библиотеки приложения, выберите Сервис > Параметры. В диалоге Параметры раскройте ветку OpenOffice.org в дерево меню и выберите Меню. Объект Basic показывает местоположение внешних библиотек.
Перед установкой новой версии OpenOffice.org сделайте копию всех библиотек прикладного уровня. Если Вы устанавливаете
| СОВЕТ | Не используйте библиотеку Standard, если Вы думаете, что Вы захотите когда-либо добавить вашу библиотеку в другое место. Храните все ваши модули, которые Вы создаете, в библиотеках со значащими названиями. Библиотека Standard является особенной, и Вы не можете удалить ее или перезаписать. |
Для практики добавьте макрос в библиотеку прикладного уровня, откройте диалог Управление макросами. Проверьте, что контейнер библиотек "Мои макросы" – текущий контейнер. Нажмите кнопку Создать для добавления нового модуля в библиотеку прикладного уровня. Для добавления библиотеки перейдите на вкладку Библиотеки. Проверьте, что "Мои макросы" выбраны в списке Приложение/ Документ, и затем нажмите кнопку Создать.
Библиотеки, сохраненные в документах, могут быть добавлены в контейнер библиотеки приложения. Когда библиотека добавляется, она перезаписывает существующую библиотеку с тем же самым названием. Поэтому хорошая идея – создать значащее имя для библиотеки, содержащей макросы. Это ограничивает проблемы, возникающие при перемещении макросов между контейнерами библиотеки.
Интегрированная среда разработки (IDE) – ряд программных инструментов, используемых для облегчения создания программного обеспечения. OpenOffice.org включает очень развитую IDE с инструментами, которые осуществляют выполнение, редактирование и поиск ошибок в Ваших макросах. Требуется время, чтобы ознакомиться с ее возможностями. рис 17.9 показывает IDE. Центральная область, где содержится код макроса, – окно редактирования. Многие возможности, такие как Останов, Контрольные точки, Пошаговое выполнение и панель контрольных значений, служат простыми, но эффективными средствами для отладки кода макроса.
Этот раздел дает краткий обзор стандартных функций IDE. Не удивляйтесь, если Вы полностью не понимаете, как использовать их всех в этом месте. Вы познакомитесь с этими функциями, поскольку Вы будете работать по примерам. Первый набор функций используется для отладки, а описанные в конце этого раздела поддерживают формирование и управление объектами в ваших макропрограммах, библиотеках и документах. Ниже приведены описания значков.
Значок компилирует и выполняет проверку синтаксиса только текущего модуля. Значок Компиляция полезен, если Вы не хотите выполнять макрос но хотите проверить, что он не содержит синтаксических ошибок. Сообщения не отображаются, если ошибка не найдена (рис 17.10). Когда найдена ошибка, появляется диалог, указывающий на ошибку. Стрелка в колонке Контрольной точки отмечает строку с ошибкой и часть кода, который вызвал ошибку, выделена. Нажмите кнопку OK для закрытия окна сообщения об ошибке.
| Примечание | Процесс компиляции переводит макроопределение |
Значок компилирует все модули в текущей библиотеке и затем выполняет первую подпрограмму или функцию в текущем модуле. Это отличается от действия значка Компиляция, который компилирует только текущий модуль.
Значок останавливает выполнение макроса. Когда Вы нажимаете на этот значок, Вы не можете продолжить выполнение макроса; Вы должны запустить его снова, с начала. Значок Остановить макрос доступен, только когда макрос выполняется. Когда доступен, значок Остановить напоминает транспортный знак остановки.
Значок выполняет текущее утверждение. Если макрос еще не выполняется, первая подпрограмма в модуле запускается и отмечается как текущее утверждение. Текущее утверждение имеет стрелку в колонке Контрольной точки, и курсор перемещается в эту строку. Если, однако, макрос уже выполняется, выполняется текущее утверждение и следующее выполняемое утверждение помечается как текущее. Значок Шаг без захода рассматривает вызовы других подпрограмм как одно утверждение и не осуществляет пошаговое выполнение внутри них. Заметьте, что значок имеет стрелку, которая огибает фигурные скобки, представляющие вызов подпрограммы или функции.
Значок выполняет текущее утверждение. Поведение такое же, как у значка Шаг без захода, за исключением того, что подпрограммы и функции не рассматривают как одно утверждение. Каждое утверждение в вызываемой подпрограмме считается утверждением. Подпрограммы и функции выполняются пошагово внутри, отмечая определение вызванной подпрограммы или функции как текущее утверждение. Заметьте, что значок содержит стрелку, которая направлена в фигурные скобки, представляющие вызов подпрограммы или функции.
Значок выполняет макрос до конца текущей подпрограммы и затем выходит из нее. Эффект тот же самый, как повторяющееся нажатие на значок Шаг с заходом, пока последнее утверждение в текущей подпрограмме (End Sub или End Function) не станет текущим, и затем нажатие Шаг с заходом еще раз для выхода из подпрограммы. Утверждение после вызова текущей подпрограммы становится текущим утверждением. Если Вы случайно нажмете Шаг с заходом вместо Шаг без захода, нажмите один раз значок Выход на верхний уровень. Заметьте, что значок содержит стрелку, которая покидает фигурные скобки, представляющие вызов подпрограммы или функции.
Значок устанавливает контрольную точку в утверждении, содержащем курсор. Красный признак останова отмечает строку в столбце точек останова. Двойной щелчок по столбцу точек останова устанавливает точку останова в этом утверждении. Щелчок правой кнопкой мыши на точке останова в столбце точек останова активирует или деактивирует ее.
Значок открывает диалог Точки останова (рис 17.13).

Значок (рис 17.13) предполагает, что текущее слово (слово, в котором находится курсор при нажатии на значок) – переменная и добавляет имя этой переменной в панель Инспектора.
Значок открывает окно Объекты (рис 17.14), где Вы можете просмотреть все доступные в настоящее время контейнеры библиотек. Используйте это окно, чтобы видеть, какие библиотеки, модули и подпрограммы являются доступными. Выполните двойной щелчок мышью на подпрограмме для загрузки ее в IDE. Функциональные возможности подобны Навигатору в документе
| СОВЕТ | Оставьте окно Объекты открытым и используйте его как навигатор для быстрого перехода между модулями, библиотеками или подпрограммами в том же самом модуле. |
Значок загружает диалог Макрос. Выбирая Сервис > Макрос > Управление макросами > OpenOffice.org Basic Вы также загружаете диалог Макрос.
Значок загружает диалог Управление макросами. Этот значок имеет тот же самый эффект, что и нажатие на кнопку Управление в диалоге Макрос (рис 17.2 ирис 17.3).
Выберите или поместите курсор непосредственно слева от круглой скобки, затем нажмите значок для поиска парной круглой скобки. Когда IDE находит парную круглую скобку, она выделяет парные круглые скобки и все, что они охватывают.

Чтобы открыть окно Элементы управления, нажмите значок (рис 17.14) при редактировании диалога. (Для получения дополнительной информации о элементах управления лекция 17
Чтобы создать диалог для редактирования, нажмите значок для загрузки диалога Управление макросами. Перейдите на вкладку Диалоги и нажмите кнопку Новый диалог для создания нового диалога. лекция 17 OpenOffice.org Macros Explained для получения дополнительной информации об использовании и создании диалогов в макросах.
Последние два значка, и , используются для вставки в текущий модуль текста, сохраненного во внешний исходный файл, и для сохранения текущего модуля во внешний текстовый файл. Это прекрасный способ создать резервную копию макроса или создать текстовый файл, который можно легко послать другому человеку. Это отличается от значка , который используется для сохранения всей библиотеки или документа, содержащего модуль.
Если Вы установите точку останова в коде, то макрос прекратит выполнение в этой точке. Вы можете тогда проверить переменные, продолжить выполнение макроса или осуществить пошаговое выполнение макроса. Если макрос терпит неудачу, и Вы не знаете почему, пошаговое выполнение (выполнение одного утверждения за шаг) позволит Вам наблюдать макрос в действии. Когда макрос терпит неудачу, Вы будете знать, где это происходит. Если большое количество утверждений выполняется перед проблемным участком, так что не реально пошаговое выполнение, таким образом Вы можете установить точку останова в или около строки, которая вызывает проблему. Программа прекращает выполнение в этой точке, и Вы можете продолжить пошаговое выполнение макроса и наблюдать его поведение.
Значок устанавливает контрольную точку в утверждении, содержащем курсор. Красный знак останова отмечает строку в колонке точки останова. Двойной щелчок в колонке точки останова также устанавливает точку останова в этом утверждении. Щелчок правой кнопкой мыши на точке останова в колонке точки останова активирует и деактивирует ее.
Значок загружает диалог Точки останова (рис 17.13). Все активные точки останова в текущем диалоге IDE появляются в нижнем списке. Для добавления точки останова введите номер строки в поле ввода сверху и затем нажмите Создать. Для удаления точки останова выделите точку останова в списке и нажмите кнопку Удалить. Очистка флажка Вкл./Выкл. запрещает выделенную точку останова без ее удаления. Поле ввода Пропусков указывает количество раз, которое контрольная точка должна быть пройдена прежде, чем она будет считаться активной. Если количество пропусков четыре (4), то в четвертый раз, когда утверждение, содержащее контрольную точку, будет выполняться, произойдет останов выполнения. Это чрезвычайно полезно, когда часть макроса не вызывает ошибок, пока ее не вызвали многократно.
Есть две вещи, которые заставляют игнорировать точку останова: не нулевое количество проходов и явная маркировка точки останова как "не активная" в диалоге Точки останова. Каждая точка останова имеет счетчик проходов, который является декрементным к нулю, когда она достигнута. Если результат декремента - ноль, контрольная точка становится активной и остается активной, потому что счетчик проходов остается в дальнейшем в нуле. Счетчик проходов не восстанавливается к его исходному значению, когда макрос заканчивается или повторно запускается.
Легко контролировать значение переменных из IDE во время выполнения программы. Поместите курсор рядом или в любое слово в окне редактирования и нажмите значок Включить инспектор для добавления слова в панель Инспектора. Панель инспектора отображает значения переменных, доступных в настоящее время. Текст "<Не доступно>" отображается для недоступных переменных. Другой способ добавить переменную в панель инспектора – ввести имя в поле Контрольное значение и нажать . Нажатие на имя в панели инспектора помещает имя в поле Контрольное значение. Возможности окна инспектора были расширены в
| Примечание | Переменная, которая находится в пределах видимости, в настоящее время доступна или видима. Например, если переменная "j" определена внутри HelloWorld1, она не видима (недоступна) внутри HelloWorld2. Это обсуждается позже. |
Этот раздел имеет дело с созданием, перемещением и переименованием библиотек и модулей. Рассматривая управление библиотеками, важно сначала понять некоторые основы, которые уже обсуждались:
Библиотеки OpenOffice.org сохраняются как файлы XML, которые являются легко редактируемыми при использовании любого текстового редактора. Другими словами, легко случайно повредить ваши файлы. Ручное редактирование ваших внешних библиотек вообще считается глупым, я имел по крайней мере один случай, где это требовалось, потому что
| СОВЕТ | Ручное редактирование файлов |
Каждая библиотека приложения сохранена в одном каталоге, а каждый модуль и диалог содержатся в одном файле. Диалог Параметры ( Сервис > Параметры > OpenOffice.org > Пути ) содержит запись, которая указывает где располагаются библиотеки. Глобальные библиотеки, которые включены в OpenOffice.org, сохраняются в отделенном основном каталоге под каталогом, в котором установлен
C:\Program Files\OpenOffice.org 2\share\basic
/usr/local/OpenOffice.org 2/share/basic
Библиотеки, которые Вы создаете, сохраняются в различных каталогах. На моем Windows-компьютере я имею однопользовательскую установку, а на моем
Linux-компьютере – многопользовательскую сетевую установку. Параметры, которые Вы задаете, устанавливая
C:\Program Files\OpenOffice.org 2\user\basic
/home/andy/OpenOffice.org 2/user/basic
Листинг
| Элемент | Описание |
|---|---|
| dialog.xlc | XML-файл, который ссылается на каждый файл диалога, известный этому пользователю в OpenOffice.org. |
| script.xlc | XML-файл, который ссылается на каждый файл библиотеки, известный этому пользователю в OpenOffice.org. |
| Standard | Каталог, содержащий библиотеку Standard. |
| Pitonyak | Каталог, содержащий библиотеку с кодом, который создал Эндрю Питоньяк. |
| PitonyakDialogs | Каталог, содержащий библиотеку с некоторым кодом и диалогом. |
| Примечание | Таблица ссылается на каталоги Pitonyak и PitonyakDialogs. Библиотека Pitonyak и библиотека PitonyakDialogs не связаны; их названия подобны, потому что я испытывал недостаток в творческом потенциале и здравом смысле, когда назвал их. Не верно, что библиотека PitonyakDialogs содержит диалоги для библиотеки Pitonyak. |
(рис 17.15) Диалоги Макрос и Управление макросами отображают доступные библиотеки и модулиФайлы dialog.xlc и script.xlc содержат ссылки на все диалоги и библиотеки, которые известны
Диалог Управление макросами показывает, что библиотека PitonyakDialogs содержит один диалог; перейдите на вкладку Модули, чтобы увидеть модули кода. Ниже таблица содержит листинг файлов в каталоге PitonyakDialogs. Заметьте, что каждый модуль и диалог в библиотеке имеют соответствующий файл.
| Файл | Описание |
|---|---|
| dialog.xlb | Ссылается на диалоги, содержавшиеся в этой библиотеке. |
| script.xlb | Ссылается на модули, содержавшиеся в этой библиотеке. |
| Module1.xba | BASIC-код в модуле по имени Module1. |
| SimpleObjectBrowserCode.xba | BASIC-код в модуле по имени SimpleObjectBrowserCode. |
| SimpleObjectBrowser.xdl | Диалог в модуле по имени SimpleObjectBrowser. |
Файлы dialog.xlc и script.xlc из таблицы 17.1 ссылаются на файлы dialog.xlb и script.xlb в таблица 17.1">таблицы 17.1 ссылаются на файлы dialog.xlb и script.xlb в Документ OpenOffice.org, когда сохраняется на диск, сохраняется в стандартном формате ZIP. Любая программа, которая может просматривать и извлекать файлы ZIP, может использоваться для просмотра документа
После распаковки документа
Как эксперимент, я взял документ, который содержал многочисленные элементы управления, вызываемые определенной библиотекой. Я разархивировал документ и затем использовал инструмент поиска текста, чтобы найти все ссылки на определенную библиотеку по имени CH03. После ручного изменения каждого вхождения текста "CH03" на "CH04" я заархивировал каталог назад в единый файл, и
| Примечание | Цель этого раздела в том, что в критическом положении Вы можете вручную просмотреть XML-документ и устранить потенциальные проблемы. Это НЕ лучший способ изменить название библиотек документа. |
Диалог Управление макросами ( ) обеспечивает возможность создавать и удалять модули. Диалог Управление макросами также имеет вкладку Библиотеки (рис 17.16), используемую для создания и удаления библиотек. Вкладка Библиотеки содержит сверху поле с выпадающим списком, которое используется для выбора контейнера библиотек. Другими словами, Вы можете выбрать определенный открытый документ или библиотеку приложения.
| Примечание | Название документа – название файла, если название документа не установлено в диалоге Свойства документа ( Файл > Свойства > Описание ). Если свойство Заголовок установлено, оно используется как название документа в заголовке окна, диалоге Макрос и диалоге Управление макросами. |
(рис 17.16) Использование диалога Управление макросами для создания, добавления и удаления библиотек
Вы можете изменить название модуля или библиотеки из диалога Управление макросами. Имена модулей изменяются на вкладке Модули, а названия библиотек изменяются на вкладке Библиотеки. Когда Вы изменяете название библиотеки или модуля, это не изменяет ссылок, содержащихся в макросах. Например, если я записываю ваш номер телефона в моем Palm Pilot и Вы изменяете ваш номер телефона, мой Palm Pilot автоматически не обновляется. Итак, возможно ли вызвать макрос?
| Когда Вы переименовываете модуль или библиотеку, ссылки на содержащиеся макросы не обновляются. |
Переименование библиотеки или модуля не плохая вещь для исполнения; только помните, что объекты, которые ссылаются на модули и библиотеки, не будут обновлены. Если ничто не ссылается на ваш код, не стесняйтесь изменять имена библиотек и модулей. Вы можете переименовать библиотеки и модули с использованием диалога Управление макросами; процедура одинакова для обоих:
Я имел большой документ, который содержал много кнопок. Кнопки вызывали макросы в библиотеке и я должен был изменить название библиотеки. К сожалению, после того, как я изменил название библиотеки, кнопки все еще указывали на первоначальную библиотеку, которая больше не существовала. Чувствуя себя особенно смелым, я разархивировал документ во временный каталог (помните, что файл документа
| Ручное редактирование файла документа |
Кнопка в диалоге Управление макросами открывает диалог Добавить библиотеки, который в действительности является диалогом выбора файла. Этот диалог используется для выбора файла, который содержит библиотеку для добавления. Для добавления библиотеки, содержащейся в документе, начните с выбора документа. Кнопка ). Используйте окно выбора библиотек диалога Добавить библиотеки для просмотра библиотек, содержащихся в выбранном документе и выбора библиотек, которые Вы хотите добавить.
Окно выбора библиотек диалога Добавить библиотеки на рис 17.17 позволяет Вам добавить столько библиотек, сколько Вы хотите. Существующие библиотеки не перезаписываются, если флажок "Заменить существующие библиотеки" не установлен. Флажок "Вставить как ссылку" доступен, только если добавляются библиотеки, которые не содержатся в документе. Нажмите OK для добавления выбранных библиотек.
(рис 17.17) Использование диалога Добавить библиотеки для выбора библиотек для добавления| СОВЕТ | Не возможно перезаписать библиотеку Standard. Я не рекомендую использовать библиотеку Standard, потому что Вы не можете добавить ее к другому документу или приложению. |
Библиотеки, которые не содержатся в документе, сохраняются в отдельных каталогах. Для добавления библиотеки, которая сохранена не в документе, откройте окно выбора файла диалога Добавить библиотеки (18) и выберите справочник, содержащий файлы библиотеки. Не имеет значения, где сохранены файлы библиотеки. Файлы могут быть на дискете как резервная копия, или они могут быть в том же самом каталоге, используемом
Когда добавляется библиотека, которая не содержится в документе, видны два файла: dialog.xlb и script.xlb (смотри таблица 17.2 и рис 17.18). Оба файла требуются и автоматически добавляются, независимо от того, какой файл Вы выберите. Другими словами, Вы можете выбрать dialog.xlb или script.xlb; оба будут добавлены.
(рис 17.18) Не имеет значения, какой файл Вы выберите, добавляются оба| СОВЕТ | Когда я устанавливаю новую версию |
Лекция 16 в OpenOffice.org Macros Explained содержит информацию и примеры управления и вызова библиотек и модулей с использованием
Макросы сохраняются в модулях, модули сохраняются в библиотеках, а библиотеки сохраняются в контейнерах библиотек. Приложение – контейнер библиотек, также как и каждый документ. IDE используется для создания и отладки макросов и диалогов.
Вы только что закончили один из самых трудных шагов в написании макросов для OpenOffice.org: написали Ваш первый макрос! Вы теперь готовы исследовать другие примеры макросов и создавать свои собственные.
Макрос – сохраненная последовательность команд или нажатий клавиши, которые предназначены для использования в будущем. Пример простого макроса – "вывод" вашего адреса. Макросы поддерживают команды, которые позволяют выполнять различные функции, такие как принятие решений (например, если баланс меньше чем ноль, отобразить его красным цветом; в противном случае – черным), обработка (если баланс больше чем ноль, вычесть из него 10), и даже взаимодействие с человеком (запросить у пользователя число). Некоторые из этих команд основаны на языке программирования BASIC. (BASIC – акроним для
В OpenOffice.org язык макросов очень гибок и позволяет автоматизировать различные простые и сложные задачи. Написание макросов и изучение внутренней работы OpenOffice.org может быть очень занимательным, но это не всегда лучший путь. Макросы особенно полезны, когда Вы должны выполнить какую-либо задачу одним и тем же путем множество раз, или когда Вы хотите нажать одну кнопку, чтобы сделать что-то, что обычно выполняется за несколько шагов. Время от времени Вы можете написать макрос, который делает что-то, чего Вы не можете выполнить иным способом в OpenOffice.org, но в этом случае Вы должны убедиться, что
| Примечание | OpenOffice.org сокращается как |
OpenOffice.org язык макросов основан на языке программирования Basic.
| Примечание | Диалог - окно, которое появляется на экране, обычно требует ввода или представления информации. Диалоги обычно исчезают после того, как требуемый ввод выполнен. Созданные пользователем диалоги сохраняются в библиотеках диалогов тем же самым образом, каким макросы сохраняются в библиотеках макросов. Каждая библиотека может содержать множество диалогов. Контейнеры библиотеки могут хранить и библиотеки макросов, и библиотеки диалогов. |
Каждый документ OpenOffice.org является контейнером библиотек и способен содержать макросы и диалоги. Когда документ содержит макросы, которые он использует, обладание документом подразумевает обладание макросом. Это удобный метод распространения и хранения. Пошлите документ другому человеку или измените его размещение и макросы будут доступны и пригодны к употреблению.
Традиционный метод представления языка программирования, написание программы тем или иным образом выводящей сообщение "Hello World". Целые веб-сайты существуют с единственной целью – показать программы "Hello World" на стольких многих различных языках программирования, насколько возможно (например, смотри http://www2.latech.edu/~acm/HelloWorld.shtml. Не будем нарушать традиций, и первый показанный макрос будет вариацией на тему "Hello World".
Все документы
(рис 17.1) Использование диалога Макросы для создания нового макроса и организации библиотекиСписок "Макрос из" отображает доступные контейнеры библиотек; он включает каждый открытый документ, ваши личные макросы, и макросы, распространяемые с
| Примечание | До версии 2.0, |
Библиотека Standard для безымянного документа автоматически создается при создании нового документа. Документ в настоящее время не содержит никаких модулей – помните, что макросы сохраняются в модулях. Хотя Вы могли нажать на кнопку Создать для создания нового модуля, не делайте этого! Пункт этого раздела должен создать новую библиотеку.
| СОВЕТ | Не храните ваши макросы в библиотеке Standard. Создайте новую библиотеку с описательным названием и храните там ваши макросы. Когда библиотека добавляется, она может перезаписать существующую библиотеку с тем же самым именем. Если все ваши библиотеки называют Standard, это препятствует Вам добавлять ваши библиотеки в другие контейнеры библиотек. |
Нажмите на кнопку Управление, чтобы открыть диалог Управление макросами (17.2). Как и в диалоговом окне Макрос, здесь перечислены все контейнеры библиотек. На 17.2 библиотека Standard подсвечена в документе "Безымянный1"; прокрутите список вниз, чтобы найти "Безымянный1", если требуется. Диалог Управление макросами содержит несколько закладок и текущая закладка Модули. Поскольку название подразумевает, закладка Модули имеет дело с модулями. Вот описание пунктов этого диалога:
Цель этого раздела состоит в том, чтобы создать библиотеку названную осмысленно, которая содержится в документе "Безымянный1". Перейдите на вкладку Библиотеки, чтобы иметь дело с библиотеками (рис 17.3).
(рис 17.3) Использование диалога Управление макросами для управления библиотекамиКогда эта часть диалога отображается, в списке Приложение/Документ выбран контейнер Мои макросы и диалоги. Выберите документ "Безымянный1" так, чтобы изменения проводились в безымянном документе. Кнопки, показанные на закладке Библиотеки, затрагивают библиотеки, а не модули. Вот их описание:
(рис 17.4) Выберите значащее наименование для библиотекиНажмите кнопку Новая библиотека для создания новой библиотеки (рис 17.4). Хотя название по умолчанию "Library1", лучше выбрать значащее название, типа "MyFirstLibrary" или "TestLibrary". Нажмите OK, чтобы создать библиотеку.
Диалоговое окно Управление макросами теперь содержит вновь созданную библиотеку в списке Библиотек (рис 17.5).
(рис 17.5) Документ теперь содержит библиотеку по имени TestLibrary
Макросы сохраняются в модуле, таким образом следующим шагом должно быть создание модуля в только что созданной библиотеке. Предполагая, что диалог Управление макросами (рис 17.3) все еще открыт, выберем вкладку Модули (рис 17.6).

Недавно созданная библиотека TestLibrary теперь отображается в диалоге Управление макросами. Выберите TestLibrary или любой модуль, содержащийся в этой библиотеке, и затем нажмите кнопку Новый модуль для создания нового модуля
(рис 17.7) TestLibrary содержит один модуль по имени Module1.(рис 17.6) Новый модуль. Имя по умолчанию Module1; выберите более описательное название для модуля и нажмите OK, чтобы создать его.
| СОВЕТ | Используйте описательные названия модуля, чтобы избежать беспорядка. Это важно при перемещении между модулями. |
Распространенная ошибка состоит в выборе неправильного контейнера библиотек в диалогах Макрос или Управление макросами. Самая распространенная ошибка состоит в выборе библиотеки или модуля в прикладном контейнере (Мои макросы или Мои диалоги), а не в определенном документе. Найдите название документа в списке. Название документа определено полем Заголовок, установленным в диалоге Свойства документа. Используйте Файл > Свойства для открытия диалога Свойства документа. Заголовок задан на вкладке Описание. Если Заголовок не задан, вместо него используется имя файла.
| Примечание | Два документа с одинаковым заголовком в диалоге Свойства документа используют одинаковые имена в диалоге Макрос, в диалоге Управление макросами и в заголовке окна. Это запутывает, так пробуйте избежать этого. |
Если диалоговое окно Управление макросами все еще открыто, Вы можете выделить недавно созданный модуль и нажать кнопку ). Другой выбор состоит в использовании диалога Макрос. Если диалог Управление макросами открыт, нажмите кнопку ).
Вот описание кнопок в диалоге Макрос:
Назначение диалога Макрос состоит в том, чтобы работать с отдельным макросом. Выберите ). Одна пустая подпрограмма, Main, автоматически создается при создании модуля. IDE, показанная нарис 17.9, была открыта нажатием на MyFirstModule и затем нажатием на кнопку ..
. Программа "Hello World" найденная в файлах исходного текста этой главы на веб-сайте Hentzenwerke.
Sub main HelloWorld2() End Sub Sub HelloWorld1 Print "Hello World One" End Sub Sub HelloWorld2 Print "Hello World Two" End Sub
(рис 17.9) Разработка макроса в IDEIDE содержит панели инструментов Макрос и Стандарт, обозначенные нарис 17.9. (Большинство значков на панели инструментов Макрос описаны в разделе "Интегрированная среда разработки") Остановите курсор Вашей мыши на каждом из значков панели инструментов на пять секунд и прочтите появляющийся текст; это дает подсказку о назначении данного значка.

Нажмите на значок (рис 17.10) , чтобы проверить макрос на наличие синтаксических ошибок. Сообщение не отображается, если ошибки не найдены (рис 17.10). Нажатие на значок Компиляция осуществляет выполнение компиляции только для текущего модуля.
Измените код в . для демонстрации ошибки. Удалите вторую кавычку из утверждения Print в HelloWorld1 (рис 1" type="example"/>. для демонстрации ошибки. Удалите вторую кавычку из утверждения Print в HelloWorld1 (Нажмите на значок ., значок Выполнить запускает первую подпрограмму, которая называется "main". Подпрограмма main вызывает подпрограмму HelloWorld2, отображающую диалог показанный нарис 17.11. Нажмите OK для закрытия диалога или нажмите Отмена для остановки макроса.
(рис 17.11) Нажмите OK для закрытия диалога.Значок Выполнить всегда запускает первый макрос в текущем модуле. В результате, требуются различные ухищрения для запуска HelloWorld1. Для запуска HelloWorld1 Вы можете использовать один из следующих методов:
Чтобы использовать диалоговое окно Макрос для запуска любой подпрограммы в модуле, выполните следующие шаги:
Код, используемый в этой главе, доступен в текстовом документе OpenOffice.org по имени SC01.sxw. Загрузите и откройте этот документ. Когда документ, содержащий макроопределение открывается, OpenOffice.org выдает предупреждение (смотририс 17.12). Это предупреждение помогает Вам избежать случайного запуска макроса, содержащего вирус. Хотя Вы можете вручную запускать любой макрос используя диалог Макрос, кнопки с привязанными макросами в документе не будут функционировать. Нажмите Включить макросы, чтобы полностью разрешить применение кнопок с макросами, добавленными в SC01.sxw.
(рис 17.12) Вы только открываете OpenOffice.org документ, который содержит макрос.| СОВЕТ | Вы можете сконфигурировать документ для автоматического запуска макроса при загрузке документа. Это один из методов распространения макровирусов при использовании документов. Если Вы не ожидаете, что документ содержит макрос, Вы должны всегда нажимать Отключить макросы. Это препятствует автоматическому запуску любого макроса при загрузке документа. |
SC01.sxw содержит три кнопки: Main, Hello World 1 и Hello World 2. Каждая кнопка сформирована для запуска соответствующей подпрограммы, когда на кнопку нажимают. Кнопки ничего не делают, если Вы нажимаете Отключить макросы при загрузке документа.
Возможно добавить каталог в список "безопасных путей". Если Вы уверены, что каталог содержит документы, которым Вы можете полностью доверять, что они не содержат макровирусы, Вы можете добавить путь к данному каталогу в список безопасных путей. Используйте Сервис > Параметры > OpenOffice.org > Безопасность > Безопасность макросов > Доверенные источники и добавьте соответствующие месторасположения файлов, которым доверяете. Все документы, загруженные из доверенных источников, будут считаться безопасными, и макросы всегда будут запускаться.
Приложение OpenOffice.org само является контейнером библиотек. Это превосходное место для хранения кода и диалогов, общих для многих документов. Контроль версии легче, если макросы сохранены в одном месте. Если пять документов, все содержат один и тот же макрос, мало того, что область памяти потрачена впустую, но если макрос изменяется, Вы должны изменить макрос в пяти различных документах.
Для хранения макросов в библиотеках приложения используйте те же самые методы, которые используются для документов. Контейнер уровня приложения использует два названия, "Мои макросы" и "Макросы OpenOffice.org". Приложение
| Удаление OpenOffice.org может удалить библиотеки, сохраненные в уровне приложения, таким образом Вы должны всегда держать резервную копию ваших библиотек. Переустановка или установка новой версии OpenOffice.org могут перезаписать библиотеки уровня приложения. Создавайте резервную копию этих библиотек, когда вы создаете резервную копию Ваших документов. В большинстве случаев, библиотеки, которые Вы создали, все еще там, но файлы конфигурации обновились и не отражают новые библиотеки. Поэтому, обычно возможно восстановить ваши библиотеки из стандартного местоположения библиотек. Для получения дополнительной информации смотри раздел "Управление библиотеками" далее в этой главе. |
Каждая библиотека приложения сохраняется в своем собственном каталоге. Чтобы определить, где OpenOffice.org хранит библиотеки приложения, выберите Сервис > Параметры. В диалоге Параметры раскройте ветку OpenOffice.org в дерево меню и выберите Меню. Объект Basic показывает местоположение внешних библиотек.
Перед установкой новой версии OpenOffice.org сделайте копию всех библиотек прикладного уровня. Если Вы устанавливаете
| СОВЕТ | Не используйте библиотеку Standard, если Вы думаете, что Вы захотите когда-либо добавить вашу библиотеку в другое место. Храните все ваши модули, которые Вы создаете, в библиотеках со значащими названиями. Библиотека Standard является особенной, и Вы не можете удалить ее или перезаписать. |
Для практики добавьте макрос в библиотеку прикладного уровня, откройте диалог Управление макросами. Проверьте, что контейнер библиотек "Мои макросы" – текущий контейнер. Нажмите кнопку Создать для добавления нового модуля в библиотеку прикладного уровня. Для добавления библиотеки перейдите на вкладку Библиотеки. Проверьте, что "Мои макросы" выбраны в списке Приложение/ Документ, и затем нажмите кнопку Создать.
Библиотеки, сохраненные в документах, могут быть добавлены в контейнер библиотеки приложения. Когда библиотека добавляется, она перезаписывает существующую библиотеку с тем же самым названием. Поэтому хорошая идея – создать значащее имя для библиотеки, содержащей макросы. Это ограничивает проблемы, возникающие при перемещении макросов между контейнерами библиотеки.
Интегрированная среда разработки (IDE) – ряд программных инструментов, используемых для облегчения создания программного обеспечения. OpenOffice.org включает очень развитую IDE с инструментами, которые осуществляют выполнение, редактирование и поиск ошибок в Ваших макросах. Требуется время, чтобы ознакомиться с ее возможностями. рис 17.9 показывает IDE. Центральная область, где содержится код макроса, – окно редактирования. Многие возможности, такие как Останов, Контрольные точки, Пошаговое выполнение и панель контрольных значений, служат простыми, но эффективными средствами для отладки кода макроса.
Этот раздел дает краткий обзор стандартных функций IDE. Не удивляйтесь, если Вы полностью не понимаете, как использовать их всех в этом месте. Вы познакомитесь с этими функциями, поскольку Вы будете работать по примерам. Первый набор функций используется для отладки, а описанные в конце этого раздела поддерживают формирование и управление объектами в ваших макропрограммах, библиотеках и документах. Ниже приведены описания значков.
Значок компилирует и выполняет проверку синтаксиса только текущего модуля. Значок Компиляция полезен, если Вы не хотите выполнять макрос но хотите проверить, что он не содержит синтаксических ошибок. Сообщения не отображаются, если ошибка не найдена (рис 17.10). Когда найдена ошибка, появляется диалог, указывающий на ошибку. Стрелка в колонке Контрольной точки отмечает строку с ошибкой и часть кода, который вызвал ошибку, выделена. Нажмите кнопку OK для закрытия окна сообщения об ошибке.
| Примечание | Процесс компиляции переводит макроопределение |
Значок компилирует все модули в текущей библиотеке и затем выполняет первую подпрограмму или функцию в текущем модуле. Это отличается от действия значка Компиляция, который компилирует только текущий модуль.
Значок останавливает выполнение макроса. Когда Вы нажимаете на этот значок, Вы не можете продолжить выполнение макроса; Вы должны запустить его снова, с начала. Значок Остановить макрос доступен, только когда макрос выполняется. Когда доступен, значок Остановить напоминает транспортный знак остановки.
Значок выполняет текущее утверждение. Если макрос еще не выполняется, первая подпрограмма в модуле запускается и отмечается как текущее утверждение. Текущее утверждение имеет стрелку в колонке Контрольной точки, и курсор перемещается в эту строку. Если, однако, макрос уже выполняется, выполняется текущее утверждение и следующее выполняемое утверждение помечается как текущее. Значок Шаг без захода рассматривает вызовы других подпрограмм как одно утверждение и не осуществляет пошаговое выполнение внутри них. Заметьте, что значок имеет стрелку, которая огибает фигурные скобки, представляющие вызов подпрограммы или функции.
Значок выполняет текущее утверждение. Поведение такое же, как у значка Шаг без захода, за исключением того, что подпрограммы и функции не рассматривают как одно утверждение. Каждое утверждение в вызываемой подпрограмме считается утверждением. Подпрограммы и функции выполняются пошагово внутри, отмечая определение вызванной подпрограммы или функции как текущее утверждение. Заметьте, что значок содержит стрелку, которая направлена в фигурные скобки, представляющие вызов подпрограммы или функции.
Значок выполняет макрос до конца текущей подпрограммы и затем выходит из нее. Эффект тот же самый, как повторяющееся нажатие на значок Шаг с заходом, пока последнее утверждение в текущей подпрограмме (End Sub или End Function) не станет текущим, и затем нажатие Шаг с заходом еще раз для выхода из подпрограммы. Утверждение после вызова текущей подпрограммы становится текущим утверждением. Если Вы случайно нажмете Шаг с заходом вместо Шаг без захода, нажмите один раз значок Выход на верхний уровень. Заметьте, что значок содержит стрелку, которая покидает фигурные скобки, представляющие вызов подпрограммы или функции.
Значок устанавливает контрольную точку в утверждении, содержащем курсор. Красный признак останова отмечает строку в столбце точек останова. Двойной щелчок по столбцу точек останова устанавливает точку останова в этом утверждении. Щелчок правой кнопкой мыши на точке останова в столбце точек останова активирует или деактивирует ее.
Значок открывает диалог Точки останова (рис 17.13).

Значок (рис 17.13) предполагает, что текущее слово (слово, в котором находится курсор при нажатии на значок) – переменная и добавляет имя этой переменной в панель Инспектора.
Значок открывает окно Объекты (рис 17.14), где Вы можете просмотреть все доступные в настоящее время контейнеры библиотек. Используйте это окно, чтобы видеть, какие библиотеки, модули и подпрограммы являются доступными. Выполните двойной щелчок мышью на подпрограмме для загрузки ее в IDE. Функциональные возможности подобны Навигатору в документе
| СОВЕТ | Оставьте окно Объекты открытым и используйте его как навигатор для быстрого перехода между модулями, библиотеками или подпрограммами в том же самом модуле. |
Значок загружает диалог Макрос. Выбирая Сервис > Макрос > Управление макросами > OpenOffice.org Basic Вы также загружаете диалог Макрос.
Значок загружает диалог Управление макросами. Этот значок имеет тот же самый эффект, что и нажатие на кнопку Управление в диалоге Макрос (рис 17.2 ирис 17.3).
Выберите или поместите курсор непосредственно слева от круглой скобки, затем нажмите значок для поиска парной круглой скобки. Когда IDE находит парную круглую скобку, она выделяет парные круглые скобки и все, что они охватывают.

Чтобы открыть окно Элементы управления, нажмите значок (рис 17.14) при редактировании диалога. (Для получения дополнительной информации о элементах управления лекция 17
Чтобы создать диалог для редактирования, нажмите значок для загрузки диалога Управление макросами. Перейдите на вкладку Диалоги и нажмите кнопку Новый диалог для создания нового диалога. лекция 17 OpenOffice.org Macros Explained для получения дополнительной информации об использовании и создании диалогов в макросах.
Последние два значка, и , используются для вставки в текущий модуль текста, сохраненного во внешний исходный файл, и для сохранения текущего модуля во внешний текстовый файл. Это прекрасный способ создать резервную копию макроса или создать текстовый файл, который можно легко послать другому человеку. Это отличается от значка , который используется для сохранения всей библиотеки или документа, содержащего модуль.
Если Вы установите точку останова в коде, то макрос прекратит выполнение в этой точке. Вы можете тогда проверить переменные, продолжить выполнение макроса или осуществить пошаговое выполнение макроса. Если макрос терпит неудачу, и Вы не знаете почему, пошаговое выполнение (выполнение одного утверждения за шаг) позволит Вам наблюдать макрос в действии. Когда макрос терпит неудачу, Вы будете знать, где это происходит. Если большое количество утверждений выполняется перед проблемным участком, так что не реально пошаговое выполнение, таким образом Вы можете установить точку останова в или около строки, которая вызывает проблему. Программа прекращает выполнение в этой точке, и Вы можете продолжить пошаговое выполнение макроса и наблюдать его поведение.
Значок устанавливает контрольную точку в утверждении, содержащем курсор. Красный знак останова отмечает строку в колонке точки останова. Двойной щелчок в колонке точки останова также устанавливает точку останова в этом утверждении. Щелчок правой кнопкой мыши на точке останова в колонке точки останова активирует и деактивирует ее.
Значок загружает диалог Точки останова (рис 17.13). Все активные точки останова в текущем диалоге IDE появляются в нижнем списке. Для добавления точки останова введите номер строки в поле ввода сверху и затем нажмите Создать. Для удаления точки останова выделите точку останова в списке и нажмите кнопку Удалить. Очистка флажка Вкл./Выкл. запрещает выделенную точку останова без ее удаления. Поле ввода Пропусков указывает количество раз, которое контрольная точка должна быть пройдена прежде, чем она будет считаться активной. Если количество пропусков четыре (4), то в четвертый раз, когда утверждение, содержащее контрольную точку, будет выполняться, произойдет останов выполнения. Это чрезвычайно полезно, когда часть макроса не вызывает ошибок, пока ее не вызвали многократно.
Есть две вещи, которые заставляют игнорировать точку останова: не нулевое количество проходов и явная маркировка точки останова как "не активная" в диалоге Точки останова. Каждая точка останова имеет счетчик проходов, который является декрементным к нулю, когда она достигнута. Если результат декремента - ноль, контрольная точка становится активной и остается активной, потому что счетчик проходов остается в дальнейшем в нуле. Счетчик проходов не восстанавливается к его исходному значению, когда макрос заканчивается или повторно запускается.
Легко контролировать значение переменных из IDE во время выполнения программы. Поместите курсор рядом или в любое слово в окне редактирования и нажмите значок Включить инспектор для добавления слова в панель Инспектора. Панель инспектора отображает значения переменных, доступных в настоящее время. Текст "<Не доступно>" отображается для недоступных переменных. Другой способ добавить переменную в панель инспектора – ввести имя в поле Контрольное значение и нажать . Нажатие на имя в панели инспектора помещает имя в поле Контрольное значение. Возможности окна инспектора были расширены в
| Примечание | Переменная, которая находится в пределах видимости, в настоящее время доступна или видима. Например, если переменная "j" определена внутри HelloWorld1, она не видима (недоступна) внутри HelloWorld2. Это обсуждается позже. |
Этот раздел имеет дело с созданием, перемещением и переименованием библиотек и модулей. Рассматривая управление библиотеками, важно сначала понять некоторые основы, которые уже обсуждались:
Библиотеки OpenOffice.org сохраняются как файлы XML, которые являются легко редактируемыми при использовании любого текстового редактора. Другими словами, легко случайно повредить ваши файлы. Ручное редактирование ваших внешних библиотек вообще считается глупым, я имел по крайней мере один случай, где это требовалось, потому что
| СОВЕТ | Ручное редактирование файлов |
Каждая библиотека приложения сохранена в одном каталоге, а каждый модуль и диалог содержатся в одном файле. Диалог Параметры ( Сервис > Параметры > OpenOffice.org > Пути ) содержит запись, которая указывает где располагаются библиотеки. Глобальные библиотеки, которые включены в OpenOffice.org, сохраняются в отделенном основном каталоге под каталогом, в котором установлен
C:\Program Files\OpenOffice.org 2\share\basic
/usr/local/OpenOffice.org 2/share/basic
Библиотеки, которые Вы создаете, сохраняются в различных каталогах. На моем Windows-компьютере я имею однопользовательскую установку, а на моем
Linux-компьютере – многопользовательскую сетевую установку. Параметры, которые Вы задаете, устанавливая
C:\Program Files\OpenOffice.org 2\user\basic
/home/andy/OpenOffice.org 2/user/basic
Листинг
| Элемент | Описание |
|---|---|
| dialog.xlc | XML-файл, который ссылается на каждый файл диалога, известный этому пользователю в OpenOffice.org. |
| script.xlc | XML-файл, который ссылается на каждый файл библиотеки, известный этому пользователю в OpenOffice.org. |
| Standard | Каталог, содержащий библиотеку Standard. |
| Pitonyak | Каталог, содержащий библиотеку с кодом, который создал Эндрю Питоньяк. |
| PitonyakDialogs | Каталог, содержащий библиотеку с некоторым кодом и диалогом. |
| Примечание | Таблица ссылается на каталоги Pitonyak и PitonyakDialogs. Библиотека Pitonyak и библиотека PitonyakDialogs не связаны; их названия подобны, потому что я испытывал недостаток в творческом потенциале и здравом смысле, когда назвал их. Не верно, что библиотека PitonyakDialogs содержит диалоги для библиотеки Pitonyak. |
(рис 17.15) Диалоги Макрос и Управление макросами отображают доступные библиотеки и модулиФайлы dialog.xlc и script.xlc содержат ссылки на все диалоги и библиотеки, которые известны
Диалог Управление макросами показывает, что библиотека PitonyakDialogs содержит один диалог; перейдите на вкладку Модули, чтобы увидеть модули кода. Ниже таблица содержит листинг файлов в каталоге PitonyakDialogs. Заметьте, что каждый модуль и диалог в библиотеке имеют соответствующий файл.
| Файл | Описание |
|---|---|
| dialog.xlb | Ссылается на диалоги, содержавшиеся в этой библиотеке. |
| script.xlb | Ссылается на модули, содержавшиеся в этой библиотеке. |
| Module1.xba | BASIC-код в модуле по имени Module1. |
| SimpleObjectBrowserCode.xba | BASIC-код в модуле по имени SimpleObjectBrowserCode. |
| SimpleObjectBrowser.xdl | Диалог в модуле по имени SimpleObjectBrowser. |
Файлы dialog.xlc и script.xlc из таблицы 17.1 ссылаются на файлы dialog.xlb и script.xlb в таблица 17.1">таблицы 17.1 ссылаются на файлы dialog.xlb и script.xlb в Документ OpenOffice.org, когда сохраняется на диск, сохраняется в стандартном формате ZIP. Любая программа, которая может просматривать и извлекать файлы ZIP, может использоваться для просмотра документа
После распаковки документа
Как эксперимент, я взял документ, который содержал многочисленные элементы управления, вызываемые определенной библиотекой. Я разархивировал документ и затем использовал инструмент поиска текста, чтобы найти все ссылки на определенную библиотеку по имени CH03. После ручного изменения каждого вхождения текста "CH03" на "CH04" я заархивировал каталог назад в единый файл, и
| Примечание | Цель этого раздела в том, что в критическом положении Вы можете вручную просмотреть XML-документ и устранить потенциальные проблемы. Это НЕ лучший способ изменить название библиотек документа. |
Диалог Управление макросами ( ) обеспечивает возможность создавать и удалять модули. Диалог Управление макросами также имеет вкладку Библиотеки (рис 17.16), используемую для создания и удаления библиотек. Вкладка Библиотеки содержит сверху поле с выпадающим списком, которое используется для выбора контейнера библиотек. Другими словами, Вы можете выбрать определенный открытый документ или библиотеку приложения.
| Примечание | Название документа – название файла, если название документа не установлено в диалоге Свойства документа ( Файл > Свойства > Описание ). Если свойство Заголовок установлено, оно используется как название документа в заголовке окна, диалоге Макрос и диалоге Управление макросами. |
(рис 17.16) Использование диалога Управление макросами для создания, добавления и удаления библиотек
Вы можете изменить название модуля или библиотеки из диалога Управление макросами. Имена модулей изменяются на вкладке Модули, а названия библиотек изменяются на вкладке Библиотеки. Когда Вы изменяете название библиотеки или модуля, это не изменяет ссылок, содержащихся в макросах. Например, если я записываю ваш номер телефона в моем Palm Pilot и Вы изменяете ваш номер телефона, мой Palm Pilot автоматически не обновляется. Итак, возможно ли вызвать макрос?
| Когда Вы переименовываете модуль или библиотеку, ссылки на содержащиеся макросы не обновляются. |
Переименование библиотеки или модуля не плохая вещь для исполнения; только помните, что объекты, которые ссылаются на модули и библиотеки, не будут обновлены. Если ничто не ссылается на ваш код, не стесняйтесь изменять имена библиотек и модулей. Вы можете переименовать библиотеки и модули с использованием диалога Управление макросами; процедура одинакова для обоих:
Я имел большой документ, который содержал много кнопок. Кнопки вызывали макросы в библиотеке и я должен был изменить название библиотеки. К сожалению, после того, как я изменил название библиотеки, кнопки все еще указывали на первоначальную библиотеку, которая больше не существовала. Чувствуя себя особенно смелым, я разархивировал документ во временный каталог (помните, что файл документа
| Ручное редактирование файла документа |
Кнопка в диалоге Управление макросами открывает диалог Добавить библиотеки, который в действительности является диалогом выбора файла. Этот диалог используется для выбора файла, который содержит библиотеку для добавления. Для добавления библиотеки, содержащейся в документе, начните с выбора документа. Кнопка ). Используйте окно выбора библиотек диалога Добавить библиотеки для просмотра библиотек, содержащихся в выбранном документе и выбора библиотек, которые Вы хотите добавить.
Окно выбора библиотек диалога Добавить библиотеки на рис 17.17 позволяет Вам добавить столько библиотек, сколько Вы хотите. Существующие библиотеки не перезаписываются, если флажок "Заменить существующие библиотеки" не установлен. Флажок "Вставить как ссылку" доступен, только если добавляются библиотеки, которые не содержатся в документе. Нажмите OK для добавления выбранных библиотек.
(рис 17.17) Использование диалога Добавить библиотеки для выбора библиотек для добавления| СОВЕТ | Не возможно перезаписать библиотеку Standard. Я не рекомендую использовать библиотеку Standard, потому что Вы не можете добавить ее к другому документу или приложению. |
Библиотеки, которые не содержатся в документе, сохраняются в отдельных каталогах. Для добавления библиотеки, которая сохранена не в документе, откройте окно выбора файла диалога Добавить библиотеки (18) и выберите справочник, содержащий файлы библиотеки. Не имеет значения, где сохранены файлы библиотеки. Файлы могут быть на дискете как резервная копия, или они могут быть в том же самом каталоге, используемом
Когда добавляется библиотека, которая не содержится в документе, видны два файла: dialog.xlb и script.xlb (смотри таблица 17.2 и рис 17.18). Оба файла требуются и автоматически добавляются, независимо от того, какой файл Вы выберите. Другими словами, Вы можете выбрать dialog.xlb или script.xlb; оба будут добавлены.
(рис 17.18) Не имеет значения, какой файл Вы выберите, добавляются оба| СОВЕТ | Когда я устанавливаю новую версию |
Лекция 16 в OpenOffice.org Macros Explained содержит информацию и примеры управления и вызова библиотек и модулей с использованием
Макросы сохраняются в модулях, модули сохраняются в библиотеках, а библиотеки сохраняются в контейнерах библиотек. Приложение – контейнер библиотек, также как и каждый документ. IDE используется для создания и отладки макросов и диалогов.
Вы только что закончили один из самых трудных шагов в написании макросов для OpenOffice.org: написали Ваш первый макрос! Вы теперь готовы исследовать другие примеры макросов и создавать свои собственные.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.